From 95993bf148bd492ff48fe57a34f0f42d05afdbf6 Mon Sep 17 00:00:00 2001 From: slaws Date: Sat, 2 May 2009 11:24:58 +0000 Subject: TUSCANY-2978 - Add test code to exercise new JEE sample archives including code to show how to process an archive that appears outside of the contribution that references it. See TestExternalEarModelResolver.java. Some jee processing changes were required to make this work. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@770930 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/contribution/jee/ExternalEarInfo.java | 3 ++ .../jee/xml/JEEImplementationProcessor.java | 37 ++++++++++++++++------ .../tuscany/sca/node/impl/RuntimeBootStrapper.java | 4 ++- 3 files changed, 33 insertions(+), 11 deletions(-) (limited to 'branches/sca-java-1.x/modules') 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); -- cgit v1.2.3