Repository: jena Updated Branches: refs/heads/master b4de37daa -> d6609fad2
Fixed static initialisation issue in OSGi by adding SPI-related headers Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2462447f Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2462447f Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2462447f Branch: refs/heads/master Commit: 2462447f56660ddedff092deced1d0052765fc42 Parents: ce467aa Author: Jaroslav Pullmann <[email protected]> Authored: Tue Mar 29 17:56:12 2016 +0200 Committer: Jaroslav Pullmann <[email protected]> Committed: Tue Mar 29 17:56:12 2016 +0200 ---------------------------------------------------------------------- apache-jena-osgi/jena-osgi/pom.xml | 19 +++++++- .../java/org/apache/jena/osgi/Activator.java | 47 ++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/2462447f/apache-jena-osgi/jena-osgi/pom.xml ---------------------------------------------------------------------- diff --git a/apache-jena-osgi/jena-osgi/pom.xml b/apache-jena-osgi/jena-osgi/pom.xml index f42c09e..aaa0fa8 100644 --- a/apache-jena-osgi/jena-osgi/pom.xml +++ b/apache-jena-osgi/jena-osgi/pom.xml @@ -219,6 +219,11 @@ <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> + <dependency> + <groupId>org.osgi</groupId> + <artifactId>org.osgi.core</artifactId> + <version>5.0.0</version> + </dependency> </dependencies> <build> @@ -233,8 +238,20 @@ <Export-Package>org.apache.jena.*,!org.apache.jena.ext.*</Export-Package> <Embed-Dependency>artifactId=jena*;inline=true,artifactId=xercesImpl;inline=true,artifactId=xml-apis;inline=true</Embed-Dependency> <Embed-Transitive>true</Embed-Transitive> - <Import-Package>!sun.io,!org.apache.avalon.framework.logger,!com.ibm.uvm.tools,!com.sun.jdmk.comm,!org.apache.log,!org.apache.xml.*,!org.apache.xerces.*,!org.apache.jena.ext.*,sun.misc;resolution:=optional,*</Import-Package> + <Import-Package>org.osgi.framework.*,!sun.io,!org.apache.avalon.framework.logger,!com.ibm.uvm.tools,!com.sun.jdmk.comm,!org.apache.log,!org.apache.xml.*,!org.apache.xerces.*,!org.apache.jena.ext.*,sun.misc;resolution:=optional,*</Import-Package> <Private-Package>org.apache.jena.ext.*</Private-Package> + <Bundle-Activator>org.apache.jena.osgi.Activator</Bundle-Activator> + <!-- Standard headers according to OSGi 133 Service Loader Mediator Specification --> + <Require-Capability> + osgi.extender; filter:="(|(osgi.extender=osgi.serviceloader.registrar)(osgi.extender=osgi.serviceloader.processor))", + osgi.serviceloader; filter:="(osgi.serviceloader=org.apache.jena.system.JenaSubsystemLifecycle)";cardinality:=multiple + </Require-Capability> + <Provide-Capability>osgi.serviceloader; osgi.serviceloader=org.apache.jena.system.JenaSubsystemLifecycle</Provide-Capability> + <!-- SPI-* headers work only with Apache Aries SPI Fly --> + <!-- + <SPI-Consumer>*</SPI-Consumer> + <SPI-Provider>*</SPI-Provider> + --> </instructions> </configuration> </plugin> http://git-wip-us.apache.org/repos/asf/jena/blob/2462447f/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java ---------------------------------------------------------------------- diff --git a/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java b/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java new file mode 100644 index 0000000..90f8016 --- /dev/null +++ b/apache-jena-osgi/jena-osgi/src/main/java/org/apache/jena/osgi/Activator.java @@ -0,0 +1,47 @@ +package org.apache.jena.osgi; + +import org.apache.jena.system.JenaSubsystemRegistry; +import org.apache.jena.system.JenaSubsystemRegistryBasic; +import org.apache.jena.system.JenaSystem; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +public class Activator implements BundleActivator { + + /* + * Based on http://svn.apache.org/repos/asf/aries/trunk/spi-fly/spi-fly-examples/spi-fly-example-provider-consumer-bundle/src/main/java/org/apache/aries/spifly/pc/bundle/Activator.java + * the Activator#start() waits for bundle extension by Aries SPI Fly, configures JenaSystem logging and requests for initialization. + */ + public void start(BundleContext context) throws Exception { + + Thread t = new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + } + setUpJena(); + } + }); + t.start(); + } + + private void setUpJena() { + JenaSubsystemRegistry r = new JenaSubsystemRegistryBasic() { + @Override + public void load() { + super.load(); + } + }; + JenaSystem.setSubsystemRegistry(r); + JenaSystem.DEBUG_INIT = true; + JenaSystem.init(); + System.out.println("Jena-OSGi bundle configuration done!"); + + } + + public void stop(BundleContext context) throws Exception { + + } +}
