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 {
+
+       }
+}

Reply via email to