This table is an attempt to capture the various requirements that I've gathered from browsing the SCA specs and discussions on the Tuscany dev list, and the work in-progress in the community.
I am hoping that it will help organize our requirements and discuss how we want to stage their implementation over our next milestones. It should also help new contributors understand who is working on what, and grab areas that need work.
The table is under construction (I just started with some requirements related to the SCA assembly PM) and I'm inviting everybody in our community to come help build that page with the requirements that they are aware of, and the features that they are interested in.
Feature area |
Milestone |
People working on it |
Comments / description |
---|---|---|---|
Assembly PM spec |
|
|
|
Complex properties |
|
Venkat |
Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings. |
Pass by-value / by-reference |
|
Venkat |
Initial implementation almost in? Some cleanup necessary? Need to understand how to clone/copy data with different databindings, SDO, JAX-WS, and POJOs. Understand how to handle pointers across multiple parameters when copying. |
Multiplicity |
|
|
Support multiplicity constraints on references. Support multiple wires. Handle overrides. Investigate how to handle binding selection. Support for callbacks. |
Naming constraints in a composite |
|
Luciano (Tuscany-914) |
Validate that service/reference/component names are unique inside a composite. Check the presence of SCDL includes. |
Multi-valued properties |
|
|
Add support to SCDL parsers, builders and factory configuration. Integrate with data bindings. |
WSDL 2.0 |
|
|
Add support for WSDL 2.0 accross the board, runtime, WSDL/Java tools and WS binding. |
Operation overloading (simple exact matching) |
|
Rick |
Change runtime service contract hashmap and invocation handling/dispatching. Adjust extensions to this. Match identical methods on ends of a wire. |
Operation overloading (complete support) |
|
|
Match and wire compatible methods, factor in different databindings, WSDL wrapping/unwrapping, and match invocation and actual parameters to a compatible method. |
ComponentType side files |
|
|
Partial support already in. Need to define overriding strategy when implementation and componentType metadata overlap. |
Support for SCA contribution |
|
Raymond,Luciano |
Generic handling of SCA contributions and base plugin mechanism for loading/scanning artifacts. Allow a contribution and artifacts in it to be addressed by URI. Do not assume a fixed default.scdl file. |
Filesystem based SCA contributions |
|
Raymond,Luciano |
Support free-form folder structure in a contribution. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution. |
JAR based SCA contributions |
|
Raymond,Luciano |
Support JAR contribution structure. Support multiple SCDLs per contribution. Scan for SCDL and other artifacts under an SCA contribution. |
SCA includes |
|
|
This does not seem complete, verify, in particular wiring across includes and support for nested includes. |
Composite resolution (no recursion) |
|
|
Register composites and find them by Qname within a contribution. Support references across contributions in domain level includes. |
Composite resolution (recursive composition) |
|
|
Resolve composites with nested composites. Support full recursion. Current support needs to be fixed, as each reference to a composite gets it reloaded/redefined. |
XML property configuration in side files |
|
|
Properties configured in an external XML file. Resolve the file location, load it. See if loading and xpath reference mechanism needs to be adjusted for this. |
Ref/Service/Property config override (no recursion) |
|
|
Support overriding of services/references/properties. Investigate overrides combined with multiplicity. |
Ref/Service/Property config override (recursive) |
|
|
Support overriding of services/references/properties in nested composites. Handle multiple overrides. Support additions vs overrides in the case of bindings. Investigate overrides combined with multiplicity. |
Wiring with service/reference bindings |
|
|
Support binding URIs. Then configuration of binding URI with wires. Then propagation of binding info from a service to a reference wired to it. |
|
Rick, Raymond |
Distinguish handling of runtime exceptions vs business exceptions. Add support to invocation/dispatching mechanism + POJO implementations, bindings and databinding. |
|
Context info in error reports |
|
|
Across the board, need to provide application level context data (composite, component, service, reference etc.) with errors, to allow an app developer to understand what's wrong in his application. Without that he's left having to understand all the underlying middleware. |
Minimum SCDL extensibility (non SCA namespaces) |
|
|
Support additional bindings, implementation types, interface types, and policies from diff namespaces. Should already work for bindings and implementations. Need to check policies and interface types. |
Complete SCDL extensibility as defined by the XSD |
|
|
Will need changes to a number of loaders and builders. |
Support for xsi:type in addition to global elements |
|
|
Changes to most loaders or improvements to LoaderRegistry. |
Support for various ordering of SCDL elements |
|
Simon |
Loaders depend on a specific order of elements in the SCDL files. Supporting other possible sequences will require changes in the loaders logic. |
Autowire - local |
|
|
Adjust to the spec, which now defines this at the assembly level, independent of the Java C&I. |
Autowire - domain level |
|
|
Support autowire in a domain, including components services and references, policy intents and compatible bindings. |
Autowire extension point |
|
|
Plugin mechanism to allow different autowire algorithms to be plugged in |
SCDL validation, semantic constraints (obvious cases) |
|
|
Only support the obvious/main semantic constraints. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime. |
SCDL validation, semantic constraints (complete) |
|
|
Complete support for the spec. Separate tool to perform semantic validation of an assembly. Also needs to be invoked as part of deployment and/or loading at runtime. |
Implementation / component matching |
|
|
Make sure that an implementation matches the component that uses it. For example enforce wiring of required references. |
Callback support |
|
Ignacio |
Combinations of sync and async. Determine which binding to use for a callback invocation. |
Configured implementations |
|
|
Configuration of component implementations in .componentType files or inlined in implementations (spec issue 8) and in component declarations. Resolve/merge when overlap between the three. |
Promotion of Ref/ Services/ Properties (no recursion) |
|
|
New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references. |
Promotion of Ref/ Services/ Properties (recursive) |
|
|
New promotion mechanism for services/references/properties. Service/reference/property definition on components. Handle promotion of already wired services and references. |
Multiple bindings on services and refs |
|
|
Basic support for multiple bindings is in. See how configuration overriding works with multiple bindings. |
Ability to use and alter SCDL model at deployment |
|
|
Add missing relationships to the SCDL logical model, independent of runtime context. Allow deployment tools to alter the model and write it back to XML. |
Interchangeability of Java and WSDL |
|
Ant,Rick |
Build ServiceContract representation from Java or WSDL. Needs more work to understand combinations of SDO/JAXB/POJOs and wrapped/unwrapped. Add logic to wiring framework to match WSDL portTypes and Java interfaces. |
Document limitations and deviations from the spec |
|
|
Review the spec and document Tuscany limitations and differences with the SCA assembly spec. |
Java C&I spec |
|
|
|
Derive service name from interface name |
|
|
Clarify with specification, is the service name the fully qualified class name, the class name without the package name, or are we adding a service name attribute to the @Service annotation |
Injection of multivalued properties |
|
|
Map multi-valued properties to java.util.List. |
Injection of references with multiplicity 0..n |
|
|
Map references with Multiplicity to java.util.List |
Required properties |
|
|
Validation that required properties are configured |
Service references (minimum) |
|
|
Minimum implementation of Service references supporting setCallback/getCallback. Local usage only with no serialization of the reference. |
Service references (complete support) |
|
|
Complete support for the Service reference programming model, including the ability to pass Service References around, serialize them, then use them to perform invocations outside of the context where they were initially obtained. |
Conversational |
|
|
Not sure what's missing. Check the spec against the runtime to assess what's remaining first. |
WSDL2Java / Java2WSDL / SDO - simple cases |
|
|
Command line tooling. Support wrapped/non-wrapped patterns, multiple parts/message, nested complex types, faults/Exceptions. Generation of SCA annotations in interfaces. |
WSDL2Java / Java2WSDL / JAX-WS |
|
|
Command line tooling. Wrap/integrate the JAX-WS tooling. Customize it to generate SCA annotations in interfaces? Investigate how the runtime could reuse the JAX-WS WSDL/Java mapping logic as well, since it'll need to know the mapping rules as well. |
@Autowire |
|
|
Adjust to what the latest spec, maybe a little different from the current Tuscany support. |
Configured implementations |
|
|
Add support for Java annotations allowing configuration of a POJO (services, references, bindings and properties) without SCDL. |
SCA as a wrapper over JAX-WS async |
|
|
Allow cast of an SCA proxy to a JAX-WS API to support the JAX-WS async programming model. |
Ability to run with Java 2 security enabled |
|
|
This is not just related to the Java C&I. Need to go over the runtime code and wrap sections of code that access resources, threads, classloaders etc in doPrivileged blocks to allow the runtime to work in an environment with Java 2 security enabled. |
Document limitations and deviations from the spec |
|
|
Review the spec and document Tuscany limitations and differences with the SCA Java C&I spec. |
Conversational PM |
|
|
|
Core support |
|
Ignacio, looking for volunteer to take over |
Lifecycle in. Persistence of conversation state in. Needs to support tran/recovery. Also need some redesign to avoid having to send/receive a routing path and play nicely with bindings. |
Integration with bindings |
|
|
Plugin mechanism to allow a binding to declare conv capability and support conversational. Maybe define a "conversational policy intent" |
WS binding |
|
Rick |
Map conversational to the correct MEPs. Investigate how to flow conversation id. Use WS-addressing, message-id, relates-to etc. |
JMS-binding |
|
|
Need to understand how/if conversational means anything to the JMS binding |
EJB binding |
|
|
Check the EJB binding spec to understand what needs to be done here |
JSON-RPC binding |
|
|
Investigate if it makes sense to support conversational with this binding |
SCA default binding |
|
|
Understand how a concrete binding will be selected depending on conversational requirements (may fold into some policy intent work) |
REST binding |
|
|
Investigate if it makes sense to support conversational with this binding |
HTTP Session support |
|
|
Persist session scope and conversational state with the HTTP session? |
Non-blocking PM |
|
|
|
Core support |
|
Ignacio, looking for volunteer to take over |
No support for async over sync yet (see spec issue) but everything else seems to be there. I am concerned with how we represent callbacks and how their info flows between remote components |
Integration with bindings |
|
|
Plugin mechanism to allow a binding to declare support for async and callback, MEPs and/or polling. |
WS binding (short term/sync MEP) |
|
Ignacio, looking for volunteer to take over |
Dispatch call to a thread and continue to use a sync MEP. Will not support unsolicited callbacks. Issue: WSDL representation of callback vs Axis2 client and sync MEP. |
WS binding (real async MEP) |
|
|
Use an async MEP and WS-addressing and callbacks. Also investigate what needs to be done w.r.t security on the callbacks. |
JMS binding |
|
|
Sync up with the latest JMS binding spec |
EJB binding |
|
|
Do we need to support this? We support async invocation of POJOs, but people know that EJBs are synchronous. |
JSON-RPC binding |
|
|
Used in AJAX apps which are based on async exchanges. So the JSON-RPC binding should support the non-blocking PM and callbacks. |
REST binding |
|
|
Not sure if there is a requirement at all for real CRUD REST. There may be a requirement for activity based XML/HTTP services, similar to the WS binding requirement. |
SCA default binding |
|
|
Understand how a concrete binding will be selected depending on non-blocking invocation requirements. |
SCA default binding |
|
|
|
|
|
|
|
JMS binding |
|
|
|
|
|
|
|
WS binding |
|
|
|
|
|
|
|
EJB binding |
|
|
|
|
|
|
|
REST binding |
|
|
|
|
|
|
|
JSON-RPC binding |
|
|
|
|
|
|
|
Data binding support |
|
Raymond |
|
|
|
|
|
Policy Intent framework |
|
|
|
|
|
|
|
Transaction policy |
|
|
|
|
|
|
|
Security policy |
|
|
|
|
|
|
|
Reliability policy |
|
|
|
|
|
|
|
Modular build |
|
|
|
|
|
|
|
Packaging / deployment |
|
|
|
|
|
|
|
Administration |
|
|
|
|
|
|
|
Scenarios |
|
|
|
|
|
|
|
Host runtimes |
|
|
|
|
|
|
|
Spring component type |
|
|
|
|
|
|
|
Javascript component type |
|
|
|
|
|
|
|
Groovy component type |
|
|
|
|
|
|
|
JRuby component type |
|
|
|
|
|
|
|
BPEL component type |
|
|
|
|
|
|
|
Function test suite |
|
|
|
|
|
|
|
Integration test suite |
|
|
|
|
|
|
|
Samples |
|
|
|
|
|
|
|
Architecture documentation |
|
|
|
|
|
|
|
User documentation |
|
|
|
|
|
|
|