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>
>
>