Author: rfeng
Date: Thu Feb 4 20:50:00 2010
New Revision: 906646
URL: http://svn.apache.org/viewvc?rev=906646&view=rev
Log:
Improve the bundle discovery filtering based on the ML discussion
Modified:
tuscany/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
Modified:
tuscany/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
URL:
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java?rev=906646&r1=906645&r2=906646&view=diff
==============================================================================
---
tuscany/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
(original)
+++
tuscany/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java
Thu Feb 4 20:50:00 2010
@@ -215,7 +215,7 @@
}
}
- private boolean isProviderBundle(Bundle bundle) {
+ private boolean isProviderBundle(Bundle bundle, boolean isTuscanyService) {
if (bundle.getBundleId() == 0 ||
bundle.getSymbolicName().startsWith("1.x-osgi-bundle")
|| bundle.getHeaders().get(Constants.FRAGMENT_HOST) != null) {
// Skip system bundle as it has access to the application
classloader
@@ -225,19 +225,27 @@
// Skip bundle fragments too
return false;
}
- if (bundle.getSymbolicName().startsWith("org.apache.tuscany.sca.")) {
+ // FIXME: [rfeng] What bundles should be searched? ACTIVE and STARTING?
+ if ((bundle.getState() & Bundle.UNINSTALLED) != 0) {
+ return false;
+ }
+ if (isTuscanyService) {
Version scaVersion = getSCAVersion(bundle);
return scaVersion.compareTo(version) >= 0;
}
return true;
}
- protected Collection<Bundle> getBundles() {
+ protected Collection<Bundle> getBundles(boolean isTuscanyService) {
// return bundles.keySet();
Set<Bundle> set = new HashSet<Bundle>();
for (Bundle b : context.getBundles()) {
- if (isProviderBundle(b)) {
+ if (isProviderBundle(b, isTuscanyService)) {
set.add(b);
+ } else {
+ if (b.getBundleId() != 0) {
+ logger.warning("Bundle is skipped for service discovery: "
+ toString(b));
+ }
}
}
return set;
@@ -249,11 +257,12 @@
//
http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/XPathFactory.html
boolean isPropertyFile =
"javax.xml.xpath.XPathFactory".equals(serviceName);
+ boolean isTuscanyService =
serviceName.startsWith("org.apache.tuscany.sca.");
serviceName = "META-INF/services/" + serviceName;
Set<URL> visited = new HashSet<URL>();
//System.out.println(">>>> getServiceDeclarations()");
- for (Bundle bundle : getBundles()) {
+ for (Bundle bundle : getBundles(isTuscanyService)) {
// if (!isProviderBundle(bundle)) {
// continue;
// }