OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-assembly message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: NEW ISSUE: Introduce a top-level interface element in SCDLs



DESCRIPTION:
I felt that the introduction of a top-level interface element (say
interface.sca) in SCDLs will help in having more clarity with the
interfaces used in conversational services.  The idea is to be able to
create an interface definition from existing interface definitions and add
additional semantics like declaring the interface as conversational, adding
a callback, declaring methods as endsConversation, oneWay etc.  This should
allow creating an interface in SCDLs as if a java interface and its methods
are decorated with @Conversational, @Callback, @EndsConversation, @OneWay
annotations.

Issue 47 [1] talks about introducing an operation child element in
interface element with name, oneWay and endsConversation attributes.  This
still leaves a chance for inconsistencies.  For e.g., in the following
composite,

<composite ...>
<component name="c0">
    ...
    <service name="Service1">
        <interface.java interface="com.example.MyService">
    </service>
</component>
<component name="c1">
    ...
    <service name="Service1" requires="conversational">
        <interface.java interface="com.example.MyService">
            <operation name="method1" endsConversation="true"/>
        </interface.java>
    </service>
</component>
<component name="c2">
    ...
    <service name="Service1" requires="conversational">
        <interface.java interface="com.example.MyService">
            <operation name="method2" endsConversation="true"/>
        </interface.java>
    </service>
</component>
<composite>

c1/Service1 declares method1 in MyService as endsConversation whereas
c2/Service1 declares method2 in MyService as endsConversation.  It may not
be obvious whether it is an error or it is the way it is intended to be.

Assuming that method2 is decorated with endsConversation by mistake, with a
top-level interface element, the composite would look like the following:

<composite ...>
<interface.sca name="MyConversationalService"
interface="com.example.MyService" conversational="true">
    <operation name="method1" endsConversation="true"/>
</interface.sca>

<component name="c0">
    ...
    <service name="Service1">
        <interface.java interface="com.example.MyService">
    </service>
</component>
<component name="c1">
    ...
    <service name="Service1" requires="conversational">
        <interface.sca interface="MyConversationalService"/> <!-- Notice
the use of MyConversationalService -->
    </service>
</component>
<component name="c2">
    ...
    <service name="Service1" requires="conversational">
        <interface.sca interface="MyConversationalService"/> <!-- Notice
the use of MyConversationalService -->
    </service>
</component>
<composite>

If indeed method2 is decorated with endsConversation correctly, with a
top-level interface element, the composite would look like the following:

<composite ...>
<interface.sca name="MyConversationalService"
interface="com.example.MyService" conversational="true">
    <operation name="method1" endsConversation="true"/>
</interface.sca>

<interface.sca name="MyOtherConversationalService"
interface="com.example.MyService" conversational="true">
    <operation name="method2" endsConversation="true"/>
</interface.sca>

<component name="c0">
    ...
    <service name="Service1">
        <interface.java interface="com.example.MyService">
    </service>
</component>
<component name="c1">
    ...
    <service name="Service1" requires="conversational">
        <interface.sca interface="MyConversationalService"/> <!-- Notice
the use of MyConversationalService -->
    </service>
</component>
<component name="c2">
    ...
    <service name="Service1" requires="conversational">
        <interface.sca interface="MyOtherConversationalService"/> <!--
Notice the use of MyOtherConversationalService -->
    </service>
</component>
<composite>

Wherever the service and reference elements used operation child elements
in interface.java elements, they can now use interface.sca with
MyConversationalService and MyOtherConversationalService consistently.

PROPOSAL:
Introduce a top-level interface element, say interface.sca, in SCDLs that
allows creating new interface definitions from existing interface
definitions and enable adding additional semantics like declaring the
interface as conversational, adding a callback, declaring methods as
endsConversation, oneWay etc. as if a new inferace is being created in java
and decorated with @Conversational, @Callback, @EndsConversation, @OneWay
annotations.

[1] http://www.osoa.org/jira/browse/ASSEMBLY-47



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]