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/02/26 23:09:55 UTC

svn commit: r916838 - in /tuscany/sca-java-2.x/trunk: itest/nodes/binding-sca-tribes/src/test/java/org/apache/tuscany/sca/itest/bindingsca/ modules/extensibility/src/main/java/org/apache/tuscany/sca/core/ modules/extensibility/src/main/java/org/apache/...

Author: rfeng
Date: Fri Feb 26 22:09:55 2010
New Revision: 916838

URL: http://svn.apache.org/viewvc?rev=916838&view=rev
Log:
Add a test for remote invocations between nodes created from two different node factories

Modified:
    tuscany/sca-java-2.x/trunk/itest/nodes/binding-sca-tribes/src/test/java/org/apache/tuscany/sca/itest/bindingsca/BindingSCATestCase.java
    tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
    tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java
    tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
    tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java
    tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultComponentJavaScriptGeneratorExtensionPoint.java
    tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultJavascriptProxyFactoryExtensionPoint.java

Modified: tuscany/sca-java-2.x/trunk/itest/nodes/binding-sca-tribes/src/test/java/org/apache/tuscany/sca/itest/bindingsca/BindingSCATestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/nodes/binding-sca-tribes/src/test/java/org/apache/tuscany/sca/itest/bindingsca/BindingSCATestCase.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/nodes/binding-sca-tribes/src/test/java/org/apache/tuscany/sca/itest/bindingsca/BindingSCATestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/itest/nodes/binding-sca-tribes/src/test/java/org/apache/tuscany/sca/itest/bindingsca/BindingSCATestCase.java Fri Feb 26 22:09:55 2010
@@ -88,18 +88,24 @@
      * Two node factories and two nodes
      */
     @Test
