Author: djencks
Date: Tue Jun 29 17:21:56 2010
New Revision: 959047

URL: http://svn.apache.org/viewvc?rev=959047&view=rev
Log:
Only look in one ejb module at a time, or all the ejbs will show up in every 
module

Modified:
    
openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java

Modified: 
openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java?rev=959047&r1=959046&r2=959047&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java
 Tue Jun 29 17:21:56 2010
@@ -20,6 +20,8 @@ import org.apache.openejb.config.Deploym
 import org.apache.openejb.config.FinderFactory;
 import org.apache.xbean.finder.AbstractFinder;
 import org.apache.xbean.finder.BundleAnnotationFinder;
+import org.apache.xbean.osgi.bundle.util.DiscoveryRange;
+import org.apache.xbean.osgi.bundle.util.ResourceDiscoveryFilter;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleReference;
@@ -41,7 +43,30 @@ public class BundleFinderFactory extends
             ServiceReference sr = 
bundleContext.getServiceReference(PackageAdmin.class.getName());
             PackageAdmin packageAdmin = (PackageAdmin) 
bundleContext.getService(sr);
 
-            return new BundleAnnotationFinder(packageAdmin, bundle);
+            final String location = module.getModuleId();
+            if (location != null && !location.isEmpty()) {
+                ResourceDiscoveryFilter filter = new ResourceDiscoveryFilter() 
{
+
+                    @Override
+                    public boolean rangeDiscoveryRequired(DiscoveryRange 
discoveryRange) {
+                        return discoveryRange == 
DiscoveryRange.BUNDLE_CLASSPATH || discoveryRange == 
DiscoveryRange.FRAGMENT_BUNDLES;
+                    }
+
+                    @Override
+                    public boolean zipFileDiscoveryRequired(String s) {
+                        return s.equals(location);
+                    }
+
+                    @Override
+                    public boolean directoryDiscoveryRequired(String s) {
+                        return s.equals(location);
+                    }
+                };
+
+                return new BundleAnnotationFinder(packageAdmin, bundle, 
filter);
+            } else {
+                return new BundleAnnotationFinder(packageAdmin, bundle);
+            }
         }
 
         throw new IllegalStateException("Module classloader is not a 
BundleReference. Only use BundleFactoryFinder in an pure osgi environment");


Reply via email to