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); } } }
protected int getLine(IHeader header, String valueSubstring) { for (int l = header.getLineNumber(); l < header.getLineNumber() + header.getLinesSpan(); l++) { try { IRegion lineRegion = fTextDocument.getLineInformation(l); String lineStr = fTextDocument.get(lineRegion.getOffset(), lineRegion.getLength()); if (lineStr.indexOf(valueSubstring) >= 0) { return l + 1; } } catch (BadLocationException ble) { PDECore.logException(ble); } } // it might span mutliple lines, try a longer algorithm try { IRegion lineRegion = fTextDocument.getLineInformation(header.getLineNumber()); String lineStr = fTextDocument.get(lineRegion.getOffset(), lineRegion.getLength()); for (int l = header.getLineNumber() + 1; l < header.getLineNumber() + header.getLinesSpan(); l++) { lineRegion = fTextDocument.getLineInformation(l); lineStr += fTextDocument.get(lineRegion.getOffset() + 1/* the space */, lineRegion.getLength()); if (lineStr.indexOf(valueSubstring) >= 0) { return l; } } } catch (BadLocationException ble) { PDECore.logException(ble); } return header.getLineNumber() + 1; }
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 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; }
if (header.getElements().length == 0) { if (isCheckNoRequiredAttr()) report(PDECoreMessages.BundleErrorReporter_HostNeeded, 1, CompilerFlags.P_NO_REQUIRED_ATT, PDEMarkerFactory.CAT_FATAL); report(NLS.bind(PDECoreMessages.BundleErrorReporter_R4SyntaxInR3Bundle, Constants.FRAGMENT_HOST), header.getLineNumber() + 1, CompilerFlags.WARNING, PDEMarkerFactory.M_R4_SYNTAX_IN_R3_BUNDLE, PDEMarkerFactory.CAT_OTHER); ManifestElement[] elems = header.getElements(); if (elems.length > 0) { if (!VersionUtil.validateVersionRange(elems[0].getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)).isOK()) { int line = getLine(header, header.getValue()); report(UtilMessages.BundleErrorReporter_InvalidFormatInBundleVersion, line, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL);
ManifestElement[] elements = header.getElements(); if (name.equals("java") || name.startsWith("java.")) { //$NON-NLS-1$ //$NON-NLS-2$ IHeader jreHeader = getHeader(ICoreConstants.ECLIPSE_JREBUNDLE); if (jreHeader == null || !"true".equals(jreHeader.getValue())) { //$NON-NLS-1$ message = PDECoreMessages.BundleErrorReporter_exportNoJRE; report(message, getPackageLine(header, elements[i]),
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 boolean containsPackage(IHeader header, String name) { if (header != null) { ManifestElement[] elements = header.getElements(); for (int i = 0; i < elements.length; i++) { if (elements[i].getValue().equals(name)) return true; } } return false; }
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) { } } }
if (header == null) return; String location = header.getValue(); String fileName = null; int index = location.lastIndexOf('/'); report(PDECoreMessages.BundleErrorReporter_localization_folder_not_exist, header.getLineNumber() + 1, CompilerFlags.getFlag(fProject, CompilerFlags.P_UNKNOWN_RESOURCE), PDEMarkerFactory.CAT_OTHER); return; report(PDECoreMessages.BundleErrorReporter_localization_properties_file_not_exist, header.getLineNumber() + 1, CompilerFlags.getFlag(fProject, CompilerFlags.P_UNKNOWN_RESOURCE), PDEMarkerFactory.CAT_OTHER);
ManifestElement[] elements = header.getElements(); if (name.equals("java") || name.startsWith("java.")) { //$NON-NLS-1$ //$NON-NLS-2$ IHeader jreHeader = getHeader(ICoreConstants.ECLIPSE_JREBUNDLE); if (jreHeader == null || !"true".equals(jreHeader.getValue())) { //$NON-NLS-1$ message = PDECoreMessages.BundleErrorReporter_exportNoJRE; report(message, getPackageLine(header, elements[i]), CompilerFlags.ERROR, PDEMarkerFactory.M_JAVA_PACKAGE__PORTED, PDEMarkerFactory.CAT_FATAL);
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 boolean containsPackage(IHeader header, String name) { if(header != null) { ManifestElement[] elements = header.getElements(); for (int i = 0; i < elements.length; i++) { if(elements[i].getValue().equals(name)) return true; } } return false; }
/** * 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); } }
if (header == null) return; String location = header.getValue(); String fileName = null; int index = location.lastIndexOf('/'); report(NLS.bind(PDECoreMessages.BundleErrorReporter_R4SyntaxInR3Bundle, Constants.BUNDLE_LOCALIZATION), header.getLineNumber() + 1, CompilerFlags.WARNING, PDEMarkerFactory.M_R4_SYNTAX_IN_R3_BUNDLE, PDEMarkerFactory.CAT_OTHER); report(PDECoreMessages.BundleErrorReporter_localization_folder_not_exist, header.getLineNumber() + 1, CompilerFlags.getFlag(fProject, CompilerFlags.P_UNKNOWN_RESOURCE), PDEMarkerFactory.CAT_OTHER); return; report(PDECoreMessages.BundleErrorReporter_localization_properties_file_not_exist, header.getLineNumber() + 1, CompilerFlags.getFlag(fProject, CompilerFlags.P_UNKNOWN_RESOURCE), PDEMarkerFactory.CAT_OTHER);
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); } }
protected int getPackageLine(IHeader header, ManifestElement element) { String packageName = element.getValue(); if (element.getDirectiveKeys() != null || element.getKeys() != null) return getLine(header, packageName + ";"); //$NON-NLS-1$ // check for this exact package on the last line try { IRegion lineRegion = fTextDocument.getLineInformation(header.getLineNumber() + header.getLinesSpan() - 1); String lineStr = fTextDocument.get(lineRegion.getOffset(), lineRegion.getLength()); if (lineStr.endsWith(packageName)) { return header.getLineNumber() + header.getLinesSpan(); } } catch (BadLocationException ble) { PDECore.logException(ble); } // search all except last line return getLine(header, packageName + ","); //$NON-NLS-1$ }
ManifestElement[] elements = header.getElements(); for (int i = 0; i < elements.length; i++) { validateSpecificationVersionAttribute(header, elements[i]); ManifestElement[] elements = header.getElements(); int index = 0; for (int i = 0; i < elements.length; i++) { if (name.equals("java") || name.startsWith("java.")) { //$NON-NLS-1$ //$NON-NLS-2$ IHeader jreHeader = getHeader(ICoreConstants.ECLIPSE_JREBUNDLE); if (jreHeader == null || !"true".equals(jreHeader.getValue())) { //$NON-NLS-1$ report(PDECoreMessages.BundleErrorReporter_importNoJRE, getPackageLine(header, elements[i]), CompilerFlags.ERROR, PDEMarkerFactory.M_JAVA_PACKAGE__PORTED, PDEMarkerFactory.CAT_FATAL); continue;
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 boolean validateStartHeader(IHeader header) { if (header == null) return false; validateBooleanValue(header); return exceptionsAttributesValid(header, header.getElements()); }