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