Hi,

I ran into an issue for services/references for a composite. Here is the SCDL file:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"; xmlns:db="http://tuscany.apache.org/xmlns/databinding/1.0";
name="org.apache.tuscany.databinding.sample">
<service name="ClientService">
<interface.java class="org.apache.tuscany.databinding.sample.Client" />
<reference>Client</reference>
<db:databinding name="sdo"/>
</service>
<component name="Client">
<implementation.java class="org.apache.tuscany.databinding.sample.ClientImpl" />
<reference name="echoReference">EchoReference</reference>
<db:databinding name="jaxb"/>
</component>
<reference name="EchoReference">
<interface.java interface="org.apache.tuscany.databinding.sample.Echo" />
</reference>
</composite>

Please note there is no binding defined for the service and reference. Per SCA spec, this is valid. Now we have two cases:

1) The bindings are to be added when the composite is assembled with other composites 2) Is it possible to support local invocation for reference/service without binding (assuming in the same address space)?

The current CompositeBuilder implementation only adds the bound services and references to the context. As a result, I get the following exception:

org.apache.tuscany.spi.builder.BuilderConfigException: Target not found for reference echoReference [EchoReference]
Context stack trace: [application][Client]
at org.apache.tuscany.core.builder.ConnectorImpl.connect(ConnectorImpl.java) at org.apache.tuscany.core.builder.ConnectorImpl.connect(ConnectorImpl.java:53) at org.apache.tuscany.core.builder.ConnectorImpl.connect(ConnectorImpl.java:75) at org.apache.tuscany.core.deployer.DeployerImpl.connect(DeployerImpl.java:134) at org.apache.tuscany.core.deployer.DeployerImpl.deploy(DeployerImpl.java:96) at org.apache.tuscany.core.launcher.Launcher.bootApplication(Launcher.java:171)
at org.apache.tuscany.test.SCATestCase.setUp(SCATestCase.java:63)
at org.apache.tuscany.databinding.sample.BootstrapTestCase.setUp(BootstrapTestCase.java:39)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Is it the correct behavior?

Thanks,
Raymond


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to