From 200a40b332420f94992eb39a6d0ea1cf1490ffc4 Mon Sep 17 00:00:00 2001 From: coreyg Date: Fri, 21 Nov 2014 09:30:19 +0000 Subject: Adding tuscany's website to their svn repo for svnpubsub git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68 --- ...ramble-through-adding-a-new-component-type.html | 155 +++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html (limited to 'site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html') diff --git a/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html b/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html new file mode 100644 index 0000000000..a5c090bcae --- /dev/null +++ b/site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html @@ -0,0 +1,155 @@ + + + + + + + Mike Edwards Ramble through Adding a New Component Type : Apache Tuscany + + + + + + + + + + + + + + + + +
+ + + + +   + + + +
+ + +
+
+ + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java Extension Development Guide > Mike Edwards Ramble through Adding a New Component Type + + User List | Dev List | Issue Tracker   +
+ + + + + +
+
+ +
+
+

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 class, which implements the ModuleActivator interface
  • +
  • ModuleActivator file
  • +
  • xxxArtifactProcessor class, which processes the XML for an implementation type
  • +
  • xxxImplementation class, which represents a runtime instance of the implementation type
  • +
+ + +

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
+
+ +

The xxxArtifactProcessor class

+ +

This class is called to deal with the XML in the composite SCDL files which relates to the implementation type - ie. <implementation.xxx.../>

+ +

The class is passed an XML stream which it reads and parses out the contents of the <implementation.xxx.../> element, principally getting all of the attributes and child elements (if present).

+ +

When the information has been parsed out, the xxxArtifactProcessor class creates an xxxImplementation object which represents the runtime component corresponding to the implementation.xxx element.

+ +

One other step that is handled by the xxxArtifactProcessor class is the resolution of the componentType for the component - teasing out its services, references and properties.  This is either done by introspection of the implementation (instance) or via reading a componentType side file. 

+ +

xxxImplementation class

+ +

The xxxImplementation class represents the implementation instances themselves.

+ +

Implements the org.apache.tuscany.assembly.Implementation interface 

+
+
+
+
+ + + + + website stats + + + + + \ No newline at end of file -- cgit v1.2.3