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 --- .../converting-tuscany-1x-extensions.html | 486 +++++++++++++++++++++ 1 file changed, 486 insertions(+) create mode 100644 site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html (limited to 'site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html') diff --git a/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html new file mode 100644 index 0000000000..152bf98fdc --- /dev/null +++ b/site/trunk/site-publish/documentation-2x/converting-tuscany-1x-extensions.html @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + Converting Tuscany 1.x Extensions : Apache Tuscany + + + + + + + + + + + +
+ HomeApache Tuscany Docs 2.x > Index > Development Guides > Converting Tuscany 1.x Extensions + +
+ + + + + + +
+
+ + + + + + + + +
+  Apache Tuscany Docs 2.x > Index > Development Guides > Converting Tuscany 1.x Extensions + + Tuscany Home | User List | Dev List | Issue Tracker   +
+ + + + + + +
+
Table of Contents
+
+ + +
+
+ +
+ + +
+
+

Converting 1.x dependencies

+ +

You should configure the project pom.xml and

+ +
+ + + + + + + + + + + +
1.x Dependencies   2.x Dependencies
<dependency>
+<groupId>org.apache.tuscany.sca</groupId>
+<artifactId>tuscany-assembly</artifactId>
+<version>1.6-SNAPSHOT</version>
+</dependency>
===> <dependency>
+<groupId>org.apache.tuscany.sca</groupId>
+<artifactId>tuscany-assembly</artifactId>
+<version>2.0-SNAPSHOT</version>
+</dependency>
+
+ + +

The following core modules are not ported yet :

+ +
    +
  • some policies
  • +
+ + +

The following modules are deprecated :

+ +
    +
  • host-embedded +
      +
    • use the new Node APIs
    • +
    +
  • +
+ + +

Converting Composites and other SCA XML Artifacts

+ + + + +

Generating OSGi Manifest

+ +

Configure pom to use Apache Felix maven-bundle-plugin

+ +
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+
+                <configuration>
+                    <instructions>
+                        <Bundle-Version>${tuscany.version}</Bundle-Version>
+                        <Bundle-SymbolicName>org.apache.tuscany.sca.binding.atom</Bundle-SymbolicName>
+                        <Bundle-Description>${pom.name}</Bundle-Description>
+                        <Export-Package>org.apache.tuscany.sca.binding.atom*</Export-Package>
+                        <Import-Package>org.apache.tuscany.sca.assembly.xml;version="2.0.0", *</Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+
+ +

Generate the manifest

+ +
+
+mvn org.apache.felix:maven-bundle-plugin:manifest
+
+
+ +

Copy the generated manifest from target folder to

+ +
+
+<module-root>/META_INF/manifest.mf
+
+
+ +

Add manifest to source control

+ +
+
+git add META-INF
+or
+svn add META-INF
+
+
+ +

Make any manual modifications as necessary

+ +

Converting your extension model

+ +

Your extension model needs to provide a new getType method

+ +
+
+public interface AtomCBinding extends Binding {
+   QName TYPE = new QName(SCA11_TUSCANY_NS, "binding.atom");
+   ...
+}
+
+public class AtomBindingImpl implements AtomBinding {
+   private String name;
+   private String uri;
+
+   public QName getType() {
+	return TYPE;
+   }
+
+    ...
+}
+
+
+ +

Converting Artifact Processors

+ +

Make sure you update your META-INF\services\org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor with new namespace and any other necessary changes to reflect the current 2.x structure.

+ +

Converting you Binding runtime artifacts

+ +

Provider Factory

+ +
    +
  • The provider factory interface has changed to accommodate the new Endpoint/EndPointReference support +
      +
    • Although the interface has changed, all the previous available information are encapsulated and available from the Endpoint and EndpointReference object
    • +
    +
  • +