-    public void testTwoFactoriesTwoNodes() {
+    public void testTwoFactoriesTwoNodes() throws Exception {
         NodeFactory factory1 = NodeFactory.newInstance();
         Node node1 = createClientNode(factory1);
         NodeFactory factory2 = NodeFactory.newInstance();
         Node node2 = createServiceNode(factory2);
         node1.start();
         node2.start();
+        Thread.sleep(1000);
         try {
-            runClient(node1);
-            Assert.fail("ServiceRuntimeException should have been thrown.");
-        } catch (ServiceRuntimeException e) {
-            // ignore
+            // This call doesn't require the Local service, it should be successful
+            createCustomer(node1);
+            try {
+                runClient(node1);
+                // We cannot make local call to remote endpoints
+                Assert.fail("ServiceRuntimeException should have been thrown.");
+            } catch (ServiceRuntimeException e) {
+                // ignore
+            }
         } finally {
             node2.stop();
             node1.stop();
@@ -122,6 +128,13 @@
         Assert.assertEquals("Ray", client.getName(id));
     }
 
+    static String createCustomer(Node node) {
+        Client client = node.getService(Client.class, "ClientComponent/Client");
+        String id = client.create("John");
+        Assert.assertNotNull(id);
+        return id;
+    }
+
     /**
      * One node factory and one node for both composites
      */

Modified: tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java Fri Feb 26 22:09:55 2010
@@ -50,7 +50,7 @@
         this.discovery = ServiceDiscovery.getInstance();
     }
     
-    protected DefaultExtensionPointRegistry(ServiceDiscovery discovery) {
+    public DefaultExtensionPointRegistry(ServiceDiscovery discovery) {
         this.discovery = discovery;
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ContextClassLoaderServiceDiscoverer.java Fri Feb 26 22:09:55 2010
@@ -115,17 +115,25 @@
         this.classLoaderReference = new WeakReference<ClassLoader>(classLoader);
     }
     
+    public ContextClassLoaderServiceDiscoverer(ClassLoader classLoader) {
+        if (classLoader == null) {
+            classLoader = Thread.currentThread().getContextClassLoader();
+        }
+        this.classLoaderReference = new WeakReference<ClassLoader>(classLoader);
+    }
+    
     public ClassLoader getContextClassLoader() {
         //return classLoaderReference.get();
         return Thread.currentThread().getContextClassLoader();
     }
 
-    private List<URL> getResources(final String name) throws IOException {
+    private Collection<URL> getResources(final String name) throws IOException {
         try {
-            return AccessController.doPrivileged(new PrivilegedExceptionAction<List<URL>>() {
-                public List<URL> run() throws IOException {
+            return AccessController.doPrivileged(new PrivilegedExceptionAction<Collection<URL>>() {
+                public Collection<URL> run() throws IOException {
                     List<URL> urls = Collections.list(classLoaderReference.get().getResources(name));
-                    return urls;
+                    // Eliminate the duplicate URLs (which can be found from child/parent classloaders)
+                    return new HashSet<URL>(urls);
                 }
             });
         } catch (PrivilegedActionException e) {

Modified: tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/extensibility/src/main/java/org/apache/tuscany/sca/extensibility/ServiceDiscovery.java Fri Feb 26 22:09:55 2010
@@ -83,7 +83,7 @@
             }
         } catch (Throwable e) {
         }
-        discoverer = new ContextClassLoaderServiceDiscoverer();
+        discoverer = new ContextClassLoaderServiceDiscoverer(getClass().getClassLoader());
         return discoverer;
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/NodeFactory.java Fri Feb 26 22:09:55 2010
@@ -472,6 +472,8 @@
     }
 
     public void destroy() {
+        count = 0;
+        instance = null;
     }
 
     /**

Modified: tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultComponentJavaScriptGeneratorExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultComponentJavaScriptGeneratorExtensionPoint.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultComponentJavaScriptGeneratorExtensionPoint.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultComponentJavaScriptGeneratorExtensionPoint.java Fri Feb 26 22:09:55 2010
@@ -32,7 +32,6 @@
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
 import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
-import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.MonitorFactory;
 
@@ -127,7 +126,7 @@
         // Get the proxy factories declarations
         Collection<ServiceDeclaration> factoryDeclarations = null;
         try {
-            factoryDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ComponentJavaScriptGenerator.class);
+            factoryDeclarations = extensionPoints.getServiceDiscovery().getServiceDeclarations(ComponentJavaScriptGenerator.class);
         } catch (IOException e) {
             IllegalStateException ie = new IllegalStateException(e);
             error("IllegalStateException", factoryDeclarations, ie);

Modified: tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultJavascriptProxyFactoryExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultJavascriptProxyFactoryExtensionPoint.java?rev=916838&r1=916837&r2=916838&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultJavascriptProxyFactoryExtensionPoint.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/web-javascript/src/main/java/org/apache/tuscany/sca/web/javascript/DefaultJavascriptProxyFactoryExtensionPoint.java Fri Feb 26 22:09:55 2010
@@ -45,10 +45,11 @@
     private final Map<Class<?>, JavascriptProxyFactory> factoriesByType = new HashMap<Class<?>, JavascriptProxyFactory>();
     
     private Monitor monitor = null;
-    
+    private ExtensionPointRegistry registry;
     private boolean loaded = false;
     
     public DefaultJavascriptProxyFactoryExtensionPoint(ExtensionPointRegistry extensionPoints) {
+        this.registry = extensionPoints;
         UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
         MonitorFactory monitorFactory = utilities.getUtility(MonitorFactory.class);
         if (monitorFactory != null) {
@@ -116,7 +117,7 @@
         if (bindingType.isInterface()) {
             // Dynamically load a factory class declared under META-INF/services 
             try {
-                Class<?> factoryClass = ServiceDiscovery.getInstance().getServiceDeclaration(bindingType).getClass();
+                Class<?> factoryClass = registry.getServiceDiscovery().getServiceDeclaration(bindingType).getClass();
                 if (factoryClass != null) {
 
                     try {