You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/01/21 22:21:37 UTC
svn commit: r901857 - in
/tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl:
EndpointIntrospector.java TopologyManagerImpl.java
Author: rfeng
Date: Thu Jan 21 21:21:33 2010
New Revision: 901857
URL: http://svn.apache.org/viewvc?rev=901857&view=rev
Log:
Exclude service listeners from system bundles
Use the Deployer to load client contribution for dynamic nodes
Modified:
tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java
tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
Modified: tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java?rev=901857&r1=901856&r2=901857&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/EndpointIntrospector.java Thu Jan 21 21:21:33 2010
@@ -26,6 +26,7 @@
import static org.osgi.framework.Constants.SERVICE_ID;
import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -59,6 +60,8 @@
import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.deployment.Deployer;
import org.apache.tuscany.sca.implementation.osgi.OSGiImplementation;
import org.apache.tuscany.sca.implementation.osgi.OSGiImplementationFactory;
import org.apache.tuscany.sca.implementation.osgi.OSGiProperty;
@@ -94,7 +97,7 @@
private ModelResolverExtensionPoint modelResolvers;
// private StAXArtifactProcessor<Composite> compositeProcessor;
private JavaInterfaceFactory javaInterfaceFactory;
- // private Deployer deployer;
+ private Deployer deployer;
private ServiceTracker discoveryTracker;
/**
@@ -134,7 +137,7 @@
this.policyFactory = factories.getFactory(PolicyFactory.class);
this.implementationFactory = factories.getFactory(OSGiImplementationFactory.class);
this.javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class);
- // this.deployer = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(Deployer.class);
+ this.deployer = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(Deployer.class);
}
private Intent getIntent(String intent) {
@@ -263,6 +266,17 @@
Contribution contribution = generateContribution(bundle, sid, remoteInterfaces, bindings, allIntents, osgiProps);
return contribution;
}
+
+ public Contribution loadContribution(Bundle bundle, Composite composite) {
+ try {
+ URL root = bundle.getEntry("/");
+ Contribution contribution = deployer.loadContribution(root.toURI(), root, deployer.createMonitor());
+ deployer.attachDeploymentComposite(contribution, composite, false);
+ return contribution;
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
/**
* Generate a contribution that contains the composite for the exported service
@@ -326,7 +340,7 @@
}
// FIXME: Should we scan the owning bundle to create the SCA contribution?
- Contribution contribution = createContribution(bundle, id, composite);
+ Contribution contribution = loadContribution(bundle, composite);
return contribution;
}
@@ -419,7 +433,7 @@
componentReference.getBindings().addAll(bindings);
}
- Contribution contribution = createContribution(bundle, id, composite);
+ Contribution contribution = loadContribution(bundle, composite);
return contribution;
}
Modified: tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java?rev=901857&r1=901856&r2=901857&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-impl-osgi/src/main/java/org/apache/tuscany/sca/osgi/remoteserviceadmin/impl/TopologyManagerImpl.java Thu Jan 21 21:21:33 2010
@@ -195,7 +195,11 @@
Collection<ListenerInfo> listenerInfos = (Collection<ListenerInfo>)listeners;
boolean changed = false;
for (ListenerInfo l : listenerInfos) {
- if (!l.isRemoved() && l.getBundleContext() != context) {
+ if (l.getBundleContext().getBundle().getBundleId() == 0L || l.getBundleContext() == context) {
+ // Ignore system and tuscany bundle
+ continue;
+ }
+ if (!l.isRemoved()) {
String key = l.getFilter();
if (key == null) {
// key = "";
@@ -357,6 +361,19 @@
// Get a listener
ListenerInfo listener = listeners.iterator().next();
Bundle bundle = listener.getBundleContext().getBundle();
+ if (bundle.getBundleId() == 0L) {
+ // Skip system bundles
+ continue;
+ }
+ try {
+ Filter filter = listener.getBundleContext().createFilter(matchedFilter);
+ if (!filter.match(new Hashtable<String, Object>(endpoint.getProperties()))) {
+ continue;
+ }
+ } catch (InvalidSyntaxException ex) {
+ logger.log(Level.SEVERE, ex.getMessage(), ex);
+ continue;
+ }
Map<String, Object> props = new HashMap<String, Object>(endpoint.getProperties());
props.put(Bundle.class.getName(), bundle);