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]