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