You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jg...@apache.org on 2005/04/25 23:09:29 UTC

svn commit: r164651 [2/3] - in /geronimo/trunk/modules/tomcat-builder: ./ src/ src/java/ src/java/org/ src/java/org/apache/ src/java/org/apache/geronimo/ src/java/org/apache/geronimo/tomcat/ src/java/org/apache/geronimo/tomcat/deployment/ src/schema/ src/test-resources/ src/test-resources/data/ src/test-resources/deployables/ src/test-resources/deployables/cltest/ src/test-resources/deployables/cltest/javax/ src/test-resources/deployables/cltest/javax/foo/ src/test-resources/deployables/cltest/javax/servlet/ src/test-resources/deployables/cltest/mx4j/ src/test-resources/deployables/war1/ src/test-resources/deployables/war1/WEB-INF/ src/test-resources/deployables/war3/ src/test-resources/deployables/war3/WEB-INF/ src/test-resources/deployables/war3/auth/ src/test-resources/deployables/war3/protected/ src/test-resources/deployables/war4/ src/test-resources/deployables/war4/WEB-INF/ src/test-resources/deployables/war4/WEB-INF/classes/ src/test-resources/deployables/war4/WEB-INF/classes/org/ src/test-resources/deployables/war4/WEB-INF/classes/org/apache/ src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/ src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/ src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/ src/test-resources/plans/ src/test-resources/services/ src/test/ src/test/org/ src/test/org/apache/ src/test/org/apache/geronimo/ src/test/org/apache/geronimo/tomcat/ src/test/org/apache/geronimo/tomcat/app/ src/test/org/apache/geronimo/tomcat/deployment/ src/var/

Added: geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigBean.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigBean.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigBean.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigBean.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,101 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.deployment;
+
+import javax.enterprise.deploy.model.DDBean;
+import javax.enterprise.deploy.spi.DConfigBean;
+import javax.enterprise.deploy.spi.exceptions.BeanNotFoundException;
+import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
+
+import org.apache.geronimo.deployment.plugin.DConfigBeanSupport;
+import org.apache.geronimo.naming.deployment.ENCHelper;
+import org.apache.geronimo.xbeans.geronimo.tomcat.TomcatWebAppType;
+import org.apache.xmlbeans.SchemaTypeLoader;
+
+/**
+ * @version $Rev: 56771 $ $Date: 2004-11-06 12:58:54 -0700 (Sat, 06 Nov 2004) $
+ */
+public class WebAppDConfigBean extends DConfigBeanSupport {
+    private final ENCHelper encHelper;
+
+    WebAppDConfigBean(DDBean ddBean, TomcatWebAppType webApp) {
+        super(ddBean, webApp);
+
+        ENCHelper.XmlEnvRefs envRefs = new ENCHelper.XmlEnvRefs(webApp.getEjbRefArray(), webApp.getEjbLocalRefArray(), webApp.getResourceRefArray(), webApp.getResourceEnvRefArray()); 
+
+        //which version are we dealing with?
+        String version = ddBean.getRoot().getAttributeValue("version");
+        if ("2.4".equals(version)) {
+            encHelper = new ENCHelper(ddBean, envRefs, getXPathsForJ2ee_1_4(ENCHelper.ENC_XPATHS), getXPathsForJ2ee_1_4(ENCHelper.NAME_XPATHS));
+        } else {
+            encHelper = new ENCHelper(ddBean, envRefs, getXPathsWithPrefix(null, ENCHelper.ENC_XPATHS), getXPathsWithPrefix(null, ENCHelper.NAME_XPATHS));
+        }
+
+    }
+
+    TomcatWebAppType getWebApp() {
+        return (TomcatWebAppType) getXmlObject();
+    }
+
+    public String getContextRoot() {
+        return getWebApp().getContextRoot();
+    }
+
+    public void setContextRoot(String contextRoot) {
+        pcs.firePropertyChange("contextRoot", getContextRoot(), contextRoot);
+        getWebApp().setContextRoot(contextRoot);
+    }
+
+    /**
+     * getContextPriorityClassLoader.
+     *
+     * @return True if this context should give web application class in preference over the containers
+     *         classes, as per the servlet specification recommendations.
+     */
+    public boolean getContextPriorityClassLoader() {
+        return getWebApp().getContextPriorityClassloader();
+    }
+
+    /**
+     * setContextPriorityClassLoader.
+     *
+     * @param contextPriority True if this context should give web application class in preference over the containers
+     * classes, as per the servlet specification recommendations.
+     */
+    public void setContextPriorityClassLoader(boolean contextPriority) {
+        pcs.firePropertyChange("contextPriorityClassLoader", getContextPriorityClassLoader(), contextPriority);
+        getWebApp().setContextPriorityClassloader(contextPriority);
+    }
+
+    public DConfigBean getDConfigBean(DDBean ddBean) throws ConfigurationException {
+        return encHelper.getDConfigBean(ddBean);
+    }
+
+    public void removeDConfigBean(DConfigBean dcBean) throws BeanNotFoundException {
+        encHelper.removeDConfigBean(dcBean);
+    }
+
+    public String[] getXpaths() {
+        return getXPathsForJ2ee_1_4(ENCHelper.ENC_XPATHS);
+    }
+
+    protected SchemaTypeLoader getSchemaTypeLoader() {
+        return WebAppDConfigRoot.SCHEMA_TYPE_LOADER;
+    }
+
+}

Added: geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigRoot.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigRoot.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigRoot.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/WebAppDConfigRoot.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,85 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.deployment;
+
+import java.io.IOException;
+import java.io.InputStream;
+import javax.enterprise.deploy.model.DDBean;
+import javax.enterprise.deploy.model.DDBeanRoot;
+import javax.enterprise.deploy.spi.DConfigBean;
+import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
+
+import org.apache.geronimo.deployment.plugin.DConfigBeanRootSupport;
+import org.apache.geronimo.xbeans.geronimo.tomcat.TomcatWebAppDocument;
+import org.apache.geronimo.xbeans.geronimo.tomcat.TomcatWebAppType;
+import org.apache.xmlbeans.SchemaTypeLoader;
+import org.apache.xmlbeans.XmlBeans;
+import org.apache.xmlbeans.XmlException;
+
+/**
+ * @version $Rev: 56771 $ $Date: 2004-11-06 12:58:54 -0700 (Sat, 06 Nov 2004) $
+ */
+public class WebAppDConfigRoot extends DConfigBeanRootSupport {
+    static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[]{
+        XmlBeans.typeLoaderForClassLoader(org.apache.geronimo.xbeans.j2ee.String.class.getClassLoader()),
+        XmlBeans.typeLoaderForClassLoader(TomcatWebAppDocument.class.getClassLoader())
+    });
+
+    private static String[] XPATHS = {
+        "web-app"
+    };
+
+    private WebAppDConfigBean webAppBean;
+
+    public WebAppDConfigRoot(DDBeanRoot ddBean) {
+        super(ddBean, TomcatWebAppDocument.Factory.newInstance());
+        TomcatWebAppType webApp = getWebAppDocument().addNewWebApp();
+        replaceWebAppDConfigBean(webApp);
+    }
+
+    private void replaceWebAppDConfigBean(TomcatWebAppType webApp) {
+        DDBean ddBean = getDDBean();
+        webAppBean = new WebAppDConfigBean(ddBean.getChildBean(XPATHS[0])[0], webApp);
+    }
+
+    TomcatWebAppDocument getWebAppDocument() {
+        return (TomcatWebAppDocument) getXmlObject();
+    }
+
+    public String[] getXpaths() {
+        return XPATHS;
+    }
+
+    public DConfigBean getDConfigBean(DDBean bean) throws ConfigurationException {
+        if (XPATHS[0].equals(bean.getXpath())) {
+            return webAppBean;
+        }
+        return null;
+    }
+
+    public void fromXML(InputStream inputStream) throws XmlException, IOException {
+        super.fromXML(inputStream);
+        replaceWebAppDConfigBean(getWebAppDocument().getWebApp());
+    }
+
+    protected SchemaTypeLoader getSchemaTypeLoader() {
+        return SCHEMA_TYPE_LOADER;
+    }
+
+
+}

