You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2010/04/22 00:01:02 UTC

svn commit: r936530 - in /geronimo/yoko/trunk: yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/

Author: djencks
Date: Wed Apr 21 22:01:02 2010
New Revision: 936530

URL: http://svn.apache.org/viewvc?rev=936530&view=rev
Log:
GERONIMO-5091 add priority to locator to make it easier to predict what class you'll get

Modified:
    geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/BundleProviderLoader.java
    geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderBean.java
    geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderRegistryImpl.java
    geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ServiceBean.java
    geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml

Modified: geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/BundleProviderLoader.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/BundleProviderLoader.java?rev=936530&r1=936529&r2=936530&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/BundleProviderLoader.java (original)
+++ geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/BundleProviderLoader.java Wed Apr 21 22:01:02 2010
@@ -25,7 +25,7 @@ import org.osgi.framework.Bundle;
 /**
  * Holder class for located services information.
  */
-public class BundleProviderLoader {
+public class BundleProviderLoader implements Comparable<BundleProviderLoader> {
     // the class name for this provider
     private final String providerId;
     // the mapped class name of the provider.
@@ -33,17 +33,21 @@ public class BundleProviderLoader {
     // the hosting bundle.
     private final Bundle bundle;
 
+    private final int priority;
+
     /**
      * Create a loader for this registered provider.
      *
      * @param providerId The provider ID
      * @param providerClass The mapped class name of the provider.
      * @param bundle    The hosting bundle.
+     * @param priority
      */
-    public BundleProviderLoader(String providerId, String providerClass, Bundle bundle) {
+    public BundleProviderLoader(String providerId, String providerClass, Bundle bundle, int priority) {
         this.providerId = providerId;
         this.providerClass = providerClass;
         this.bundle = bundle;
+        this.priority = priority;
     }
 
     /**
@@ -108,4 +112,8 @@ public class BundleProviderLoader {
             return false;
         }
     }
+
+    public int compareTo(BundleProviderLoader other) {
+        return other.priority - priority;
+    }
 }

Modified: geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderBean.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderBean.java?rev=936530&r1=936529&r2=936530&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderBean.java (original)
+++ geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderBean.java Wed Apr 21 22:01:02 2010
@@ -22,7 +22,6 @@ package org.apache.yoko.osgi.locator;
 
 import java.util.logging.Logger;
 
-import org.apache.yoko.osgi.ProviderRegistry;
 import org.osgi.framework.Bundle;
 
 /**
@@ -36,10 +35,18 @@ public class ProviderBean {
     private BundleProviderLoader bundleProviderLoader;
 
     public ProviderBean(String key,
+                       String className,
+                       Bundle bundle,
+                       Register providerRegistry) {
+        this(key, className, bundle, providerRegistry, -1);
+    }
+
+    public ProviderBean(String key,
                         String className,
                         Bundle bundle,
-                        Register providerRegistry) {
-        bundleProviderLoader = new BundleProviderLoader(key, className, bundle);
+                        Register providerRegistry,
+                        Integer priority) {
+        bundleProviderLoader = new BundleProviderLoader(key, className, bundle, priority == null? -1: priority);
         log.finer("ProviderBean: " + bundleProviderLoader);
         this.providerRegistry = providerRegistry;
     }

Modified: geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderRegistryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderRegistryImpl.java?rev=936530&r1=936529&r2=936530&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderRegistryImpl.java (original)
+++ geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ProviderRegistryImpl.java Wed Apr 21 22:01:02 2010
@@ -17,6 +17,7 @@
 package org.apache.yoko.osgi.locator;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -525,10 +526,11 @@ public class ProviderRegistryImpl implem
             // when asked to locate.
             List<BundleProviderLoader> l = registry.get(providerId);
             if (l ==  null) {
-                l = new ArrayList<BundleProviderLoader>();
+                l = new ArrayList<BundleProviderLoader>(2);
                 registry.put(providerId, l);
             }
             l.add(provider);
+            Collections.sort(l);
         }
 
         /**

Modified: geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ServiceBean.java
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ServiceBean.java?rev=936530&r1=936529&r2=936530&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ServiceBean.java (original)
+++ geronimo/yoko/trunk/yoko-osgi/src/main/java/org/apache/yoko/osgi/locator/ServiceBean.java Wed Apr 21 22:01:02 2010
@@ -35,10 +35,18 @@ public class ServiceBean {
     private BundleProviderLoader bundleProviderLoader;
 
     public ServiceBean(String key,
-                        String className,
-                        Bundle bundle,
-                        Register providerRegistry) {
-        bundleProviderLoader = new BundleProviderLoader(key, className, bundle);
+                       String className,
+                       Bundle bundle,
+                       Register providerRegistry) {
+        this(key, className, bundle, providerRegistry, -1);
+    }
+    
+    public ServiceBean(String key,
+                       String className,
+                       Bundle bundle,
+                       Register providerRegistry,
+                       Integer priority) {
+        bundleProviderLoader = new BundleProviderLoader(key, className, bundle, priority == null? -1: priority);
         log.finer("ServiceBean: " + bundleProviderLoader);
         this.providerRegistry = providerRegistry;
     }

Modified: geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml
URL: http://svn.apache.org/viewvc/geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml?rev=936530&r1=936529&r2=936530&view=diff
==============================================================================
--- geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml (original)
+++ geronimo/yoko/trunk/yoko-rmi-impl/src/main/resources/OSGI-INF/blueprint/provider.xml Wed Apr 21 22:01:02 2010
@@ -24,11 +24,6 @@ limitations under the License.
 
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
 
-    <!--<service id="yokoRegistry"-->
-             <!--interface="org.apache.yoko.osgi.ProviderRegistry"-->
-             <!--activation="eager">-->
-        <!--<ref component-id="yokoRegistryBean"/>-->
-    <!--</service>-->
     <service id="yokoRegister"
              interface="org.apache.yoko.osgi.locator.Register"
              activation="eager">
@@ -91,6 +86,23 @@ limitations under the License.
             <ref component-id="yokoRegistryBean"/>
         </argument>
     </bean>
+    <bean class="org.apache.yoko.osgi.locator.ServiceBean"
+          activation="eager"
+          init-method="start"
+          destroy-method="stop">
+        <argument>
+            <value>javax.rmi.CORBA.StubClass</value>
+        </argument>
+        <argument>
+            <value>org.apache.yoko.rmi.impl.StubImpl</value>
+        </argument>
+        <argument>
+            <ref component-id="blueprintBundle"/>
+        </argument>
+        <argument>
+            <ref component-id="yokoRegistryBean"/>
+        </argument>
+    </bean>
 
 
 </blueprint>
\ No newline at end of file