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 2007/04/12 08:40:58 UTC
svn commit: r527790 -
/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
Author: rfeng
Date: Wed Apr 11 23:40:56 2007
New Revision: 527790
URL: http://svn.apache.org/viewvc?view=rev&rev=527790
Log:
Check operation matching
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=527790&r1=527789&r2=527790
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Wed Apr 11 23:40:56 2007
@@ -36,13 +36,17 @@
import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
import org.apache.tuscany.core.builder.BuilderRegistryImpl;
import org.apache.tuscany.core.builder.ComponentNotFoundException;
+import org.apache.tuscany.core.builder.IncompatibleInterfacesException;
import org.apache.tuscany.core.builder.WireCreationException;
import org.apache.tuscany.core.wire.InvocationChainImpl;
import org.apache.tuscany.core.wire.InvokerInterceptor;
import org.apache.tuscany.core.wire.WireImpl;
import org.apache.tuscany.core.wire.WireUtils;
+import org.apache.tuscany.interfacedef.IncompatibleInterfaceContractException;
import org.apache.tuscany.interfacedef.InterfaceContract;
+import org.apache.tuscany.interfacedef.InterfaceContractMapper;
import org.apache.tuscany.interfacedef.Operation;
+import org.apache.tuscany.interfacedef.impl.DefaultInterfaceContractMapper;
import org.apache.tuscany.spi.Scope;
import org.apache.tuscany.spi.builder.Builder;
import org.apache.tuscany.spi.builder.BuilderException;
@@ -75,6 +79,7 @@
private Builder builder;
private ComponentManager componentManager;
private ScopeRegistry scopeRegistry;
+ private InterfaceContractMapper mapper = new DefaultInterfaceContractMapper();
public DeployerImpl(XMLInputFactory xmlFactory, Builder builder, ComponentManager componentManager) {
this.xmlFactory = xmlFactory;
@@ -181,8 +186,13 @@
throw new ComponentNotFoundException("Target not found", targetUri);
}
URI sourceURI = URI.create(source.getUri() + "#" + refName);
- Wire wire = createWire(sourceURI, targetUri, refDefinition.getInterfaceContract(), service
- .getInterfaceContract(), Wire.LOCAL_BINDING);
+ Wire wire;
+ try {
+ wire = createWire(sourceURI, targetUri, refDefinition.getInterfaceContract(), service.getService()
+ .getInterfaceContract(), Wire.LOCAL_BINDING);
+ } catch (IncompatibleInterfaceContractException e1) {
+ throw new IncompatibleInterfacesException(sourceURI, targetUri, e1);
+ }
try {
attachInvokers(refName, wire, source, target);
} catch (TargetInvokerCreationException e) {
@@ -223,14 +233,17 @@
URI targetUri,
InterfaceContract sourceContract,
InterfaceContract targetContract,
- QName bindingType) {
+ QName bindingType) throws IncompatibleInterfaceContractException {
Wire wire = new WireImpl(bindingType);
wire.setSourceContract(sourceContract);
wire.setTargetContract(targetContract);
wire.setSourceUri(sourceURI);
wire.setTargetUri(targetUri);
+
+ mapper.checkCompatibility(sourceContract, targetContract, false, false);
for (Operation operation : sourceContract.getInterface().getOperations()) {
- InvocationChain chain = new InvocationChainImpl(operation);
+ Operation targetOperation = mapper.map(targetContract.getInterface(), operation);
+ InvocationChain chain = new InvocationChainImpl(operation, targetOperation);
/*
* if (operation.isNonBlocking()) { chain.addInterceptor(new
* NonBlockingInterceptor(scheduler, workContext)); }
@@ -241,7 +254,8 @@
}
if (sourceContract.getCallbackInterface() != null) {
for (Operation operation : sourceContract.getCallbackInterface().getOperations()) {
- InvocationChain chain = new InvocationChainImpl(operation);
+ Operation targetOperation = mapper.map(targetContract.getCallbackInterface(), operation);
+ InvocationChain chain = new InvocationChainImpl(operation, targetOperation);
/*
* if (operation.isNonBlocking()) { chain.addInterceptor(new
* NonBlockingInterceptor(scheduler, workContext)); }
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org