Added: geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat.xsd
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat.xsd?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat.xsd (added)
+++ geronimo/trunk/modules/tomcat-builder/src/schema/geronimo-tomcat.xsd Mon Apr 25 14:09:26 2005
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+
+<xs:schema
+    xmlns:tomcat="http://geronimo.apache.org/xml/ns/web/tomcat"
+    targetNamespace="http://geronimo.apache.org/xml/ns/web/tomcat"
+    xmlns:naming="http://geronimo.apache.org/xml/ns/naming"
+    xmlns:security="http://geronimo.apache.org/xml/ns/security"
+    xmlns:sys="http://geronimo.apache.org/xml/ns/deployment"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    elementFormDefault="qualified"
+    attributeFormDefault="unqualified"
+    version="1.0">
+
+    <xs:import namespace="http://geronimo.apache.org/xml/ns/naming" schemaLocation="../../../naming-builder/src/schema/geronimo-naming.xsd"/>
+    <xs:import namespace="http://geronimo.apache.org/xml/ns/security" schemaLocation="../../../security-builder/src/schema/geronimo-security.xsd"/>
+    <xs:import namespace="http://geronimo.apache.org/xml/ns/deployment" schemaLocation="../../../service-builder/src/schema/geronimo-config.xsd"/>
+
+
+    <xs:element name="web-app" type="tomcat:web-appType"/>
+
+    <xs:complexType name="web-appType">
+        <xs:sequence>
+            <xs:element ref="sys:dependency" minOccurs="0" maxOccurs="unbounded"/>
+
+            <xs:element name="context-root" type="xs:string" minOccurs="0"/>
+            <xs:element name="context-priority-classloader" type="xs:boolean"/>
+            <xs:element name="virtual-server" type="xs:string" minOccurs="0"/>
+
+            <xs:sequence minOccurs="0">
+                <xs:element name="security-realm-name" type="xs:string"/>
+                <xs:element ref="security:security" minOccurs="0"/>
+            </xs:sequence>
+
+            <!--xs:group ref="naming:jndiEnvironmentRefsGroup"/-->
+
+            <xs:element ref="naming:ejb-ref" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="naming:ejb-local-ref" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="naming:service-ref" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="naming:resource-ref" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element ref="naming:resource-env-ref" minOccurs="0" maxOccurs="unbounded"/>
+
+            <xs:element ref="sys:gbean" minOccurs="0" maxOccurs="unbounded"/>
+
+        </xs:sequence>
+        <xs:attribute name="configId" type="xs:string" use="required"/>
+        <xs:attribute name="parentId" type="xs:string" use="optional"/>
+    </xs:complexType>
+
+</xs:schema>

