Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 72415 invoked from network); 14 May 2008 18:57:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 14 May 2008 18:57:58 -0000 Received: (qmail 36897 invoked by uid 500); 14 May 2008 18:57:59 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 36847 invoked by uid 500); 14 May 2008 18:57:59 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 36836 invoked by uid 99); 14 May 2008 18:57:59 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 May 2008 11:57:59 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 May 2008 18:57:12 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5C0842388A09; Wed, 14 May 2008 11:57:33 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r656359 - in /geronimo/server/trunk/plugins: j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web/deployment/ jetty/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/ jetty/geronimo-jetty6-builder/sr... Date: Wed, 14 May 2008 18:57:32 -0000 To: scm@geronimo.apache.org From: gawor@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080514185733.5C0842388A09@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gawor Date: Wed May 14 11:57:32 2008 New Revision: 656359 URL: http://svn.apache.org/viewvc?rev=656359&view=rev Log: make sure security and persistence elements get reordered correctly (GERONIMO-3944) Added: geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/resources/plans/plan-convert.xml (with props) geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml (with props) Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverter.java geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/PlanParsingTest.java geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverter.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverter.java?rev=656359&r1=656358&r2=656359&view=diff ============================================================================== --- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverter.java (original) +++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverter.java Wed May 14 11:57:32 2008 @@ -16,6 +16,11 @@ */ package org.apache.geronimo.web.deployment; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.xml.namespace.QName; import org.apache.geronimo.common.DeploymentException; @@ -83,6 +88,7 @@ cursor.removeXml(); } cursor.pop(); + cursor.push(); while (cursor.hasNextToken()) { if (cursor.isStart()) { @@ -93,31 +99,19 @@ } cursor.toNextToken(); } - //move security elements after refs - cursor.pop(); - cursor.push(); - if (cursor.toChild(this.namespace, "security-realm-name")) { - XmlCursor other = cursor.newCursor(); - try { - other.toParent(); - if (other.toChild(SYSTEM_NAMESPACE, "gbean")) { - other.toPrevToken(); - } else { - other.toEndToken(); - other.toPrevToken(); - } - cursor.moveXml(other); - cursor.pop(); - cursor.push(); - if (cursor.toChild(SECURITY_QNAME)) { - cursor.moveXml(other); - } - } finally { - other.dispose(); - } - } + + cursor.push(); + Map> map = createElementMap(cursor); cursor.pop(); + + moveToBottom(cursor, map.get("security-realm-name")); + moveToBottom(cursor, map.get("security")); + moveToBottom(cursor, map.get("gbean")); + moveToBottom(cursor, map.get("persistence")); + + clearElementMap(map); + return webPlan; } finally { cursor.dispose(); @@ -130,5 +124,40 @@ rawCursor.dispose(); } } - + + private static Map> createElementMap(XmlCursor cursor) { + Map> map = new HashMap>(); + cursor.toStartDoc(); + cursor.toFirstChild(); + do { + QName name = cursor.getName(); + List locations = map.get(name); + if (locations == null) { + locations = new ArrayList(); + map.put(name, locations); + map.put(name.getLocalPart(), locations); + } + locations.add(cursor.newCursor()); + } while(cursor.toNextSibling()); + return map; + } + + private static void clearElementMap(Map> map) { + for (Map.Entry> entry : map.entrySet()) { + for (XmlCursor cursor : entry.getValue()) { + cursor.dispose(); + } + } + map.clear(); + } + + private static void moveToBottom(XmlCursor cursor, List locations) { + if (locations != null) { + for (XmlCursor location : locations) { + cursor.toEndDoc(); + location.moveXml(cursor); + } + } + } + } \ No newline at end of file Modified: geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/PlanParsingTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/PlanParsingTest.java?rev=656359&r1=656358&r2=656359&view=diff ============================================================================== --- geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/PlanParsingTest.java (original) +++ geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/PlanParsingTest.java Wed May 14 11:57:32 2008 @@ -139,6 +139,19 @@ // assertEquals(4, jettyWebApp.getSecurity().getRoleMappings().getRoleArray().length); } + public void testConvertPlan() throws Exception { + URL srcXml = classLoader.getResource("plans/plan-convert.xml"); + XmlObject rawPlan = XmlBeansUtil.parse(srcXml, getClass().getClassLoader()); + + XmlObject webPlan = new GenericToSpecificPlanConverter( + "http://geronimo.apache.org/xml/ns/web/jetty/config-1.0.1", + "http://geronimo.apache.org/xml/ns/j2ee/web/jetty-2.0.2", + "jetty").convertToSpecificPlan(rawPlan); + + XmlObject p = webPlan.changeType(JettyWebAppType.type); + XmlBeansUtil.validateDD(p); + } + public void testOldFormatExploded() throws Exception { URL war = classLoader.getResource("deployables/war5"); assertTrue(war != null); Added: geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/resources/plans/plan-convert.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/resources/plans/plan-convert.xml?rev=656359&view=auto ============================================================================== --- geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/resources/plans/plan-convert.xml (added) +++ geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/resources/plans/plan-convert.xml Wed May 14 11:57:32 2008 @@ -0,0 +1,98 @@ + + + + + ssi.web + equipment-aaf + 1.0 + war + + + + com.ibm + jtopen + 6.1 + jar + + + org.apache.openjpa + openjpa + 1.0.2 + jar + + + + + console.dbpool + jdbc%2FAAF + 1.0 + rar + + + + + + /aaf/equipment + + realm-SSLIB + + + + + + + + + + + + + + + + + + + jdbc/ds + jdbc/AAF + + + + + org.apache.openjpa.persistence.PersistenceProviderImpl + jdbc%2FAAF + jdbc%2FAAF + ssi.api.jpa.company.Description + ssi.api.jpa.company.Equipment + ssi.api.jpa.company.EquipmentMaintanence + ssi.api.jpa.company.EquipmentMaintanenceType + ssi.api.jpa.company.EquipmentType + true + + + + + + + + + Propchange: geronimo/server/trunk/plugins/jetty/geronimo-jetty6-builder/src/test/resources/plans/plan-convert.xml ------------------------------------------------------------------------------ svn:eol-style = native Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java?rev=656359&r1=656358&r2=656359&view=diff ============================================================================== --- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java (original) +++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/java/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java Wed May 14 11:57:32 2008 @@ -34,11 +34,13 @@ import org.apache.geronimo.kernel.Naming; import org.apache.geronimo.kernel.repository.Artifact; import org.apache.geronimo.kernel.repository.Environment; +import org.apache.geronimo.web.deployment.GenericToSpecificPlanConverter; import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType; import org.apache.geronimo.xbeans.geronimo.web.GerWebAppDocument; import org.apache.geronimo.xbeans.geronimo.web.GerWebAppType; import org.apache.geronimo.xbeans.geronimo.web.tomcat.TomcatWebAppType; import org.apache.geronimo.security.deployment.GeronimoSecurityBuilderImpl; +import org.apache.xmlbeans.XmlObject; /** */ @@ -71,6 +73,19 @@ builder.doStop(); } + public void testConvertPlan() throws Exception { + URL srcXml = classLoader.getResource("plans/plan-convert.xml"); + XmlObject rawPlan = XmlBeansUtil.parse(srcXml, getClass().getClassLoader()); + + XmlObject webPlan = new GenericToSpecificPlanConverter( + "http://geronimo.apache.org/xml/ns/web/tomcat/config-1.0", + "http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-2.0.1", + "tomcat").convertToSpecificPlan(rawPlan); + + XmlObject p = webPlan.changeType(TomcatWebAppType.type); + XmlBeansUtil.validateDD(p); + } + public void testResourceRef() throws Exception { URL resourceURL = classLoader.getResource("plans/plan1.xml"); File resourcePlan = new File(resourceURL.getFile()); Added: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml?rev=656359&view=auto ============================================================================== --- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml (added) +++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml Wed May 14 11:57:32 2008 @@ -0,0 +1,98 @@ + + + + + ssi.web + equipment-aaf + 1.0 + war + + + + com.ibm + jtopen + 6.1 + jar + + + org.apache.openjpa + openjpa + 1.0.2 + jar + + + + + console.dbpool + jdbc%2FAAF + 1.0 + rar + + + + + + /aaf/equipment + + realm-SSLIB + + + + + + + + + + + + + + + + + + + jdbc/ds + jdbc/AAF + + + + + org.apache.openjpa.persistence.PersistenceProviderImpl + jdbc%2FAAF + jdbc%2FAAF + ssi.api.jpa.company.Description + ssi.api.jpa.company.Equipment + ssi.api.jpa.company.EquipmentMaintanence + ssi.api.jpa.company.EquipmentMaintanenceType + ssi.api.jpa.company.EquipmentType + true + + + + + + + + + Propchange: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml ------------------------------------------------------------------------------ svn:eol-style = native