You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Adding a New Component Type

(3rd May 2007) I wanted to get the Spring and BPEL component types running with the new Tuscany Java core.  This page and those hung off it are my ramblings as I go through the process of building the code for these component types.  I hope that these will help anyone else who wants to venture down the path of adding a component type.  Beware that I make no claims as to great insight or special knowledge - and I am sure that there will be things that I have not tackled.

Associated with this general page is a set of pages dedicated to Adding the Spring Component Type where specifics relating to the Spring implementation are described.

Basic Information about code for a Component Type 

To create a Module which supports a Component Type, you need to implement a series of interfaces to the Tuscany Core, plus a set of related files which declare your Module to the core:

  • xxxModuleActivator, which implements the ModuleActivator interface
  • ModuleActivator file

How does a Component Type Module declare the XML that it handles?

For a Component Type module, it is going to handle the XML <implementation.xxx.../>, which is a child of a <component.../> element in the SCDL.

How does the module indicate to the core that it handles the <implementation.xxx.../> element?

TODO: Get an answer to this question.... 

xxxModuleActivator class

Called when the Tuscany core is loading, starting and stopping the Module which implements the component type.

Implements ModuleActivator interface, with 3 methods:

  • start
  • stop
  • getExtensionPoints

Of these, start() is the most important - it seems possible to get by with the other 2 doing nothing.

Start handles: 

  • Registration of xxxArtifactProcessor, which handles the <implementation.xxx..../> XML
  • Registration of xxxComponentBuilder, which builds a component of the type handled by the module
  • Registration of xxxPropertyValueObjectFactory 

The ModuleActivator file 

This must be placed into the location

META-INF/services/org.apache.tuscany.spi.bootstrap.ModuleActivator

... this will be under the Resources directory in the source tree

The file contains the class name for the implementation of your Module, eg:

# Implementation class for the ExtensionActivator for module Foo
org.apache.tuscany.implementation.foo.FooModuleActivator

 

  • No labels