X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.repo%2Fsrc%2Forg%2Fargeo%2Fslc%2Frepo%2Fosgi%2FOsgiProfile.java;fp=org.argeo.slc.repo%2Fsrc%2Forg%2Fargeo%2Fslc%2Frepo%2Fosgi%2FOsgiProfile.java;h=0d97c980e43d71615af6d5c5f68f55d4307451fc;hb=825d60c5348dbe3f5be25b0bccf7bdebfe694219;hp=0000000000000000000000000000000000000000;hpb=5e991fff5cba01858dcc5747a27e637325bc5c8e;p=gpl%2Fargeo-jcr.git diff --git a/org.argeo.slc.repo/src/org/argeo/slc/repo/osgi/OsgiProfile.java b/org.argeo.slc.repo/src/org/argeo/slc/repo/osgi/OsgiProfile.java new file mode 100644 index 0000000..0d97c98 --- /dev/null +++ b/org.argeo.slc.repo/src/org/argeo/slc/repo/osgi/OsgiProfile.java @@ -0,0 +1,51 @@ +package org.argeo.slc.repo.osgi; + +import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Properties; + +import org.apache.commons.io.IOUtils; +import org.argeo.slc.SlcException; + +/** + * Wraps an OSGi profile, simplifying access to its values such as system + * packages, etc. + */ +public class OsgiProfile { + public final static String PROP_SYSTEM_PACKAGES = "org.osgi.framework.system.packages"; + + public final static OsgiProfile PROFILE_JAVA_SE_1_6 = new OsgiProfile("JavaSE-1.6.profile"); + + private final URL url; + private final Properties properties; + + public OsgiProfile(URL url) { + this.url = url; + properties = new Properties(); + InputStream in = null; + try { + properties.load(this.url.openStream()); + } catch (Exception e) { + throw new SlcException("Cannot initalize OSGi profile " + url, e); + } finally { + IOUtils.closeQuietly(in); + } + } + + public OsgiProfile(String name) { + this(OsgiProfile.class.getClassLoader() + .getResource('/' + OsgiProfile.class.getPackage().getName().replace('.', '/') + '/' + name)); + } + + public List getSystemPackages() { + String[] splitted = properties.getProperty(PROP_SYSTEM_PACKAGES).split(","); + List res = new ArrayList(); + for (String pkg : splitted) { + res.add(pkg.trim()); + } + return Collections.unmodifiableList(res); + } +}