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 2006/07/07 03:07:54 UTC

svn commit: r419755 - in /incubator/tuscany/sandbox/jboynes/sca: core2/src/main/java/org/apache/tuscany/core/builder/ core2/src/main/java/org/apache/tuscany/core/implementation/composite/ spi/src/main/java/org/apache/tuscany/spi/wire/

Author: jmarino
Date: Thu Jul  6 18:07:54 2006
New Revision: 419755

URL: http://svn.apache.org/viewvc?rev=419755&view=rev
Log:
fix loader bug where component entries in composite where not being loaded as StAX loader was returning for every end tag, hence prematurely; add final connector piece

Modified:
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?rev=419755&r1=419754&r2=419755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Thu Jul  6 18:07:54 2006
@@ -16,6 +16,7 @@
  */
 package org.apache.tuscany.core.builder;
 
+import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.HashMap;
@@ -24,6 +25,7 @@
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Scope;
 
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
@@ -33,13 +35,26 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.Binding;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.ComponentType;
 import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ReferenceTarget;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.wire.InboundInvocationChain;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
+import org.apache.tuscany.spi.wire.OutboundWire;
+
+import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
+import org.apache.tuscany.core.wire.InboundWireImpl;
+import org.apache.tuscany.core.wire.InvokerInterceptor;
+import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
+import org.apache.tuscany.core.wire.OutboundWireImpl;
 
 /**
  * The default builder registry in the runtime
@@ -96,10 +111,17 @@
             throw e;
         }
 
-        Component<?> context = componentBuilder.build(parent, componentDefinition, deploymentContext);
-        ComponentType componentType = componentDefinition.getImplementation().getComponentType();
-        assert componentType != null : "ComponentDefinition type must be set";
-        return context;
+        Component<?> component = componentBuilder.build(parent, componentDefinition, deploymentContext);
+        ComponentType<?, ?, ?> componentType = componentDefinition.getImplementation().getComponentType();
+        assert componentType != null : "Component type must be set";
+        for (ServiceDefinition service : componentType.getServices().values()) {
+            component.addInboundWire(createWire(service));
+        }
+        for (ReferenceTarget reference : componentDefinition.getReferenceTargets().values()) {
+            component.addOutboundWire(
+                createWire(reference, componentType.getReferences().get(reference.getReferenceName())));
+        }
+        return component;
     }
 
     public <B extends Binding> void register(BindingBuilder<B> builder) {
@@ -139,6 +161,40 @@
         Class<B> bindingClass = (Class<B>) boundReferenceDefinition.getBinding().getClass();
         BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
         return bindingBuilder.build(parent, boundReferenceDefinition, deploymentContext);
+    }
+
+    private InboundWire createWire(ServiceDefinition service) {
+        Class<?> interfaze = service.getServiceContract().getInterfaceClass();
+        InboundWire wire = new InboundWireImpl();
+        wire.setBusinessInterface(interfaze);
+        wire.setServiceName(service.getName());
+        for (Method method : interfaze.getMethods()) {
+            InboundInvocationChain chain = new InboundInvocationChainImpl(method);
+            // TODO handle policy
+            //TODO statement below could be cleaner
+            chain.addInterceptor(new InvokerInterceptor());
+            wire.addInvocationChain(method, chain);
+        }
+        return wire;
+    }
+
+    //FIXME attach referenceDefinition to ref in loader
+    private OutboundWire createWire(ReferenceTarget reference, ReferenceDefinition def) {
+        //TODO multiplicity
+        if (reference.getTargets().size() != 1) {
+            throw new UnsupportedOperationException();
+        }
+        Class<?> interfaze = def.getServiceContract().getInterfaceClass();
+        OutboundWire wire = new OutboundWireImpl();
+        wire.setTargetName(new QualifiedName(reference.getTargets().get(0).toString()));
+        wire.setBusinessInterface(interfaze);
+        wire.setReferenceName(reference.getReferenceName());
+        for (Method method : interfaze.getMethods()) {
+            //TODO handle policy
+            OutboundInvocationChain chain = new OutboundInvocationChainImpl(method);
+            wire.addInvocationChain(method, chain);
+        }
+        return wire;
     }
 
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?rev=419755&r1=419754&r2=419755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Thu Jul  6 18:07:54 2006
@@ -60,6 +60,7 @@
                 connect(child);
             }
         } else if (source instanceof Service) {
+            //TODO complete
         } else {
             BuilderConfigException e = new BuilderConfigException("Invalid source context type");
             e.setIdentifier(source.getName());

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java?rev=419755&r1=419754&r2=419755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java Thu Jul  6 18:07:54 2006
@@ -22,6 +22,8 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
@@ -32,8 +34,6 @@
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
 
 import org.apache.tuscany.core.loader.AssemblyConstants;
 
@@ -76,7 +76,9 @@
                     reader.next();
                     break;
                 case END_ELEMENT:
-                    return composite;
+                    if (AssemblyConstants.COMPOSITE.equals(reader.getName())) {
+                        return composite;
+                    }
             }
         }
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java?rev=419755&r1=419754&r2=419755&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/OutboundWire.java Thu Jul  6 18:07:54 2006
@@ -56,12 +56,12 @@
     /**
      * Adds the collection of invocation chains keyed by operation
      */
-    void addInvocationChains(Map<Method, OutboundInvocationChain> chains);
+    void addInvocationChains(Map<Method, OutboundInvocationChain> chain);
 
     /**
      * Adds the invocation chain associated with the given operation
      */
-    void addInvocationChain(Method method, OutboundInvocationChain chains);
+    void addInvocationChain(Method method, OutboundInvocationChain chain);
 
     /**
      * Set when a wire can be optimized; that is when no handlers or interceptors exist on either end



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