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