]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Improve OSGi distribution
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 20 Aug 2013 13:46:39 +0000 (13:46 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 20 Aug 2013 13:46:39 +0000 (13:46 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6400 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactDistribution.java [new file with mode: 0644]
runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/OsgiBundlesProvider.java [new file with mode: 0644]
runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java [new file with mode: 0644]
runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArgeoOsgiDistribution.java [new file with mode: 0644]
runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/BndWrapper.java
runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/DistributionWrapper.java [deleted file]
runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/osgi/JavaSE-1.7.profile [new file with mode: 0644]

diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactDistribution.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/ArtifactDistribution.java
new file mode 100644 (file)
index 0000000..4cd673e
--- /dev/null
@@ -0,0 +1,51 @@
+package org.argeo.slc.repo;
+
+import org.argeo.slc.DefaultNameVersion;
+import org.argeo.slc.NameVersion;
+import org.argeo.slc.build.Distribution;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
+
+/** A {@link Distribution} based on an Aether {@link Artifact} */
+public class ArtifactDistribution extends DefaultNameVersion implements
+               Distribution {
+       private final Artifact artifact;
+
+       public ArtifactDistribution(Artifact artifact) {
+               this.artifact = artifact;
+               setName(artifact.getArtifactId());
+               setVersion(artifact.getVersion());
+       }
+
+       public ArtifactDistribution(String coords) {
+               this(new DefaultArtifact(coords));
+       }
+
+       /** Aether coordinates of the underlying artifact. */
+       public String getDistributionId() {
+               return artifact.toString();
+       }
+
+       public Artifact getArtifact() {
+               return artifact;
+       }
+
+       @Override
+       public int hashCode() {
+               return artifact.hashCode();
+       }
+
+       @Override
+       public boolean equals(Object obj) {
+               if (obj instanceof NameVersion)
+                       return super.equals(obj);
+               else
+                       return artifact.equals(obj);
+       }
+
+       @Override
+       public String toString() {
+               return getDistributionId();
+       }
+
+}
diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/OsgiBundlesProvider.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/OsgiBundlesProvider.java
new file mode 100644 (file)
index 0000000..de5f03c
--- /dev/null
@@ -0,0 +1,12 @@
+package org.argeo.slc.repo;
+
+import java.util.List;
+
+/**
+ * Provides OSGi bundles either by linking to them, by wrapping existing
+ * archives or by building them.
+ */
+public interface OsgiBundlesProvider {
+       /** The provided bundles in the order they will be retrieved/wrapped/built. */
+       public List<ArtifactDistribution> provides();
+}
diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java
new file mode 100644 (file)
index 0000000..8439518
--- /dev/null
@@ -0,0 +1,133 @@
+package org.argeo.slc.repo.osgi;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.Session;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.jcr.JcrUtils;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.repo.OsgiFactory;
+import org.argeo.slc.repo.RepoUtils;
+import org.sonatype.aether.artifact.Artifact;
+
+/** Download a software distribution and generates the related OSGi bundles. */
+public class ArchiveWrapper implements Runnable {
+       private final static Log log = LogFactory.getLog(ArchiveWrapper.class);
+
+       private OsgiFactory osgiFactory;
+
+       private String version;
+       // private String groupId;
+
+       private String uri;
+
+       private Map<String, BndWrapper> wrappers = new HashMap<String, BndWrapper>();
+
+       public void init() {
+               for (BndWrapper wrapper : wrappers.values()) {
+                       if (wrapper.getVersion() == null)
+                               wrapper.setVersion(version);
+               }
+       }
+
+       public void destroy() {
+
+       }
+
+       public void run() {
+
+               Session distSession = null;
+               Session javaSession = null;
+               ZipInputStream zin = null;
+               try {
+                       javaSession = osgiFactory.openJavaSession();
+                       distSession = osgiFactory.openDistSession();
+
+                       if (log.isDebugEnabled())
+                               log.debug("Wrapping " + uri);
+
+                       Node distNode = osgiFactory.getDist(distSession, uri);
+                       zin = new ZipInputStream(distNode.getNode(Node.JCR_CONTENT)
+                                       .getProperty(Property.JCR_DATA).getBinary().getStream());
+
+                       ZipEntry zentry = null;
+                       ByteArrayOutputStream out = null;
+                       ByteArrayInputStream in = null;
+                       while ((zentry = zin.getNextEntry()) != null) {
+                               try {
+                                       String name = zentry.getName();
+                                       // if (log.isDebugEnabled())
+                                       // log.debug("Scanning " + name);
+                                       if (wrappers.containsKey(name)) {
+
+                                               BndWrapper wrapper = (BndWrapper) wrappers.get(name);
+                                               // if (wrapper.getVersion() == null)
+                                               // wrapper.setVersion(version);// FIXME stateful?
+
+                                               out = new ByteArrayOutputStream((int) zentry.getSize());
+                                               // we must copy since the stream is closed by BND
+                                               byte[] sourceJarBytes = IOUtils.toByteArray(zin);
+                                               in = new ByteArrayInputStream(sourceJarBytes);
+                                               wrapper.wrapJar(in, out);
+
+                                               Artifact newArtifact = wrapper.getArtifact();
+                                               Node newJarNode = RepoUtils.copyBytesAsArtifact(
+                                                               javaSession.getRootNode(), newArtifact,
+                                                               out.toByteArray());
+                                               osgiFactory.indexNode(newJarNode);
+                                               newJarNode.getSession().save();
+                                               if (log.isDebugEnabled())
+                                                       log.debug("Wrapped " + name + " to "
+                                                                       + newJarNode.getPath());
+                                       }
+                               } finally {
+                                       IOUtils.closeQuietly(out);
+                                       IOUtils.closeQuietly(in);
+                               }
+                       }
+               } catch (Exception e) {
+                       throw new SlcException("Cannot wrap distribution " + uri, e);
+               } finally {
+                       IOUtils.closeQuietly(zin);
+                       JcrUtils.logoutQuietly(distSession);
+                       JcrUtils.logoutQuietly(javaSession);
+               }
+       }
+
+       // public List<ArtifactDistribution> provides() {
+       // List<ArtifactDistribution> res = new ArrayList<ArtifactDistribution>();
+       // for (BndWrapper bndWrapper : wrappers.values()) {
+       // ArtifactDistribution ad = new ArtifactDistribution(groupId + ":"
+       // + bndWrapper.getName() + ":" + bndWrapper.getVersion());
+       // res.add(ad);
+       // }
+       // return res;
+       // }
+
+       public void setUri(String uri) {
+               this.uri = uri;
+       }
+
+       public void setWrappers(Map<String, BndWrapper> wrappers) {
+               this.wrappers = wrappers;
+       }
+
+       public void setOsgiFactory(OsgiFactory osgiFactory) {
+               this.osgiFactory = osgiFactory;
+       }
+
+       public void setVersion(String version) {
+               this.version = version;
+       }
+
+}
diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArgeoOsgiDistribution.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArgeoOsgiDistribution.java
new file mode 100644 (file)
index 0000000..c81126e
--- /dev/null
@@ -0,0 +1,62 @@
+package org.argeo.slc.repo.osgi;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.DefaultNameVersion;
+import org.argeo.slc.NameVersion;
+import org.argeo.slc.build.Distribution;
+import org.argeo.slc.build.ModularDistribution;
+import org.argeo.slc.repo.ArtifactDistribution;
+
+public class ArgeoOsgiDistribution extends ArtifactDistribution implements
+               ModularDistribution {
+       private final static Log log = LogFactory
+                       .getLog(ArgeoOsgiDistribution.class);
+
+       private Set<ArtifactDistribution> modules = new HashSet<ArtifactDistribution>();
+
+       public ArgeoOsgiDistribution(String coords) {
+               super(coords);
+       }
+
+       public void init() {
+               if (log.isDebugEnabled()) {
+                       log.debug("## " + toString());
+                       for (NameVersion nv : listModulesNameVersions()) {
+                               log.debug(nv);
+                       }
+               }
+       }
+
+       public void destroy() {
+
+       }
+
+       public Distribution getModuleDistribution(String moduleName,
+                       String moduleVersion) {
+               NameVersion searched = new DefaultNameVersion(moduleName, moduleVersion);
+               for (ArtifactDistribution ad : modules) {
+                       if (ad.equals(searched))
+                               return ad;
+               }
+               return null;
+       }
+
+       public Set<NameVersion> listModulesNameVersions() {
+               return new TreeSet<NameVersion>(modules);
+       }
+
+       public Object getModulesDescriptor(String descriptorType) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public void setModules(Set<ArtifactDistribution> modules) {
+               this.modules = modules;
+       }
+
+}
index 00308a2fd0e690124a2c60a3a76340b4c3090e66..f03a4d74bad0220f0e4a7837d6301b0a18ae261c 100644 (file)
@@ -11,21 +11,27 @@ import java.util.jar.Manifest;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.NameVersion;
 import org.argeo.slc.SlcException;
 import org.osgi.framework.Version;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
+import org.springframework.beans.factory.BeanNameAware;
 
 import aQute.lib.osgi.Builder;
 import aQute.lib.osgi.Constants;
 import aQute.lib.osgi.Jar;
 
 /** Utilities around the BND library, which manipulates OSI meta-data. */
-public class BndWrapper implements Constants {
+public class BndWrapper implements Constants, NameVersion, BeanNameAware {
        private final static Log log = LogFactory.getLog(BndWrapper.class);
 
-       private String bsn;
+       private String groupId;
+       private String name;
        private String version;
+       private Properties bndProperties = new Properties();
 
-       public void wrapJar(Properties properties, InputStream in, OutputStream out) {
+       public void wrapJar(InputStream in, OutputStream out) {
                Builder b = new Builder();
                try {
                        Jar jar = new Jar(null, in);
@@ -53,12 +59,15 @@ public class BndWrapper implements Constants {
                                }
                        }
 
-                       properties.setProperty(BUNDLE_SYMBOLICNAME, bsn);
+                       Properties properties = new Properties();
+                       properties.putAll(bndProperties);
+                       properties.setProperty(BUNDLE_SYMBOLICNAME, name);
                        properties.setProperty(BUNDLE_VERSION, versionToUse.toString());
 
                        // b.addIncluded(jarFile);
                        b.addClasspath(jar);
 
+                       log.debug(properties);
                        b.setProperties(properties);
 
                        Jar newJar = b.build();
@@ -71,12 +80,12 @@ public class BndWrapper implements Constants {
 
        }
 
-       public void setBsn(String bsn) {
-               this.bsn = bsn;
+       public void setName(String bsn) {
+               this.name = bsn;
        }
 
-       public String getBsn() {
-               return bsn;
+       public String getName() {
+               return name;
        }
 
        public void setVersion(String version) {
@@ -87,9 +96,33 @@ public class BndWrapper implements Constants {
                return version;
        }
 
+       public Properties getBndProperties() {
+               return bndProperties;
+       }
+
+       public void setBndProperties(Properties bndProperties) {
+               this.bndProperties = bndProperties;
+       }
+
+       public void setBeanName(String name) {
+               this.name = name;
+       }
+
+       public String getGroupId() {
+               return groupId;
+       }
+
+       public void setGroupId(String groupId) {
+               this.groupId = groupId;
+       }
+
+       public Artifact getArtifact() {
+               return new DefaultArtifact(groupId, name, "jar", version);
+       }
+
        public static void main(String[] args) {
                BndWrapper bndWrapper = new BndWrapper();
-               bndWrapper.setBsn("org.slf4j");
+               bndWrapper.setName("org.slf4j");
 
                InputStream in = null;
                InputStream propertiesIn = null;
@@ -104,7 +137,7 @@ public class BndWrapper implements Constants {
                        // propertiesIn = new FileInputStream(propertiesFile);
                        out = new FileOutputStream(new File("test.jar"));
                        // properties.load(propertiesIn);
-                       bndWrapper.wrapJar(properties, in, out);
+                       bndWrapper.wrapJar(in, out);
                } catch (Exception e) {
                        throw new SlcException("Cannot test", e);
                } finally {
diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/DistributionWrapper.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/DistributionWrapper.java
deleted file mode 100644 (file)
index 094ee89..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-package org.argeo.slc.repo.osgi;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.Session;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.repo.OsgiFactory;
-import org.argeo.slc.repo.RepoUtils;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-
-/** Download a software distribution and generates the related OSGi bundles. */
-public class DistributionWrapper implements Runnable {
-       private final static Log log = LogFactory.getLog(DistributionWrapper.class);
-
-       private OsgiFactory osgiFactory;
-
-       private String version;
-       private String groupId;
-
-       private String uri;
-
-       private Map<String, BndWrapper> wrappers = new HashMap<String, BndWrapper>();
-
-       public void run() {
-
-               Session distSession = null;
-               Session javaSession = null;
-               ZipInputStream zin = null;
-               try {
-                       javaSession = osgiFactory.openJavaSession();
-                       distSession = osgiFactory.openDistSession();
-
-                       if (log.isDebugEnabled())
-                               log.debug("Wrapping " + uri);
-
-                       Node distNode = osgiFactory.getDist(distSession, uri);
-                       zin = new ZipInputStream(distNode.getNode(Node.JCR_CONTENT)
-                                       .getProperty(Property.JCR_DATA).getBinary().getStream());
-
-                       ZipEntry zentry = null;
-                       ByteArrayOutputStream out = null;
-                       ByteArrayInputStream in = null;
-                       while ((zentry = zin.getNextEntry()) != null) {
-                               try {
-                                       String name = zentry.getName();
-                                       // if (log.isDebugEnabled())
-                                       // log.debug("Scanning " + name);
-                                       if (wrappers.containsKey(name)) {
-
-                                               BndWrapper wrapper = (BndWrapper) wrappers.get(name);
-                                               if (wrapper.getVersion() == null)
-                                                       wrapper.setVersion(version);// FIXME stateful?
-
-                                               out = new ByteArrayOutputStream((int) zentry.getSize());
-                                               // we must copy since the stream is closed by BND
-                                               byte[] sourceJarBytes = IOUtils.toByteArray(zin);
-                                               in = new ByteArrayInputStream(sourceJarBytes);
-                                               Properties properties = new Properties();
-                                               wrapper.wrapJar(properties, in, out);
-
-                                               Artifact newArtifact = new DefaultArtifact(groupId,
-                                                               wrapper.getBsn(), "jar", wrapper.getVersion());
-                                               Node newJarNode = RepoUtils.copyBytesAsArtifact(
-                                                               javaSession.getRootNode(), newArtifact,
-                                                               out.toByteArray());
-                                               osgiFactory.indexNode(newJarNode);
-                                               if (log.isDebugEnabled())
-                                                       log.debug("Wrapped " + name + " to "
-                                                                       + newJarNode.getPath());
-                                       }
-                               } finally {
-                                       IOUtils.closeQuietly(out);
-                                       IOUtils.closeQuietly(in);
-                               }
-                       }
-               } catch (Exception e) {
-                       throw new SlcException("Cannot wrap distribution " + uri, e);
-               } finally {
-                       IOUtils.closeQuietly(zin);
-                       JcrUtils.logoutQuietly(distSession);
-                       JcrUtils.logoutQuietly(javaSession);
-               }
-       }
-
-       public void setVersion(String version) {
-               this.version = version;
-       }
-
-       public void setUri(String uri) {
-               this.uri = uri;
-       }
-
-       public void setWrappers(Map<String, BndWrapper> wrappers) {
-               this.wrappers = wrappers;
-       }
-
-       public void setGroupId(String groupId) {
-               this.groupId = groupId;
-       }
-
-       public void setOsgiFactory(OsgiFactory osgiFactory) {
-               this.osgiFactory = osgiFactory;
-       }
-
-}
diff --git a/runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/osgi/JavaSE-1.7.profile b/runtime/org.argeo.slc.repo/src/main/resources/org/argeo/slc/repo/osgi/JavaSE-1.7.profile
new file mode 100644 (file)
index 0000000..192b46e
--- /dev/null
@@ -0,0 +1,198 @@
+###############################################################################
+# Copyright (c) 2009, 2010 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+org.osgi.framework.system.packages = \
+ javax.accessibility,\
+ javax.activation,\
+ javax.activity,\
+ javax.annotation,\
+ javax.annotation.processing,\
+ javax.crypto,\
+ javax.crypto.interfaces,\
+ javax.crypto.spec,\
+ javax.imageio,\
+ javax.imageio.event,\
+ javax.imageio.metadata,\
+ javax.imageio.plugins.bmp,\
+ javax.imageio.plugins.jpeg,\
+ javax.imageio.spi,\
+ javax.imageio.stream,\
+ javax.jws,\
+ javax.jws.soap,\
+ javax.lang.model,\
+ javax.lang.model.element,\
+ javax.lang.model.type,\
+ javax.lang.model.util,\
+ javax.management,\
+ javax.management.event,\
+ javax.management.loading,\
+ javax.management.modelmbean,\
+ javax.management.monitor,\
+ javax.management.namespace,\
+ javax.management.openmbean,\
+ javax.management.relation,\
+ javax.management.remote,\
+ javax.management.remote.rmi,\
+ javax.management.timer,\
+ javax.naming,\
+ javax.naming.directory,\
+ javax.naming.event,\
+ javax.naming.ldap,\
+ javax.naming.spi,\
+ javax.net,\
+ javax.net.ssl,\
+ javax.print,\
+ javax.print.attribute,\
+ javax.print.attribute.standard,\
+ javax.print.event,\
+ javax.rmi,\
+ javax.rmi.CORBA,\
+ javax.rmi.ssl,\
+ javax.script,\
+ javax.security.auth,\
+ javax.security.auth.callback,\
+ javax.security.auth.kerberos,\
+ javax.security.auth.login,\
+ javax.security.auth.spi,\
+ javax.security.auth.x500,\
+ javax.security.cert,\
+ javax.security.sasl,\
+ javax.sound.midi,\
+ javax.sound.midi.spi,\
+ javax.sound.sampled,\
+ javax.sound.sampled.spi,\
+ javax.sql,\
+ javax.sql.rowset,\
+ javax.sql.rowset.serial,\
+ javax.sql.rowset.spi,\
+ javax.swing,\
+ javax.swing.border,\
+ javax.swing.colorchooser,\
+ javax.swing.event,\
+ javax.swing.filechooser,\
+ javax.swing.plaf,\
+ javax.swing.plaf.basic,\
+ javax.swing.plaf.metal,\
+ javax.swing.plaf.multi,\
+ javax.swing.plaf.nimbus,\
+ javax.swing.plaf.synth,\
+ javax.swing.table,\
+ javax.swing.text,\
+ javax.swing.text.html,\
+ javax.swing.text.html.parser,\
+ javax.swing.text.rtf,\
+ javax.swing.tree,\
+ javax.swing.undo,\
+ javax.tools,\
+ javax.transaction,\
+ javax.transaction.xa,\
+ javax.xml,\
+ javax.xml.bind,\
+ javax.xml.bind.annotation,\
+ javax.xml.bind.annotation.adapters,\
+ javax.xml.bind.attachment,\
+ javax.xml.bind.helpers,\
+ javax.xml.bind.util,\
+ javax.xml.crypto,\
+ javax.xml.crypto.dom,\
+ javax.xml.crypto.dsig,\
+ javax.xml.crypto.dsig.dom,\
+ javax.xml.crypto.dsig.keyinfo,\
+ javax.xml.crypto.dsig.spec,\
+ javax.xml.datatype,\
+ javax.xml.namespace,\
+ javax.xml.parsers,\
+ javax.xml.soap,\
+ javax.xml.stream,\
+ javax.xml.stream.events,\
+ javax.xml.stream.util,\
+ javax.xml.transform,\
+ javax.xml.transform.dom,\
+ javax.xml.transform.sax,\
+ javax.xml.transform.stax,\
+ javax.xml.transform.stream,\
+ javax.xml.validation,\
+ javax.xml.ws,\
+ javax.xml.ws.handler,\
+ javax.xml.ws.handler.soap,\
+ javax.xml.ws.http,\
+ javax.xml.ws.soap,\
+ javax.xml.ws.spi,\
+ javax.xml.ws.wsaddressing,\
+ javax.xml.xpath,\
+ org.ietf.jgss,\
+ org.omg.CORBA,\
+ org.omg.CORBA_2_3,\
+ org.omg.CORBA_2_3.portable,\
+ org.omg.CORBA.DynAnyPackage,\
+ org.omg.CORBA.ORBPackage,\
+ org.omg.CORBA.portable,\
+ org.omg.CORBA.TypeCodePackage,\
+ org.omg.CosNaming,\
+ org.omg.CosNaming.NamingContextExtPackage,\
+ org.omg.CosNaming.NamingContextPackage,\
+ org.omg.Dynamic,\
+ org.omg.DynamicAny,\
+ org.omg.DynamicAny.DynAnyFactoryPackage,\
+ org.omg.DynamicAny.DynAnyPackage,\
+ org.omg.IOP,\
+ org.omg.IOP.CodecFactoryPackage,\
+ org.omg.IOP.CodecPackage,\
+ org.omg.Messaging,\
+ org.omg.PortableInterceptor,\
+ org.omg.PortableInterceptor.ORBInitInfoPackage,\
+ org.omg.PortableServer,\
+ org.omg.PortableServer.CurrentPackage,\
+ org.omg.PortableServer.POAManagerPackage,\
+ org.omg.PortableServer.POAPackage,\
+ org.omg.PortableServer.portable,\
+ org.omg.PortableServer.ServantLocatorPackage,\
+ org.omg.SendingContext,\
+ org.omg.stub.java.rmi,\
+ org.w3c.dom,\
+ org.w3c.dom.bootstrap,\
+ org.w3c.dom.css,\
+ org.w3c.dom.events,\
+ org.w3c.dom.html,\
+ org.w3c.dom.ls,\
+ org.w3c.dom.ranges,\
+ org.w3c.dom.stylesheets,\
+ org.w3c.dom.traversal,\
+ org.w3c.dom.views,\
+ org.w3c.dom.xpath,\
+ org.xml.sax,\
+ org.xml.sax.ext,\
+ org.xml.sax.helpers
+org.osgi.framework.bootdelegation = \
+ javax.*,\
+ org.ietf.jgss,\
+ org.omg.*,\
+ org.w3c.*,\
+ org.xml.*,\
+ sun.*,\
+ com.sun.*
+org.osgi.framework.executionenvironment = \
+ OSGi/Minimum-1.0,\
+ OSGi/Minimum-1.1,\
+ OSGi/Minimum-1.2,\
+ JRE-1.1,\
+ J2SE-1.2,\
+ J2SE-1.3,\
+ J2SE-1.4,\
+ J2SE-1.5,\
+ JavaSE-1.6,\
+ JavaSE-1.7
+osgi.java.profile.name = JavaSE-1.7
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error