+ + + +
+
+public interface BindingProviderFactory<M extends Binding> extends ProviderFactory<M> {
+
+    /**
+     * Creates a new reference binding provider for the given endpoint reference
+     *
+     * @param endpointReference defines the component/reference/binding against which to create the provider
+     * @return The binding provider
+     */
+    ReferenceBindingProvider createReferenceBindingProvider(EndpointReference endpointReference);
+
+    /**
+     * Creates a new service binding provider for the given component and
+     * service.
+     *
+     * @param endpoint defines the component/service/binding against which to create the provider
+     * @return The binding provider
+     */
+    ServiceBindingProvider createServiceBindingProvider(Endpoint endpoint);
+
+}
+
+
+ +
    +
  • If you are using ModelFactoryExtensionPoint, it was renamed to FactoryExtensionPoint
  • +
+ + + +
+
+FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+
+
+ + +

ReferenceBindingProvider and ServiceBindingProvider

+ +

The previous SCA Models that were previously passed directly to these SPIs, is now available via Endpoint and EndpointReference as described in the code below:

+ +
+
+public class AtomReferenceBindingProvider implements ReferenceBindingProvider {
+
+    private RuntimeComponentReference reference;
+    private AtomBinding binding;
+
+    public AtomReferenceBindingProvider(EndpointReference endpointReference,
+                                        AtomBinding binding) {
+
+    	this.reference = (RuntimeComponentReference) endpointReference.getReference();
+        this.binding = (AtomBinding) endpointReference.getBinding();
+    }
+
+    ...
+}
+
+public class AtomServiceBindingProvider implements ServiceBindingProvider {
+
+
+    private MessageFactory messageFactory;
+
+    private Endpoint endpoint;
+    private RuntimeComponent component;
+    private RuntimeComponentService service;
+    private InterfaceContract serviceContract;
+    private AtomBinding binding;
+    private ServletHost servletHost;
+
+    ...
+
+    public AtomServiceBindingProvider(Endpoint endpoint,
+                                         MessageFactory messageFactory,
+                                         ServletHost servletHost) {
+        this.endpoint = endpoint;
+        this.component = (RuntimeComponent)endpoint.getComponent();
+        this.service = (RuntimeComponentService)endpoint.getService();
+        this.binding = (AtomBinding) endpoint.getBinding();
+        this.messageFactory = messageFactory;
+        this.servletHost = servletHost;
+
+    }
+
+    ....
+
+
+
+ +

Converting you Implementation runtime artifacts

+ +
+
+...
+
+
+ +

Converting test cases

+ +

In 2.x we removed the Host-Embedded module and the SCADomain, and the recommended way is to use the Node SPI to build your test cases. We also are recommending using JUnit 4.5 test styles. See below a quick

+ +

1.x Style

+
+
+public class AtomTestCase {
+
+	private SCADomain domain;
+
+	@Before
+	public void setUp() throws Exception {
+		domain = SCADomain.newInstance("AtomBinding.composite");
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		domain.close();
+	}
+
+        ....
+}
+
+
+ +

2.x Style

+
+
+public class AtomTestCase {
+
+	private static Node node;
+
+	@BeforeClass
+	public static void setUp() throws Exception {
+	    try {
+                // use the contribution helper to find the location of the contribution directory
+                // based on a class that is know to be in the contribution
+    		String contribution = ContributionLocationHelper.getContributionLocation(AtomTestCase.class);
+
+                // create a note to load the contribution and run the named composite
+    		node = NodeFactory.newInstance().createNode("AtomBinding.composite", new Contribution("test", contribution));
+
+                // as an alternative to using the helper you can of course specify the location of the
+                // contribution directly, for example,
+                //
+                // node = NodeFactory.newInstance().createNode(new Contribution("test",
+                //                                             "my/directory/structure/atom-contribution.zip"));
+                //
+                // Note also that no composite is named here. It is assumed that the contribution
+                // specifies a deployable composite in the sca-contribution.xml file
+
+                // start the node to make SCA services available
+    		node.start();
+    	    } catch (Exception e) {
+    		e.printStackTrace();
+    	    }
+	}
+
+	@AfterClass
+	public static void tearDown() throws Exception {
+	    node.stop();
+    	    node.destroy();
+	}
+
+        ...
+}
+
+
+ +

NOTE You will need to add the node-impl as test dependency to your modules

+
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-node-impl</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+
+
+ +
+
+
+ + + + + + + +
+ + + \ No newline at end of file -- cgit v1.2.3