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");