Added: geronimo/trunk/modules/tomcat-builder/src/schema/xmlconfig.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/schema/xmlconfig.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/schema/xmlconfig.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/schema/xmlconfig.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+<!-- @version $Rev: 57116 $ $Date: 2004-11-09 18:34:38 -0700 (Tue, 09 Nov 2004) $ -->
+<xb:config xmlns:xb="http://www.bea.com/2002/09/xbean/config">
+
+    <xb:namespace uri="http://geronimo.apache.org/xml/ns/web/tomcat">
+        <xb:package>org.apache.geronimo.xbeans.geronimo.tomcat</xb:package>
+        <xb:prefix>Tomcat</xb:prefix>
+    </xb:namespace>
+
+    <!--this should be unnecessary.  Probably needs xmlbeans plugin to reuse the naming classes rather than generating duplicates-->
+<!--    <xb:namespace uri="http://geronimo.apache.org/xml/ns/naming">-->
+<!--        <xb:package>org.apache.geronimo.xbeans.geronimo.naming</xb:package>-->
+<!--        <xb:prefix>Ger</xb:prefix>-->
+<!--    </xb:namespace>-->
+
+</xb:config>

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/data/groups.properties
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/data/groups.properties?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/data/groups.properties (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/data/groups.properties Mon Apr 25 14:09:26 2005
@@ -0,0 +1,22 @@
+##
+##
+##   Copyright 2004 The Apache Software Foundation
+##
+##   Licensed 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.
+##
+
+manager=izumi
+it=alan
+pet=george,gracie,metro
+dog=george,gracie
+cat=metro
\ No newline at end of file

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/data/login.config
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/data/login.config?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/data/login.config (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/data/login.config Mon Apr 25 14:09:26 2005
@@ -0,0 +1,9 @@
+
+jaasTest {
+    org.apache.geronimo.security.jaas.LocalLoginModule required
+    debug=true
+    realm="demo-properties-realm"
+    kernel="geronimo.kernel";
+};
+
+

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/data/users.properties
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/data/users.properties?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/data/users.properties (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/data/users.properties Mon Apr 25 14:09:26 2005
@@ -0,0 +1,22 @@
+##
+##
+##   Copyright 2004 The Apache Software Foundation
+##
+##   Licensed 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.
+##
+
+izumi=violin
+alan=starcraft
+george=bone
+gracie=biscuit
+metro=mouse
\ No newline at end of file

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/javax/foo/Foo.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/javax/foo/Foo.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/javax/foo/Foo.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/javax/servlet/Servlet.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/javax/servlet/Servlet.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/javax/servlet/Servlet.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/mx4j/MBeanDescription.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/mx4j/MBeanDescription.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/cltest/mx4j/MBeanDescription.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/geronimo-tomcat.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/geronimo-tomcat.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/geronimo-tomcat.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/geronimo-tomcat.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+
+<tomcat:web-app
+    xmlns:tomcat="http://geronimo.apache.org/xml/ns/web/tomcat"
+    configId="org/apache/geronimo/tomcat/Test"
+    >
+    <tomcat:context-root>/test</tomcat:context-root>
+    <tomcat:context-priority-classloader>false</tomcat:context-priority-classloader>
+    <!--
+        <tomcat:security>
+            <sec:default-principal realm-name="foo">
+                <sec:principal class="org.apache.geronimo.security.DefaultPrincipal"
+                    name="bar"/>
+            </sec:default-principal>
+        </tomcat:security>
+    -->
+</tomcat:web-app>

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/web.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/web.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/WEB-INF/web.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+  
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <description>Test Web Deployment</description>
+    <resource-env-ref>
+        <resource-env-ref-name>fake-resource-env-ref</resource-env-ref-name>
+        <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
+    </resource-env-ref>
+    <resource-ref>
+        <res-ref-name>fake-resource-ref</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+        <res-sharing-scope>Shareable</res-sharing-scope>
+    </resource-ref>
+    <ejb-ref>
+        <ejb-ref-name>fake-ejb-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <home>some.package.FakeHome</home>
+        <remote>some.package.Fake</remote>
+    </ejb-ref>
+    <ejb-ref>
+        <ejb-ref-name>another-ejb-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <home>some.package.FakeHome</home>
+        <remote>some.package.Fake</remote>
+    </ejb-ref>
+    <ejb-local-ref>
+        <ejb-ref-name>fake-ejb-local-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <local-home>some.package.FakeLocalHome</local-home>
+        <local>some.package.FakeLocal</local>
+    </ejb-local-ref>
+    <ejb-local-ref>
+        <ejb-ref-name>another-ejb-local-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <local-home>some.package.FakeLocalHome</local-home>
+        <local>some.package.FakeLocal</local>
+    </ejb-local-ref>
+<!--    <service-ref>-->
+<!--        <service-ref-name>fake-service-ref</service-ref-name>-->
+<!--        <service-interface>some.package.FakeService</service-interface>-->
+<!--    </service-ref>-->
+</web-app>
\ No newline at end of file

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/hello.txt
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/hello.txt?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/hello.txt (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war1/hello.txt Mon Apr 25 14:09:26 2005
@@ -0,0 +1 @@
+Hello World

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war2.war
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war2.war?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war2.war
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/geronimo-tomcat.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/geronimo-tomcat.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/geronimo-tomcat.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/geronimo-tomcat.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+
+<web-app
+    xmlns="http://geronimo.apache.org/xml/ns/web/jetty"
+    xmlns:sec="http://geronimo.apache.org/xml/ns/security"
+    configId="org/apache/geronimo/test">
+
+    <context-root>/test</context-root>
+    <context-priority-classloader>false</context-priority-classloader>
+    <login-domain-name>demo-properties-realm</login-domain-name>
+    <sec:security>
+        <sec:auto-map-roles security-realm="demo-properties-realm"/>
+        <sec:default-principal realm-name="demo-properties-realm">
+            <sec:principal class="org.apache.geronimo.security.realm.providers.PropertiesFileUserPrincipal" name="izumi"/>
+        </sec:default-principal>
+    </sec:security>
+</web-app>

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/web.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/web.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/WEB-INF/web.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright 2004 The Apache Software Foundation
+
+    Licensed 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.
+-->
+  
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <description>Test Web Deployment</description>
+    <resource-env-ref>
+        <resource-env-ref-name>fake-resource-env-ref</resource-env-ref-name>
+        <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
+    </resource-env-ref>
+    <resource-ref>
+        <res-ref-name>fake-resource-ref</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+        <res-sharing-scope>Shareable</res-sharing-scope>
+    </resource-ref>
+
+    <security-constraint>
+        <web-resource-collection>
+            <web-resource-name>Admin Role</web-resource-name>
+            <url-pattern>/protected/*</url-pattern>
+        </web-resource-collection>
+        <auth-constraint>
+            <role-name>content-administrator</role-name>
+        </auth-constraint>
+    </security-constraint>
+
+    <security-constraint>
+        <web-resource-collection>
+            <web-resource-name>NO ACCESS</web-resource-name>
+            <url-pattern>/auth/logon.html</url-pattern>
+        </web-resource-collection>
+        <auth-constraint/>
+    </security-constraint>
+
+    <login-config>
+        <auth-method>FORM</auth-method>
+        <realm-name>Test JAAS Realm</realm-name>
+        <form-login-config>
+            <form-login-page>/auth/logon.html?param=test</form-login-page>
+            <form-error-page>/auth/logonError.html?param=test</form-error-page>
+        </form-login-config>
+    </login-config>
+
+    <security-role>
+        <role-name>content-administrator</role-name>
+    </security-role>
+
+    <ejb-ref>
+        <ejb-ref-name>fake-ejb-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <home>some.package.FakeHome</home>
+        <remote>some.package.Fake</remote>
+    </ejb-ref>
+    <ejb-ref>
+        <ejb-ref-name>another-ejb-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <home>some.package.FakeHome</home>
+        <remote>some.package.Fake</remote>
+    </ejb-ref>
+    <ejb-local-ref>
+        <ejb-ref-name>fake-ejb-local-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <local-home>some.package.FakeLocalHome</local-home>
+        <local>some.package.FakeLocal</local>
+    </ejb-local-ref>
+    <ejb-local-ref>
+        <ejb-ref-name>another-ejb-local-ref</ejb-ref-name>
+        <ejb-ref-type>Entity</ejb-ref-type>
+        <local-home>some.package.FakeLocalHome</local-home>
+        <local>some.package.FakeLocal</local>
+    </ejb-local-ref>
+
+</web-app>
\ No newline at end of file

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logon.html
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logon.html?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logon.html (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logon.html Mon Apr 25 14:09:26 2005
@@ -0,0 +1,20 @@
+<HTML>
+<H1>FORM Authentication demo</H1>
+<form method="POST" action="j_security_check">
+<table border="0" cellspacing="2" cellpadding="1">
+<tr>
+  <td>Username:</td>
+  <td><input size="12" value="" name="j_username" maxlength="25" type="text"></td>
+</tr>
+<tr>
+  <td>Password:</td>
+  <td><input size="12" value="" name="j_password" maxlength="25" type="password"></td>
+</tr>
+<tr>
+  <td colspan="2" align="center">
+    <input name="submit" type="submit" value="Login">
+  </td>
+</tr>
+</table>
+</form>
+</HTML>

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logonError.html
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logonError.html?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logonError.html (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/auth/logonError.html Mon Apr 25 14:09:26 2005
@@ -0,0 +1,5 @@
+<HTML>
+<H1>Authentication ERROR</H1>
+Username, password or role incorrect.
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+</HTML>
\ No newline at end of file

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/protected/hello.txt
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/protected/hello.txt?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/protected/hello.txt (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war3/protected/hello.txt Mon Apr 25 14:09:26 2005
@@ -0,0 +1 @@
+Hello World

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Filter1.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Filter1.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Filter1.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Filter2.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Filter2.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Filter2.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Servlet1.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Servlet1.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Servlet1.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Servlet2.class
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Servlet2.class?rev=164651&view=auto
==============================================================================
Binary file - no diff available.

Propchange: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/classes/org/apache/geronimo/tomcat/app/Servlet2.class
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/web.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/web.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/deployables/war4/WEB-INF/web.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+    <display-name>war4</display-name>
+    <filter>
+        <filter-name>Filter1</filter-name>
+        <filter-class>org.apache.geronimo.tomcat.app.Filter1</filter-class>
+        <init-param>
+            <param-name>attribute1</param-name>
+            <param-value>value1</param-value>
+        </init-param>
+    </filter>
+    <filter>
+        <filter-name>Filter2</filter-name>
+        <filter-class>org.apache.geronimo.tomcat.app.Filter2</filter-class>
+        <init-param>
+            <param-name>attribute1</param-name>
+            <param-value>value2</param-value>
+        </init-param>
+    </filter>
+    <filter-mapping>
+        <filter-name>Filter1</filter-name>
+        <servlet-name>Servlet1</servlet-name>
+    </filter-mapping>
+    <filter-mapping>
+        <filter-name>Filter2</filter-name>
+        <servlet-name>Servlet1</servlet-name>
+    </filter-mapping>
+    <servlet>
+        <servlet-name>Servlet1</servlet-name>
+        <servlet-class>org.apache.geronimo.tomcat.app.Servlet1</servlet-class>
+    </servlet>
+    <servlet>
+        <servlet-name>Servlet2</servlet-name>
+        <servlet-class>org.apache.geronimo.tomcat.app.Servlet2</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Servlet1</servlet-name>
+        <url-pattern>/path1</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>Servlet2</servlet-name>
+        <url-pattern>/path2</url-pattern>
+    </servlet-mapping>
+    <session-config>
+        <session-timeout>60</session-timeout>
+    </session-config>
+    <jsp-config>
+        <taglib>
+            <taglib-uri>http://geronimo.apache.org/jsp/tagliburi1</taglib-uri>
+            <taglib-location>/WEB-INF/taglib1.tld</taglib-location>
+        </taglib>
+        <taglib>
+            <taglib-uri>http://geronimo.apache.org/jsp/tagliburi2</taglib-uri>
+            <taglib-location>/WEB-INF/taglib2.tld</taglib-location>
+        </taglib>
+    </jsp-config>
+</web-app>

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/plans/plan1.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/plans/plan1.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/plans/plan1.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/plans/plan1.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://geronimo.apache.org/xml/ns/web/tomcat"
+    configId="goodservlet"
+    parentId="org/apache/geronimo/DefaultDatabase">
+    <context-priority-classloader>false</context-priority-classloader>
+    <security-realm-name>public-properties-realm</security-realm-name>
+    <security default-role="UNASSIGNED" doas-current-caller="true">
+        <default-principal realm-name="public-properties-realm">
+            <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="guest"/>
+        </default-principal>
+
+        <role-mappings>
+            <role role-name="UNASSIGNED">
+                <realm realm-name="public-properties-realm">
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="guest" designated-run-as="true"/>
+                </realm>
+            </role>
+
+            <role role-name="LOW">
+                <realm realm-name="public-properties-realm">
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" name="acct" designated-run-as="true"/>
+                </realm>
+                <distinguished-name name="CN=Duke, OU=Java Software, O=Sun Microsystems\, Inc., L=Palo Alto, ST=CA, C=US"/>
+            </role>
+
+            <role role-name="MEDIUM">
+                <realm realm-name="public-properties-realm">
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" name="it"/>
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="george" designated-run-as="true"/>
+                </realm>
+            </role>
+
+            <role role-name="HIGH">
+                <realm realm-name="public-properties-realm">
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" name="mgmt" designated-run-as="true"/>
+                </realm>
+                <realm realm-name="black-properties-realm">
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="dain"/>
+                    <principal class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" name="david"/>
+                </realm>
+            </role>
+        </role-mappings>
+    </security>
+    <resource-ref>
+        <ref-name>jdbc/DB1</ref-name>
+        <target-name>DefaultDatabase</target-name>
+    </resource-ref>
+</web-app>

Added: geronimo/trunk/modules/tomcat-builder/src/test-resources/services/local.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test-resources/services/local.xml?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test-resources/services/local.xml (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test-resources/services/local.xml Mon Apr 25 14:09:26 2005
@@ -0,0 +1,11 @@
+<gbeans>
+    <gbean class="org.apache.geronimo.jetty.JettyContainerImpl" objectName="geronimo.web:type=WebContainer,container=Jetty">
+    </gbean>
+
+    <gbean class="org.apache.geronimo.jetty.connector.HTTPConnector" objectName="geronimo.web:type=WebConnector,container=Jetty,port=8080">
+        <default attribute="Port">5678</default>
+        <endpoint name="JettyContainer">
+            <pattern><gbean-name>geronimo.web:type=WebContainer,container=Jetty</gbean-name></pattern>
+        </endpoint>
+    </gbean>
+</gbeans>
\ No newline at end of file

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter1.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter1.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter1.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter1.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.app;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.FilterChain;
+
+/**
+ * @version $Rev:  $ $Date:  $
+ */
+public class Filter1 implements Filter {
+
+    private FilterConfig filterConfig;
+
+    public void init(FilterConfig filterConfig) throws ServletException {
+        this.filterConfig = filterConfig;
+    }
+
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+        chain.doFilter(request, response);
+    }
+
+    public void destroy() {
+
+    }
+}

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter2.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter2.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter2.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Filter2.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.app;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.FilterChain;
+
+/**
+ * @version $Rev:  $ $Date:  $
+ */
+public class Filter2 implements Filter {
+
+    private FilterConfig filterConfig;
+
+    public void init(FilterConfig filterConfig) throws ServletException {
+        this.filterConfig = filterConfig;
+    }
+
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+        chain.doFilter(request, response);
+    }
+
+    public void destroy() {
+
+    }
+}

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet1.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet1.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet1.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet1.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,52 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.app;
+
+import java.io.IOException;
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+/**
+ * @version $Rev:  $ $Date:  $
+ */
+public class Servlet1 implements Servlet {
+
+    private ServletConfig servletConfig;
+
+    public void init(ServletConfig config) throws ServletException {
+        servletConfig = config;
+    }
+
+    public ServletConfig getServletConfig() {
+        return servletConfig;
+    }
+
+    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
+
+    }
+
+    public String getServletInfo() {
+        return null;
+    }
+
+    public void destroy() {
+
+    }
+}

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet2.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet2.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet2.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/app/Servlet2.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,52 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.app;
+
+import java.io.IOException;
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+/**
+ * @version $Rev:  $ $Date:  $
+ */
+public class Servlet2 implements Servlet {
+    
+    private ServletConfig servletConfig;
+    
+    public void init(ServletConfig config) throws ServletException {
+        servletConfig = config;
+    }
+
+    public ServletConfig getServletConfig() {
+        return servletConfig;
+    }
+
+    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
+
+    }
+
+    public String getServletInfo() {
+        return null;
+    }
+
+    public void destroy() {
+
+    }
+}

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,47 @@
+package org.apache.geronimo.tomcat.deployment;
+
+import java.io.File;
+import javax.management.ObjectName;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.schema.SchemaConversionUtils;
+import org.apache.geronimo.xbeans.geronimo.naming.GerResourceRefType;
+import org.apache.geronimo.xbeans.geronimo.tomcat.TomcatWebAppDocument;
+import org.apache.geronimo.xbeans.geronimo.tomcat.TomcatWebAppType;
+import org.apache.geronimo.j2ee.deployment.POJOWebServiceBuilder;
+
+/**
+ */
+public class PlanParsingTest extends TestCase {
+    ObjectName tomcatContainerObjectName = JMXUtil.getObjectName("test:type=TomcatContainer");
+    ObjectName pojoWebServiceTemplate = null;
+    POJOWebServiceBuilder pojoWebServiceBuilder = null;
+    private TomcatModuleBuilder builder = new TomcatModuleBuilder(null, tomcatContainerObjectName, null, null);
+    private File basedir = new File(System.getProperty("basedir", "."));
+
+    public void testResourceRef() throws Exception {
+        File resourcePlan = new File(basedir, "src/test-resources/plans/plan1.xml");
+        assertTrue(resourcePlan.exists());
+        TomcatWebAppType jettyWebApp = builder.getTomcatWebApp(resourcePlan, null, true, null, null);
+        assertEquals(1, jettyWebApp.getResourceRefArray().length);
+    }
+
+    public void testConstructPlan() throws Exception {
+        TomcatWebAppDocument tomcatWebAppDoc = TomcatWebAppDocument.Factory.newInstance();
+        TomcatWebAppType tomcatWebAppType = tomcatWebAppDoc.addNewWebApp();
+        tomcatWebAppType.setConfigId("configId");
+        tomcatWebAppType.setParentId("parentId");
+        tomcatWebAppType.setContextPriorityClassloader(false);
+        GerResourceRefType ref = tomcatWebAppType.addNewResourceRef();
+        ref.setRefName("ref");
+        ref.setTargetName("target");
+
+        SchemaConversionUtils.validateDD(tomcatWebAppType);
+        System.out.println(tomcatWebAppType.toString());
+    }
+
+    public void testParseSpecDD() {
+
+    }
+}

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,588 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.deployment;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.net.URI;
+import java.net.URL;
+import java.nio.channels.FileChannel;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.naming.Reference;
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
+import org.apache.geronimo.deployment.DeploymentContext;
+import org.apache.geronimo.deployment.util.UnpackedJarFile;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.EJBReferenceBuilder;
+import org.apache.geronimo.j2ee.deployment.Module;
+import org.apache.geronimo.j2ee.deployment.POJOWebServiceBuilder;
+import org.apache.geronimo.j2ee.deployment.RefContext;
+import org.apache.geronimo.j2ee.deployment.ResourceReferenceBuilder;
+import org.apache.geronimo.j2ee.deployment.ServiceReferenceBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
+import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.management.impl.J2EEServerImpl;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.config.ConfigurationModuleType;
+import org.apache.geronimo.kernel.config.ConfigurationStore;
+import org.apache.geronimo.kernel.config.InvalidConfigException;
+import org.apache.geronimo.kernel.config.NoSuchConfigException;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
+import org.apache.geronimo.kernel.management.State;
+import org.apache.geronimo.kernel.registry.BasicGBeanRegistry;
+import org.apache.geronimo.security.SecurityServiceImpl;
+import org.apache.geronimo.system.serverinfo.ServerInfo;
+import org.apache.geronimo.tomcat.ConnectorGBean;
+import org.apache.geronimo.tomcat.EngineGBean;
+import org.apache.geronimo.tomcat.HostGBean;
+import org.apache.geronimo.tomcat.RealmGBean;
+import org.apache.geronimo.tomcat.TomcatContainer;
+import org.apache.geronimo.transaction.context.TransactionContextManager;
+import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
+
+/**
+ * @version $Rev: 159325 $ $Date: 2005-03-28 15:53:03 -0700 (Mon, 28 Mar 2005) $
+ */
+public class TomcatModuleBuilderTest extends TestCase {
+
+    protected Kernel kernel;
+
+    private GBeanData container;
+
+    private ObjectName containerName;
+
+    private ObjectName connectorName;
+
+    private GBeanData connector;
+
+    private ObjectName engineName;
+
+    private GBeanData engine;
+
+    private ObjectName hostName;
+
+    private GBeanData host;
+
+    private ObjectName realmName;
+
+    private GBeanData realm;
+
+    private GBeanData securityServiceGBean;
+
+    private ObjectName securityServiceName;
+
+    private ObjectName serverInfoName;
+
+    private GBeanData serverInfoGBean;
+
+    private ObjectName tmName;
+
+    private ObjectName ctcName;
+
+    private GBeanData tm;
+
+    private GBeanData ctc;
+
+    private ObjectName tcmName;
+
+    private GBeanData tcm;
+
+    private ClassLoader cl;
+
+    private J2eeContext moduleContext = new J2eeContextImpl("tomcat.test",
+            "test", "null", NameFactory.WEB_MODULE, "Test", null, null);
+
+    private TomcatModuleBuilder builder;
+
+    private File basedir = new File(System.getProperty("basedir", "."));
+
+    private URI parentId = URI.create("org/apache/geronimo/Foo");
+
+    public void testDeployWar4() throws Exception {
+        File outputPath = new File(basedir,
+                "target/test-resources/deployables/war4");
+        recursiveDelete(outputPath);
+        outputPath.mkdirs();
+        File path = new File(basedir, "src/test-resources/deployables/war4");
+        File dest = new File(basedir, "target/test-resources/deployables/war4/war");
+        recursiveCopy(path, dest);
+        UnpackedJarFile jarFile = new UnpackedJarFile(path);
+        Module module = builder.createModule(null, jarFile);
+        URI id = new URI("war4");
+        EARContext earContext = createEARContext(outputPath, id);
+        ObjectName serverName = earContext.getServerObjectName();
+        GBeanData server = new GBeanData(serverName, J2EEServerImpl.GBEAN_INFO);
+        start(server);
+        builder.initContext(earContext, module, cl);
+        builder.addGBeans(earContext, module, cl);
+        earContext.close();
+        module.close();
+        GBeanData configData = earContext.getConfigurationGBeanData();
+        configData.setAttribute("baseURL", path.toURL());
+        kernel.loadGBean(configData, cl);
+
+        kernel.startRecursiveGBean(configData.getName());
+        if (((Integer) kernel.getAttribute(configData.getName(), "state"))
+                .intValue() != State.RUNNING_INDEX) {
+            fail("gbean not started: " + configData.getName());
+        }
+        assertEquals(
+                new Integer(State.RUNNING_INDEX),
+                kernel
+                        .getAttribute(
+                                ObjectName
+                                        .getInstance("test:J2EEApplication=null,J2EEServer=bar,j2eeType=WebModule,name=war4"),
+                                "state"));
+        Set names = kernel
+                .listGBeans(ObjectName
+                        .getInstance("test:J2EEApplication=null,J2EEServer=bar,WebModule=war4,*"));
+        System.out.println("Object names: " + names);
+        for (Iterator iterator = names.iterator(); iterator.hasNext();) {
+            ObjectName objectName = (ObjectName) iterator.next();
+            assertEquals(new Integer(State.RUNNING_INDEX), kernel.getAttribute(
+                    objectName, "state"));
+        }
+
+        //If we got here with no errors, then Tomcat deployed the war and loaded the classes
+        
+        kernel.stopGBean(configData.getName());
+        kernel.unloadGBean(configData.getName());
+
+        kernel.loadGBean(configData, cl);
+        kernel.startRecursiveGBean(configData.getName());
+        kernel.stopGBean(configData.getName());
+        kernel.unloadGBean(configData.getName());
+    }
+
+    private EARContext createEARContext(File outputPath, URI id)
+            throws MalformedObjectNameException, DeploymentException {
+        EARContext earContext = new EARContext(outputPath, id,
+                ConfigurationModuleType.WAR, parentId, kernel, moduleContext
+                        .getJ2eeApplicationName(), tcmName, ctcName, null,
+                null, null, new RefContext(new EJBReferenceBuilder() {
+
+                    public Reference createEJBLocalReference(String objectName,
+                            boolean isSession, String localHome, String local)
+                            throws DeploymentException {
+                        return null;
+                    }
+
+                    public Reference createEJBRemoteReference(
+                            String objectName, boolean isSession, String home,
+                            String remote) throws DeploymentException {
+                        return null;
+                    }
+
+                    public Reference createCORBAReference(URI corbaURL,
+                            String objectName, ObjectName containerName,
+                            String home) throws DeploymentException {
+                        return null;
+                    }
+
+                    public Object createHandleDelegateReference() {
+                        return null;
+                    }
+                }, new ResourceReferenceBuilder() {
+
+                    public Reference createResourceRef(String containerId,
+                            Class iface) throws DeploymentException {
+                        return null;
+                    }
+
+                    public Reference createAdminObjectRef(String containerId,
+                            Class iface) throws DeploymentException {
+                        return null;
+                    }
+
+                    public ObjectName locateResourceName(ObjectName query)
+                            throws DeploymentException {
+                        return null;
+                    }
+
+                    public GBeanData locateActivationSpecInfo(
+                            ObjectName resourceAdapterName,
+                            String messageListenerInterface)
+                            throws DeploymentException {
+                        return null;
+                    }
+
+                    public GBeanData locateResourceAdapterGBeanData(
+                            ObjectName resourceAdapterModuleName)
+                            throws DeploymentException {
+                        return null;
+                    }
+
+                    public GBeanData locateAdminObjectInfo(
+                            ObjectName resourceAdapterModuleName,
+                            String adminObjectInterfaceName)
+                            throws DeploymentException {
+                        return null;
+                    }
+
+                    public GBeanData locateConnectionFactoryInfo(
+                            ObjectName resourceAdapterModuleName,
+                            String connectionFactoryInterfaceName)
+                            throws DeploymentException {
+                        return null;
+                    }
+                }, new ServiceReferenceBuilder() {
+                    // it could return a Service or a Reference, we don't care
+                    public Object createService(Class serviceInterface,
+                            URI wsdlURI, URI jaxrpcMappingURI,
+                            QName serviceQName, Map portComponentRefMap,
+                            List handlerInfos, Map portLocationMap,
+                            Map credentialsNameMap,
+                            DeploymentContext deploymentContext, Module module,
+                            ClassLoader classLoader) throws DeploymentException {
+                        return null;
+                    }
+                }, kernel));
+        return earContext;
+    }
+
+    private void recursiveDelete(File path) {
+        // does not delete top level dir passed in
+        File[] listing = path.listFiles();
+        for (int i = 0; i < ((listing == null) ? 0 : listing.length); i++) {
+            File file = listing[i];
+            if (file.isDirectory()) {
+                recursiveDelete(file);
+            }
+            file.delete();
+        }
+    }
+
+    public void recursiveCopy(File src, File dest) throws IOException {
+
+        if (!src.exists()) {
+            return;
+        }
+
+        if (src.isDirectory()) {
+            // Create destination directory
+            dest.mkdirs();
+
+            // Go trough the contents of the directory
+            String list[] = src.list();
+            for (int i = 0; i < list.length; i++) {
+                recursiveCopy(new File(src, list[i]), new File(dest, list[i]));
+            }
+
+        } else {
+            copyFile(src, dest, -1);
+        }
+    }
+
+    public boolean copyFile(File src, File dest, long extent)
+            throws FileNotFoundException, IOException {
+        boolean result = false;
+        if (dest.exists()) {
+            dest.delete();
+        }
+        FileInputStream fis = null;
+        FileOutputStream fos = null;
+        FileChannel fcin = null;
+        FileChannel fcout = null;
+        try {
+            // Get channels
+            fis = new FileInputStream(src);
+            fos = new FileOutputStream(dest);
+            fcin = fis.getChannel();
+            fcout = fos.getChannel();
+            if (extent < 0) {
+                extent = fcin.size();
+            }
+
+            // do the file copy
+            long trans = fcin.transferTo(0, extent, fcout);
+            if (trans < extent) {
+                result = false;
+            }
+            result = true;
+        } catch (IOException e) {
+            // Add more info to the exception. Preserve old stacktrace.
+            IOException newE = new IOException("Copying "
+                    + src.getAbsolutePath() + " to " + dest.getAbsolutePath()
+                    + " with extent " + extent + " got IOE: " + e.getMessage());
+            newE.setStackTrace(e.getStackTrace());
+            throw newE;
+        } finally {
+            // finish up
+            if (fcin != null) {
+                fcin.close();
+            }
+            if (fcout != null) {
+                fcout.close();
+            }
+            if (fis != null) {
+                fis.close();
+            }
+            if (fos != null) {
+                fos.close();
+            }
+        }
+        return result;
+    }
+
+    protected void setUp() throws Exception {
+        cl = this.getClass().getClassLoader();
+        containerName = NameFactory.getWebComponentName(null, null, null, null,
+                "tomcatContainer", "WebResource", moduleContext);
+        connectorName = NameFactory.getWebComponentName(null, null, null, null,
+                "tomcatConnector", "WebResource", moduleContext);
+        realmName = NameFactory.getWebComponentName(null, null, null, null,
+                "tomcatRealm", "WebResource", moduleContext);
+        engineName = NameFactory.getWebComponentName(null, null, null, null,
+                "tomcatEngine", "WebResource", moduleContext);
+        hostName = NameFactory.getWebComponentName(null, null, null, null,
+                "tomcatHost", "WebResource", moduleContext);
+
+        tmName = NameFactory.getComponentName(null, null, null, null, null,
+                "TransactionManager", NameFactory.JTA_RESOURCE, moduleContext);
+        tcmName = NameFactory.getComponentName(null, null, null, null, null,
+                "TransactionContextManager", NameFactory.JTA_RESOURCE,
+                moduleContext);
+        ctcName = new ObjectName(
+                "geronimo.server:role=ConnectionTrackingCoordinator");
+
+        kernel = new Kernel("foo", new BasicGBeanRegistry());
+        kernel.boot();
+
+        GBeanData store = new GBeanData(JMXUtil
+                .getObjectName("foo:j2eeType=ConfigurationStore,name=mock"),
+                MockConfigStore.GBEAN_INFO);
+        kernel.loadGBean(store, this.getClass().getClassLoader());
+        kernel.startGBean(store.getName());
+
+        GBeanData baseConfig = (GBeanData) kernel.invoke(store.getName(),
+                "getConfiguration", new Object[] { parentId },
+                new String[] { URI.class.getName() });
+        kernel.loadGBean(baseConfig, this.getClass().getClassLoader());
+        kernel.startGBean(baseConfig.getName());
+
+        serverInfoName = new ObjectName("geronimo.system:name=ServerInfo");
+        serverInfoGBean = new GBeanData(serverInfoName, ServerInfo.GBEAN_INFO);
+        serverInfoGBean.setAttribute("baseDirectory", ".");
+        start(serverInfoGBean);
+
+        // install the policy configuration factory
+        securityServiceName = new ObjectName("foo:j2eeType=SecurityService");
+        securityServiceGBean = new GBeanData(securityServiceName,
+                SecurityServiceImpl.GBEAN_INFO);
+        securityServiceGBean.setReferencePattern("ServerInfo", serverInfoName);
+        securityServiceGBean
+                .setAttribute("policyConfigurationFactory",
+                        "org.apache.geronimo.security.jacc.GeronimoPolicyConfigurationFactory");
+        securityServiceGBean.setAttribute("policyProvider",
+                "org.apache.geronimo.security.jacc.GeronimoPolicy");
+        start(securityServiceGBean);
+
+        builder = new TomcatModuleBuilder(new URI("null"), containerName, null,
+                kernel);
+
+        // Default Realm
+        Map initParams = new HashMap();
+
+        initParams.put("userClassNames",
+                        "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal");
+        initParams.put("roleClassNames",
+                        "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal");
+        realm = new GBeanData(realmName, RealmGBean.GBEAN_INFO);
+        realm.setAttribute("className",
+                "org.apache.geronimo.tomcat.realm.TomcatJAASRealm");
+        realm.setAttribute("initParams", initParams);
+        start(realm);
+
+        // Default Engine
+        initParams.clear();
+        initParams.put("name", "Geronimo");
+        initParams.put("defaultHost", "localhost");
+        engine = new GBeanData(engineName, EngineGBean.GBEAN_INFO);
+        engine.setAttribute("className", "org.apache.geronimo.tomcat.TomcatEngine");
+        engine.setAttribute("initParams", initParams);
+        engine.setReferencePattern("realmGBean", realmName);
+        start(engine);
+
+        // Default Host
+        initParams.clear();
+        initParams.put("workDir", "work");
+        initParams.put("name", "localhost");
+        initParams.put("appBase", "");
+        host = new GBeanData(hostName, HostGBean.GBEAN_INFO);
+        host.setAttribute("className", "org.apache.catalina.core.StandardHost");
+        host.setAttribute("initParams", initParams);
+        host.setReferencePattern("engineGBean", engineName);
+        start(host);
+
+        container = new GBeanData(containerName, TomcatContainer.GBEAN_INFO);
+        container.setAttribute("catalinaHome", "target/var/catalina");
+        container.setReferencePattern("engineGBean", engineName);
+        container.setReferencePattern("ServerInfo", serverInfoName);
+
+        initParams.clear();
+        initParams.put("port", "8080");
+        connector = new GBeanData(connectorName, ConnectorGBean.GBEAN_INFO);
+        connector.setAttribute("initParams", initParams);
+        connector.setReferencePattern("TomcatContainer", containerName);
+
+        start(container);
+        start(connector);
+
+        tm = new GBeanData(tmName, TransactionManagerImpl.GBEAN_INFO);
+        Set patterns = new HashSet();
+        patterns
+                .add(ObjectName
+                        .getInstance("geronimo.server:j2eeType=JCAManagedConnectionFactory,*"));
+        tm.setAttribute("defaultTransactionTimeoutSeconds", new Integer(10));
+        tm.setReferencePatterns("ResourceManagers", patterns);
+        start(tm);
+        tcm = new GBeanData(tcmName, TransactionContextManager.GBEAN_INFO);
+        tcm.setReferencePattern("TransactionManager", tmName);
+        start(tcm);
+        ctc = new GBeanData(ctcName, ConnectionTrackingCoordinator.GBEAN_INFO);
+        start(ctc);
+
+    }
+
+    protected void tearDown() throws Exception {
+        stop(ctcName);
+        stop(tmName);
+        stop(serverInfoName);
+        stop(securityServiceName);
+        stop(connectorName);
+        stop(containerName);
+        kernel.shutdown();
+    }
+
+    private void start(GBeanData gbeanData) throws Exception {
+        kernel.loadGBean(gbeanData, cl);
+        kernel.startGBean(gbeanData.getName());
+        if (((Integer) kernel.getAttribute(gbeanData.getName(), "state"))
+                .intValue() != State.RUNNING_INDEX) {
+            fail("gbean not started: " + gbeanData.getName());
+        }
+    }
+
+    private void stop(ObjectName name) throws Exception {
+        kernel.stopGBean(name);
+        kernel.unloadGBean(name);
+    }
+
+    public static class MockConfigStore implements ConfigurationStore {
+        public URI install(URL source) throws IOException,
+                InvalidConfigException {
+            return null;
+        }
+
+        public URI install(File source) throws IOException,
+                InvalidConfigException {
+            return null;
+        }
+
+        public void uninstall(URI configID) throws NoSuchConfigException,
+                IOException {
+
+        }
+
+        public boolean containsConfiguration(URI configID) {
+            return true;
+        }
+
+        public GBeanData getConfiguration(URI id) throws NoSuchConfigException,
+                IOException, InvalidConfigException {
+            GBeanData configData = null;
+            try {
+                configData = new GBeanData(Configuration
+                        .getConfigurationObjectName(id),
+                        Configuration.GBEAN_INFO);
+            } catch (MalformedObjectNameException e) {
+                throw new InvalidConfigException(e);
+            }
+            configData.setAttribute("ID", id);
+            configData.setAttribute("domain", "test");
+            configData.setAttribute("server", "bar");
+            configData.setAttribute("gBeanState", NO_OBJECTS_OS);
+            return configData;
+        }
+
+        public void updateConfiguration(Configuration configuration)
+                throws NoSuchConfigException, Exception {
+
+        }
+
+        public URL getBaseURL(URI id) throws NoSuchConfigException {
+            return null;
+        }
+
+        public String getObjectName() {
+            return null;
+        }
+
+        public List listConfiguations() {
+            return null;
+        }
+
+        public File createNewConfigurationDir() {
+            return null;
+        }
+
+        public final static GBeanInfo GBEAN_INFO;
+
+        private static final byte[] NO_OBJECTS_OS;
+
+        static {
+            GBeanInfoBuilder infoBuilder = new GBeanInfoBuilder(
+                    MockConfigStore.class, NameFactory.CONFIGURATION_STORE);
+            infoBuilder.addInterface(ConfigurationStore.class);
+            GBEAN_INFO = infoBuilder.getBeanInfo();
+
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            try {
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.flush();
+                NO_OBJECTS_OS = baos.toByteArray();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    };
+
+}

Added: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/WebAppDConfigTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/WebAppDConfigTest.java?rev=164651&view=auto
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/WebAppDConfigTest.java (added)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/WebAppDConfigTest.java Mon Apr 25 14:09:26 2005
@@ -0,0 +1,114 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.tomcat.deployment;
+
+import java.util.Arrays;
+import javax.enterprise.deploy.model.DDBean;
+import javax.enterprise.deploy.model.DDBeanRoot;
+import javax.enterprise.deploy.spi.DeploymentConfiguration;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.deployment.tools.loader.WebDeployable;
+
+/**
+ * @version $Rev: 56771 $ $Date: 2004-11-06 12:58:54 -0700 (Sat, 06 Nov 2004) $
+ */
+public class WebAppDConfigTest extends TestCase {
+    private DeploymentConfiguration config;
+    private WebDeployable deployable;
+    private DDBeanRoot ddBeanRoot;
+    private WebAppDConfigRoot configRoot;
+
+    public void testWebAppRoot() throws Exception {
+        assertNotNull(configRoot);
+        assertTrue(Arrays.equals(new String[]{"web-app"}, configRoot.getXpaths()));
+        assertNotNull(configRoot.getDConfigBean(ddBeanRoot.getChildBean("web-app")[0]));
+        assertNull(configRoot.getDConfigBean(ddBeanRoot.getChildBean("web-app/description")[0]));
+    }
+
+    public void testWebApp() throws Exception {
+        DDBean ddBean = ddBeanRoot.getChildBean("web-app")[0];
+        WebAppDConfigBean webApp = (WebAppDConfigBean) configRoot.getDConfigBean(ddBean);
+        assertNotNull(webApp);
+/*
+        String[] xpaths = webApp.getXpaths();
+        assertTrue(Arrays.equals(
+                new String[]{
+                    "ejb-ref",
+                    "ejb-local-ref",
+                    "message-destination-ref",
+                    "resource-env-ref",
+                    "resource-ref",
+                },
+                xpaths)
+        );
+*/
+    }
+
+/*
+    public void testEJBRef() throws Exception {
+        DDBean ddBean = ddBeanRoot.getChildBean("web-app")[0];
+        WebAppDConfigBean webApp = (WebAppDConfigBean) configRoot.getDConfigBean(ddBean);
+        DDBean[] ddBeans = ddBean.getChildBean(webApp.getXpaths()[0]);
+        assertEquals(2, ddBeans.length);
+        assertEquals("fake-ejb-ref", ddBeans[0].getChildBean("ejb-ref-name")[0].getText());
+        assertEquals("another-ejb-ref", ddBeans[1].getChildBean("ejb-ref-name")[0].getText());
+
+        EJBRefDConfigBean ejbRef0 = (EJBRefDConfigBean) webApp.getDConfigBean(ddBeans[0]);
+        EJBRefDConfigBean ejbRef1 = (EJBRefDConfigBean) webApp.getDConfigBean(ddBeans[1]);
+        assertNotNull(ejbRef0);
+        assertEquals(ddBeans[0], ejbRef0.getDDBean());
+        assertNotNull(ejbRef1);
+        assertEquals(ddBeans[1], ejbRef1.getDDBean());
+        assertTrue(ejbRef0 != ejbRef1);
+    }
+*/
+
+/*
+    public void testEJBLocalRef() throws Exception {
+        DDBean ddBean = ddBeanRoot.getChildBean("web-app")[0];
+        WebAppDConfigBean webApp = (WebAppDConfigBean) configRoot.getDConfigBean(ddBean);
+        DDBean[] ddBeans = ddBean.getChildBean(webApp.getXpaths()[1]);
+        assertEquals(2, ddBeans.length);
+        assertEquals("fake-ejb-local-ref", ddBeans[0].getChildBean("ejb-ref-name")[0].getText());
+        assertEquals("another-ejb-local-ref", ddBeans[1].getChildBean("ejb-ref-name")[0].getText());
+
+        EJBLocalRefDConfigBean ejbRef0 = (EJBLocalRefDConfigBean) webApp.getDConfigBean(ddBeans[0]);
+        EJBLocalRefDConfigBean ejbRef1 = (EJBLocalRefDConfigBean) webApp.getDConfigBean(ddBeans[1]);
+        assertNotNull(ejbRef0);
+        assertEquals(ddBeans[0], ejbRef0.getDDBean());
+        assertNotNull(ejbRef1);
+        assertEquals(ddBeans[1], ejbRef1.getDDBean());
+        assertTrue(ejbRef0 != ejbRef1);
+    }
+*/
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        deployable = new WebDeployable(classLoader.getResource("deployables/war1/"));
+        config = new WARConfiguration(deployable);
+
+        ddBeanRoot = deployable.getDDBeanRoot();
+        configRoot = (WebAppDConfigRoot) config.getDConfigBeanRoot(ddBeanRoot);
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+}