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/adding-the-spring-implementation-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/adding-the-spring-implementation-type.html')
-rw-r--r-- | site/trunk/site-publish/adding-the-spring-implementation-type.html | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/site/trunk/site-publish/adding-the-spring-implementation-type.html b/site/trunk/site-publish/adding-the-spring-implementation-type.html new file mode 100644 index 0000000000..e9718e06cc --- /dev/null +++ b/site/trunk/site-publish/adding-the-spring-implementation-type.html @@ -0,0 +1,273 @@ + +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE- 2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> + <HEAD> + <!-- generateKeywords macro --> + <META name="description" content="Apache Tuscany"> + <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource"> + <!-- generateKeywords macro end --> + + <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css"> + <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico"> + <TITLE>Apache Tuscany : Adding the Spring Implementation Type</TITLE> + <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD> + + <BODY onload="init()"> + <!-- topNav macro --> + <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg"> + <TR> + <TD valing="top" align="left"> + <A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A> + </TD> + <TD> + <A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A> + </TD> + + <TD width="100%"> + + </TD> + + <!-- Adds the edit page link to the top banner--> + <TD valign="bottom"> + <DIV style="padding: 2px 10px; margin: 0px;"> + <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=53225"> + <IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A> + </DIV> + </TD> + + </TR> + </TABLE> + <!-- topNav macro end --> + + <!-- breadCrumbs macro --> + <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="mike-edwards-ramble-through-adding-a-new-implementation-type.html" title="Mike Edwards Ramble through Adding a New Implementation Type">Mike Edwards Ramble through Adding a New Implementation Type</A> > <A href="" title="Adding the Spring Implementation Type">Adding the Spring Implementation Type</A> + </TD> + + <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true"> + <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A> + </TD> + </TR> + </TABLE> + <!-- breadCrumbs macro end --> + + + <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF"> + <TR> + <TD align="left" valign="top"> + + <!-- pageContent macro --> + <DIV id="PageContent"> + + <DIV class="pagecontent"> + <DIV class="wiki-content"> + <P>(3rd May 2007) This pages and the pages hung off it describe the creation of the module which supports the Spring Component Type that I am working on for a demo. This might be useful to anyone looking to build their own Component Type implementation.</P> + +<H2><A name="AddingtheSpringImplementationType-Sequence"></A>Sequence</H2> + +<DIV class="table-wrap"> +<TABLE class="confluenceTable"><TBODY> +<TR> +<TH class="confluenceTh"> Order </TH> +<TH class="confluenceTh"> Work Item <BR class="atl-forced-newline"> </TH> +<TH class="confluenceTh"> Comment </TH> +</TR> +<TR> +<TD class="confluenceTd"> 0 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> implementation-spring module created <BR class="atl-forced-newline"> +<BR class="atl-forced-newline"> +org.apache.tuscany.implementation.spring package </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> 1 </TD> +<TD class="confluenceTd"> Created ModuleActivator file <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Points at the SpringModuleActivator class <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> 2 </TD> +<TD class="confluenceTd"> Create SpringModuleActivator class </TD> +<TD class="confluenceTd"> Core of the Spring implementation module </TD> +</TR> +<TR> +<TD class="confluenceTd"> 3 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Create SpringArtifactProcessor class <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Reads the implementation.spring xml in the composite file <BR class="atl-forced-newline"> + - one required attribute = location, which specifies the location of the Spring application context <BR class="atl-forced-newline"> + Creates the implementationSpring instance <BR class="atl-forced-newline"> + Initiates resolution of the componentType of the Spring application context by calling SpringXMLComponentTypeLoader <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> 4 <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Create SpringXMLComponentTypeLoader class <BR class="atl-forced-newline"> </TD> +<TD class="confluenceTd"> Reads the Spring application context and introspects the Beans referenced from it to determine the component type of the Spring implementation (ie Services, References, Properties) <BR class="atl-forced-newline"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +<TR> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +<TD class="confluenceTd"> </TD> +</TR> +</TBODY></TABLE> +</DIV> + + +<H2><A name="AddingtheSpringImplementationType-ModuleActivatorfile"></A>ModuleActivator file</H2> + +<P>Placed into the resources/META-INF/services directory:</P> +<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent"> +<PRE class="code-java"># Implementation class <SPAN class="code-keyword">for</SPAN> the ExtensionActivator +org.apache.tuscany.implementation.script.ScriptModuleActivator +</PRE> +</DIV></DIV> + +<H2><A name="AddingtheSpringImplementationType-SpringModuleActivatorclass%26nbsp%3B"></A>SpringModuleActivator class </H2> + + +<H4><A name="AddingtheSpringImplementationType-Constructor"></A>Constructor</H4> + +<P>Creates resources used by other parts of the Module implementation:</P> +<UL> + <LI>AssemblyFactory</LI> + <LI>JavaInterfaceFactory</LI> + <LI>PolicyFactory</LI> +</UL> + + +<H4><A name="AddingtheSpringImplementationType-start%28%29"></A>start()</H4> + +<P>Takes an ExtensionPointRegistry as input parameter, which provides access to configuration of the core.</P> +<UL> + <LI>Creates a SpringArtifactProcessor and adds to the registry StAXArtifactProcessors</LI> + <LI>Creates a SpringImplementationProviderFactory and adds to the registry ProviderFactories</LI> +</UL> + + +<P>Creates a series of artifacts that are required by the SpringArtifactProcessor and SpringImplementationProviderFactory:</P> +<UL> + <LI>ExtensibleJavaInterfaceIntrospector (used to introspect Spring Beans)</LI> + <LI>JavaPropertyValueObjectFactory</LI> +</UL> + + +<H4><A name="AddingtheSpringImplementationType-stop%28%29"></A>stop()</H4> + +<P>Removes the SpringArtifactProcessor from the registry StAXArtifactProcessors </P> + +<H4><A name="AddingtheSpringImplementationType-getExtensionPoints%28%29%26nbsp%3B"></A>getExtensionPoints() </H4> + +<P>Returns a very simple DefaultJavaClassIntrospectorExtensionPoint. </P> + +<H2><A name="AddingtheSpringImplementationType-SpringArtifactProcessorclass%26nbsp%3B"></A>SpringArtifactProcessor class </H2> + +<P>Handles the <implementation.spring..../> element used in composite files.</P> + +<H4><A name="AddingtheSpringImplementationType-Constructor"></A>Constructor</H4> + +<P>Takes a series of classes used in loading & resolution:</P> +<UL> + <LI>AssemblyFactory</LI> + <LI>JavaInterfaceFactory</LI> + <LI>JavaInterfaceIntrospector</LI> + <LI>PolicyFactory </LI> + <LI>JavaPropertyValueObjectFactor</LI> +</UL> + + +<H4><A name="AddingtheSpringImplementationType-read%28%29"></A>read()</H4> + +<P>Reads the <implementation.spring.../> element from the composite.</P> + +<P>Gets the <B><EM>location</EM></B> attribute - throws an exception if the attribute is missing. </P> + +<P>Creates a SpringImplementation instance, sets its location field and returns it. </P> + +<H4><A name="AddingtheSpringImplementationType-resolve%28%29%26nbsp%3B"></A>resolve() </H4> + +<P>Given the SpringImplementation instance and a ModelResolver, gets the ComponentType for the implementation.</P> + +<P>Does this by invoking SpringXMLComponentTypeLoader.load() - will follow up by reading a side file if this does not fully resolve the component type.</P> + + +<H4><A name="AddingtheSpringImplementationType-getArtifactType%28%29%26nbsp%3B"></A>getArtifactType() </H4> + +<P>Returns the fully qualified name of the implementation.spring element (includes the SCA namespace...) </P> + +<H2><A name="AddingtheSpringImplementationType-%26nbsp%3BSpringXMLComponentTypeLoaderclass"></A> SpringXMLComponentTypeLoader class</H2> + + +<OL> + <LI> </LI> +</OL> + + +<H3><A name="AddingtheSpringImplementationType-ResolutionoftheComponentTypeofSpringapplicationcontext"></A>Resolution of the ComponentType of Spring application context</H3> + +<P>ComponentType of the Spring application-context is performed by reading the application-context.xml file and by introspecting the Java beans which it references. This is done by the SpringXMLComponentTypeLoader class.</P> + </DIV> + </DIV> + </DIV> + <!-- pageContent macro end --> + + </TD> + </TR> + </TABLE> + + <!-- footer macro --> + <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-2012, The Apache Software Foundation </BR> + Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation. + </DIV> + <!-- footer macro end --> + + </BODY> +</HTML> |