private boolean containsValidActivationHeader() { String header; double targetVersion = TargetPlatformHelper.getTargetVersion(); if (targetVersion < 3.2) header = ICoreConstants.ECLIPSE_AUTOSTART; else if (targetVersion < 3.4) header = ICoreConstants.ECLIPSE_LAZYSTART; else header = Constants.BUNDLE_ACTIVATIONPOLICY; return getHeader(header) != null; }
private void setOsgiR4() { IHeader header = getHeader(Constants.BUNDLE_MANIFESTVERSION); if (header != null) { String version = header.getValue(); try { fOsgiR4 = version != null && Integer.parseInt(version) > 1 ; } catch (NumberFormatException e) { } } }
private void validateExtensibleAPI(){ IHeader header = getHeader(ICoreConstants.EXTENSIBLE_API); if (header != null) validateBooleanValue(header); }
private void validateExtensibleAPI() { IHeader header = getHeader(ICoreConstants.EXTENSIBLE_API); if (header != null) validateBooleanValue(header); }
/** * Verifies that if a Service-Component exists then a corresponding Bundle-ActivationPolicy is present. */ private void validateServiceComponent() { IHeader header = getHeader(ICoreConstants.SERVICE_COMPONENT); if (header == null) { return; } if (getHeader(Constants.BUNDLE_ACTIVATIONPOLICY) != null) { return; } report(PDECoreMessages.BundleErrorReporter_serviceComponentLazyStart, header.getLineNumber() + 1, CompilerFlags.WARNING, PDEMarkerFactory.M_SERVICECOMPONENT_MISSING_LAZY, PDEMarkerFactory.CAT_OTHER); } }
private boolean validateBundleManifestVersion() { IHeader header = getHeader(Constants.BUNDLE_MANIFESTVERSION); if (header != null) { String version = header.getValue(); if (!(fOsgiR4 = "2".equals(version)) && !"1".equals(version)) { //$NON-NLS-1$ //$NON-NLS-2$ report(PDECoreMessages.BundleErrorReporter_illegalManifestVersion, header.getLineNumber() + 1, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL); return false; } } return true; }
/** * Validates the Eclipse-BundleShape header * * @since 3.5 */ private void validateEclipseBundleShape() { IHeader header = getHeader(ICoreConstants.ECLIPSE_BUNDLE_SHAPE); if (header == null) return; String value = header.getValue(); if (value != null) { validateHeaderValue(header, ICoreConstants.SHAPE_VALUES); } }
private void validateImportExportServices() { if (fOsgiR4) { IHeader importHeader = getHeader(ICoreConstants.IMPORT_SERVICE); IHeader exportHeader = getHeader(ICoreConstants.EXPORT_SERVICE); int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_DEPRECATED); if (severity == CompilerFlags.IGNORE) return; if (importHeader != null) { int line = importHeader.getLineNumber(); report(NLS.bind(PDECoreMessages.BundleErrorReporter_importexport_servicesDeprecated, ICoreConstants.IMPORT_SERVICE), line + 1, severity, PDEMarkerFactory.M_DEPRECATED_IMPORT_SERVICE, PDEMarkerFactory.CAT_DEPRECATION); } if (exportHeader != null) { int line = exportHeader.getLineNumber(); report(NLS.bind(PDECoreMessages.BundleErrorReporter_importexport_servicesDeprecated, ICoreConstants.EXPORT_SERVICE), line + 1, severity, PDEMarkerFactory.M_DEPRECATED_EXPORT_SERVICE, PDEMarkerFactory.CAT_DEPRECATION); } } }
private void validateBundleClasspath() { IHeader header = getHeader(Constants.BUNDLE_CLASSPATH); if (header != null) { if (header.getElements().length == 0) { report(PDECoreMessages.BundleErrorReporter_ClasspathNotEmpty, header.getLineNumber() + 1, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL); } } }
private void validateBundleClasspath() { IHeader header = getHeader(Constants.BUNDLE_CLASSPATH); if (header != null && header.getElements().length == 0) { report(PDECoreMessages.BundleErrorReporter_ClasspathNotEmpty, header.getLineNumber() + 1, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL); } }
private void validateEclipseGenericRequire() { IHeader header = getHeader(ICoreConstants.ECLIPSE_GENERIC_REQUIRED); if (header == null) { return; } String message; if ((TargetPlatformHelper.getTargetVersion() >= 3.7) && isCheckDeprecated()) { message = NLS.bind(PDECoreMessages.BundleErrorReporter_eclipse_genericRequireDeprecated, ICoreConstants.ECLIPSE_GENERIC_REQUIRED, Constants.REQUIRE_CAPABILITY); report(message, header.getLineNumber() + 1, CompilerFlags.P_DEPRECATED, PDEMarkerFactory.CAT_DEPRECATION); } }
private void validateEclipseGenericCapability() { IHeader header = getHeader(ICoreConstants.ECLIPSE_GENERIC_CAPABILITY); if (header == null) { return; } String message; if ((TargetPlatformHelper.getTargetVersion() >= 3.7) && isCheckDeprecated()) { message = NLS.bind(PDECoreMessages.BundleErrorReporter_eclipse_genericCapabilityDeprecated, ICoreConstants.ECLIPSE_GENERIC_CAPABILITY, Constants.PROVIDE_CAPABILITY); report(message, header.getLineNumber() + 1, CompilerFlags.P_DEPRECATED, PDEMarkerFactory.CAT_DEPRECATION); } }
private void validateProvidePackage() { IHeader header = getHeader(ICoreConstants.PROVIDE_PACKAGE); if (header == null) return; if (fOsgiR4 && isCheckDeprecated()) { report(PDECoreMessages.BundleErrorReporter_providePackageHeaderDeprecated, header.getLineNumber() + 1, CompilerFlags.P_DEPRECATED, PDEMarkerFactory.M_DEPRECATED_PROVIDE_PACKAGE, PDEMarkerFactory.CAT_OTHER); } }
private void validateFragmentHost(IHeader requireBundleHeader, ManifestElement element) { IHeader header = getHeader(Constants.FRAGMENT_HOST); if (header == null) return; ManifestElement[] elements = header.getElements(); if (elements[0] != null && elements[0].getValue().equals(element.getValue())) { IMarker marker = report(NLS.bind(PDECoreMessages.BundleErrorReporter_unecessaryDependencyDueToFragmentHost, element.getValue()), getPackageLine(requireBundleHeader, element), CompilerFlags.WARNING, PDEMarkerFactory.M_UNECESSARY_DEP, PDEMarkerFactory.CAT_OTHER); addMarkerAttribute(marker, "bundleId", element.getValue()); //$NON-NLS-1$ } }
private void validateLazyStart() { IHeader header = getHeader(ICoreConstants.ECLIPSE_LAZYSTART); int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_DEPRECATED); if (header != null && TargetPlatformHelper.getTargetVersion() < 3.2 && severity != CompilerFlags.IGNORE) { report(PDECoreMessages.BundleErrorReporter_lazyStart_unsupported, header.getLineNumber() + 1, severity, PDEMarkerFactory.NO_RESOLUTION, PDEMarkerFactory.CAT_OTHER); } else { validateStartHeader(header); } }
private void validateTranslatableHeaders() { int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_NOT_EXTERNALIZED); if (severity == CompilerFlags.IGNORE) return; for (int i = 0; i < ICoreConstants.TRANSLATABLE_HEADERS.length; i++) { IHeader header = getHeader(ICoreConstants.TRANSLATABLE_HEADERS[i]); if (header != null) { String value = header.getValue(); if (!value.startsWith("%")) { //$NON-NLS-1$ report(NLS.bind(PDECoreMessages.Builders_Manifest_non_ext_attribute, header.getName()), getLine(header, value), severity, PDEMarkerFactory.P_UNTRANSLATED_NODE, header.getName(), PDEMarkerFactory.CAT_NLS); } else if (fModel instanceof AbstractNLModel) { NLResourceHelper helper = ((AbstractNLModel) fModel).getNLResourceHelper(); if (helper == null || !helper.resourceExists(value)) { report(NLS.bind(PDECoreMessages.Builders_Manifest_key_not_found, value.substring(1), PDEManager.getBundleLocalization(fModel).concat(".properties")), getLine(header, value), severity, PDEMarkerFactory.CAT_NLS); //$NON-NLS-1$ } } } } }
private void validateAutoStart() { IHeader header = getHeader(ICoreConstants.ECLIPSE_AUTOSTART); if (!validateStartHeader(header)) return; // valid start header problems already reported int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_DEPRECATED); if (severity != CompilerFlags.IGNORE && TargetPlatformHelper.getTargetVersion() >= 3.2) { int line = header.getLineNumber(); report(PDECoreMessages.BundleErrorReporter_startHeader_autoStartDeprecated, line + 1, severity, PDEMarkerFactory.M_DEPRECATED_AUTOSTART, PDEMarkerFactory.CAT_DEPRECATION); } }
private void validateFragmentHost(IHeader requireBundleHeader, ManifestElement element) { IHeader header = getHeader(Constants.FRAGMENT_HOST); if(header == null) return; ManifestElement[] elements = header.getElements(); if (header != null && elements[0] != null && elements[0].getValue().equals(element.getValue())) { IMarker marker = report(NLS.bind(PDECoreMessages.BundleErrorReporter_unecessaryDependencyDueToFragmentHost, element.getValue()), getPackageLine(requireBundleHeader, element), CompilerFlags.WARNING, PDEMarkerFactory.M_UNECESSARY_DEP, PDEMarkerFactory.CAT_OTHER); if (marker != null) { try { marker.setAttribute("bundleId", element.getValue()); //$NON-NLS-1$ } catch (CoreException e) {} } } } }
private void validateBundleActivatorPolicy() { IHeader header = getHeader(Constants.BUNDLE_ACTIVATIONPOLICY); int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_DEPRECATED); if (header == null) return; // Header introduced in OSGi R4 - warn if R3 manifest if (!fOsgiR4) report(NLS.bind(PDECoreMessages.BundleErrorReporter_R4SyntaxInR3Bundle, Constants.BUNDLE_ACTIVATIONPOLICY), header.getLineNumber() + 1, CompilerFlags.WARNING, PDEMarkerFactory.M_R4_SYNTAX_IN_R3_BUNDLE, PDEMarkerFactory.CAT_OTHER); if (TargetPlatformHelper.getTargetVersion() >= 3.3) { validateHeaderValue(header, new String[] {Constants.ACTIVATION_LAZY}); } else if (severity != CompilerFlags.IGNORE && !containsValidActivationHeader()) { report(PDECoreMessages.BundleErrorReporter_bundleActivationPolicy_unsupported, header.getLineNumber() + 1, severity, PDEMarkerFactory.NO_RESOLUTION, PDEMarkerFactory.CAT_OTHER); } }
private void validateAutoStart() { IHeader header = getHeader(ICoreConstants.ECLIPSE_AUTOSTART); if (!validateStartHeader(header)) return; // valid start header problems already reported int severity = CompilerFlags.getFlag(fProject, CompilerFlags.P_DEPRECATED); if (severity != CompilerFlags.IGNORE && TargetPlatformHelper.getTargetVersion() >= 3.2 && !containsValidActivationHeader()) { int line = header.getLineNumber(); String message = NLS.bind(PDECoreMessages.BundleErrorReporter_startHeader_autoStartDeprecated, new Object[] {ICoreConstants.ECLIPSE_AUTOSTART, getCurrentActivationHeader()}); IMarker marker = report(message, line + 1, severity, PDEMarkerFactory.M_DEPRECATED_AUTOSTART, PDEMarkerFactory.CAT_DEPRECATION); if (marker != null) { try { marker.setAttribute(PDEMarkerFactory.ATTR_HEADER, ICoreConstants.ECLIPSE_AUTOSTART); ManifestElement elem = header.getElements()[0]; boolean unnecessary = elem.getValue().equals("false") && elem.getAttribute("excludes") == null; //$NON-NLS-1$ //$NON-NLS-2$ marker.setAttribute(PDEMarkerFactory.ATTR_CAN_ADD, !unnecessary); } catch (CoreException e) { } } } }