You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Ignacio Silva-Lepe <is...@verizon.net> on 2006/04/27 22:08:24 UTC
Use of references with multiplicity *..n?
Not sure whether references with multiplicity *..n are available yet. If they're not I can wait. But in case they are, I am getting the following exception:
Exception in thread "main" org.apache.tuscany.core.builder.BuilderConfigException: Incompatible source and target interface types for reference [warehouses]
Context stack trace: [tuscany.root][supplychain][supplychain][RetailerComponent][WarehouseComponent1][tuscany.root]
at org.apache.tuscany.core.builder.impl.DefaultWireBuilder.connect(DefaultWireBuilder.java:64)
at org.apache.tuscany.core.runtime.RuntimeContextImpl.connect(RuntimeContextImpl.java:166)
at org.apache.tuscany.core.context.impl.AbstractCompositeContext.connect(AbstractCompositeContext.java:793)
at org.apache.tuscany.core.context.impl.AbstractCompositeContext.wireSource(AbstractCompositeContext.java:594)
at org.apache.tuscany.core.context.impl.AbstractCompositeContext.start(AbstractCompositeContext.java:165)
at org.apache.tuscany.core.context.scope.CompositeScopeContext.registerFactory(CompositeScopeContext.java:95)
at org.apache.tuscany.core.context.impl.AbstractCompositeContext.registerConfiguration(AbstractCompositeContext.java:474)
at org.apache.tuscany.core.context.impl.AbstractCompositeContext.registerModelObject(AbstractCompositeContext.java:421)
at org.apache.tuscany.core.client.BootstrapHelper.registerModule(BootstrapHelper.java:133)
at org.apache.tuscany.core.client.TuscanyRuntime.<init>(TuscanyRuntime.java:104)
at org.apache.tuscany.samples.supplychain.SupplychainClient.main(SupplychainClient.java:43)
when I try to use the following component impl:
@Service(Retailer.class)
public class RetailerComponentImpl implements Retailer {
@Reference(name="warehouses", required=true)
private List<Warehouse> warehouses;
public void submitOrder(String order) {
for (Warehouse warehouse : warehouses) {
warehouse.fulfillOrder(order + ", submitted");
}
}
}
for the following set of definitions:
<component name="RetailerComponent">
<implementation.java class="org.apache.tuscany.samples.supplychain.RetailerComponentImpl"/>
<references>
<v:warehouses>WarehouseComponent1</v:warehouses>
<v:warehouses>WarehouseComponent2</v:warehouses>
</references>
</component>
<component name="WarehouseComponent1">
<implementation.java class="org.apache.tuscany.samples.supplychain.WarehouseComponentImpl"/>
<references>
<v:shipper>ShipperComponent</v:shipper>
</references>
</component>
<component name="WarehouseComponent2">
<implementation.java class="org.apache.tuscany.samples.supplychain.WarehouseComponentImpl"/>
<references>
<v:shipper>ShipperComponent</v:shipper>
</references>
</component>
Re: Use of references with multiplicity *..n?
Posted by Jim Marino <jm...@myromatours.com>.
They should be working for Java types. Could you open a Jira and
post the two component classes (particularly the interfaces) you are
trying to wire together along with the SCDL? I'll try and take a look
this weekend.
Jim
On Apr 27, 2006, at 1:08 PM, Ignacio Silva-Lepe wrote:
> Not sure whether references with multiplicity *..n are available
> yet. If they're not I can wait. But in case they are, I am getting
> the following exception:
>
> Exception in thread "main"
> org.apache.tuscany.core.builder.BuilderConfigException:
> Incompatible source and target interface types for reference
> [warehouses]
>
> Context stack trace: [tuscany.root][supplychain][supplychain]
> [RetailerComponent][WarehouseComponent1][tuscany.root]
>
> at org.apache.tuscany.core.builder.impl.DefaultWireBuilder.connect
> (DefaultWireBuilder.java:64)
>
> at org.apache.tuscany.core.runtime.RuntimeContextImpl.connect
> (RuntimeContextImpl.java:166)
>
> at
> org.apache.tuscany.core.context.impl.AbstractCompositeContext.connect(
> AbstractCompositeContext.java:793)
>
> at
> org.apache.tuscany.core.context.impl.AbstractCompositeContext.wireSour
> ce(AbstractCompositeContext.java:594)
>
> at
> org.apache.tuscany.core.context.impl.AbstractCompositeContext.start
> (AbstractCompositeContext.java:165)
>
> at
> org.apache.tuscany.core.context.scope.CompositeScopeContext.registerFa
> ctory(CompositeScopeContext.java:95)
>
> at
> org.apache.tuscany.core.context.impl.AbstractCompositeContext.register
> Configuration(AbstractCompositeContext.java:474)
>
> at
> org.apache.tuscany.core.context.impl.AbstractCompositeContext.register
> ModelObject(AbstractCompositeContext.java:421)
>
> at org.apache.tuscany.core.client.BootstrapHelper.registerModule
> (BootstrapHelper.java:133)
>
> at org.apache.tuscany.core.client.TuscanyRuntime.<init>
> (TuscanyRuntime.java:104)
>
> at org.apache.tuscany.samples.supplychain.SupplychainClient.main
> (SupplychainClient.java:43)
>
> when I try to use the following component impl:
>
> @Service(Retailer.class)
> public class RetailerComponentImpl implements Retailer {
>
> @Reference(name="warehouses", required=true)
> private List<Warehouse> warehouses;
>
> public void submitOrder(String order) {
> for (Warehouse warehouse : warehouses) {
> warehouse.fulfillOrder(order + ", submitted");
> }
> }
>
> }
>
> for the following set of definitions:
>
> <component name="RetailerComponent">
> <implementation.java
> class="org.apache.tuscany.samples.supplychain.RetailerComponentImpl"/>
> <references>
> <v:warehouses>WarehouseComponent1</v:warehouses>
> <v:warehouses>WarehouseComponent2</v:warehouses>
> </references>
> </component>
>
> <component name="WarehouseComponent1">
> <implementation.java
> class="org.apache.tuscany.samples.supplychain.WarehouseComponentImpl"/
> >
> <references>
> <v:shipper>ShipperComponent</v:shipper>
> </references>
> </component>
>
> <component name="WarehouseComponent2">
> <implementation.java
> class="org.apache.tuscany.samples.supplychain.WarehouseComponentImpl"/
> >
> <references>
> <v:shipper>ShipperComponent</v:shipper>
> </references>
> </component>
>
>