diff options
2 files changed, 17 insertions, 13 deletions
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java index f90dc2d1d9..4c4599709d 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java @@ -50,6 +50,8 @@ import org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointReferenceImpl; import org.apache.tuscany.sca.definitions.Definitions; import org.apache.tuscany.sca.interfacedef.InterfaceContract; import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper; +import org.apache.tuscany.sca.interfacedef.impl.TuscanyInterfaceContractImpl; +import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract; import org.apache.tuscany.sca.interfacedef.util.Audit; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.MonitorFactory; @@ -1123,10 +1125,20 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { return true; } - // If the contracts are not of the same type use normailized interfaces - if (endpointReferenceContract.getClass() != endpointContract.getClass() || + // TUSCANY-4033 + // Detect the case where the interfaces are both Java but the Endpoint is remote in which case + // we have to match the local Java interface with the remote Tuscany interface. But we can do this + // without running WSDLGen + if (endpointReferenceContract.getClass() == endpointContract.getClass() && + endpointReferenceContract instanceof JavaInterfaceContract && + endpointContract.getNormalizedWSDLContract() != null && + endpointContract.getNormalizedWSDLContract() instanceof TuscanyInterfaceContractImpl){ + // use the TuscanyInterfaceContractImpl to compare against the Java contract + endpointContract = endpointContract.getNormalizedWSDLContract(); + } else if (endpointReferenceContract.getClass() != endpointContract.getClass() || endpointReferenceContract.getNormalizedWSDLContract() != null || endpointContract.getNormalizedWSDLContract() != null) { + // If the contracts are not of the same type use normailized interfaces endpointReferenceContract = ((RuntimeEndpointReference)endpointReference).getGeneratedWSDLContract(endpointReferenceContract); endpointContract = ((RuntimeEndpoint)endpoint).getGeneratedWSDLContract(endpointContract); } diff --git a/sca-java-2.x/trunk/testing/itest/interface-matching/src/test/java/org/apache/tuscany/sca/itest/interfaces/InerfaceMatchTestCase.java b/sca-java-2.x/trunk/testing/itest/interface-matching/src/test/java/org/apache/tuscany/sca/itest/interfaces/InerfaceMatchTestCase.java index 28b1bc442f..6afb0ecd27 100644 --- a/sca-java-2.x/trunk/testing/itest/interface-matching/src/test/java/org/apache/tuscany/sca/itest/interfaces/InerfaceMatchTestCase.java +++ b/sca-java-2.x/trunk/testing/itest/interface-matching/src/test/java/org/apache/tuscany/sca/itest/interfaces/InerfaceMatchTestCase.java @@ -119,7 +119,6 @@ public class InerfaceMatchTestCase { * @throws Exception
*/
@Test
- @Ignore("Can't get RMI binding working as a delegate for some reason")
public void testDistributedRemotableNonJAXB() throws Exception {
// Force the remote default binding to be rmi as I want something that doesn't depend on
@@ -145,21 +144,14 @@ public class InerfaceMatchTestCase { ClientComponent local = node1.getService(ClientComponent.class, "DistributedClientComponent");
ParameterObject po = new ParameterObject();
+ po.field1 = "Test String";
try {
String response = local.foo1(po);
- Assert.assertEquals("AComponent", response);
+ Assert.assertEquals("Test String", response);
} catch (ServiceRuntimeException ex){
Assert.fail("Unexpected exception with foo " + ex.toString());
- }
-
- try {
- local.callback("Callback");
- String response = local.getCallbackValue();
- Assert.assertEquals("Callback", response);
- } catch (ServiceRuntimeException ex){
- Assert.fail("Unexpected exception with callback" + ex.toString());
- }
+ }
node1.stop();
node2.stop();
|