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 |
|
|
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 |
|
|
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) |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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. |
Support for business exceptions |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
Conversational PM |
|
|
|
|
|
|
|
Non-blocking PM |
|
|
|
|
|
|
|
SCA default binding |
|
|
|
|
|
|
|
JMS binding |
|
|
|
|
|
|
|
WS binding |
|
|
|
|
|
|
|
EJB binding |
|
|
|
|
|
|
|
REST binding |
|
|
|
|
|
|
|
JSON-RPC binding |
|
|
|
|
|
|
|
Data binding support |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|