...
You should configure the project pom.xml and
1.x Dependencies |
| 2.xDependencies x Dependencies |
---|---|---|
<dependency> | ===> | <dependency> |
The following core modules are not ported yet :
- data-api
- some policies
The following modules are deprecated :
- host-embedded
- use the new Node APIs
Converting Composites and other SCA XML Artifacts
1.x Namespace |
| 2.x Namespace |
---|---|---|
http://www.osoa.org/xmlns/sca/1.0 | ===> | http://docs.oasis-open.org/ns/opencsa/sca/200912 |
http://tuscany.apache.org/xmlns/sca/1.0 | ===> | http://tuscany.apache.org/xmlns/sca/1.1 |
Generating OSGi Manifest
Configure pom to use Apache Felix maven-bundle-plugin
...
Code Block |
---|
public interface JSONRPCBindingAtomCBinding extends Binding { QName TYPE = new QName(SCA11_TUSCANY_NS, "binding.jsonrpcatom"); ... } public class JSONRPCBindingImplAtomBindingImpl implements JSONRPCBindingAtomBinding { private String name; private String uri; public QName getType() { return TYPE; } ... } |
...
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
...
Code Block |
---|
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
Code Block |
---|
...
|
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
...
Code Block |
---|
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
...