Github user afs commented on a diff in the pull request:

    https://github.com/apache/jena/pull/134#discussion_r58615451
  
    --- Diff: 
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();
    +                   }
    +           };
    --- End diff --
    
    (naive questions from a non-OSGI person ...)
    
    Isn't that just `JenaSubsystemRegistry r = new JenaSubsystemRegistryBasic() 
;` or is that a way of influcing the `ServiceLoader.load(class)` call to act 
like `ServiceLoader.load(class, ClassLoader)` which is OSGi friendly? Std Java 
uses the classloader of the current thread so that's wrong - what should it be 
for OSGi? `this.getClass().getClassLoader()`?
    
    http://blog.osgi.org/2013/02/javautilserviceloader-in-osgi.html
    
    also discusses use of MANIFEST.MF.
    
    However, we can change the call of `ServiceLoader.load` to include the 
classloader.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to