In the OASIS spec you can override the remotable status of an
interface using the remotable flag on the interface element:

    <component name="HelloworldComponent">
        <implementation.java class="sample.HelloworldImpl"/>
        <service name="HelloworldImpl">
           <interface.java interface="sample.Helloworld" remotable="true"/>
           <binding.ws/>
        </service>
    </component>

The idea is that when Helloworld looks like

public interface Helloworld {
    String sayHello(String name);
}

You can use the flag to set the interface remotable. When Helloworld looks like

@Remotable
public interface Helloworld {
    String sayHello(String name);
}

Then you can't use the flag to unset it.

There is a JIRA about this not working properly [1]. I've just been
looking at it. The problem is that we don't actually set remotable
based on this flag. This is a relatively straighforward thing to fix
but it leads to a question. In some of the databinding code there are
tests for remotable which prevents further processing if an interface
is not remotable. For example, DataBindingjavaInterfaceProcessor has

    public void visitInterface(JavaInterface javaInterface) throws
InvalidInterfaceException {
        if (!javaInterface.isRemotable()) {
            return;
        }
        List<Operation> operations = javaInterface.getOperations();
        processInterface(javaInterface, operations);
    }

This will run during introspection which is before we get to the
stage, in the builders, where the component and component type
interfaces are compared and where it would be sensible to apply the
override. I can make it work if I let this databinding processing
happen for non-remote interfaces just in case someone decides to
override them. Can anyone see a downside other than the extra
processing time it takes to calculate the interface types?


[1] https://issues.apache.org/jira/browse/TUSCANY-3459

Simon
-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to