2016/05/28 - Apache Tuscany has been retired.

For more information, please explore the Attic.

 Apache Tuscany > Index > Documentation > Features
Added by Jean-Sebastien Delfino, last edited by Jean-Sebastien Delfino on Feb 01, 2007  (view change)

Here's a list of features that I think we need to implement at some point. I am hoping that we can use this page to organize our thoughts and sort out the features that we'll want to support in the next few milestones.

Feature Milestone
Who is working on it
Comments / description
 Assembly PM spec
     
Complex properties

  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