You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2008/05/14 20:57:32 UTC
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...
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<Object, List<XmlCursor>> 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<Object, List<XmlCursor>> createElementMap(XmlCursor cursor) {
+ Map<Object, List<XmlCursor>> map = new HashMap<Object, List<XmlCursor>>();
+ cursor.toStartDoc();
+ cursor.toFirstChild();
+ do {
+ QName name = cursor.getName();
+ List<XmlCursor> locations = map.get(name);
+ if (locations == null) {
+ locations = new ArrayList<XmlCursor>();
+ map.put(name, locations);
+ map.put(name.getLocalPart(), locations);
+ }
+ locations.add(cursor.newCursor());
+ } while(cursor.toNextSibling());
+ return map;
+ }
+
+ private static void clearElementMap(Map<Object, List<XmlCursor>> map) {
+ for (Map.Entry<Object, List<XmlCursor>> entry : map.entrySet()) {
+ for (XmlCursor cursor : entry.getValue()) {
+ cursor.dispose();
+ }
+ }
+ map.clear();
+ }
+
+ private static void moveToBottom(XmlCursor cursor, List<XmlCursor> 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns='http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1'>
+ <dep:environment xmlns:dep='http://geronimo.apache.org/xml/ns/deployment-1.2'>
+ <dep:moduleId>
+ <dep:groupId>ssi.web</dep:groupId>
+ <dep:artifactId>equipment-aaf</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ <dep:type>war</dep:type>
+ </dep:moduleId>
+ <dep:dependencies>
+ <dep:dependency>
+ <dep:groupId>com.ibm</dep:groupId>
+ <dep:artifactId>jtopen</dep:artifactId>
+ <dep:version>6.1</dep:version>
+ <dep:type>jar</dep:type>
+ </dep:dependency>
+ <dep:dependency>
+ <dep:groupId>org.apache.openjpa</dep:groupId>
+ <dep:artifactId>openjpa</dep:artifactId>
+ <dep:version>1.0.2</dep:version>
+ <dep:type>jar</dep:type>
+ </dep:dependency>
+
+ <!--
+ <dep:dependency>
+ <dep:groupId>ssi</dep:groupId>
+ <dep:artifactId>ssi-api</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ <dep:type>jar</dep:type>
+ </dep:dependency>
+ -->
+ <dep:dependency>
+ <dep:groupId>console.dbpool</dep:groupId>
+ <dep:artifactId>jdbc%2FAAF</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ <dep:type>rar</dep:type>
+ </dep:dependency>
+ </dep:dependencies>
+
+ </dep:environment>
+
+ <context-root>/aaf/equipment</context-root>
+
+ <security-realm-name>realm-SSLIB</security-realm-name>
+
+ <security xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0">
+ <default-principal realm-name="realm-SSLIB">
+ <principal name="anonymous"
+class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>
+ </default-principal>
+ <role-mappings>
+ <role role-name="equipment-user">
+ <realm realm-name="realm-SSLIB">
+ <principal name="ADMIN"
+class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
+ </realm>
+ <realm realm-name="realm-SSLIB">
+ <principal name="AAF"
+class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
+ </realm>
+ </role>
+ </role-mappings>
+ </security>
+
+ <nam:resource-ref xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2">
+ <nam:ref-name>jdbc/ds</nam:ref-name>
+ <nam:resource-link>jdbc/AAF</nam:resource-link>
+ </nam:resource-ref>
+
+ <jpa:persistence version="1.0" xmlns:jpa='http://java.sun.com/xml/ns/persistence'>
+ <jpa:persistence-unit name="equipment-pu" transaction-type="JTA">
+ <jpa:provider>org.apache.openjpa.persistence.PersistenceProviderImpl</jpa:provider>
+ <jpa:jta-data-source>jdbc%2FAAF</jpa:jta-data-source>
+ <jpa:non-jta-data-source>jdbc%2FAAF</jpa:non-jta-data-source>
+ <jpa:class>ssi.api.jpa.company.Description</jpa:class>
+ <jpa:class>ssi.api.jpa.company.Equipment</jpa:class>
+ <jpa:class>ssi.api.jpa.company.EquipmentMaintanence</jpa:class>
+ <jpa:class>ssi.api.jpa.company.EquipmentMaintanenceType</jpa:class>
+ <jpa:class>ssi.api.jpa.company.EquipmentType</jpa:class>
+ <jpa:exclude-unlisted-classes>true</jpa:exclude-unlisted-classes>
+ <jpa:properties>
+ <jpa:property name="openjpa.Log" value="DefaultLevel=TRACE, Tool=INFO,
+SQL=TRACE"/>
+ <jpa:property name="openjpa.jdbc.DBDictionary"
+value="ssi.api.jpa.AS400Dictionary"/>
+ <!--
+ <jpa:property name="openjpa.jdbc.SynchronizeMappings" value="validate"/>
+
+ <jpa:property name="openjpa.jdbc.TransactionIsolation" value="none"/>
+ <jpa:property name="openjpa.LockManager" value="none"/>
+ <jpa:property name="openjpa.ConnectionRetainMode" value="always"/>
+ <jpa:property name="openjpa.FlushBeforeQueries" value="true"/>
+ -->
+ </jpa:properties>
+ </jpa:persistence-unit>
+ </jpa:persistence>
+
+</web-app>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns='http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1'>
+ <dep:environment xmlns:dep='http://geronimo.apache.org/xml/ns/deployment-1.2'>
+ <dep:moduleId>
+ <dep:groupId>ssi.web</dep:groupId>
+ <dep:artifactId>equipment-aaf</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ <dep:type>war</dep:type>
+ </dep:moduleId>
+ <dep:dependencies>
+ <dep:dependency>
+ <dep:groupId>com.ibm</dep:groupId>
+ <dep:artifactId>jtopen</dep:artifactId>
+ <dep:version>6.1</dep:version>
+ <dep:type>jar</dep:type>
+ </dep:dependency>
+ <dep:dependency>
+ <dep:groupId>org.apache.openjpa</dep:groupId>
+ <dep:artifactId>openjpa</dep:artifactId>
+ <dep:version>1.0.2</dep:version>
+ <dep:type>jar</dep:type>
+ </dep:dependency>
+
+ <!--
+ <dep:dependency>
+ <dep:groupId>ssi</dep:groupId>
+ <dep:artifactId>ssi-api</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ <dep:type>jar</dep:type>
+ </dep:dependency>
+ -->
+ <dep:dependency>
+ <dep:groupId>console.dbpool</dep:groupId>
+ <dep:artifactId>jdbc%2FAAF</dep:artifactId>
+ <dep:version>1.0</dep:version>
+ <dep:type>rar</dep:type>
+ </dep:dependency>
+ </dep:dependencies>
+
+ </dep:environment>
+
+ <context-root>/aaf/equipment</context-root>
+
+ <security-realm-name>realm-SSLIB</security-realm-name>
+
+ <security xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0">
+ <default-principal realm-name="realm-SSLIB">
+ <principal name="anonymous"
+class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>
+ </default-principal>
+ <role-mappings>
+ <role role-name="equipment-user">
+ <realm realm-name="realm-SSLIB">
+ <principal name="ADMIN"
+class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
+ </realm>
+ <realm realm-name="realm-SSLIB">
+ <principal name="AAF"
+class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
+ </realm>
+ </role>
+ </role-mappings>
+ </security>
+
+ <nam:resource-ref xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2">
+ <nam:ref-name>jdbc/ds</nam:ref-name>
+ <nam:resource-link>jdbc/AAF</nam:resource-link>
+ </nam:resource-ref>
+
+ <jpa:persistence version="1.0" xmlns:jpa='http://java.sun.com/xml/ns/persistence'>
+ <jpa:persistence-unit name="equipment-pu" transaction-type="JTA">
+ <jpa:provider>org.apache.openjpa.persistence.PersistenceProviderImpl</jpa:provider>
+ <jpa:jta-data-source>jdbc%2FAAF</jpa:jta-data-source>
+ <jpa:non-jta-data-source>jdbc%2FAAF</jpa:non-jta-data-source>
+ <jpa:class>ssi.api.jpa.company.Description</jpa:class>
+ <jpa:class>ssi.api.jpa.company.Equipment</jpa:class>
+ <jpa:class>ssi.api.jpa.company.EquipmentMaintanence</jpa:class>
+ <jpa:class>ssi.api.jpa.company.EquipmentMaintanenceType</jpa:class>
+ <jpa:class>ssi.api.jpa.company.EquipmentType</jpa:class>
+ <jpa:exclude-unlisted-classes>true</jpa:exclude-unlisted-classes>
+ <jpa:properties>
+ <jpa:property name="openjpa.Log" value="DefaultLevel=TRACE, Tool=INFO,
+SQL=TRACE"/>
+ <jpa:property name="openjpa.jdbc.DBDictionary"
+value="ssi.api.jpa.AS400Dictionary"/>
+ <!--
+ <jpa:property name="openjpa.jdbc.SynchronizeMappings" value="validate"/>
+
+ <jpa:property name="openjpa.jdbc.TransactionIsolation" value="none"/>
+ <jpa:property name="openjpa.LockManager" value="none"/>
+ <jpa:property name="openjpa.ConnectionRetainMode" value="always"/>
+ <jpa:property name="openjpa.FlushBeforeQueries" value="true"/>
+ -->
+ </jpa:properties>
+ </jpa:persistence-unit>
+ </jpa:persistence>
+
+</web-app>
Propchange: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat6-builder/src/test/resources/plans/plan-convert.xml
------------------------------------------------------------------------------
svn:eol-style = native