On Sat, Jul 26, 2008 at 2:57 PM, Scott Kurz (JIRA)
<[email protected]>wrote:

>
>     [
> https://issues.apache.org/jira/browse/TUSCANY-2501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel]
>
> Scott Kurz updated TUSCANY-2501:
> --------------------------------
>
>    Attachment: 2501.recreate.dont.commit.me.diff
>
> Here's a version of the test we can use to recreate
>
> > A couple places where InterfaceContract is not established on reference
> when it's not calculated by introspection
> >
> -----------------------------------------------------------------------------------------------------------------
> >
> >                 Key: TUSCANY-2501
> >                 URL: https://issues.apache.org/jira/browse/TUSCANY-2501
> >             Project: Tuscany
> >          Issue Type: Bug
> >          Components: Java SCA Core Runtime
> >            Reporter: Scott Kurz
> >         Attachments: 2501.recreate.dont.commit.me.diff
> >
> >
> > The vtests have a couple examples which result in component references
> being created without a corresponding InterfaceContract.
> > This is not a problem with the current default binding impl (as these
> tests are currently passing), but a switch to using the WS binding, say,
> shows the issue.
> > I'll attach a patch, too, but here are the issues:
> >
> ------------------------------------------------------------------------------
> > In vtest/java-api/apis/componentcontext:
> >         return componentContext.getService(DComponent.class,
> "dReference").getName();
> > In vtest/java-api/annotations/reference
> >       public class AServiceImpl implements AService {
> >        ....
> >        public BService b4; // field injection (public, un-annotated)
> >
> ------------------------------------------------------------------------------
> > In both cases, the SCDL merely configures the ref target (and binding)
> but does not define the ref intf.
> > I haven't given this area a great deal of thought, my guess is we want to
> extend our Java introspection capabilities, though I could see that for some
> impl
> > types the better answer might be to require the SCDL to configure the
> intf in component SCDL.
> > I didn't try the latter either, but wanted to just write up the issue for
> now.
> > Thanks,
> > Scott
> >
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>
Hi Scott

I'm just going to try and net down the problem here to make sure I
understand it.

For a component implemented thus;

public class AComponentImpl implements AComponent {

    public String testServiceLookup() {
        return componentContext.getService(DComponent.class,
"dReference").getName();
    }

}

and described in SCDL in the following way;

    <component name="AComponent">
        <implementation.java
class="org.apache.tuscany.sca.vtest.javaapi.apis.componentcontext.impl.AComponentImpl"/>
        <reference name="dReference">
            <binding.ws uri="http://localhost:8085/DComponent"/>
        </reference>
     </component>

There is no easy way for the model to determine the interface type of
"dReference2" short of either;

1. parsing the java to find where
componentContext.getService(DComponent.class, "dReference") is called
2. waiting until runtime when componentContext.getService(DComponent.class,
"dReference") is called and configuring the reference at that point.

Currently an error is reported when the builders try to generate WSDL for
the non-exsitent interface definition.

Simon

Reply via email to