You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/03/13 12:48:22 UTC

svn commit: r517650 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/builder/ core/src/main/java/org/apache/tuscany/core/builder/physical/ core/src/main/java/org/apache/tuscany/core/implementation/java/ spi/src/main/j...

Author: jmarino
Date: Tue Mar 13 04:48:16 2007
New Revision: 517650

URL: http://svn.apache.org/viewvc?view=rev&rev=517650
Log:
start implementing attach for the JPCB

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Tue Mar 13 04:48:16 2007
@@ -125,7 +125,12 @@
         }
         Wire wire = createWire(definition);
         attacherRegistry.attach(source, wire, definition.getSource());
-        attacherRegistry.attach(source, wire, definition.getTarget());
+        attacherRegistry.attach(target, wire, definition.getTarget());
+        if (!wire.getCallbackPhysicalInvocationChains().isEmpty()) {
+            // attach callbacks
+            attacherRegistry.attach(target, wire, definition.getCallbackSource());
+            attacherRegistry.attach(source, wire, definition.getCallbackTarget());
+        }
     }
 
     public void connect(ComponentDefinition<? extends Implementation<?>> definition) throws WiringException {

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java?view=auto&rev=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java Tue Mar 13 04:48:16 2007
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.core.builder.physical;
+
+import java.net.URI;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WireAttachException extends WiringException {
+    public WireAttachException(String message, URI sourceUri, URI targetUri, Throwable cause) {
+        super(message, sourceUri, targetUri, cause);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttachException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java Tue Mar 13 04:48:16 2007
@@ -38,28 +38,4 @@
         super(componentId, instanceFactoryProvider, scopeContainer, initLevel, maxIdleTime, maxAge);
     }
 
-/*
-    public TargetInvoker createTargetInvoker(String targetName, PhysicalOperationDefinition operation)
-        throws TargetInvokerCreationException {
-        List<String> params = operation.getParameters();
-        Class<?>[] paramTypes = new Class<?>[params.size()];
-        ClassLoader loader = implementationClass.getClassLoader();
-        assert loader != null;
-        for (int i = 0; i < params.size(); i++) {
-            String param = params.get(i);
-            try {
-                paramTypes[i] = loader.loadClass(param);
-            } catch (ClassNotFoundException e) {
-                throw new TypeNotFoundException(operation, e);
-            }
-        }
-        Method method;
-        try {
-            method = implementationClass.getMethod(operation.getName(), paramTypes);
-        } catch (NoSuchMethodException e) {
-            throw new TargetMethodNotFoundException(operation);
-        }
-        return new JavaTargetInvoker(method, this, scopeContainer, workContext);
-    }
-*/
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java Tue Mar 13 04:48:16 2007
@@ -18,7 +18,10 @@
  */
 package org.apache.tuscany.core.implementation.java;
 
+import java.lang.reflect.Method;
 import java.net.URI;
+import java.util.List;
+import java.util.Map;
 
 import org.osoa.sca.annotations.Reference;
 
@@ -28,10 +31,14 @@
 import org.apache.tuscany.spi.builder.physical.WireAttacher;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
 import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
+import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.Wire;
 
+import org.apache.tuscany.core.builder.physical.WireAttachException;
 import org.apache.tuscany.core.component.InstanceFactoryProvider;
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireSourceDefinition;
@@ -50,9 +57,11 @@
     // Classloader registry
     private ClassLoaderRegistry classLoaderRegistry;
 
-    // SCope registry
+    // Scope registry
     private ScopeRegistry scopeRegistry;
 
+    private WorkContext workContext;
+
     /**
      * Injects builder registry.
      *
@@ -63,6 +72,12 @@
         registry.register(JavaPhysicalComponentDefinition.class, this);
     }
 
+
+    @Reference
+    public void setWorkContext(WorkContext workContext) {
+        this.workContext = workContext;
+    }
+
     /**
      * Builds a component from its physical component definition.
      *
@@ -136,7 +151,7 @@
      * @param source    Source.
      */
     public void attach(JavaComponent component, Wire wire, JavaPhysicalWireSourceDefinition source) {
-
+        // TODO
     }
 
     /**
@@ -146,7 +161,40 @@
      * @param wire
      * @param target    Target.
      */
-    public void attach(JavaComponent component, Wire wire, JavaPhysicalWireTargetDefinition target) {
+    public void attach(JavaComponent component, Wire wire, JavaPhysicalWireTargetDefinition target)
+        throws WireAttachException {
+        //TODO get impl class
+        Class<?> implementationClass = null;
+
+        for (Map.Entry<PhysicalOperationDefinition, InvocationChain> entry : wire.getPhysicalInvocationChains()
+            .entrySet()) {
+            PhysicalOperationDefinition operation = entry.getKey();
+            InvocationChain chain = entry.getValue();
+            List<String> params = operation.getParameters();
+            Class<?>[] paramTypes = new Class<?>[params.size()];
+            ClassLoader loader = implementationClass.getClassLoader();
+            assert loader != null;
+            for (int i = 0; i < params.size(); i++) {
+                String param = params.get(i);
+                try {
+                    paramTypes[i] = loader.loadClass(param);
+                } catch (ClassNotFoundException e) {
+                    URI sourceUri = wire.getSourceUri();
+                    URI targetUri = wire.getTargetUri();
+                    throw new WireAttachException("Implementation class not found", sourceUri, targetUri, e);
+                }
+            }
+            Method method;
+            try {
+                method = implementationClass.getMethod(operation.getName(), paramTypes);
+            } catch (NoSuchMethodException e) {
+                URI sourceUri = wire.getSourceUri();
+                URI targetUri = wire.getTargetUri();
+                throw new WireAttachException("No matching method found", sourceUri, targetUri, e);
+            }
+            // TODO deal with scope  container
+            chain.addInterceptor(new JavaInvokerInterceptor(method, component, null, workContext));
+        }
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Invocable.java Tue Mar 13 04:48:16 2007
@@ -24,6 +24,7 @@
 
 /**
  * @version $Rev$ $Date$
+ * @Deprecated
  */
 public interface Invocable extends SCAObject {
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java?view=diff&rev=517650&r1=517649&r2=517650
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalWireDefinition.java Tue Mar 13 04:48:16 2007
@@ -39,6 +39,11 @@
     // Source definition
     private PhysicalWireSourceDefinition source;
 
+    private PhysicalWireTargetDefinition callbackTarget;
+
+    // Source definition
+    private PhysicalWireSourceDefinition callbackSource;
+
     // Collection of operations
     private Set<PhysicalOperationDefinition> operations = new HashSet<PhysicalOperationDefinition>();
 
@@ -138,6 +143,22 @@
      */
     public void setTarget(PhysicalWireTargetDefinition target) {
         this.target = target;
+
+    }
+
+    public PhysicalWireTargetDefinition getCallbackTarget() {
+        return callbackTarget;
     }
 
+    public void setCallbackTarget(PhysicalWireTargetDefinition callbackTarget) {
+        this.callbackTarget = callbackTarget;
+    }
+
+    public PhysicalWireSourceDefinition getCallbackSource() {
+        return callbackSource;
+    }
+
+    public void setCallbackSource(PhysicalWireSourceDefinition callbackSource) {
+        this.callbackSource = callbackSource;
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org