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 --- .../jee/xml/JEEImplementationProcessor.java | 37 ++++++++++++++++------ 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'branches/sca-java-1.x/modules/implementation-jee/src/main/java') 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()); -- cgit v1.2.3