protected IPublisherAction createJREAction() { return new JREAction((File) null); }
public IStatus perform(IPublisherInfo publisherInfo, IPublisherResult results, IProgressMonitor monitor) { String problemMessage = NLS.bind(Messages.message_problemsWhilePublishingEE, jreLocation != null ? jreLocation : environment); resultStatus = new MultiStatus(Activator.ID, 0, problemMessage, null); initialize(publisherInfo); IArtifactDescriptor artifact = createJREData(results); if (artifact != null) publishArtifact(artifact, new File[] {jreLocation}, null, publisherInfo, createRootPrefixComputer(jreLocation)); if (resultStatus.isOK()) return Status.OK_STATUS; return resultStatus; }
private List<IProvidedCapability> generateJRECapability(String id, Version version) { if (profileProperties == null) return Collections.emptyList(); List<IProvidedCapability> result = new ArrayList<IProvidedCapability>(); result.add(PublisherHelper.createSelfCapability(id, version)); generateProvidedPackages(result); generateOsgiEESystemCapabilities(result); return result; }
static void parseSystemCapabilities(String systemCapabilities, MultiStatus parsingStatus, List<IProvidedCapability> parsingResult) { if (systemCapabilities == null || (systemCapabilities.trim().length() == 0)) { return; } try { ManifestElement[] eeEntries = ManifestElement.parseHeader(Constants.FRAMEWORK_SYSTEMCAPABILITIES, systemCapabilities); parseSystemCapabilities(eeEntries, parsingStatus, parsingResult); } catch (BundleException e) { parsingStatus.add(newErrorStatus(e.getLocalizedMessage(), e)); } }
private static void parseEECapability(ManifestElement eeCapability, MultiStatus parsingStatus, List<IProvidedCapability> parsingResult) { String eeName = eeCapability.getAttribute("osgi.ee"); // this is an attribute required for capabilities in the "osgi.ee" namespace //$NON-NLS-1$ if (eeName == null) { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeMissingNameAttribute, eeCapability), null)); return; } String[] eeVersions = parseEECapabilityVersion(eeCapability, parsingStatus); if (eeVersions == null) { // status was already updated by parse method return; } for (int versionIx = 0; versionIx < eeVersions.length; versionIx++) { String rawVersion = eeVersions[versionIx]; try { Version parsedVersion = Version.parseVersion(rawVersion); // complete record -> store parsingResult.add(MetadataFactory.createProvidedCapability(NAMESPACE_OSGI_EE, eeName, parsedVersion)); } catch (IllegalArgumentException e) { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeInvalidVersionAttribute, rawVersion), e)); } } }
private void initialize(IPublisherInfo publisherInfo) { this.info = publisherInfo; if (jreLocation != null) { File javaProfile = null; if (jreLocation.isDirectory()) { //Look for a JRE profile file to set version and capabilities File[] profiles = jreLocation.listFiles((FileFilter) pathname -> pathname.getAbsolutePath().endsWith(".profile")); //$NON-NLS-1$ if (profiles != null && profiles.length > 0) { javaProfile = profiles[0]; } } else if (jreLocation.isFile()) javaProfile = jreLocation; else // jreLocation file does not exist throw new IllegalArgumentException(NLS.bind(Messages.exception_nonExistingJreLocationFile, jreLocation.getAbsolutePath())); profileProperties = loadProfile(javaProfile); } if (profileProperties == null) { String profileFile = (environment != null ? environment : DEFAULT_PROFILE).replace('/', '_') + ".profile"; //$NON-NLS-1$ URL profileURL = getResouceFromSystemBundle(profileFile); profileProperties = loadProfile(profileURL); } }
private Map<String, String> loadProfile(URL profileURL) { if (profileURL == null) return null; try { InputStream stream = profileURL.openStream(); return loadProfile(stream); } catch (IOException e) { //null } return null; }
static void addIUsFromEnvironment(String executionEnvironment, Map<VersionedId, IInstallableUnit> units) { // generate real IUs that represent requested execution environment PublisherResult results = new PublisherResult(); new JREAction(executionEnvironment).perform(new PublisherInfo(), results, null); results.query(QueryUtil.ALL_UNITS, null); Iterator<IInstallableUnit> iterator = results.query(QueryUtil.ALL_UNITS, null).iterator(); while (iterator.hasNext()) { put(units, iterator.next()); } }
private static String[] parseEECapabilityVersion(ManifestElement eeCapability, MultiStatus parsingStatus) { String singleVersion = eeCapability.getAttribute("version:Version"); //$NON-NLS-1$ String[] multipleVersions = ManifestElement.getArrayFromList(eeCapability.getAttribute("version:List<Version>")); //$NON-NLS-1$ if (singleVersion == null && multipleVersions == null) { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeMissingVersionAttribute, eeCapability), null)); return null; } else if (singleVersion == null) { return multipleVersions; } else if (multipleVersions == null) { return new String[] {singleVersion}; } else { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeDuplicateVersionAttribute, eeCapability), null)); return null; } }
iu.setId("a.jre." + profileName.toLowerCase()); //$NON-NLS-1$ List<IProvidedCapability> capabilities = generateJRECapability(iu.getId(), iu.getVersion()); iu.addProvidedCapabilities(capabilities);
iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE); generateJREIUData(iu);
static void parseSystemCapabilities(String systemCapabilities, MultiStatus parsingStatus, List<IProvidedCapability> parsingResult) { if (systemCapabilities == null || (systemCapabilities.trim().length() == 0)) { return; } try { ManifestElement[] eeEntries = ManifestElement.parseHeader(Constants.FRAMEWORK_SYSTEMCAPABILITIES, systemCapabilities); parseSystemCapabilities(eeEntries, parsingStatus, parsingResult); } catch (BundleException e) { parsingStatus.add(newErrorStatus(e.getLocalizedMessage(), e)); } }
private static void parseEECapability(ManifestElement eeCapability, MultiStatus parsingStatus, List<IProvidedCapability> parsingResult) { String eeName = eeCapability.getAttribute(NAMESPACE_OSGI_EE); // this is an attribute required for capabilities in the "osgi.ee" namespace if (eeName == null) { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeMissingNameAttribute, eeCapability), null)); return; } String[] eeVersions = parseEECapabilityVersion(eeCapability, parsingStatus); if (eeVersions == null) { // status was already updated by parse method return; } for (int versionIx = 0; versionIx < eeVersions.length; versionIx++) { String rawVersion = eeVersions[versionIx]; try { Version parsedVersion = Version.parseVersion(rawVersion); // complete record -> store Map<String, Object> capAttrs = new HashMap<>(); capAttrs.put(NAMESPACE_OSGI_EE, eeName); capAttrs.put(VERSION_OSGI_EE, parsedVersion); parsingResult.add(MetadataFactory.createProvidedCapability(NAMESPACE_OSGI_EE, capAttrs)); } catch (IllegalArgumentException e) { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeInvalidVersionAttribute, rawVersion), e)); } } }
private void initialize(IPublisherInfo publisherInfo) { this.info = publisherInfo; if (jreLocation != null) { File javaProfile = null; if (jreLocation.isDirectory()) { //Look for a JRE profile file to set version and capabilities File[] profiles = jreLocation.listFiles(new FileFilter() { public boolean accept(File pathname) { return pathname.getAbsolutePath().endsWith(".profile"); //$NON-NLS-1$ } }); if (profiles != null && profiles.length > 0) { javaProfile = profiles[0]; } } else if (jreLocation.isFile()) javaProfile = jreLocation; else // jreLocation file does not exist throw new IllegalArgumentException(NLS.bind(Messages.exception_nonExistingJreLocationFile, jreLocation.getAbsolutePath())); profileProperties = loadProfile(javaProfile); } if (profileProperties == null) { String profileFile = (environment != null ? environment : DEFAULT_PROFILE).replace('/', '_') + ".profile"; //$NON-NLS-1$ URL profileURL = getResouceFromSystemBundle(profileFile); profileProperties = loadProfile(profileURL); } }
private Map<String, String> loadProfile(URL profileURL) { if (profileURL == null) return null; try { InputStream stream = profileURL.openStream(); return loadProfile(stream); } catch (IOException e) { //null } return null; }
private static String[] parseEECapabilityVersion(ManifestElement eeCapability, MultiStatus parsingStatus) { String singleVersion = eeCapability.getAttribute("version:Version"); //$NON-NLS-1$ String[] multipleVersions = ManifestElement.getArrayFromList(eeCapability.getAttribute("version:List<Version>")); //$NON-NLS-1$ if (singleVersion == null && multipleVersions == null) { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeMissingVersionAttribute, eeCapability), null)); return null; } else if (singleVersion == null) { return multipleVersions; } else if (multipleVersions == null) { return new String[] {singleVersion}; } else { parsingStatus.add(newErrorStatus(NLS.bind(Messages.message_eeDuplicateVersionAttribute, eeCapability), null)); return null; } }
iu.setId("a.jre." + profileName.toLowerCase()); //$NON-NLS-1$ List<IProvidedCapability> capabilities = generateJRECapability(iu.getId(), iu.getVersion()); iu.addProvidedCapabilities(capabilities);
iu.setTouchpointType(PublisherHelper.TOUCHPOINT_NATIVE); generateJREIUData(iu);
public IStatus perform(IPublisherInfo publisherInfo, IPublisherResult results, IProgressMonitor monitor) { String problemMessage = NLS.bind(Messages.message_problemsWhilePublishingEE, jreLocation != null ? jreLocation : environment); resultStatus = new MultiStatus(Activator.ID, 0, problemMessage, null); initialize(publisherInfo); IArtifactDescriptor artifact = createJREData(results); if (artifact != null) publishArtifact(artifact, new File[] {jreLocation}, null, publisherInfo, createRootPrefixComputer(jreLocation)); if (resultStatus.isOK()) return Status.OK_STATUS; return resultStatus; }
static void parseSystemCapabilities(String systemCapabilities, MultiStatus parsingStatus, List<IProvidedCapability> parsingResult) { if (systemCapabilities == null || (systemCapabilities.trim().length() == 0)) { return; } try { ManifestElement[] eeEntries = ManifestElement.parseHeader(Constants.FRAMEWORK_SYSTEMCAPABILITIES, systemCapabilities); parseSystemCapabilities(eeEntries, parsingStatus, parsingResult); } catch (BundleException e) { parsingStatus.add(newErrorStatus(e.getLocalizedMessage(), e)); } }