diff options
author | coreyg <coreyg@13f79535-47bb-0310-9956-ffa450edef68> | 2014-11-21 09:30:19 +0000 |
---|---|---|
committer | coreyg <coreyg@13f79535-47bb-0310-9956-ffa450edef68> | 2014-11-21 09:30:19 +0000 |
commit | 200a40b332420f94992eb39a6d0ea1cf1490ffc4 (patch) | |
tree | 1c76ef1d254c7bfc91128a313d319bd60da9d01e /site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html | |
parent | 85f53ab6ab4f664d63774c94b672a875c9e52b8a (diff) |
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
Diffstat (limited to 'site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html')
-rw-r--r-- | site/trunk/site-publish/mike-edwards-ramble-through-adding-a-new-component-type.html | 155 |
1 files changed, 155 insertions, 0 deletions
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 @@ + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <LINK type="text/css" rel="stylesheet" href="http://incubator.apache.org/tuscany/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico"> + <TITLE>Mike Edwards Ramble through Adding a New Component Type : Apache Tuscany</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <BODY onload="init()"> + + <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://incubator.apache.org/tuscany/images/TuscanyLogoNEW_Text_120px_bg.jpg"> + <TR> + <TD valing="top" align="left"> + <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://incubator.apache.org/tuscany/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A> + </TD> + <TD> + <A href="http://incubator.apache.org/tuscany/"><IMG src="http://incubator.apache.org/tuscany/images/TuscanyLogo.jpg" border="0"></A> + </TD> + + <TD width="100%"> + + </TD> + <TD align="right"> + <IMG src="http://incubator.apache.org/tuscany/images/apache-incubator-logo.png" border="0"> + </TD> + + <!-- Adds the edit page link to the top banner--> + <TD valign="bottom"> + <DIV style="padding: 2px 10px; margin: 0px;"> + <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=53224"> + <IMG src="http://incubator.apache.org/tuscany/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + </DIV> + </TD> + + </TR> + </TABLE> + + <TABLE border="0" cellpadding="2" cellspacing="0" width="100%"> + <TR class="topBar"> + <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%"> + <A href="home.html" title="Apache Tuscany">Apache Tuscany</A> > <A href="home.html" title="Home">Home</A> > <A href="sca-overview.html" title="SCA Overview">SCA Overview</A> > <A href="sca-java.html" title="SCA Java">SCA Java</A> > <A href="java-sca-documentation-menu.html" title="Java SCA Documentation Menu">Java SCA Documentation Menu</A> > <A href="sca-java-extension-development-guide.html" title="SCA Java Extension Development Guide">SCA Java Extension Development Guide</A> > <A href="" title="Mike Edwards Ramble through Adding a New Component Type">Mike Edwards Ramble through Adding a New Component Type</A> + </TD> + + <TD align="left" valign="middle" class="topBarDiv" nowrap="true"> + <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD align="left" valign="top"> + <DIV id="PageContent"> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <H2><A name="MikeEdwardsRamblethroughAddingaNewComponentType-AddingaNewComponentType"></A>Adding a New Component Type</H2> + +<P>(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.</P> + +<P>Associated with this general page is a set of pages dedicated to <A href="adding-the-spring-component-type.html" title="Adding the Spring Component Type">Adding the Spring Component Type</A> where specifics relating to the Spring implementation are described.</P> + +<H2><A name="MikeEdwardsRamblethroughAddingaNewComponentType-BasicInformationaboutcodeforaComponentType%26nbsp%3B"></A>Basic Information about code for a Component Type </H2> + +<P>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:</P> +<UL> + <LI>xxxModuleActivator class, which implements the ModuleActivator interface</LI> + <LI>ModuleActivator file</LI> + <LI>xxxArtifactProcessor class, which processes the XML for an implementation type</LI> + <LI>xxxImplementation class, which represents a runtime instance of the implementation type</LI> +</UL> + + +<H3><A name="MikeEdwardsRamblethroughAddingaNewComponentType-HowdoesaComponentTypeModuledeclaretheXMLthatithandles%3F"></A>How does a Component Type Module declare the XML that it handles?</H3> + +<P>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.</P> + +<P>How does the module indicate to the core that it handles the <implementation.xxx.../> element?</P> + +<P>TODO: Get an answer to this question.... </P> + +<H3><A name="MikeEdwardsRamblethroughAddingaNewComponentType-xxxModuleActivatorclass"></A>xxxModuleActivator class</H3> + +<P>Called when the Tuscany core is loading, starting and stopping the Module which implements the component type.</P> + +<P>Implements ModuleActivator interface, with 3 methods:</P> +<UL> + <LI>start</LI> + <LI>stop</LI> + <LI>getExtensionPoints</LI> +</UL> + + +<P>Of these, start() is the most important - it seems possible to get by with the other 2 doing nothing.</P> + +<P>Start handles: </P> +<UL> + <LI>Registration of xxxArtifactProcessor, which handles the <implementation.xxx..../> XML</LI> + <LI>Registration of xxxComponentBuilder, which builds a component of the type handled by the module</LI> + <LI>Registration of xxxPropertyValueObjectFactory</LI> +</UL> + + +<H3><A name="MikeEdwardsRamblethroughAddingaNewComponentType-TheModuleActivatorfile%26nbsp%3B"></A>The ModuleActivator file </H3> + +<P>This must be placed into the location</P> + +<P>META-INF/services/org.apache.tuscany.spi.bootstrap.ModuleActivator</P> + +<P>... this will be under the Resources directory in the source tree</P> + +<P>The file contains the class name for the implementation of your Module, eg:</P> +<DIV class="code"><DIV class="codeContent"> +<PRE class="code-java"># Implementation class <SPAN class="code-keyword">for</SPAN> the ExtensionActivator <SPAN class="code-keyword">for</SPAN> module Foo +org.apache.tuscany.implementation.foo.FooModuleActivator</PRE> +</DIV></DIV> + +<H3><A name="MikeEdwardsRamblethroughAddingaNewComponentType-ThexxxArtifactProcessorclass"></A>The xxxArtifactProcessor class</H3> + +<P>This class is called to deal with the XML in the composite SCDL files which relates to the implementation type - ie. <implementation.xxx.../></P> + +<P>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).</P> + +<P>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.</P> + +<P>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. </P> + +<H3><A name="MikeEdwardsRamblethroughAddingaNewComponentType-xxxImplementationclass"></A>xxxImplementation class</H3> + +<P>The xxxImplementation class represents the implementation instances themselves.</P> + +<P>Implements the org.apache.tuscany.assembly.Implementation interface </P> + </DIV> + </DIV> + </DIV> + </TD> + </TR> + </TABLE> + + <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript"> + </SCRIPT> + <SCRIPT type="text/javascript"> + _uacct = "UA-1174707-5"; + urchinTracker(); + </SCRIPT> + + <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A> + + <DIV class="footer"> + Copyright © 2003-2007, The Apache Software Foundation + </DIV> + + </BODY> +</HTML>
\ No newline at end of file |