Hi, Simon, I have opened a jira *TUSCANY-2770*<https://issues.apache.org/jira/browse/TUSCANY-2770> to track this problem. Thanks for your help.
On Thu, Jan 15, 2009 at 7:14 PM, Simon Laws <[email protected]>wrote: > > > On Thu, Jan 15, 2009 at 9:58 AM, Shuchao Wan <[email protected]> wrote: > >> I have a question about conformance item 50011 and hope some one could >> help me. >> >> Conformance item 50011 tells something about some constraints about >> interface of <component>'s <reference>. And here is the detailed >> description: >> "A reference has zero or one interface, which describes the operations >> required by the reference. The interface is described by an interface >> element which is a child element of the reference element. If no interface >> is specified, then the interface specified for the reference in the >> componentType of the implementation is in effect. If an interface is >> declared for a component reference it MUST provide a compatible superset of >> the interface declared for the equivalent reference in the componentType of >> the implementation, i.e. provide the same operations or a superset of the >> operations defined by the implementation for the reference. " >> In my opinion, I think it is to say that interface declared for a >> component reference must have equal or more operations than its >> implementation acturally need. So I write a composite file wire.composite >> and testcase to verify it. >> >> ----------------------------- >> wire.composite >> ----------------------------- >> <composite>... >> <component name="FComponent"> >> <implementation.java >> class="org.apache.tuscany.sca.vtest.assembly.composite.impl.FServiceImpl"/> >> <reference name="d"> >> <interface.java >> interface="org.apache.tuscany.sca.vtest.assembly.composite.DSubService" /> >> </reference> >> <reference name="c"> >> <interface.java >> interface="org.apache.tuscany.sca.vtest.assembly.composite.CSubService" /> >> </reference> >> </component> >> <component name="CComponent"> >> <implementation.java >> class="org.apache.tuscany.sca.vtest.assembly.composite.impl.CServiceImpl"/> >> <service name="CService"> >> <interface.java >> interface="org.apache.tuscany.sca.vtest.assembly.composite.CService"/> >> </service> >> </component> >> <component name="DComponent"> >> <implementation.java >> class="org.apache.tuscany.sca.vtest.assembly.composite.impl.DServiceImpl"/> >> <service name="DService"> >> <interface.java >> interface="org.apache.tuscany.sca.vtest.assembly.composite.DService" /> >> </service> >> </component> >> <wire source="FComponent/d" target="DComponent" /> >> <wire source="FComponent/c" target="CComponent" /> >> </composite> >> >> --------------------------- >> FServiceImpl.java >> --------------------------- >> @Service(FService.class) >> public class FServiceImpl implements FService { >> @Reference >> protected CService c; >> >> @Reference >> protected DService d; >> } >> >> Here, CSubService and DSubService are sub sets of CService and DService >> respectively. >> >> When loading this composite file, I haven't got any error message or even >> warning message, which supposed to appear. >> And when I switch the CSubService to CSuperService and DSubService to >> DSuperService (CSuperService and DSuperService are super sets of CService >> and DService respectively), I got warning message this time. >> WARNING: Component reference interface incompatible with reference >> interface: Component = FComponent Reference = d >> WARNING: Component reference interface incompatible with reference >> interface: Component = FComponent Reference = c >> >> It seems that it works just on the opposite to the specification. Is there >> anything wrong with it? Thanks. >> >> > Hi Susan > > I'd have to look at the code to be sure I understand precisely ho your test > works. On the face of it though this looks like a problem. Can you raise a > JIRA and attach the test case to it so we can talk some more about it? > > Regards > > Simon >
