summaryrefslogtreecommitdiffstats
path: root/branches
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--branches/sca-java-1.x/itest/contribution-jee/pom.xml59
-rw-r--r--branches/sca-java-1.x/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.java139
-rw-r--r--branches/sca-java-1.x/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver18
-rw-r--r--branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java106
-rw-r--r--branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java134
-rw-r--r--branches/sca-java-1.x/itest/pom.xml1
-rw-r--r--branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/ExternalEarInfo.java3
-rw-r--r--branches/sca-java-1.x/modules/implementation-jee/src/main/java/org/apache/tuscany/sca/implementation/jee/xml/JEEImplementationProcessor.java37
-rw-r--r--branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java4
9 files changed, 483 insertions, 18 deletions
diff --git a/branches/sca-java-1.x/itest/contribution-jee/pom.xml b/branches/sca-java-1.x/itest/contribution-jee/pom.xml
index df9ecd62f8..a6251a5a55 100644
--- a/branches/sca-java-1.x/itest/contribution-jee/pom.xml
+++ b/branches/sca-java-1.x/itest/contribution-jee/pom.xml
@@ -83,13 +83,6 @@
<artifactId>tuscany-implementation-web-runtime</artifactId>
<version>1.6-SNAPSHOT</version>
</dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>itest-contribution-jee-samples-6-war-appcomp-contrib-implicit</artifactId>
- <version>1.6-SNAPSHOT</version>
- <type>war</type>
- </dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
@@ -114,5 +107,57 @@
<artifactId>geronimo-el_1.0_spec</artifactId>
<version>1.0.1</version>
</dependency>
+
+ <!-- the sample war, jar and ear files that are used to test JEE contribution processing -->
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-1-war-nonenhanced</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-6-war-appcomp-contrib-implicit</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-7-ejb-nonenhanced</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>ejb</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-13-ear-nonenhanced</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>ear</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>ear</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-35-scajar-ear-nonenhanced</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>itest-contribution-jee-samples-41-scajar-ear-appcomp</artifactId>
+ <version>1.6-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+
</dependencies>
</project>
diff --git a/branches/sca-java-1.x/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.java b/branches/sca-java-1.x/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.java
new file mode 100644
index 0000000000..eda6aad177
--- /dev/null
+++ b/branches/sca-java-1.x/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.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.URI;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.assembly.Composite;
+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.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+public class TestExternalEarModelResolver implements ModelResolver {
+
+ private Map<URI, ExternalEarInfo> map = new HashMap<URI, ExternalEarInfo>();
+ private JavaEEIntrospector jeeIntrospector;
+ private ContributionService contributionService;
+
+
+ public TestExternalEarModelResolver(Contribution contribution, ExtensionPointRegistry extensionPoints) {
+ jeeIntrospector = extensionPoints.getExtensionPoint(JavaEEIntrospector.class);
+ UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
+ contributionService = utilities.getUtility(ContributionService.class);
+
+ }
+
+ public void addModel(Object resolved) {
+ ExternalEarInfo jeeApp = (ExternalEarInfo)resolved;
+ map.put(jeeApp.getAppInfo().getUri(), jeeApp);
+ }
+
+ public Object removeModel(Object resolved) {
+ return map.remove(((ExternalEarInfo)resolved).getAppInfo().getUri());
+ }
+
+ public <T> T resolveModel(final Class<T> modelClass, T unresolved) {
+ URI uri = ((ExternalEarInfo)unresolved).getAppInfo().getUri();
+ if (uri != null) {
+ ExternalEarInfo resolved = (ExternalEarInfo) map.get(uri);
+ if (resolved != null) {
+ return modelClass.cast(resolved);
+ } else {
+ // if you don't care about application composites you can
+ // simply read the EAR directly
+ /*
+ try {
+ File f = new File(uri.toString());
+ final JavaEEApplicationInfo o = jeeIntrospector.introspectJeeArchive(f.toURI().toURL());
+ return (T)new ExternalEarInfo() {
+ public JavaEEApplicationInfo getAppInfo() {
+ return (JavaEEApplicationInfo)o;
+ }
+ };
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ */
+
+ // if you do care about the application composite you
+ // need to process the ear as a contribution
+ try{
+ // find the location of the ear using a very specific algorithm
+ URL earLocation = null;
+ if ( uri.toString().equals("itest-contribution-jee-samples-13-ear-nonenhanced.ear")){
+ earLocation = new File("../contribution-jee-samples/ear-nonenhanced/target/itest-contribution-jee-samples-13-ear-nonenhanced.ear").toURL();
+ } else if ( uri.toString().equals("itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit.ear")){
+ earLocation = new File("../contribution-jee-samples/ear-appcomp-contrib-implicit/target/itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit.ear").toURL();
+ } else {
+ return unresolved;
+ }
+
+ // if you do care about application composites we have
+ // to process the EAR as a contribution
+ Contribution contribution = contributionService.contribute(uri.toString(), earLocation, false);
+
+ JavaEEApplicationInfo appInfo = null;
+ Composite appComposite = null;
+
+ // get the ear info
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof JavaEEApplicationInfo){
+ appInfo = (JavaEEApplicationInfo)artifact.getModel();
+ }
+
+ if (artifact.getURI().equals("META-INF/application.composite")){
+ appComposite = (Composite)artifact.getModel();
+ }
+ }
+
+
+ final JavaEEApplicationInfo returnAppInfo = appInfo;
+ final Composite returnAppComposite = appComposite;
+
+ return (T)new ExternalEarInfo() {
+ public JavaEEApplicationInfo getAppInfo() {
+ return returnAppInfo;
+ }
+ public Composite getAppComposite() {
+ return returnAppComposite;
+ }
+ };
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ return unresolved;
+ }
+
+}
diff --git a/branches/sca-java-1.x/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver b/branches/sca-java-1.x/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
new file mode 100644
index 0000000000..a39171507c
--- /dev/null
+++ b/branches/sca-java-1.x/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
@@ -0,0 +1,18 @@
+# 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.
+
+org.apache.tuscany.sca.test.contribution.jee.TestExternalEarModelResolver;model=org.apache.tuscany.sca.contribution.jee.ExternalEarInfo
diff --git a/branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java b/branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java
new file mode 100644
index 0000000000..3674dc2638
--- /dev/null
+++ b/branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java
@@ -0,0 +1,106 @@
+/*
+ * 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 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 testSCAJarEarNonenhanced() 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);
+
+ Assert.assertEquals(2, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("TheService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ }
+
+}
diff --git a/branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java b/branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java
new file mode 100644
index 0000000000..24556f0a4c
--- /dev/null
+++ b/branches/sca-java-1.x/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java
@@ -0,0 +1,134 @@
+/*
+ * 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(1, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldServiceBean_HelloworldService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+ }
+
+}
diff --git a/branches/sca-java-1.x/itest/pom.xml b/branches/sca-java-1.x/itest/pom.xml
index 602e644122..77f603c840 100644
--- a/branches/sca-java-1.x/itest/pom.xml
+++ b/branches/sca-java-1.x/itest/pom.xml
@@ -79,6 +79,7 @@
<module>contribution-classloader</module> -->
<module>contribution-jee-samples</module>
<module>contribution-jee</module>
+ <module>contribution-jee-samples</module>
<module>conversations</module>
<module>corba</module>
<module>conversations-ws</module>
diff --git a/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/ExternalEarInfo.java b/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/ExternalEarInfo.java
index 509ee7d776..c0b54156ea 100644
--- a/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/ExternalEarInfo.java
+++ b/branches/sca-java-1.x/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/ExternalEarInfo.java
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.sca.contribution.jee;
+import org.apache.tuscany.sca.assembly.Composite;
+
/**
* @version $Rev: 755722 $ $Date: 2009-03-18 20:23:02 +0000 (Wed, 18 Mar 2009) $
@@ -25,4 +27,5 @@ package org.apache.tuscany.sca.contribution.jee;
public interface ExternalEarInfo {
JavaEEApplicationInfo getAppInfo();
+ Composite getAppComposite();
}
diff --git a/branches/sca-java-1.x/modules/implementation-jee/src/main/java/org/apache/tuscany/sca/implementation/jee/xml/JEEImplementationProcessor.java b/branches/sca-java-1.x/modules/implementation-jee/src/main/java/org/apache/tuscany/sca/implementation/jee/xml/JEEImplementationProcessor.java
index 4b1d45cbc5..99616318ea 100644
--- a/branches/sca-java-1.x/modules/implementation-jee/src/main/java/org/apache/tuscany/sca/implementation/jee/xml/JEEImplementationProcessor.java
+++ b/branches/sca-java-1.x/modules/implementation-jee/src/main/java/org/apache/tuscany/sca/implementation/jee/xml/JEEImplementationProcessor.java
@@ -116,6 +116,7 @@ public class JEEImplementationProcessor extends BaseStAXArtifactProcessor implem
String archive = implementation.getArchive();
if (uri != null) {
Object moduleInfo = null;
+ ExternalEarInfo extEar = null;
if(uri.equals("")) {
if(moduleInfo == null) {
WebModuleInfo unresolved = new WebModuleInfoImpl();
@@ -154,12 +155,19 @@ public class JEEImplementationProcessor extends BaseStAXArtifactProcessor implem
} else if(uri.endsWith(".ear")) {
final JavaEEApplicationInfo appInfo = new JavaEEApplicationInfoImpl();
appInfo.setUri(URI.create(archive));
- ExternalEarInfo ee = new ExternalEarInfo() {
+ ExternalEarInfo unresolved = new ExternalEarInfo() {
public JavaEEApplicationInfo getAppInfo() {
return appInfo;
+ }
+ public Composite getAppComposite() {
+ return null;
}};
- ee = resolver.resolveModel(ExternalEarInfo.class, ee);
- moduleInfo = ee.getAppInfo();
+
+ ExternalEarInfo resolved = resolver.resolveModel(ExternalEarInfo.class, unresolved);
+ if(resolved != unresolved) {
+ extEar = resolved;
+ }
+ moduleInfo = resolved.getAppInfo();
}
if(moduleInfo instanceof WebModuleInfo) {
@@ -215,21 +223,30 @@ public class JEEImplementationProcessor extends BaseStAXArtifactProcessor implem
}
} else if(moduleInfo instanceof JavaEEApplicationInfo) {
// Check for application composite
- ModelObject unresolved = new ModelObjectImpl();
- unresolved.setUri(URI.create("META-INF/application.composite"));
- ModelObject resolved = resolver.resolveModel(ModelObject.class, unresolved);
- if(resolved != unresolved) {
+ Composite appComposite = null;
+ if(extEar != null) {
+ appComposite = extEar.getAppComposite();
+ } else {
+ ModelObject unresolved = new ModelObjectImpl();
+ unresolved.setUri(URI.create("META-INF/application.composite"));
+ ModelObject resolved = resolver.resolveModel(ModelObject.class, unresolved);
+ if(resolved != unresolved) {
+ // Found application composite
+ appComposite = (Composite)resolved.getObject();
+ }
+ }
+
+ if(appComposite != null) {
// Found application composite
- Composite appComposite = (Composite)resolved.getObject();
implementation.getServices().addAll(appComposite.getServices());
implementation.getReferences().addAll(appComposite.getReferences());
implementation.getProperties().addAll(appComposite.getProperties());
- }
+ }
// TODO: Obtain includeDefaults value from the composite
boolean includeDefaults = false;
- if(includeDefaults || resolved == unresolved) {
+ if(includeDefaults || appComposite == null) {
if(jeeExtension != null) {
ComponentType ct = jeeExtension.createImplementationJeeComponentType((JavaEEApplicationInfo)moduleInfo);
implementation.getServices().addAll(ct.getServices());
diff --git a/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java b/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
index 5b0e31fd03..1338b3a27c 100644
--- a/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
+++ b/branches/sca-java-1.x/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/RuntimeBootStrapper.java
@@ -150,7 +150,6 @@ public class RuntimeBootStrapper {
monitorFactory = new DefaultMonitorFactoryImpl();
monitor = monitorFactory.createMonitor();
utilities.addUtility(monitorFactory);
- //logger.fine("No MonitorFactory is found on the classpath.");
}
// Create a contribution service
@@ -166,6 +165,9 @@ public class RuntimeBootStrapper {
policyDefinitions,
policyDefinitionsResolver,
monitor);
+
+ // add the contribution service into the utility extension point
+ utilities.addUtility(contributionService);
// Create the ScopeRegistry
scopeRegistry = RuntimeBuilder.createScopeRegistry(registry);