diff options
author | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2011-04-06 22:03:35 +0000 |
---|---|---|
committer | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2011-04-06 22:03:35 +0000 |
commit | 6d685c8e138af8d18bc71181ec630ccb9a17bdd9 (patch) | |
tree | 75276a59fe0a20761ea59ed312adaeb0a9006c81 /sca-java-1.x/tags/1.6.2-RC1/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java | |
parent | a6eaa1356a4db131566cfe7f7e4c3fe81a0ad0b6 (diff) |
Tag for 1.6.2-RC1
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1089647 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/tags/1.6.2-RC1/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java')
-rw-r--r-- | sca-java-1.x/tags/1.6.2-RC1/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/sca-java-1.x/tags/1.6.2-RC1/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java b/sca-java-1.x/tags/1.6.2-RC1/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java new file mode 100644 index 0000000000..be3b7365e5 --- /dev/null +++ b/sca-java-1.x/tags/1.6.2-RC1/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java @@ -0,0 +1,182 @@ +/* + * 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. + */ +package org.apache.tuscany.sca.contribution.osgi.test; + + +import java.io.File; +import java.lang.reflect.Method; +import java.net.URL; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.assembly.Composite; +import org.apache.tuscany.sca.contribution.Contribution; +import org.apache.tuscany.sca.contribution.osgi.OSGiTestUtil; +import org.apache.tuscany.sca.contribution.resolver.ClassReference; +import org.apache.tuscany.sca.contribution.service.ContributionService; +import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain; +/* + * + * Supplychain using OSGi contributions, with nested jar files and bundles used + * by <implementation.java/> and <implementation.osgi/> + * + * SupplyChain v1 is a bundle containing jar files which are used by <implementation.java/> + * SupplyChain v2 is a bundle containing bundles which are used by <implementation.osgi/> + */ + +public class NestedBundleTestCase extends TestCase { + + + protected EmbeddedSCADomain domain; + + private SupplyChain supplyChainV1; + private SupplyChain supplyChainV2; + + @Override + protected void setUp() throws Exception { + + setUpOSGi(); + setUpSCA(); + } + + protected void setUpOSGi() throws Exception { + OSGiTestUtil.setUpFelixTestRuntime(); + } + + protected void setUpSCA() throws Exception { + //Create a test embedded SCA domain + ClassLoader cl = getClass().getClassLoader(); + domain = new EmbeddedSCADomain(cl, "http://localhost"); + + //Start the domain + domain.start(); + + // Contribute the SCA contribution + ContributionService contributionService = domain.getContributionService(); + supplyChainV1 = new SupplyChain("../contribution-classes/target/classes", + contributionService, "V1"); + supplyChainV1.setUpSCA(); + + supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes", + contributionService, "V2"); + supplyChainV2.setUpSCA(); + } + + + + @Override + public void tearDown() throws Exception { + + + supplyChainV1.tearDownSCA(); + supplyChainV2.tearDownSCA(); + + domain.stop(); + + domain.close(); + + OSGiTestUtil.shutdownOSGiRuntime(); + } + + + @SuppressWarnings("unchecked") + public void test() throws Exception { + + ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer"); + customerClassRef = supplyChainV1.supplychainContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef); + Class customerClass = customerClassRef.getJavaClass(); + + Object customer = + domain.getService(customerClass, "CustomerComponent"); + + Method m = customerClass.getMethod("purchaseGoods"); + m.invoke(customer); + + System.out.println("Sleeping ..."); + Thread.sleep(1000); + + ClassReference customerClassRefV2 = new ClassReference("supplychain.customer.Customer"); + customerClassRefV2 = supplyChainV2.supplychainContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRefV2); + Class customerClassV2 = customerClassRefV2.getJavaClass(); + + Object customerV2 = + domain.getService(customerClassV2, "CustomerComponentV2"); + + Method mV2 = customerClassV2.getMethod("purchaseGoods"); + mV2.invoke(customerV2); + + System.out.println("Sleeping ..."); + Thread.sleep(2000); + + System.out.println("Test complete"); + + } + + private class SupplyChain { + + private String folderName; + private ContributionService contributionService; + private String version; + + private Contribution supplychainContribution; + + + public SupplyChain(String folderName, ContributionService contributionService, String version) { + this.folderName = folderName; + this.contributionService = contributionService; + this.version = version; + } + + protected void setUpSCA() throws Exception { + File supplychainLocation = new File(folderName + "/SupplyChain" + version + ".jar"); + URL supplychainContribURL = supplychainLocation.toURL(); + + + String supplychainURI = "SupplyChain" + version; + + supplychainContribution = contributionService.contribute( + supplychainURI, supplychainContribURL, true); + + for (Composite deployable : supplychainContribution.getDeployables()) { + domain.getDomainComposite().getIncludes().add(deployable); + domain.buildComposite(deployable); + } + + // Start Components from my composite + for (Composite deployable : supplychainContribution.getDeployables() ) { + domain.getCompositeActivator().activate(deployable); + domain.getCompositeActivator().start(deployable); + } + } + + public void tearDownSCA() throws Exception { + // Remove the contribution from the in-memory repository + contributionService.remove("SupplyChain" + version); + + // Stop Components from my composite + for (Composite deployable : supplychainContribution.getDeployables() ) { + domain.getCompositeActivator().stop(deployable); + domain.getCompositeActivator().deactivate(deployable); + } + + } + + } + +} |