summaryrefslogtreecommitdiffstats
path: root/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca')
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java329
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java110
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java124
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java125
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java139
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java112
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java114
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java86
-rw-r--r--tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java110
9 files changed, 1249 insertions, 0 deletions
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java
new file mode 100644
index 0000000000..b81f67c287
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java
@@ -0,0 +1,329 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * This is an integration test for Java EE contribution processing. *
+ *
+ * @version $Rev$ $Date$
+ */
+
+public class ContributionServiceTestCase {
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+ private static final String CONTRIBUTION_002_ID = "contribution002/";
+ private static final String JAR_CONTRIBUTION = "/repository/helloworld-service.jar";
+ private static final String EJB_JAR_CONTRIBUTION = "/repository/helloworld-ejb.jar";
+ private static final String EJB_JAR_W_DEPLOYABLE_CONTRIBUTION = "/repository/helloworld-ejb-w-dep.jar";
+ private static final String WAR_CONTRIBUTION = "/repository/helloworld-web.war";
+ private static final String WAR_W_DEPLOYABLE_CONTRIBUTION = "/repository/helloworld-web-w-dep.war";
+ private static final String EAR_CONTRIBUTION = "/repository/helloworld-ejb.ear";
+ private static final String EAR_NONENHANCED_CONTRIBUTION = "/repository/simple-app-ear.jar";
+ private static final String EAR_ENHANCED_16_CONTRIBUTION = "/repository/simple-app.ear";
+ private static final String EAR_ENHANCED_19_CONTRIBUTION = "/repository/enhanced-app.ear";
+
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * This method tests a non Java EE contribution.
+ */
+ @Test
+ public void testContributeJAR() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ /**
+ * This method tests an EJB jar as a contribution.
+ */
+ @Test
+ public void testContributeEJBJAR() throws Exception {
+ URL contributionLocation = getClass().getResource(EJB_JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List<Artifact> artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("META-INF/ejb-jar.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.ejb", component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation) component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Service service = ejbImpl.getServices().get(0);
+ Assert.assertEquals("Service name", "HelloworldService", service.getName());
+ }
+ }
+ }
+
+ /**
+ * This method tests an EJB jar with sca-contribution.xml as a contribution.
+ */
+ @Test
+ public void testContributeEJBJARwDeployable() throws Exception {
+ URL contributionLocation = getClass().getResource(EJB_JAR_W_DEPLOYABLE_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List<Artifact> artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("META-INF/ejb-jar.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.ejb", component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation) component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Service service = ejbImpl.getServices().get(0);
+ Assert.assertEquals("Service name", "HelloworldService", service.getName());
+ }
+ }
+
+ List<Composite> deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.ejb", component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation) component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Service service = ejbImpl.getServices().get(0);
+ Assert.assertEquals("Service name", "HelloworldService", service.getName());
+ }
+
+ /**
+ * This method tests WAR as a contribution.
+ */
+ @Test
+ public void testContributeWAR() throws Exception {
+ URL contributionLocation = getClass().getResource(WAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List<Artifact> artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("WEB-INF/web.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.web", component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation) component.getImplementation();
+ Assert.assertEquals("Number of reference", 2, webImpl.getReferences().size());
+ List<String> referenceNames = new ArrayList<String>();
+ referenceNames.add("name1");
+ referenceNames.add("sample.HelloworldEjbServlet_service");
+ for(Reference ref : webImpl.getReferences()) {
+ Assert.assertTrue(referenceNames.contains(ref.getName()));
+ }
+ }
+ }
+ }
+
+ /**
+ * This method tests WAR with sca-contribution.xml as a contribution.
+ */
+ @Test
+ public void testContributeWARwDeployable() throws Exception {
+ URL contributionLocation = getClass().getResource(WAR_W_DEPLOYABLE_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List<Artifact> artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("WEB-INF/web.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.web", component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation) component.getImplementation();
+ Assert.assertEquals("Number of reference", 2, webImpl.getReferences().size());
+ List<String> referenceNames = new ArrayList<String>();
+ referenceNames.add("name1");
+ referenceNames.add("sample.HelloworldEjbServlet_service");
+ for(Reference ref : webImpl.getReferences()) {
+ Assert.assertTrue(referenceNames.contains(ref.getName()));
+ }
+ }
+ }
+
+ List<Composite> deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.web", component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation) component.getImplementation();
+ Assert.assertEquals("Number of reference", 2, webImpl.getReferences().size());
+ List<String> referenceNames = new ArrayList<String>();
+ referenceNames.add("name1");
+ referenceNames.add("sample.HelloworldEjbServlet_service");
+ for(Reference ref : webImpl.getReferences()) {
+ Assert.assertTrue(referenceNames.contains(ref.getName()));
+ }
+ }
+
+ /**
+ * This method test EAR as a contribution.
+ */
+ @Test
+ public void testContributeEAR() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ /**
+ * This method tests a JAR containing an EAR as a contribution.
+ * non-enhanced EAR containing non-enhanced WAR, non-enhanced EJB JAR.
+ */
+ @Ignore
+ @Test
+ public void testContributeEAR_NonEnhanced() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_NONENHANCED_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Contribution contribution = contributionService.getContribution(contributionId);
+ Assert.assertNotNull(contribution);
+ List<Composite> deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.jee", component.getImplementation() instanceof JEEImplementation);
+ JEEImplementation jeeImpl = (JEEImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 2, jeeImpl.getServices().size());
+ Assert.assertEquals("Number of references", 1, jeeImpl.getReferences().size());
+ }
+
+ /**
+ * This method tests an EAR as a contribution.
+ * Enhanced EAR containing non-enhanced WAR, non-enhanced EJB JAR.
+ */
+ @Test
+ public void testContributeEAR_Enhanced16() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_ENHANCED_16_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Contribution contribution = contributionService.getContribution(contributionId);
+ Assert.assertNotNull(contribution);
+ List<Composite> deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.jee", component.getImplementation() instanceof JEEImplementation);
+ JEEImplementation jeeImpl = (JEEImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 2, jeeImpl.getServices().size());
+ // TODO - TUSCANY-3008
+ // Assert.assertEquals("Number of references", 1, jeeImpl.getReferences().size());
+ }
+
+ /**
+ * This method tests an EAR as a contribution.
+ * Enhanced EAR w application composite containing non-enhanced WAR, non-enhanced EJB JAR.
+ */
+ @Test
+ public void testContributeEAR_Enhanced19() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_ENHANCED_19_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Contribution contribution = contributionService.getContribution(contributionId);
+ Assert.assertNotNull(contribution);
+
+ List<Artifact> artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("META-INF/application.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 3, composite.getComponents().size());
+ for(Component component : composite.getComponents()) {
+ if(component.getName().equals("webComponent")) {
+ Assert.assertTrue(component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation)component.getImplementation();
+ Assert.assertEquals("Number of references", 1, webImpl.getReferences().size());
+ } else if(component.getName().equals("ejbComponent1")) {
+ Assert.assertTrue(component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Assert.assertEquals("Number of references", 0, ejbImpl.getReferences().size());
+ } else if(component.getName().equals("ejbComponent2")) {
+ Assert.assertTrue(component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Assert.assertEquals("Number of references", 1, ejbImpl.getReferences().size());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java
new file mode 100644
index 0000000000..4241b7928f
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java
@@ -0,0 +1,110 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class EjbAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * EJB - It's an JEE EAR file that is a contribution
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testEjbAppcom() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/ejb-appcomp-contrib-implicit/target/itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(1, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(0).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldService", composite.getComponents().get(0).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java
new file mode 100644
index 0000000000..64c31b4393
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java
@@ -0,0 +1,124 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import sample.pojo.HelloworldClient2;
+
+
+public class SCAJarEarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testSCAJarEarAppcomp() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scajar-ear-appcomp/target/itest-contribution-jee-samples-41-scajar-ear-appcomp.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ domain.getDomainComposite().getIncludes().add(composite);
+
+ Assert.assertEquals(3, composite.getComponents().size());
+ Assert.assertEquals(3, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("TheService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ domain.getCompositeActivator().activate(composite);
+ domain.getCompositeActivator().start(composite);
+
+ HelloworldClient2 client = domain.getService(HelloworldClient2.class, "HelloworldClientComponent");
+ Assert.assertEquals("Hello Fred Java", client.getGreetings("Fred"));
+
+ domain.stop();
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java
new file mode 100644
index 0000000000..9f50ea573c
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java
@@ -0,0 +1,125 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import sample.pojo.HelloworldClient2;
+
+
+public class SCAJarEarAppcompWarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * appcomp - It has an application composite in it
+ * WAR - It has a WAR (and and EAR) in it
+ * appcomp - It has an application composite in it which should be ignored
+ */
+ @Test
+ public void testSCAJarEarAppcomp() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scajar-ear-appcomp-war-appcomp/target/itest-contribution-jee-samples-43-scajar-ear-appcomp-war-appcomp.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ domain.getDomainComposite().getIncludes().add(composite);
+
+ Assert.assertEquals(3, composite.getComponents().size());
+ Assert.assertEquals(2, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("TheService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ domain.getCompositeActivator().activate(composite);
+ domain.getCompositeActivator().start(composite);
+
+ HelloworldClient2 client = domain.getService(HelloworldClient2.class, "HelloworldClientComponent");
+ Assert.assertEquals("Hello Fred Java", client.getGreetings("Fred"));
+
+ domain.stop();
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java
new file mode 100644
index 0000000000..97e23d1bf7
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java
@@ -0,0 +1,139 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class SCAJarEarNonenhancedTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+ private static final String CONTRIBUTION_002_ID = "contribution002/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * nonenhanced - It has no SCA enhancements. Just a normal EAR
+ *
+ */
+ @Test
+ public void testSCAJarEarNonenhanced() throws Exception{
+ /* some thoughts about how to preprocess the ear
+ * as an alternative to relying on the model resolver
+ * to do contribution processing.
+
+ // Get some things from the extension registry that help us create the
+ // link between the contribution and the ear that it references
+ ExtensionPointRegistry registry = domain.getExtensionPointRegistry();
+ ModelResolverExtensionPoint modelResolvers = registry.getExtensionPoint(ModelResolverExtensionPoint.class);
+ Class<? extends ModelResolver> externalEarModelResolver = modelResolvers.getResolver(ExternalEarInfo.class);
+
+ // locate the ear
+ URL earLocation = new File("../contribution-jee-samples/ear-nonenhanced/target/itest-contribution-jee-samples-13-ear-nonenhanced.ear").toURL();
+ contributionService.contribute(CONTRIBUTION_001_ID, earLocation, false);
+
+ // find the app info
+ for (Artifact artifact : contributionService.getContribution(CONTRIBUTION_001_ID).getArtifacts()){
+ if (artifact.getModel() instanceof JavaEEApplicationInfo){
+ // need to make this model available to the external ear model
+ // resolver. But how?
+ }
+ }
+ */
+
+ URL contributionLocation = new File("../contribution-jee-samples/scajar-ear-nonenhanced/target/itest-contribution-jee-samples-35-scajar-ear-nonenhanced.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_002_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(2, composite.getComponents().size());
+ Assert.assertEquals(4, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldService7Bean_HelloworldService7", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java
new file mode 100644
index 0000000000..db4d9e5bf6
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java
@@ -0,0 +1,112 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class SCAZipEjbAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAZIP - It's an SCA contribution in a ZIP with no nested archive
+ * but with a reference to an EJB Jar
+ * JAR
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testSCAZipEjbAppcomp() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scazip-ejb-appcomp/target/itest-contribution-jee-samples-10-scazip-ejb-appcomp.zip").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(2, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldServiceBean_HelloworldService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java
new file mode 100644
index 0000000000..211f51c9bd
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java
@@ -0,0 +1,114 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class SCAZipWarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * appcomp - It has an application composite in it
+ *
+ */
+ // not picking up references correctly
+ @Ignore
+ @Test
+ public void testSCAJarEarNonenhanced() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scazip-war-appcomp/target/itest-contribution-jee-samples-04-scazip-war-appcomp.zip").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(1, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(0).getImplementation().getReferences().size());
+ Assert.assertEquals("????", composite.getComponents().get(0).getImplementation().getReferences().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java
new file mode 100644
index 0000000000..7696b64f9c
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java
@@ -0,0 +1,86 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class WARAppcompContribImplicitTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * WAR - It's a WAR
+ * Appcomp - It has an application composite
+ * Contrib - It's a contribution in it's own right
+ * Implicit - Composite deployment is implicit
+ *
+ */
+ @Test
+ public void testWARAppcompContribImplicit() throws Exception {
+ URL contributionLocation = new File("../contribution-jee-samples/war-appcomp-contrib-implicit/target/itest-contribution-jee-samples-06-war-appcomp-contrib-implicit.war").toURL();
+ contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(CONTRIBUTION_001_ID));
+ }
+
+}
diff --git a/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java
new file mode 100644
index 0000000000..f54a4f98df
--- /dev/null
+++ b/tags/java/sca/1.5.1/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java
@@ -0,0 +1,110 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class WarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * EJB - It's an JEE EAR file that is a contribution
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testEjbAppcom() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/war-appcomp-contrib-implicit/target/itest-contribution-jee-samples-06-war-appcomp-contrib-implicit.war").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(1, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(0).getImplementation().getReferences().size());
+ Assert.assertEquals("helloworldSca", composite.getComponents().get(0).getImplementation().getReferences().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}