[maven-scm] copy for tag geronimo-servlet_3.0_spec-1.0

git-svn-id: https://svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_3.0_spec-1.0@936728 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/geronimo-servlet_3.0_spec/LICENSE b/geronimo-servlet_3.0_spec/LICENSE
deleted file mode 100644
index b0df1bb..0000000
--- a/geronimo-servlet_3.0_spec/LICENSE
+++ /dev/null
@@ -1,257 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   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.
-
-
-#########################################################################
-## ADDITIONAL LICENSES                                                 ##
-#########################################################################
-
-The XMLSchema.dtd and xml.xsd files included in this project was developed
-by the W3C Consortium (http://www.w3c.org/).
-Use of the source code, thus licensed, and the resultant binary are
-subject to the terms and conditions of the following license.
-
-W3C¨ SOFTWARE NOTICE AND LICENSE
-Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of
-Technology, Institut National de Recherche en Informatique et en Automatique,
-Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
-
-This W3C work (including software, documents, or other related items) is
-being provided by the copyright holders under the following license. By
-obtaining, using and/or copying this work, you (the licensee) agree that you
-have read, understood, and will comply with the following terms and
-conditions:
-
-Permission to use, copy, modify, and distribute this software and its
-documentation, with or without modification,  for any purpose and without
-fee or royalty is hereby granted, provided that you include the following on
-ALL copies of the software and documentation or portions thereof, including
-modifications, that you make:
-
-   1. The full text of this NOTICE in a location viewable to users of the
-         redistributed or derivative work.
-   2. Any pre-existing intellectual property disclaimers, notices, or terms
-         and conditions. If none exist, a short notice of the following form
-         (hypertext is preferred, text is permitted) should be used within
-         the body of any redistributed or derivative code: "Copyright ©
-         [$date-of-software] World Wide Web Consortium, (Massachusetts Institute
-         of Technology, Institut National de Recherche en Informatique et en
-         Automatique, Keio University). All Rights Reserved.
-         http://www.w3.org/Consortium/Legal/"
-   3. Notice of any changes or modifications to the W3C files, including the
-         date changes were made. (We recommend you provide URIs to the location
-         from which the code is derived.)
-
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
-NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
-THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
-COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
-
-The name and trademarks of copyright holders may NOT be used in advertising or
-publicity pertaining to the software without specific, written prior permission.
-Title to copyright in this software and any associated documentation will at all
-times remain with copyright holders.
diff --git a/geronimo-servlet_3.0_spec/NOTICE b/geronimo-servlet_3.0_spec/NOTICE
deleted file mode 100644
index 4f1d061..0000000
--- a/geronimo-servlet_3.0_spec/NOTICE
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Geronimo
-Copyright 2003-2009 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/geronimo-servlet_3.0_spec/pom.xml b/geronimo-servlet_3.0_spec/pom.xml
deleted file mode 100644
index 181647b..0000000
--- a/geronimo-servlet_3.0_spec/pom.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you 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.
--->
-
-<!-- $Rev$ $Date$ -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.geronimo.genesis</groupId>
-        <artifactId>genesis-java5-flava</artifactId>
-        <version>2.0</version>
-    </parent>
-
-    <groupId>org.apache.geronimo.specs</groupId>
-    <artifactId>geronimo-servlet_3.0_spec</artifactId>
-    <packaging>bundle</packaging>
-    <name>Servlet 3.0</name>
-    <version>1.0</version>
-
-    <description>Servlet 3.0 API</description>
-
-    <url>http://geronimo.apache.org/maven/${siteId}/${version}</url>
-
-    <distributionManagement>
-        <site>
-            <id>apache-website</id>
-            <url>${site.deploy.url}/maven/${siteId}/${version}</url>
-        </site>
-    </distributionManagement>
-
-    <properties>
-        <siteId>specs/${artifactId}</siteId>
-    </properties>
-
-    <scm>
-        <connection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_3.0_spec-1.0</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/specs/tags/geronimo-servlet_3.0_spec-1.0</developerConnection>
-        <url>http://svn.apache.org/viewcvs.cgi/geronimo/specs/tags/geronimo-servlet_3.0_spec-1.0</url>
-    </scm>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <!-- The OSGi Alliance defined package numbers don't match up
-                             necessarily with the Java EE versions.  Servlet 3.0 needs to
-                             be exported as 2.6 -->
-                        <Export-Package>
-                            javax.servlet;version=2.6,
-                            javax.servlet.annotation;version=2.6,
-                            javax.servlet.descriptor;version=2.6,
-                            javax.servlet.http;version=2.6,
-                            javax.servlet.resources;version=2.6,
-                            javax.servlet;version=3.0,
-                            javax.servlet.annotation;version=3.0,
-                            javax.servlet.descriptor;version=3.0,
-                            javax.servlet.http;version=3.0,
-                            javax.servlet.resources;version=3.0,
-                        </Export-Package>
-                        <!-- Because of the duplicate exports, explicit imports are required -->
-                        <Import-Package>
-                            javax.servlet;version=2.6,
-                            javax.servlet.annotation;version=2.6,
-                            javax.servlet.descriptor;version=2.6,
-                            javax.servlet.http;version=2.6,
-                            javax.servlet.resources;version=2.6,
-                        </Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>rat</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <!-- Override of default rat checks.  To use, type "mvn -Prat verify". -->
-                        <groupId>org.apache.rat</groupId>
-                        <artifactId>apache-rat-plugin</artifactId>
-                        <version>0.6</version>
-                        <executions>
-                            <execution>
-                                <phase>verify</phase>
-                                <goals>
-                                    <goal>check</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                        <configuration>
-                            <reportFile>${project.build.directory}/${project.build.finalName}.rat</reportFile>
-                            <excludeSubProjects>false</excludeSubProjects>
-                            <excludes>
-                                <exclude>**/target/**/*</exclude>
-                                <exclude>**/appended-resources/**/*</exclude>
-                                <exclude>**/velocity.log</exclude>
-                                <!-- manifest files don't support comments so don't contain the ASL2.0 header -->
-                                <exclude>**/*.MF</exclude>
-                                <!-- These are covered by information in the LICENSE file -->
-                                <exclude>**/xml.xsd</exclude>
-                                <exclude>**/XMLSchema.dtd</exclude>
-                                <!--RAT doesn't seem to recognize MIT style licenses-->
-                                <exclude>manual/src/styles/print.css</exclude>
-                            </excludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
diff --git a/geronimo-servlet_3.0_spec/src/main/appended-resources/META-INF/LICENSE b/geronimo-servlet_3.0_spec/src/main/appended-resources/META-INF/LICENSE
deleted file mode 100644
index f0c49d8..0000000
--- a/geronimo-servlet_3.0_spec/src/main/appended-resources/META-INF/LICENSE
+++ /dev/null
@@ -1,54 +0,0 @@
-
-#########################################################################
-## ADDITIONAL LICENSES                                                 ##
-#########################################################################
-
-The XMLSchema.dtd included in this project was developed by the
-W3C Consortium (http://www.w3c.org/). 
-Use of the source code, thus licensed, and the resultant binary are 
-subject to the terms and conditions of the following license.
-
-W3C® SOFTWARE NOTICE AND LICENSE
-Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of 
-Technology, Institut National de Recherche en Informatique et en Automatique, 
-Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
-
-This W3C work (including software, documents, or other related items) is 
-being provided by the copyright holders under the following license. By 
-obtaining, using and/or copying this work, you (the licensee) agree that you 
-have read, understood, and will comply with the following terms and 
-conditions:
-
-Permission to use, copy, modify, and distribute this software and its 
-documentation, with or without modification,  for any purpose and without 
-fee or royalty is hereby granted, provided that you include the following on 
-ALL copies of the software and documentation or portions thereof, including 
-modifications, that you make:
-
-   1. The full text of this NOTICE in a location viewable to users of the 
-         redistributed or derivative work.
-   2. Any pre-existing intellectual property disclaimers, notices, or terms 
-         and conditions. If none exist, a short notice of the following form 
-         (hypertext is preferred, text is permitted) should be used within 
-         the body of any redistributed or derivative code: "Copyright © 
-         [$date-of-software] World Wide Web Consortium, (Massachusetts Institute 
-         of Technology, Institut National de Recherche en Informatique et en 
-         Automatique, Keio University). All Rights Reserved. 
-         http://www.w3.org/Consortium/Legal/"
-   3. Notice of any changes or modifications to the W3C files, including the 
-         date changes were made. (We recommend you provide URIs to the location 
-         from which the code is derived.)
-
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE 
-NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
-TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT 
-THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, 
-COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR 
-CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
-
-The name and trademarks of copyright holders may NOT be used in advertising or 
-publicity pertaining to the software without specific, written prior permission. 
-Title to copyright in this software and any associated documentation will at all 
-times remain with copyright holders.
diff --git a/geronimo-servlet_3.0_spec/src/main/appended-resources/META-INF/NOTICE b/geronimo-servlet_3.0_spec/src/main/appended-resources/META-INF/NOTICE
deleted file mode 100644
index d20a2f8..0000000
--- a/geronimo-servlet_3.0_spec/src/main/appended-resources/META-INF/NOTICE
+++ /dev/null
@@ -1,9 +0,0 @@
-
-This product includes software developed by
-The W3C Consortium (http://www.w3.org/).
-
-Copyright © 1994-2002 World Wide Web Consortium, 
-(Massachusetts Institute of Technology, Institut National 
-de Recherche en Informatique et en Automatique, Keio 
-University). All Rights Reserved. 
-http://www.w3.org/Consortium/Legal/
\ No newline at end of file
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncContext.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncContext.java
deleted file mode 100644
index 0761cfa..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncContext.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public interface AsyncContext {
-
-    String ASYNC_CONTEXT_PATH = "javax.servlet.async.context_path";
-    String ASYNC_PATH_INFO = "javax.servlet.async.path_info";
-    String ASYNC_QUERY_STRING = "javax.servlet.async.query_string";
-    String ASYNC_REQUEST_URI = "javax.servlet.async.request_uri";
-    String ASYNC_SERVLET_PATH = "javax.servlet.async.servlet_path";
-
-    void addListener(AsyncListener listener) throws IllegalStateException;
-
-    void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) throws IllegalStateException;
-
-    void complete();
-
-    <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException;
-
-    void dispatch() throws IllegalStateException;
-
-    void dispatch(ServletContext servletContext, String path) throws IllegalStateException;
-
-    void dispatch(String path) throws IllegalStateException;
-
-    ServletRequest getRequest();
-
-    ServletResponse getResponse();
-
-    /**
-     * Returns current timeout value in milliseconds. Zero or less means no timeout.
-     * If setTimeout has not been called, the container-specific default timeout is returned.
-     *
-     * @return timeout in milliseconds
-     */
-    long getTimeout();
-
-    boolean hasOriginalRequestAndResponse();
-
-    void setTimeout(long timeoutMilliseconds) throws IllegalStateException;
-
-    void start(Runnable run);
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncEvent.java
deleted file mode 100644
index 7d8a294..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncEvent.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public class AsyncEvent {
-
-    private final AsyncContext context;
-    private final ServletRequest request;
-    private final ServletResponse response;
-    private final Throwable throwable;
-
-    public AsyncEvent(AsyncContext context) {
-        this.context = context;
-        this.request = null;
-        this.response = null;
-        this.throwable = null;
-    }
-
-    public AsyncEvent(AsyncContext context, ServletRequest request, ServletResponse response) {
-        this.context = context;
-        this.request = request;
-        this.response = response;
-        this.throwable = null;
-    }
-
-
-    public AsyncEvent(AsyncContext context, ServletRequest request, ServletResponse response, Throwable throwable) {
-        this.context = context;
-        this.request = request;
-        this.response = response;
-        this.throwable = throwable;
-    }
-
-    public AsyncEvent(AsyncContext context, Throwable throwable) {
-        this.context = context;
-        this.request = null;
-        this.response = null;
-        this.throwable = throwable;
-    }
-
-    public AsyncContext getAsyncContext() {
-        return context;
-    }
-
-    public ServletRequest getSuppliedRequest() {
-        return request;
-    }
-
-    public ServletResponse getSuppliedResponse() {
-        return response;
-    }
-
-    public Throwable getThrowable() {
-        return throwable;
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncListener.java
deleted file mode 100644
index f80b098..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/AsyncListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.EventListener;
-import java.io.IOException;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public interface AsyncListener extends EventListener {
-
-    void onComplete(AsyncEvent event) throws IOException;
-
-    void onError(AsyncEvent event) throws IOException;
-
-    void onStartAsync(AsyncEvent event) throws IOException;
-
-    void onTimeout(AsyncEvent event) throws IOException;
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/DispatcherType.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/DispatcherType.java
deleted file mode 100644
index 778eda6..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/DispatcherType.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * Dispatcher types.  Expected order is shown at
- * http://javadoc.glassfish.org/javaee6/apidoc/javax/servlet/DispatcherType.html
- * under "Enum constant detail", not "Enum constant summary"
- *
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public enum DispatcherType {
-
-    FORWARD,
-    INCLUDE,
-    REQUEST,
-    ASYNC,
-    ERROR
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Filter.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Filter.java
deleted file mode 100644
index 4557bbb..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Filter.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-
-/**
- * A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.
- * <br><br>
- * Filters perform filtering in the <code>doFilter</code> method. Every Filter has access to
- * a FilterConfig object from which it can obtain its initialization parameters, a
- * reference to the ServletContext which it can use, for example, to load resources
- * needed for filtering tasks.
- * <p/>
- * Filters are configured in the deployment descriptor of a web application
- * <p/>
- * Examples that have been identified for this design are<br>
- * 1) Authentication Filters <br>
- * 2) Logging and Auditing Filters <br>
- * 3) Image conversion Filters <br>
- * 4) Data compression Filters <br>
- * 5) Encryption Filters <br>
- * 6) Tokenizing Filters <br>
- * 7) Filters that trigger resource access events <br>
- * 8) XSL/T filters <br>
- * 9) Mime-type chain Filter <br>
- *
- * @since Servlet 2.3
- */
-
-public interface Filter {
-
-    /**
-     * Called by the web container to indicate to a filter that it is being placed into
-     * service. The servlet container calls the init method exactly once after instantiating the
-     * filter. The init method must complete successfully before the filter is asked to do any
-     * filtering work. <br><br>
-     * <p/>
-     * The web container cannot place the filter into service if the init method either<br>
-     * 1.Throws a ServletException <br>
-     * 2.Does not return within a time period defined by the web container
-     * @param filterConfig Configuration for this filter
-     * @throws ServletException if the filter cannot initialize itself
-     */
-    public void init(FilterConfig filterConfig) throws ServletException;
-
-
-    /**
-     * The <code>doFilter</code> method of the Filter is called by the container
-     * each time a request/response pair is passed through the chain due
-     * to a client request for a resource at the end of the chain. The FilterChain passed in to this
-     * method allows the Filter to pass on the request and response to the next entity in the
-     * chain.<p>
-     * A typical implementation of this method would follow the following pattern:- <br>
-     * 1. Examine the request<br>
-     * 2. Optionally wrap the request object with a custom implementation to
-     * filter content or headers for input filtering <br>
-     * 3. Optionally wrap the response object with a custom implementation to
-     * filter content or headers for output filtering <br>
-     * 4. a) <strong>Either</strong> invoke the next entity in the chain using the FilterChain object (<code>chain.doFilter()</code>), <br>
-     * * 4. b) <strong>or</strong> not pass on the request/response pair to the next entity in the filter chain to block the request processing<br>
-     * * 5. Directly set headers on the response after invocation of the next entity in the filter chain.
-     * @param request servlet request to filter
-     * @param response servlet response to filter
-     * @param chain what to do next
-     * @throws java.io.IOException if there's an IO problem
-     * @throws ServletException if there is a non-IO problem
-     */
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;
-
-    /**
-     * Called by the web container to indicate to a filter that it is being taken out of service. This
-     * method is only called once all threads within the filter's doFilter method have exited or after
-     * a timeout period has passed. After the web container calls this method, it will not call the
-     * doFilter method again on this instance of the filter. <br><br>
-     * <p/>
-     * This method gives the filter an opportunity to clean up any resources that are being held (for
-     * example, memory, file handles, threads) and make sure that any persistent state is synchronized
-     * with the filter's current state in memory.
-     */
-
-    public void destroy();
-
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterChain.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterChain.java
deleted file mode 100644
index 3737552..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterChain.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-
-/**
- * A FilterChain is an object provided by the servlet container to the developer
- * giving a view into the invocation chain of a filtered request for a resource. Filters
- * use the FilterChain to invoke the next filter in the chain, or if the calling filter
- * is the last filter in the chain, to invoke the resource at the end of the chain.
- *
- * @see Filter
- * @since Servlet 2.3
- */
-
-public interface FilterChain {
-
-    /**
-     * Causes the next filter in the chain to be invoked, or if the calling filter is the last filter
-     * in the chain, causes the resource at the end of the chain to be invoked.
-     *
-     * @param request  the request to pass along the chain.
-     * @param response the response to pass along the chain.
-     * @since 2.3
-     * @throws java.io.IOException if there's an IO problem
-     * @throws ServletException if there is a non-IO problem
-     */
-
-    public void doFilter(ServletRequest request, ServletResponse response ) throws IOException, ServletException;
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterConfig.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterConfig.java
deleted file mode 100644
index 048d73c..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterConfig.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.Enumeration;
-
-/**
- * A filter configuration object used by a servlet container
- * to pass information to a filter during initialization.
- *
- * @since Servlet 2.3
- * @see Filter
- */
-
-
-public interface FilterConfig {
-
-    /**
-     * Returns the filter-name of this filter as defined in the deployment descriptor.
-     * @return the filter name as specified in the deployment descriptor
-     */
-    public String getFilterName();
-
-    /**
-     * Returns a reference to the {@link ServletContext} in which the caller
-     * is executing.
-     *
-     * @return a {@link ServletContext} object, used
-     * by the caller to interact with its servlet
-     * container
-     * @see                ServletContext
-     */
-    public ServletContext getServletContext();
-
-    /**
-     * Returns a <code>String</code> containing the value of the
-     * named initialization parameter, or <code>null</code> if
-     * the parameter does not exist.
-     *
-     * @param name a <code>String</code> specifying the name
-     *             of the initialization parameter
-     * @return a <code>String</code> containing the value
-     * of the initialization parameter
-     */
-    public String getInitParameter(String name);
-
-
-    /**
-     * Returns the names of the filter's initialization parameters
-     * as an <code>Enumeration</code> of <code>String</code> objects,
-     * or an empty <code>Enumeration</code> if the filter has
-     * no initialization parameters.
-     *
-     * @return an <code>Enumeration</code> of <code>String</code>
-     * objects containing the names of the filter's
-     * initialization parameters
-     */
-    public Enumeration<String> getInitParameterNames();
-
-
-
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterRegistration.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterRegistration.java
deleted file mode 100644
index d9991a8..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/FilterRegistration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.Collection;
-import java.util.EnumSet;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-public interface FilterRegistration extends Registration {
-
-    void addMappingForServletNames(EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter, String ... servletNames);
-
-    void addMappingForUrlPatterns(EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter, String ... urlPatterns);
-
-    Collection<String> getServletNameMappings();
-
-    Collection<String> getUrlPatternMappings();
-
-    public interface Dynamic extends FilterRegistration, Registration.Dynamic {
-
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/GenericServlet.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/GenericServlet.java
deleted file mode 100644
index a259d29..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/GenericServlet.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-import java.util.Enumeration;
-
-/**
- * Defines a generic, protocol-independent
- * servlet. To write an HTTP servlet for use on the
- * Web, extend {@link javax.servlet.http.HttpServlet} instead.
- * <p/>
- * <p><code>GenericServlet</code> implements the <code>Servlet</code>
- * and <code>ServletConfig</code> interfaces. <code>GenericServlet</code>
- * may be directly extended by a servlet, although it's more common to extend
- * a protocol-specific subclass such as <code>HttpServlet</code>.
- * <p/>
- * <p><code>GenericServlet</code> makes writing servlets
- * easier. It provides simple versions of the lifecycle methods
- * <code>init</code> and <code>destroy</code> and of the methods
- * in the <code>ServletConfig</code> interface. <code>GenericServlet</code>
- * also implements the <code>log</code> method, declared in the
- * <code>ServletContext</code> interface.
- * <p/>
- * <p>To write a generic servlet, you need only
- * override the abstract <code>service</code> method.
- *
- * @version $Rev$ $Date$
- */
-
-
-public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable {
-
-    private transient ServletConfig config;
-
-    /**
-     * Does nothing. All of the servlet initialization
-     * is done by one of the <code>init</code> methods.
-     */
-    public GenericServlet() {
-    }
-
-    /**
-     * Called by the servlet container to indicate to a servlet that the
-     * servlet is being taken out of service.  See {@link Servlet#destroy}.
-     */
-    public void destroy() {
-    }
-
-    /**
-     * Returns a <code>String</code> containing the value of the named
-     * initialization parameter, or <code>null</code> if the parameter does
-     * not exist.  See {@link ServletConfig#getInitParameter}.
-     * <p/>
-     * <p>This method is supplied for convenience. It gets the
-     * value of the named parameter from the servlet's
-     * <code>ServletConfig</code> object.
-     *
-     * @param name a <code>String</code> specifying the name
-     *             of the initialization parameter
-     * @return String                 a <code>String</code> containing the value
-     *         of the initialization parameter
-     */
-    public String getInitParameter(String name) {
-        return getServletConfig().getInitParameter(name);
-    }
-
-    /**
-     * Returns the names of the servlet's initialization parameters
-     * as an <code>Enumeration</code> of <code>String</code> objects,
-     * or an empty <code>Enumeration</code> if the servlet has no
-     * initialization parameters.  See {@link
-     * ServletConfig#getInitParameterNames}.
-     * <p/>
-     * <p>This method is supplied for convenience. It gets the
-     * parameter names from the servlet's <code>ServletConfig</code> object.
-     *
-     * @return Enumeration         an enumeration of <code>String</code>
-     *         objects containing the names of
-     *         the servlet's initialization parameters
-     */
-    public Enumeration<String> getInitParameterNames() {
-        return getServletConfig().getInitParameterNames();
-    }
-
-    /**
-     * Returns this servlet's {@link ServletConfig} object.
-     *
-     * @return ServletConfig         the <code>ServletConfig</code> object
-     *         that initialized this servlet
-     */
-    public ServletConfig getServletConfig() {
-        return config;
-    }
-
-    /**
-     * Returns a reference to the {@link ServletContext} in which this servlet
-     * is running.  See {@link ServletConfig#getServletContext}.
-     * <p/>
-     * <p>This method is supplied for convenience. It gets the
-     * context from the servlet's <code>ServletConfig</code> object.
-     *
-     * @return ServletContext         the <code>ServletContext</code> object
-     *         passed to this servlet by the <code>init</code>
-     *         method
-     */
-    public ServletContext getServletContext() {
-        return getServletConfig().getServletContext();
-    }
-
-    /**
-     * Returns information about the servlet, such as
-     * author, version, and copyright.
-     * By default, this method returns an empty string.  Override this method
-     * to have it return a meaningful value.  See {@link
-     * Servlet#getServletInfo}.
-     *
-     * @return String                 information about this servlet, by default an
-     *         empty string
-     */
-    public String getServletInfo() {
-        return "";
-    }
-
-    /**
-     * Called by the servlet container to indicate to a servlet that the
-     * servlet is being placed into service.  See {@link Servlet#init}.
-     * <p/>
-     * <p>This implementation stores the {@link ServletConfig}
-     * object it receives from the servlet container for later use.
-     * When overriding this form of the method, call
-     * <code>super.init(config)</code>.
-     *
-     * @param config the <code>ServletConfig</code> object
-     *               that contains configutation
-     *               information for this servlet
-     * @throws ServletException if an exception occurs that
-     *                          interrupts the servlet's normal
-     *                          operation
-     * @see UnavailableException
-     */
-    public void init(ServletConfig config) throws ServletException {
-        this.config = config;
-        init();
-    }
-
-    /**
-     * A convenience method which can be overridden so that there's no need
-     * to call <code>super.init(config)</code>.
-     * <p/>
-     * <p>Instead of overriding {@link #init(ServletConfig)}, simply override
-     * this method and it will be called by
-     * <code>GenericServlet.init(ServletConfig config)</code>.
-     * The <code>ServletConfig</code> object can still be retrieved via {@link
-     * #getServletConfig}.
-     *
-     * @throws ServletException if an exception occurs that
-     *                          interrupts the servlet's
-     *                          normal operation
-     */
-    public void init() throws ServletException {
-    }
-
-    /**
-     * Writes the specified message to a servlet log file, prepended by the
-     * servlet's name.  See {@link ServletContext#log(String)}.
-     *
-     * @param msg a <code>String</code> specifying
-     *            the message to be written to the log file
-     */
-    public void log(String msg) {
-        getServletContext().log(getServletName() + ": " + msg);
-    }
-
-    /**
-     * Writes an explanatory message and a stack trace
-     * for a given <code>Throwable</code> exception
-     * to the servlet log file, prepended by the servlet's name.
-     * See {@link ServletContext#log(String, Throwable)}.
-     *
-     * @param message a <code>String</code> that describes
-     *                the error or exception
-     * @param t       the <code>java.lang.Throwable</code> error
-     *                or exception
-     */
-    public void log(String message, Throwable t) {
-        getServletContext().log(getServletName() + ": " + message, t);
-    }
-
-    /**
-     * Called by the servlet container to allow the servlet to respond to
-     * a request.  See {@link Servlet#service}.
-     * <p/>
-     * <p>This method is declared abstract so subclasses, such as
-     * <code>HttpServlet</code>, must override it.
-     *
-     * @param req the <code>ServletRequest</code> object
-     *            that contains the client's request
-     * @param res the <code>ServletResponse</code> object
-     *            that will contain the servlet's response
-     * @throws ServletException if an exception occurs that
-     *                          interferes with the servlet's
-     *                          normal operation occurred
-     * @throws IOException      if an input or output
-     *                          exception occurs
-     */
-    public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
-
-    /**
-     * Returns the name of this servlet instance.
-     * See {@link ServletConfig#getServletName}.
-     *
-     * @return the name of this servlet instance
-     */
-    public String getServletName() {
-        return config.getServletName();
-    }
-    
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/HttpConstraintElement.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/HttpConstraintElement.java
deleted file mode 100644
index 709be61..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/HttpConstraintElement.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import javax.servlet.annotation.ServletSecurity;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public class HttpConstraintElement {
-    private final ServletSecurity.EmptyRoleSemantic emptyRoleSemantic;
-    private final String[] rolesAllowed;
-    private final ServletSecurity.TransportGuarantee transportGuarantee;
-
-    public HttpConstraintElement() {
-        emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT;
-        rolesAllowed = new String[] {};
-        transportGuarantee = ServletSecurity.TransportGuarantee.NONE;
-    }
-
-    public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic emptyRoleSemantic) {
-        this.emptyRoleSemantic = emptyRoleSemantic;
-        rolesAllowed = new String[] {};
-        transportGuarantee = ServletSecurity.TransportGuarantee.NONE;
-    }
-
-    public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic emptyRoleSemantic, ServletSecurity.TransportGuarantee transportGuarantee, String... rolesAllowed) {
-        this.emptyRoleSemantic = emptyRoleSemantic;
-        this.rolesAllowed = rolesAllowed;
-        this.transportGuarantee = transportGuarantee;
-    }
-
-    public HttpConstraintElement(ServletSecurity.TransportGuarantee transportGuarantee, String... rolesAllowed) {
-        emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT;
-        this.rolesAllowed = rolesAllowed;
-        this.transportGuarantee = transportGuarantee;
-    }
-
-    public ServletSecurity.EmptyRoleSemantic getEmptyRoleSemantic() {
-        return emptyRoleSemantic;
-    }
-
-    public String[] getRolesAllowed() {
-        return rolesAllowed;
-    }
-
-    public ServletSecurity.TransportGuarantee getTransportGuarantee() {
-        return transportGuarantee;
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/HttpMethodConstraintElement.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/HttpMethodConstraintElement.java
deleted file mode 100644
index 60e8dd5..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/HttpMethodConstraintElement.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public class HttpMethodConstraintElement extends HttpConstraintElement {
-
-    private final String methodName;
-
-    public HttpMethodConstraintElement(String methodName) {
-        this.methodName = methodName;
-    }
-
-    public HttpMethodConstraintElement(String methodName, HttpConstraintElement constraintElement) {
-        super(constraintElement.getEmptyRoleSemantic(), constraintElement.getTransportGuarantee(), constraintElement.getRolesAllowed());
-        this.methodName = methodName;
-    }
-
-    public String getMethodName() {
-        return methodName;
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/MultipartConfigElement.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/MultipartConfigElement.java
deleted file mode 100644
index 7165aa1..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/MultipartConfigElement.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import javax.servlet.annotation.MultipartConfig;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public class MultipartConfigElement {
-    private final int fileSizeThreshold;
-    private final String location;
-    private final long maxFileSize;
-    private final long maxRequestSize;
-
-    public MultipartConfigElement(String location) {
-        this.location = location == null ? "" : location;
-        fileSizeThreshold = 0;
-        maxFileSize = -1L;
-        maxRequestSize = -1L;
-    }
-
-    public MultipartConfigElement(MultipartConfig config) {
-        location = config.location();
-        fileSizeThreshold = config.fileSizeThreshold();
-        maxFileSize = config.maxFileSize();
-        maxRequestSize = config.maxRequestSize();
-    }
-
-    public MultipartConfigElement(String location, long maxFileSize, long maxRequestSize, int fileSizeThreshold) {
-        this.fileSizeThreshold = fileSizeThreshold;
-        this.location = location;
-        this.maxFileSize = maxFileSize;
-        this.maxRequestSize = maxRequestSize;
-    }
-
-    public int getFileSizeThreshold() {
-        return fileSizeThreshold;
-    }
-
-    public String getLocation() {
-        return location;
-    }
-
-    public long getMaxFileSize() {
-        return maxFileSize;
-    }
-
-    public long getMaxRequestSize() {
-        return maxRequestSize;
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Registration.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Registration.java
deleted file mode 100644
index 21d7373..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Registration.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public interface Registration {
-
-    /**
-     *
-     * @return the class name of filter or servlet this registered
-     */
-    String getClassName();
-
-    /**
-     *
-     * @param name init parameter name
-     * @return init parameter value or null if not set
-     */
-    String getInitParameter(String name);
-
-    /**
-     *
-     * @return non-null immutable map of all init parameters
-     */
-    Map<String, String> getInitParameters();
-
-    /**
-     *
-     * @return name of filter or servlet this initialised
-     */
-    String getName();
-
-    /**
-     * Set one init parameter
-     * @param name parameter name
-     * @param value parameter value
-     * @return true if init parameter was set, false if it was previously set.
-     */
-    boolean setInitParameter(String name, String value);
-
-    /**
-     *
-     * @param initParameters map of name-value paramters
-     * @return set of previously set parameter names (i.e. those where setInitParameter would have returned false)
-     */
-    Set<String> setInitParameters(Map<String, String> initParameters);
-
-    public interface Dynamic extends Registration {
-
-        void setAsyncSupported(boolean asyncSupported);
-
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/RequestDispatcher.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/RequestDispatcher.java
deleted file mode 100644
index ea8b70e..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/RequestDispatcher.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-
-/**
- * Defines an object that receives requests from the client
- * and sends them to any resource (such as a servlet,
- * HTML file, or JSP file) on the server. The servlet
- * container creates the <code>RequestDispatcher</code> object,
- * which is used as a wrapper around a server resource located
- * at a particular path or given by a particular name.
- * <p/>
- * <p>This interface is intended to wrap servlets,
- * but a servlet container can create <code>RequestDispatcher</code>
- * objects to wrap any type of resource.
- *
- * @version $Rev$ $Date$
- * 
- * @see ServletContext#getRequestDispatcher(java.lang.String)
- * @see ServletContext#getNamedDispatcher(java.lang.String)
- * @see ServletRequest#getRequestDispatcher(java.lang.String)
- */
-
-public interface RequestDispatcher {
-
-    //constants since 3.0
-    
-    String ERROR_EXCEPTION = "javax.servlet.error.exception";
-    String ERROR_EXCEPTION_TYPE = "javax.servlet.error.exception_type";
-    String ERROR_MESSAGE = "javax.servlet.error.message";
-    String ERROR_REQUEST_URI = "javax.servlet.error.request_uri";
-    String ERROR_SERVLET_NAME = "javax.servlet.error.servlet_name";
-    String ERROR_STATUS_CODE = "javax.servlet.error.status_code";
-    String FORWARD_CONTEXT_PATH = "javax.servlet.forward.context_path";
-    String FORWARD_PATH_INFO = "javax.servlet.forward.path_info";
-    String FORWARD_QUERY_STRING = "javax.servlet.forward.query_string";
-    String FORWARD_REQUEST_URI = "javax.servlet.forward.request_uri";
-    String FORWARD_SERVLET_PATH = "javax.servlet.forward.servlet_path";
-    String INCLUDE_CONTEXT_PATH = "javax.servlet.include.context_path";
-    String INCLUDE_PATH_INFO = "javax.servlet.include.path_info";
-    String INCLUDE_QUERY_STRING = "javax.servlet.include.query_string";
-    String INCLUDE_REQUEST_URI = "javax.servlet.include.request_uri";
-    String INCLUDE_SERVLET_PATH = "javax.servlet.include.servlet_path";
-
-    /**
-     * Forwards a request from
-     * a servlet to another resource (servlet, JSP file, or
-     * HTML file) on the server. This method allows
-     * one servlet to do preliminary processing of
-     * a request and another resource to generate
-     * the response.
-     * <p/>
-     * <p>For a <code>RequestDispatcher</code> obtained via
-     * <code>getRequestDispatcher()</code>, the <code>ServletRequest</code>
-     * object has its path elements and parameters adjusted to match
-     * the path of the target resource.
-     * <p/>
-     * <p><code>forward</code> should be called before the response has been
-     * committed to the client (before response body output has been flushed).
-     * If the response already has been committed, this method throws
-     * an <code>IllegalStateException</code>.
-     * Uncommitted output in the response buffer is automatically cleared
-     * before the forward.
-     * <p/>
-     * <p>The request and response parameters must be either the same
-     * objects as were passed to the calling servlet's service method or be
-     * subclasses of the {@link ServletRequestWrapper} or {@link ServletResponseWrapper} classes
-     * that wrap them.
-     *
-     * @param request  a {@link ServletRequest} object
-     *                 that represents the request the client
-     *                 makes of the servlet
-     * @param response a {@link ServletResponse} object
-     *                 that represents the response the servlet
-     *                 returns to the client
-     * @throws ServletException      if the target resource throws this exception
-     * @throws IOException           if the target resource throws this exception
-     * @throws IllegalStateException if the response was already committed
-     */
-    public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;
-
-    /**
-     * Includes the content of a resource (servlet, JSP page,
-     * HTML file) in the response. In essence, this method enables
-     * programmatic server-side includes.
-     * <p/>
-     * <p>The {@link ServletResponse} object has its path elements
-     * and parameters remain unchanged from the caller's. The included
-     * servlet cannot change the response status code or set headers;
-     * any attempt to make a change is ignored.
-     * <p/>
-     * <p>The request and response parameters must be either the same
-     * objects as were passed to the calling servlet's service method or be
-     * subclasses of the {@link ServletRequestWrapper} or {@link ServletResponseWrapper} classes
-     * that wrap them.
-     *
-     * @param request  a {@link ServletRequest} object
-     *                 that contains the client's request
-     * @param response a {@link ServletResponse} object
-     *                 that contains the servlet's response
-     * @throws ServletException if the included resource throws this exception
-     * @throws IOException      if the included resource throws this exception
-     */
-    public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;
-
-}
-
-
-
-
-
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Servlet.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Servlet.java
deleted file mode 100644
index 605b321..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/Servlet.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-
-/**
- * Defines methods that all servlets must implement.
- * <p/>
- * <p>A servlet is a small Java program that runs within a Web server.
- * Servlets receive and respond to requests from Web clients,
- * usually across HTTP, the HyperText Transfer Protocol.
- * <p/>
- * <p>To implement this interface, you can write a generic servlet
- * that extends
- * <code>javax.servlet.GenericServlet</code> or an HTTP servlet that
- * extends <code>javax.servlet.http.HttpServlet</code>.
- * <p/>
- * <p>This interface defines methods to initialize a servlet,
- * to service requests, and to remove a servlet from the server.
- * These are known as life-cycle methods and are called in the
- * following sequence:
- * <ol>
- * <li>The servlet is constructed, then initialized with the <code>init</code> method.
- * <li>Any calls from clients to the <code>service</code> method are handled.
- * <li>The servlet is taken out of service, then destroyed with the
- * <code>destroy</code> method, then garbage collected and finalized.
- * </ol>
- * <p/>
- * <p>In addition to the life-cycle methods, this interface
- * provides the <code>getServletConfig</code> method, which the servlet
- * can use to get any startup information, and the <code>getServletInfo</code>
- * method, which allows the servlet to return basic information about itself,
- * such as author, version, and copyright.
- *
- * @version $Rev$ $Date$
- * @see GenericServlet
- * @see javax.servlet.http.HttpServlet
- */
-
-public interface Servlet {
-
-    /**
-     * Called by the servlet container to indicate to a servlet that the
-     * servlet is being placed into service.
-     * <p/>
-     * <p>The servlet container calls the <code>init</code>
-     * method exactly once after instantiating the servlet.
-     * The <code>init</code> method must complete successfully
-     * before the servlet can receive any requests.
-     * <p/>
-     * <p>The servlet container cannot place the servlet into service
-     * if the <code>init</code> method
-     * <ol>
-     * <li>Throws a <code>ServletException</code>
-     * <li>Does not return within a time period defined by the Web server
-     * </ol>
-     *
-     * @param config a <code>ServletConfig</code> object
-     *               containing the servlet's
-     *               configuration and initialization parameters
-     * @throws ServletException if an exception has occurred that
-     *                          interferes with the servlet's normal
-     *                          operation
-     * @see UnavailableException
-     * @see #getServletConfig
-     */
-    public void init(ServletConfig config) throws ServletException;
-
-    /**
-     * Returns a {@link ServletConfig} object, which contains
-     * initialization and startup parameters for this servlet.
-     * The <code>ServletConfig</code> object returned is the one
-     * passed to the <code>init</code> method.
-     * <p/>
-     * <p>Implementations of this interface are responsible for storing the
-     * <code>ServletConfig</code> object so that this
-     * method can return it. The {@link GenericServlet}
-     * class, which implements this interface, already does this.
-     *
-     * @return the <code>ServletConfig</code> object
-     * that initializes this servlet
-     * @see #init
-     */
-    public ServletConfig getServletConfig();
-
-    /**
-     * Called by the servlet container to allow the servlet to respond to
-     * a request.
-     * <p/>
-     * <p>This method is only called after the servlet's <code>init()</code>
-     * method has completed successfully.
-     * <p/>
-     * <p>  The status code of the response always should be set for a servlet
-     * that throws or sends an error.
-     * <p/>
-     * <p/>
-     * <p>Servlets typically run inside multithreaded servlet containers
-     * that can handle multiple requests concurrently. Developers must
-     * be aware to synchronize access to any shared resources such as files,
-     * network connections, and as well as the servlet's class and instance
-     * variables.
-     * More information on multithreaded programming in Java is available in
-     * <a href="http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html">
-     * the Java tutorial on multi-threaded programming</a>.
-     *
-     * @param req the <code>ServletRequest</code> object that contains
-     *            the client's request
-     * @param res the <code>ServletResponse</code> object that contains
-     *            the servlet's response
-     * @throws ServletException if an exception occurs that interferes
-     *                          with the servlet's normal operation
-     * @throws IOException      if an input or output exception occurs
-     */
-    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
-
-    /**
-     * Returns information about the servlet, such
-     * as author, version, and copyright.
-     * <p/>
-     * <p>The string that this method returns should
-     * be plain text and not markup of any kind (such as HTML, XML,
-     * etc.).
-     *
-     * @return a <code>String</code> containing servlet information
-     */
-    public String getServletInfo();
-
-    /**
-     * Called by the servlet container to indicate to a servlet that the
-     * servlet is being taken out of service.  This method is
-     * only called once all threads within the servlet's
-     * <code>service</code> method have exited or after a timeout
-     * period has passed. After the servlet container calls this
-     * method, it will not call the <code>service</code> method again
-     * on this servlet.
-     * <p/>
-     * <p>This method gives the servlet an opportunity
-     * to clean up any resources that are being held (for example, memory,
-     * file handles, threads) and make sure that any persistent state is
-     * synchronized with the servlet's current state in memory.
-     */
-    public void destroy();
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletConfig.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletConfig.java
deleted file mode 100644
index 3d23388..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletConfig.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.Enumeration;
-
-/**
- * 
- * A servlet configuration object used by a servlet container
- * to pass information to a servlet during initialization. 
- *
- * @version $Rev$ $Date$
- */
- 
-public interface ServletConfig {
-
-    /**
-     * Returns the name of this servlet instance.
-     * The name may be provided via server administration, assigned in the 
-     * web application deployment descriptor, or for an unregistered (and thus
-     * unnamed) servlet instance it will be the servlet's class name.
-     *
-     * @return		the name of the servlet instance
-     */
-    public String getServletName();
-
-    /**
-     * Returns a reference to the {@link ServletContext} in which the caller
-     * is executing.
-     *
-     * @return		a {@link ServletContext} object, used
-     *			by the caller to interact with its servlet 
-     *                  container
-     * 
-     * @see		ServletContext
-     */
-    public ServletContext getServletContext();
-    
-    /**
-     * Returns a <code>String</code> containing the value of the 
-     * named initialization parameter, or <code>null</code> if 
-     * the parameter does not exist.
-     *
-     * @param name	a <code>String</code> specifying the name
-     *			of the initialization parameter
-     * @return		a <code>String</code> containing the value
-     *			of the initialization parameter
-     */
-    public String getInitParameter(String name);
-
-    /**
-     * Returns the names of the servlet's initialization parameters
-     * as an <code>Enumeration</code> of <code>String</code> objects, 
-     * or an empty <code>Enumeration</code> if the servlet has
-     * no initialization parameters.
-     *
-     * @return		an <code>Enumeration</code> of <code>String</code> 
-     *			objects containing the names of the servlet's 
-     *			initialization parameters
-     */
-    public Enumeration<String> getInitParameterNames();
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContainerInitializer.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContainerInitializer.java
deleted file mode 100644
index 16989b5..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContainerInitializer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.Set;
-
-/**
- * @version $Rev$ $Date$
- * @since Servlet 3.0
- */
-public interface ServletContainerInitializer {
-
-    void onStartup(Set<Class<?>> classes, ServletContext ctx) throws ServletException;
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContext.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContext.java
deleted file mode 100644
index 734f5ec..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContext.java
+++ /dev/null
@@ -1,737 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.EventListener;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.descriptor.JspConfigDescriptor;
-
-
-/**
- * Defines a set of methods that a servlet uses to communicate with its
- * servlet container, for example, to get the MIME type of a file, dispatch
- * requests, or write to a log file.
- * <p/>
- * <p>There is one context per "web application" per Java Virtual Machine.  (A
- * "web application" is a collection of servlets and content installed under a
- * specific subset of the server's URL namespace such as <code>/catalog</code>
- * and possibly installed via a <code>.war</code> file.)
- * <p/>
- * <p>In the case of a web
- * application marked "distributed" in its deployment descriptor, there will
- * be one context instance for each virtual machine.  In this situation, the
- * context cannot be used as a location to share global information (because
- * the information won't be truly global).  Use an external resource like
- * a database instead.
- * <p/>
- * <p>The <code>ServletContext</code> object is contained within
- * the {@link ServletConfig} object, which the Web server provides the
- * servlet when the servlet is initialized.
- *
- * @version $Rev$ $Date$
- * @see Servlet#getServletConfig
- * @see ServletConfig#getServletContext
- */
-
-public interface ServletContext {
-
-    /**
-     * @since Servlet 3.0
-     */
-    String ORDERED_LIBS = "javax.servlet.context.orderedLibs";
-    /**
-     * @since Servlet 3.0
-     */
-    String TEMPDIR = "javax.servlet.context.tempdir";
-
-    /**
-     * @return context path for this web app or "" for the / context
-     * @since Servlet 2.5
-     */
-    String getContextPath();
-
-    /**
-     * Returns a <code>ServletContext</code> object that
-     * corresponds to a specified URL on the server.
-     * <p/>
-     * <p>This method allows servlets to gain
-     * access to the context for various parts of the server, and as
-     * needed obtain {@link RequestDispatcher} objects from the context.
-     * The given path must be begin with "/", is interpreted relative
-     * to the server's document root and is matched against the context roots of
-     * other web applications hosted on this container.
-     * <p/>
-     * <p>In a security conscious environment, the servlet container may
-     * return <code>null</code> for a given URL.
-     *
-     * @param uripath a <code>String</code> specifying the context path of
-     *                another web application in the container.
-     * @return the <code>ServletContext</code> object that
-     *         corresponds to the named URL, or null if either
-     *         none exists or the container wishes to restrict
-     *         this access.
-     * @see RequestDispatcher
-     */
-    ServletContext getContext(String uripath);
-
-    /**
-     * Returns the major version of the Java Servlet API that this
-     * servlet container supports. All implementations that comply
-     * with Version 3.0 must have this method
-     * return the integer 3.
-     *
-     * @return 3
-     */
-    int getMajorVersion();
-
-    /**
-     * Returns the minor version of the Servlet API that this
-     * servlet container supports. All implementations that comply
-     * with Version 3.0 must have this method
-     * return the integer 0.
-     *
-     * @return 0
-     */
-    int getMinorVersion();
-
-    /**
-     * Returns the MIME type of the specified file, or <code>null</code> if
-     * the MIME type is not known. The MIME type is determined
-     * by the configuration of the servlet container, and may be specified
-     * in a web application deployment descriptor. Common MIME
-     * types are <code>"text/html"</code> and <code>"image/gif"</code>.
-     *
-     * @param file a <code>String</code> specifying the name
-     *             of a file
-     * @return a <code>String</code> specifying the file's MIME type
-     */
-    String getMimeType(String file);
-
-    /**
-     * Returns a directory-like listing of all the paths to resources within the web application whose longest sub-path
-     * matches the supplied path argument. Paths indicating subdirectory paths end with a '/'. The returned paths are all
-     * relative to the root of the web application and have a leading '/'. For example, for a web application
-     * containing<br><br>
-     * <p/>
-     * /welcome.html<br>
-     * /catalog/index.html<br>
-     * /catalog/products.html<br>
-     * /catalog/offers/books.html<br>
-     * /catalog/offers/music.html<br>
-     * /customer/login.jsp<br>
-     * /WEB-INF/web.xml<br>
-     * /WEB-INF/classes/com.acme.OrderServlet.class,<br><br>
-     * <p/>
-     * getResourcePaths("/") returns {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}<br>
-     * getResourcePaths("/catalog/") returns {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/"}.<br>
-     *
-     * @param path the partial path used to match the resources,
-     *             which must start with a /
-     * @return a Set containing the directory listing, or null if there are no resources in the web application whose path
-     *         begins with the supplied path.
-     * @since Servlet 2.3
-     */
-    Set<String> getResourcePaths(String path);
-
-    /**
-     * Returns a URL to the resource that is mapped to a specified
-     * path. The path must begin with a "/" and is interpreted
-     * as relative to the current context root.
-     * <p/>
-     * <p>This method allows the servlet container to make a resource
-     * available to servlets from any source. Resources
-     * can be located on a local or remote
-     * file system, in a database, or in a <code>.war</code> file.
-     * <p/>
-     * <p>The servlet container must implement the URL handlers
-     * and <code>URLConnection</code> objects that are necessary
-     * to access the resource.
-     * <p/>
-     * <p>This method returns <code>null</code>
-     * if no resource is mapped to the pathname.
-     * <p/>
-     * <p>Some containers may allow writing to the URL returned by
-     * this method using the methods of the URL class.
-     * <p/>
-     * <p>The resource content is returned directly, so be aware that
-     * requesting a <code>.jsp</code> page returns the JSP source code.
-     * Use a <code>RequestDispatcher</code> instead to include results of
-     * an execution.
-     * <p/>
-     * <p>This method has a different purpose than
-     * <code>java.lang.Class.getResource</code>,
-     * which looks up resources based on a class loader. This
-     * method does not use class loaders.
-     *
-     * @param path a <code>String</code> specifying
-     *             the path to the resource
-     * @return the resource located at the named path,
-     *         or <code>null</code> if there is no resource
-     *         at that path
-     * @throws MalformedURLException if the pathname is not given in
-     *                               the correct form
-     */
-    URL getResource(String path) throws MalformedURLException;
-
-    /**
-     * Returns the resource located at the named path as
-     * an <code>InputStream</code> object.
-     * <p/>
-     * <p>The data in the <code>InputStream</code> can be
-     * of any type or length. The path must be specified according
-     * to the rules given in <code>getResource</code>.
-     * This method returns <code>null</code> if no resource exists at
-     * the specified path.
-     * <p/>
-     * <p>Meta-information such as content length and content type
-     * that is available via <code>getResource</code>
-     * method is lost when using this method.
-     * <p/>
-     * <p>The servlet container must implement the URL handlers
-     * and <code>URLConnection</code> objects necessary to access
-     * the resource.
-     * <p/>
-     * <p>This method is different from
-     * <code>java.lang.Class.getResourceAsStream</code>,
-     * which uses a class loader. This method allows servlet containers
-     * to make a resource available
-     * to a servlet from any location, without using a class loader.
-     *
-     * @param path a <code>String</code> specifying the path
-     *             to the resource
-     * @return the <code>InputStream</code> returned to the
-     *         servlet, or <code>null</code> if no resource
-     *         exists at the specified path
-     */
-    InputStream getResourceAsStream(String path);
-
-    /**
-     * Returns a {@link RequestDispatcher} object that acts
-     * as a wrapper for the resource located at the given path.
-     * A <code>RequestDispatcher</code> object can be used to forward
-     * a request to the resource or to include the resource in a response.
-     * The resource can be dynamic or static.
-     * <p/>
-     * <p>The pathname must begin with a "/" and is interpreted as relative
-     * to the current context root.  Use <code>getContext</code> to obtain
-     * a <code>RequestDispatcher</code> for resources in foreign contexts.
-     * This method returns <code>null</code> if the <code>ServletContext</code>
-     * cannot return a <code>RequestDispatcher</code>.
-     *
-     * @param path a <code>String</code> specifying the pathname
-     *             to the resource
-     * @return a <code>RequestDispatcher</code> object
-     *         that acts as a wrapper for the resource
-     *         at the specified path, or <code>null</code> if
-     *         the <code>ServletContext</code> cannot return
-     *         a <code>RequestDispatcher</code>
-     * @see RequestDispatcher
-     * @see ServletContext#getContext
-     */
-    RequestDispatcher getRequestDispatcher(String path);
-
-    /**
-     * Returns a {@link RequestDispatcher} object that acts
-     * as a wrapper for the named servlet.
-     * <p/>
-     * <p>Servlets (and JSP pages also) may be given names via server
-     * administration or via a web application deployment descriptor.
-     * A servlet instance can determine its name using
-     * {@link ServletConfig#getServletName}.
-     * <p/>
-     * <p>This method returns <code>null</code> if the
-     * <code>ServletContext</code>
-     * cannot return a <code>RequestDispatcher</code> for any reason.
-     *
-     * @param name a <code>String</code> specifying the name
-     *             of a servlet to wrap
-     * @return a <code>RequestDispatcher</code> object
-     *         that acts as a wrapper for the named servlet,
-     *         or <code>null</code> if the <code>ServletContext</code>
-     *         cannot return a <code>RequestDispatcher</code>
-     * @see RequestDispatcher
-     * @see ServletContext#getContext
-     * @see ServletConfig#getServletName
-     */
-    RequestDispatcher getNamedDispatcher(String name);
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, with no direct replacement.
-     *             <p/>
-     *             <p>This method was originally defined to retrieve a servlet
-     *             from a <code>ServletContext</code>. In this version, this method
-     *             always returns <code>null</code> and remains only to preserve
-     *             binary compatibility. This method will be permanently removed
-     *             in a future version of the Java Servlet API.
-     *             <p/>
-     *             <p>In lieu of this method, servlets can share information using the
-     *             <code>ServletContext</code> class and can perform shared business logic
-     *             by invoking methods on common non-servlet classes.
-     */
-    Servlet getServlet(String name) throws ServletException;
-
-    /**
-     * @deprecated As of Java Servlet API 2.0, with no replacement.
-     *             <p/>
-     *             <p>This method was originally defined to return an <code>Enumeration</code>
-     *             of all the servlets known to this servlet context. In this
-     *             version, this method always returns an empty enumeration and
-     *             remains only to preserve binary compatibility. This method
-     *             will be permanently removed in a future version of the Java
-     *             Servlet API.
-     */
-    Enumeration<Servlet> getServlets();
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, with no replacement.
-     *             <p/>
-     *             <p>This method was originally defined to return an
-     *             <code>Enumeration</code>
-     *             of all the servlet names known to this context. In this version,
-     *             this method always returns an empty <code>Enumeration</code> and
-     *             remains only to preserve binary compatibility. This method will
-     *             be permanently removed in a future version of the Java Servlet API.
-     */
-    Enumeration<String> getServletNames();
-
-    /**
-     * Writes the specified message to a servlet log file, usually
-     * an event log. The name and type of the servlet log file is
-     * specific to the servlet container.
-     *
-     * @param msg a <code>String</code> specifying the
-     *            message to be written to the log file
-     */
-    void log(String msg);
-
-    /**
-     * @deprecated As of Java Servlet API 2.1, use
-     *             {@link #log(String message, Throwable throwable)}
-     *             instead.
-     *             <p/>
-     *             <p>This method was originally defined to write an
-     *             exception's stack trace and an explanatory error message
-     *             to the servlet log file.
-     */
-    void log(Exception exception, String msg);
-
-    /**
-     * Writes an explanatory message and a stack trace
-     * for a given <code>Throwable</code> exception
-     * to the servlet log file. The name and type of the servlet log
-     * file is specific to the servlet container, usually an event log.
-     *
-     * @param message   a <code>String</code> that
-     *                  describes the error or exception
-     * @param throwable the <code>Throwable</code> error
-     *                  or exception
-     */
-    void log(String message, Throwable throwable);
-
-    /**
-     * Returns a <code>String</code> containing the real path
-     * for a given virtual path. For example, the path "/index.html"
-     * returns the absolute file path on the server's filesystem would be
-     * served by a request for "http://host/contextPath/index.html",
-     * where contextPath is the context path of this ServletContext..
-     * <p/>
-     * <p>The real path returned will be in a form
-     * appropriate to the computer and operating system on
-     * which the servlet container is running, including the
-     * proper path separators. This method returns <code>null</code>
-     * if the servlet container cannot translate the virtual path
-     * to a real path for any reason (such as when the content is
-     * being made available from a <code>.war</code> archive).
-     *
-     * @param path a <code>String</code> specifying a virtual path
-     * @return a <code>String</code> specifying the real path,
-     *         or null if the translation cannot be performed
-     */
-    String getRealPath(String path);
-
-    /**
-     * Returns the name and version of the servlet container on which
-     * the servlet is running.
-     * <p/>
-     * <p>The form of the returned string is
-     * <i>servername</i>/<i>versionnumber</i>.
-     * For example, the JavaServer Web Development Kit may return the string
-     * <code>JavaServer Web Dev Kit/1.0</code>.
-     * <p/>
-     * <p>The servlet container may return other optional information
-     * after the primary string in parentheses, for example,
-     * <code>JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)</code>.
-     *
-     * @return a <code>String</code> containing at least the
-     *         servlet container name and version number
-     */
-    String getServerInfo();
-
-    /**
-     * Returns a <code>String</code> containing the value of the named
-     * context-wide initialization parameter, or <code>null</code> if the
-     * parameter does not exist.
-     * <p/>
-     * <p>This method can make available configuration information useful
-     * to an entire "web application".  For example, it can provide a
-     * webmaster's email address or the name of a system that holds
-     * critical data.
-     *
-     * @param name a <code>String</code> containing the name of the
-     *             parameter whose value is requested
-     * @return a <code>String</code> containing at least the
-     *         servlet container name and version number
-     * @see ServletConfig#getInitParameter
-     */
-    String getInitParameter(String name);
-
-    /**
-     * Returns the names of the context's initialization parameters as an
-     * <code>Enumeration</code> of <code>String</code> objects, or an
-     * empty <code>Enumeration</code> if the context has no initialization
-     * parameters.
-     *
-     * @return an <code>Enumeration</code> of <code>String</code>
-     *         objects containing the names of the context's
-     *         initialization parameters
-     * @see ServletConfig#getInitParameter
-     */
-    Enumeration<String> getInitParameterNames();
-
-    /**
-     * Set the init parameter if it is not already set.
-     *
-     * @param name  of the init parameter to set
-     * @param value new value
-     * @return whether it was set
-     * @since 3.0
-     */
-    boolean setInitParameter(String name, String value);
-
-    /**
-     * Returns the servlet container attribute with the given name,
-     * or <code>null</code> if there is no attribute by that name.
-     * An attribute allows a servlet container to give the
-     * servlet additional information not
-     * already provided by this interface. See your
-     * server documentation for information about its attributes.
-     * A list of supported attributes can be retrieved using
-     * <code>getAttributeNames</code>.
-     * <p/>
-     * <p>The attribute is returned as a <code>java.lang.Object</code>
-     * or some subclass.
-     * Attribute names should follow the same convention as package
-     * names. The Java Servlet API specification reserves names
-     * matching <code>java.*</code>, <code>javax.*</code>,
-     * and <code>sun.*</code>.
-     *
-     * @param name a <code>String</code> specifying the name
-     *             of the attribute
-     * @return an <code>Object</code> containing the value
-     *         of the attribute, or <code>null</code>
-     *         if no attribute exists matching the given
-     *         name
-     * @see ServletContext#getAttributeNames
-     */
-    Object getAttribute(String name);
-
-    /**
-     * Returns an <code>Enumeration</code> containing the
-     * attribute names available
-     * within this servlet context. Use the
-     * {@link #getAttribute} method with an attribute name
-     * to get the value of an attribute.
-     *
-     * @return an <code>Enumeration</code> of attribute
-     *         names
-     * @see #getAttribute
-     */
-    Enumeration<String> getAttributeNames();
-
-    /**
-     * Binds an object to a given attribute name in this servlet context. If
-     * the name specified is already used for an attribute, this
-     * method will replace the attribute with the new to the new attribute.
-     * <p>If listeners are configured on the <code>ServletContext</code> the
-     * container notifies them accordingly.
-     * <p/>
-     * If a null value is passed, the effect is the same as calling
-     * <code>removeAttribute()</code>.
-     * <p/>
-     * <p>Attribute names should follow the same convention as package
-     * names. The Java Servlet API specification reserves names
-     * matching <code>java.*</code>, <code>javax.*</code>, and
-     * <code>sun.*</code>.
-     *
-     * @param name   a <code>String</code> specifying the name
-     *               of the attribute
-     * @param object an <code>Object</code> representing the
-     *               attribute to be bound
-     */
-    void setAttribute(String name, Object object);
-
-    /**
-     * Removes the attribute with the given name from
-     * the servlet context. After removal, subsequent calls to
-     * {@link #getAttribute} to retrieve the attribute's value
-     * will return <code>null</code>.
-     * <p/>
-     * <p>If listeners are configured on the <code>ServletContext</code> the
-     * container notifies them accordingly.
-     *
-     * @param name a <code>String</code> specifying the name
-     *             of the attribute to be removed
-     */
-    void removeAttribute(String name);
-
-    /**
-     * Returns the name of this web application corresponding to this ServletContext as specified in the deployment
-     * descriptor for this web application by the display-name element.
-     *
-     * @return The name of the web application or null if no name has been declared in the deployment descriptor.
-     * @since Servlet 2.3
-     */
-    String getServletContextName();
-
-    /**
-     * Add the specified servlet to the context
-     *
-     * @param servletName servlet's name
-     * @param className   class name of servlet
-     * @return ServletRegistration.Dynamic allowing configuration of the servlet
-     * @throws IllegalArgumentException duplicate servletName
-     * @throws IllegalStateException    this method called after #initialize
-     * @since 3.0
-     */
-    ServletRegistration.Dynamic addServlet(String servletName, String className) throws IllegalArgumentException, IllegalStateException;
-
-    /**
-     * Add the specified servlet to the context
-     *
-     * @param servletName servlet's name
-     * @param servlet     servlet instance, perhaps created with createServlet
-     * @return ServletRegistration.Dynamic allowing configuration of the servlet
-     * @throws IllegalArgumentException duplicate servletName
-     * @throws IllegalStateException    this method called after #initialize
-     * @since 3.0
-     */
-    ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet) throws IllegalArgumentException, IllegalStateException;
-
-    /**
-     * Add the specified servlet to the context
-     *
-     * @param servletName servlet's name
-     * @param clazz       class of the servlet
-     * @return ServletRegistration.Dynamic allowing configuration of the servlet
-     * @throws IllegalArgumentException duplicate servletName
-     * @throws IllegalStateException    this method called after #initialize
-     * @since 3.0
-     */
-    ServletRegistration.Dynamic addServlet(String servletName, Class<? extends Servlet> clazz) throws IllegalArgumentException, IllegalStateException;
-
-    /**
-     * Create a servlet with dependencies injected.
-     *
-     * @param clazz servlet class
-     * @return instantiated and injected servlet
-     * @throws ServletException if something goes wrong
-     * @since Servlet 3.0
-     */
-    <T extends Servlet> T createServlet(Class<T> clazz) throws ServletException;
-
-    /**
-     * Fish out the servlet registration for a named servlet
-     *
-     * @param servletName name of the servlet you want to configure
-     * @return ServletRegistration for servlet you want
-     * @since 3.0
-     */
-    ServletRegistration getServletRegistration(String servletName);
-
-    /**
-     * Fish out the servlet registration for a named servlet
-     *
-     * @return Map of name to ServletRegistration for all registered servlets
-     * @since 3.0
-     */
-    Map<String, ? extends ServletRegistration> getServletRegistrations();
-
-    /**
-     * Add a filter to this context
-     *
-     * @param filterName name of filter
-     * @param className  class name of filter
-     * @return FilterRegistration.Dynamic allowing configuration of filter
-     * @throws IllegalArgumentException duplicate filter name
-     * @throws IllegalStateException    if called after #initialise
-     * @since 3.0
-     */
-    FilterRegistration.Dynamic addFilter(String filterName, String className) throws IllegalArgumentException, IllegalStateException;
-
-    /**
-     * Add a filter to this context
-     *
-     * @param filterName name of filter
-     * @param filter     filter instance perhaps from createFilter method
-     * @return FilterRegistration.Dynamic allowing configuration of filter
-     * @throws IllegalArgumentException duplicate filter name
-     * @throws IllegalStateException    if called after #initialise
-     * @since 3.0
-     */
-    FilterRegistration.Dynamic addFilter(String filterName, Filter filter) throws IllegalArgumentException, IllegalStateException;
-
-    /**
-     * Add a filter to this context
-     *
-     * @param filterName  name of filter
-     * @param filterClass filter class
-     * @return FilterRegistration.Dynamic allowing configuration of filter
-     * @throws IllegalArgumentException duplicate filter name
-     * @throws IllegalStateException    if called after #initialise
-     * @since 3.0
-     */
-    FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass) throws IllegalArgumentException, IllegalStateException;
-
-    /**
-     * Create a filter with dependencies injected.
-     *
-     * @param clazz filter class
-     * @return instantiated and injected filter
-     * @throws ServletException if something goes wrong
-     * @since Servlet 3.0
-     */
-    <T extends Filter> T createFilter(Class<T> clazz) throws ServletException;
-
-    /**
-     * Return the FilterRegistration corresponding to the named filter
-     * @param filterName Name of filter you want to configure
-     * @return FilterRegistration allowing configuration of filter
-     * @since 3.0
-     */
-    FilterRegistration getFilterRegistration(String filterName);
-
-    /**
-     * Return a possibly empty immutable map of registrations for all filters.
-     * @return FilterRegistration allowing configuration of filter
-     * @since 3.0
-     */
-    Map<String, ? extends FilterRegistration> getFilterRegistrations();
-
-    /**
-     * Add a listener created from the specified class
-     * @param listenerClass class of listener to add
-     * @since Servlet 3.0
-     */
-    void addListener(Class<? extends EventListener> listenerClass);
-
-    /**
-     * Add a listener created from the specified class name
-     * @param className name of class of listener to add
-     * @since Servlet 3.0
-     */
-    void addListener(String className);
-
-    /**
-     * add the listener instance
-     * @param t listener instance
-     * @param <T> type of listener
-     * @since Servlet 3.0
-     */
-    <T extends EventListener> void addListener(T t);
-
-    /**
-     * create a fully initialized listener
-     * @param clazz listener class
-     * @param <T> type of listener class
-     * @return fully initialized listener object
-     * @since Servlet 3.0
-     */
-    <T extends EventListener> T createListener(Class<T> clazz) throws ServletException;
-
-    /**
-     * declare the roles used in the web app as argumnents to isUserInRole
-     * @param roleNames the role names used in the web app
-     * @since Servlet 3.0
-     */
-    void declareRoles(String... roleNames);
-
-    /**
-     * @return configuration of session cookie
-     * @since 3.0
-     */
-    SessionCookieConfig getSessionCookieConfig();
-
-    /**
-     * @param sessionTrackingModes enumset of SessionTrackingModes for this web app
-     * @since 3.0
-     */
-    void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes);
-
-    /**
-     * @return the default session tracking modes
-     * @since 3.0
-     */
-    Set<SessionTrackingMode> getDefaultSessionTrackingModes();
-
-    /**
-     *
-     * @return the major version of the servlet spec the web app thinks it is using.
-     * @throws UnsupportedOperationException if this ServletContext was constructed in a way where the spec version cannot be determined.
-     * @since 3.0
-     */
-    int getEffectiveMajorVersion() throws UnsupportedOperationException;
-
-    /**
-     *
-     * @return the minor version of the servlet spec the web app thinks it is using.
-     * @throws UnsupportedOperationException if this ServletContext was constructed in a way where the spec version cannot be determined.
-     * @since 3.0
-     */
-    int getEffectiveMinorVersion() throws UnsupportedOperationException;
-
-    /**
-     * @return the actual session tracking modes.  These will be the default ones unless they've been explicitly set.
-     * @since 3.0
-     */
-    Set<SessionTrackingMode> getEffectiveSessionTrackingModes();
-
-    /**
-     *
-     * @return the classloader for this web app
-     * @since 3.0
-     */
-    ClassLoader getClassLoader();
-
-    /**
-     * 
-     * @return jsp config aggregated from xml bits or null
-     * @since 3.0
-     */
-    JspConfigDescriptor getJspConfigDescriptor ();
-
-}
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextAttributeEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextAttributeEvent.java
deleted file mode 100644
index 1e22227..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextAttributeEvent.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * This is the event class for notifications about changes to the attributes of the
- * servlet context of a web application.
- *
- * @version $Rev$ $Date$
- * @see ServletContextAttributeListener
- * @since v 2.3
- */
-
-public class ServletContextAttributeEvent extends ServletContextEvent {
-    private final String name;
-    private final Object value;
-
-    /**
-     * Construct a ServletContextAttributeEvent from the given context for the
-     * given attribute name and attribute value.
-     */
-    public ServletContextAttributeEvent(ServletContext source, String name, Object value) {
-        super(source);
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Return the name of the attribute that changed on the ServletContext.
-     * @return name of the changed attribute
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the value of the attribute that has been added, removed, or replaced.
-     * If the attribute was added, this is the value of the attribute. If the attribute was
-     * removed, this is the value of the removed attribute. If the attribute was replaced, this
-     * is the old value of the attribute.
-     * @return value of the changed attribute
-     */
-    public Object getValue() {
-        return value;
-    }
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextAttributeListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextAttributeListener.java
deleted file mode 100644
index 15ce6f6..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextAttributeListener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.EventListener;
-
-/**
- * Implementations of this interface receive notifications of
- * * changes to the attribute list on the servlet context of a web application.
- * To receive notification events, the implementation class
- * must be configured in the deployment descriptor for the web application.
- *
- * @version $Rev$ $Date$
- * @see ServletContextAttributeEvent
- * @since v 2.3
- */
-public interface ServletContextAttributeListener extends EventListener {
-    /**
-     * Notification that a new attribute was added to the servlet context. Called after the attribute is added.
-     */
-    void attributeAdded(ServletContextAttributeEvent scab);
-
-    /**
-     * Notification that an existing attribute has been removed from the servlet context. Called after the attribute is removed.
-     */
-    void attributeRemoved(ServletContextAttributeEvent scab);
-
-    /**
-     * Notification that an attribute on the servlet context has been replaced. Called after the attribute is replaced.
-     */
-    void attributeReplaced(ServletContextAttributeEvent scab);
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextEvent.java
deleted file mode 100644
index cd6dc15..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextEvent.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-
-/**
- * This is the event class for notifications about changes to
- * the servlet context of a web application.
- *
- * @version $Rev$ $Date$
- * @see ServletContextListener
- * @since v 2.3
- */
-
-public class ServletContextEvent extends java.util.EventObject {
-
-    /**
-     * Construct a ServletContextEvent from the given context.
-     *
-     * @param source - the ServletContext that is sending the event.
-     */
-    public ServletContextEvent(ServletContext source) {
-        super(source);
-    }
-
-    /**
-     * Return the ServletContext that changed.
-     *
-     * @return the ServletContext that sent the event.
-     */
-    public ServletContext getServletContext() {
-        return (ServletContext) super.getSource();
-    }
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextListener.java
deleted file mode 100644
index 002d4ea..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletContextListener.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.EventListener;
-
-/**
- * Implementations of this interface receive notifications about
- * changes to the servlet context of the web application they are
- * part of.
- * To receive notification events, the implementation class
- * must be configured in the deployment descriptor for the web
- * application.
- *
- * @version $Rev$ $Date$
- * @see ServletContextEvent
- * @since v 2.3
- */
-
-public interface ServletContextListener extends EventListener {
-
-    /**
-     * Notification that the web application initialization
-     * process is starting.
-     * All ServletContextListeners are notified of context
-     * initialization before any filter or servlet in the web
-     * application is initialized.
-     */
-    void contextInitialized(ServletContextEvent sce);
-
-    /**
-     * Notification that the servlet context is about to be shut down.
-     * All servlets and filters have been destroy()ed before any
-     * ServletContextListeners are notified of context
-     * destruction.
-     */
-    void contextDestroyed(ServletContextEvent sce);
-    
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletException.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletException.java
deleted file mode 100644
index 8f063f0..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletException.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-
-/**
- * Defines a general exception a servlet can throw when it
- * encounters difficulty.
- *
- * @author 	Various
- * @version $Rev$ $Date$
- */
-public class ServletException extends Exception {
-
-    /**
-     * Constructs a new servlet exception.
-     */
-    public ServletException() {
-        super();
-    }
-
-    /**
-     * Constructs a new servlet exception with the
-     * specified message. The message can be written 
-     * to the server log and/or displayed for the user. 
-     *
-     * @param message 		a <code>String</code> 
-     *				specifying the text of 
-     *				the exception message
-     */
-    public ServletException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructs a new servlet exception when the servlet 
-     * needs to throw an exception and include a message 
-     * about the "root cause" exception that interfered with its 
-     * normal operation, including a description message.
-     *
-     * @param message 		a <code>String</code> containing 
-     *				the text of the exception message
-     *
-     * @param rootCause		the <code>Throwable</code> exception 
-     *				that interfered with the servlet's
-     *				normal operation, making this servlet
-     *				exception necessary
-     */
-    public ServletException(String message, Throwable rootCause) {
-        super(message, rootCause);
-    }
-
-    /**
-     * Constructs a new servlet exception when the servlet 
-     * needs to throw an exception and include a message
-     * about the "root cause" exception that interfered with its
-     * normal operation.  The exception's message is based on the localized
-     * message of the underlying exception.
-     *
-     * <p>This method calls the <code>getLocalizedMessage</code> method
-     * on the <code>Throwable</code> exception to get a localized exception
-     * message. When subclassing <code>ServletException</code>, 
-     * this method can be overridden to create an exception message 
-     * designed for a specific locale.
-     *
-     * @param rootCause 	the <code>Throwable</code> exception
-     * 				that interfered with the servlet's
-     *				normal operation, making the servlet exception
-     *				necessary
-     */
-    public ServletException(Throwable rootCause) {
-        super(rootCause);
-    }
-
-    /**
-     * Returns the exception that caused this servlet exception.
-     *
-     * @return			the <code>Throwable</code> 
-     *				that caused this servlet exception
-     */
-    public Throwable getRootCause() {
-        return getCause();
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletInputStream.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletInputStream.java
deleted file mode 100644
index 48c353d..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletInputStream.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Provides an input stream for reading binary data from a client
- * request, including an efficient <code>readLine</code> method
- * for reading data one line at a time. With some protocols, such
- * as HTTP POST and PUT, a <code>ServletInputStream</code>
- * object can be used to read data sent from the client.
- * <p/>
- * <p>A <code>ServletInputStream</code> object is normally retrieved via
- * the {@link ServletRequest#getInputStream} method.
- * <p/>
- * <p/>
- * <p>This is an abstract class that a servlet container implements.
- * Subclasses of this class
- * must implement the <code>java.io.InputStream.read()</code> method.
- *
- * @version $Rev$ $Date$
- * @see                ServletRequest
- */
-
-public abstract class ServletInputStream extends InputStream {
-
-    /**
-     * Does nothing, because this is an abstract class.
-     */
-    protected ServletInputStream() {
-    }
-
-    /**
-     * Reads the input stream, one line at a time. Starting at an
-     * offset, reads bytes into an array, until it reads a certain number
-     * of bytes or reaches a newline character, which it reads into the
-     * array as well.
-     * <p/>
-     * <p>This method returns -1 if it reaches the end of the input
-     * stream before reading the maximum number of bytes.
-     *
-     * @param b   an array of bytes into which data is read
-     * @param off an integer specifying the character at which
-     *            this method begins reading
-     * @param len an integer specifying the maximum number of
-     *            bytes to read
-     * @throws IOException if an input or output exception has occurred
-     * @return an integer specifying the actual number of bytes
-     * read, or -1 if the end of the stream is reached
-     */
-    public int readLine(byte[] b, int off, int len) throws IOException {
-
-        if (len <= 0) {
-            return 0;
-        }
-        int count = 0, c;
-
-        while ((c = read()) != -1) {
-            b[off++] = (byte) c;
-            count++;
-            if (c == '\n' || count == len) {
-                break;
-            }
-        }
-        return count > 0 ? count : -1;
-    }
-    
-}
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletOutputStream.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletOutputStream.java
deleted file mode 100644
index d393af0..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletOutputStream.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.OutputStream;
-import java.io.IOException;
-import java.io.CharConversionException;
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-
-/**
- * Provides an output stream for sending binary data to the
- * client. A <code>ServletOutputStream</code> object is normally retrieved
- * via the {@link ServletResponse#getOutputStream} method.
- * <p/>
- * <p>This is an abstract class that the servlet container implements.
- * Subclasses of this class
- * must implement the <code>java.io.OutputStream.write(int)</code>
- * method.
- *
- * @version $Rev$ $Date$
- * @see ServletResponse
- */
-
-public abstract class ServletOutputStream extends OutputStream {
-
-    private static final String LSTRING_FILE = "javax.servlet.LocalStrings";
-    private static ResourceBundle lStrings = ResourceBundle.getBundle(LSTRING_FILE);
-
-    /**
-     * Does nothing, because this is an abstract class.
-     */
-    protected ServletOutputStream() {
-    }
-
-    /**
-     * Writes a <code>String</code> to the client,
-     * without a carriage return-line feed (CRLF)
-     * character at the end.
-     *
-     * @param s the <code>String</code> to send to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void print(String s) throws IOException {
-        if (s == null) s = "null";
-        int len = s.length();
-        for (int i = 0; i < len; i++) {
-            char c = s.charAt(i);
-
-            //
-            // XXX NOTE:  This is clearly incorrect for many strings,
-            // but is the only consistent approach within the current
-            // servlet framework.  It must suffice until servlet output
-            // streams properly encode their output.
-            //
-            if ((c & 0xff00) != 0) {        // high order byte must be zero
-                String errMsg = lStrings.getString("err.not_iso8859_1");
-                Object[] errArgs = new Object[1];
-                errArgs[0] = c;
-                errMsg = MessageFormat.format(errMsg, errArgs);
-                throw new CharConversionException(errMsg);
-            }
-            write(c);
-        }
-    }
-
-    /**
-     * Writes a <code>boolean</code> value to the client,
-     * with no carriage return-line feed (CRLF)
-     * character at the end.
-     *
-     * @param b the <code>boolean</code> value
-     *          to send to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void print(boolean b) throws IOException {
-        String msg;
-        if (b) {
-            msg = lStrings.getString("value.true");
-        } else {
-            msg = lStrings.getString("value.false");
-        }
-        print(msg);
-    }
-
-    /**
-     * Writes a character to the client,
-     * with no carriage return-line feed (CRLF)
-     * at the end.
-     *
-     * @param c the character to send to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void print(char c) throws IOException {
-        print(String.valueOf(c));
-    }
-
-    /**
-     * Writes an int to the client,
-     * with no carriage return-line feed (CRLF)
-     * at the end.
-     *
-     * @param i the int to send to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void print(int i) throws IOException {
-        print(String.valueOf(i));
-    }
-
-    /**
-     * Writes a <code>long</code> value to the client,
-     * with no carriage return-line feed (CRLF) at the end.
-     *
-     * @param l the <code>long</code> value
-     *          to send to the client
-     * @throws IOException if an input or output exception
-     *                     occurred
-     */
-    public void print(long l) throws IOException {
-        print(String.valueOf(l));
-    }
-
-    /**
-     * Writes a <code>float</code> value to the client,
-     * with no carriage return-line feed (CRLF) at the end.
-     *
-     * @param f the <code>float</code> value
-     *          to send to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void print(float f) throws IOException {
-        print(String.valueOf(f));
-    }
-
-    /**
-     * Writes a <code>double</code> value to the client,
-     * with no carriage return-line feed (CRLF) at the end.
-     *
-     * @param d the <code>double</code> value
-     *          to send to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void print(double d) throws IOException {
-        print(String.valueOf(d));
-    }
-
-    /**
-     * Writes a carriage return-line feed (CRLF)
-     * to the client.
-     *
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println() throws IOException {
-        print("\r\n");
-    }
-
-    /**
-     * Writes a <code>String</code> to the client,
-     * followed by a carriage return-line feed (CRLF).
-     *
-     * @param s the <code>String</code> to write to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println(String s) throws IOException {
-        print(s);
-        println();
-    }
-
-    /**
-     * Writes a <code>boolean</code> value to the client,
-     * followed by a
-     * carriage return-line feed (CRLF).
-     *
-     * @param b the <code>boolean</code> value
-     *          to write to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println(boolean b) throws IOException {
-        print(b);
-        println();
-    }
-
-    /**
-     * Writes a character to the client, followed by a carriage
-     * return-line feed (CRLF).
-     *
-     * @param c the character to write to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println(char c) throws IOException {
-        print(c);
-        println();
-    }
-
-    /**
-     * Writes an int to the client, followed by a
-     * carriage return-line feed (CRLF) character.
-     *
-     * @param i the int to write to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println(int i) throws IOException {
-        print(i);
-        println();
-    }
-
-    /**
-     * Writes a <code>long</code> value to the client, followed by a
-     * carriage return-line feed (CRLF).
-     *
-     * @param l the <code>long</code> value to write to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println(long l) throws IOException {
-        print(l);
-        println();
-    }
-
-    /**
-     * Writes a <code>float</code> value to the client,
-     * followed by a carriage return-line feed (CRLF).
-     *
-     * @param f the <code>float</code> value
-     *          to write to the client
-     * @throws IOException if an input or output exception
-     *                     occurred
-     */
-    public void println(float f) throws IOException {
-        print(f);
-        println();
-    }
-
-    /**
-     * Writes a <code>double</code> value to the client,
-     * followed by a carriage return-line feed (CRLF).
-     *
-     * @param d the <code>double</code> value
-     *          to write to the client
-     * @throws IOException if an input or output exception occurred
-     */
-    public void println(double d) throws IOException {
-        print(d);
-        println();
-    }
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRegistration.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRegistration.java
deleted file mode 100644
index a1221e9..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRegistration.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public interface ServletRegistration extends Registration {
-
-    /**
-     *
-     * @param urlPatterns patterns to map
-     * @return patterns already mapped to another servlet
-     */
-    Set<String> addMapping(String... urlPatterns);
-
-    Collection<String> getMappings();
-
-    String getRunAsRole();
-
-    public interface Dynamic extends ServletRegistration, Registration.Dynamic {
-
-        void setLoadOnStartup(int loadOnStartup);
-
-        void setMultipartConfig(MultipartConfigElement element);
-
-        void setRunAsRole(String role);
-
-        /**
-         *
-         * @param securityElement
-         * @return set of url mappings that were not changed
-         */
-        Set<String> setServletSecurity(ServletSecurityElement securityElement);
-        
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequest.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequest.java
deleted file mode 100644
index 0bd66e7..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequest.java
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Defines an object to provide client request information to a servlet.  The
- * servlet container creates a <code>ServletRequest</code> object and passes
- * it as an argument to the servlet's <code>service</code> method.
- * <p/>
- * <p>A <code>ServletRequest</code> object provides data including
- * parameter name and values, attributes, and an input stream.
- * Interfaces that extend <code>ServletRequest</code> can provide
- * additional protocol-specific data (for example, HTTP data is
- * provided by {@link javax.servlet.http.HttpServletRequest}.
- *
- * @see javax.servlet.http.HttpServletRequest
- * @version $Rev$ $Date$
- */
-
-public interface ServletRequest {
-
-    /**
-     * @return async context
-     * @since Servlet 3.0
-     */
-    AsyncContext getAsyncContext();
-
-    /**
-     * Returns the value of the named attribute as an <code>Object</code>,
-     * or <code>null</code> if no attribute of the given name exists.
-     * <p/>
-     * <p> Attributes can be set two ways.  The servlet container may set
-     * attributes to make available custom information about a request.
-     * For example, for requests made using HTTPS, the attribute
-     * <code>javax.servlet.request.X509Certificate</code> can be used to
-     * retrieve information on the certificate of the client.  Attributes
-     * can also be set programatically using
-     * {@link ServletRequest#setAttribute}.  This allows information to be
-     * embedded into a request before a {@link RequestDispatcher} call.
-     * <p/>
-     * <p>Attribute names should follow the same conventions as package
-     * names. This specification reserves names matching <code>java.*</code>,
-     * <code>javax.*</code>, and <code>sun.*</code>.
-     *
-     * @param name a <code>String</code> specifying the name of
-     *             the attribute
-     * @return an <code>Object</code> containing the value
-     *         of the attribute, or <code>null</code> if
-     *         the attribute does not exist
-     */
-    Object getAttribute(String name);
-
-    /**
-     * Returns an <code>Enumeration</code> containing the
-     * names of the attributes available to this request.
-     * This method returns an empty <code>Enumeration</code>
-     * if the request has no attributes available to it.
-     *
-     * @return an <code>Enumeration</code> of strings
-     *         containing the names
-     *         of the request's attributes
-     */
-    Enumeration<String> getAttributeNames();
-
-    /**
-     * Returns the name of the character encoding used in the body of this
-     * request. This method returns <code>null</code> if the request
-     * does not specify a character encoding
-     *
-     * @return a <code>String</code> containing the name of
-     *         the character encoding, or <code>null</code>
-     *         if the request does not specify a character encoding
-     */
-    String getCharacterEncoding();
-
-    /**
-     * Returns the length, in bytes, of the request body
-     * and made available by the input stream, or -1 if the
-     * length is not known. For HTTP servlets, same as the value
-     * of the CGI variable CONTENT_LENGTH.
-     *
-     * @return an integer containing the length of the
-     *         request body or -1 if the length is not known
-     */
-    int getContentLength();
-
-    /**
-     * Returns the MIME type of the body of the request, or
-     * <code>null</code> if the type is not known. For HTTP servlets,
-     * same as the value of the CGI variable CONTENT_TYPE.
-     *
-     * @return a <code>String</code> containing the name
-     *         of the MIME type of
-     *         the request, or null if the type is not known
-     */
-    String getContentType();
-
-    /**
-     * @since Servlet 3.0
-     * @return dispatcher type
-     */
-    DispatcherType getDispatcherType();
-
-    /**
-     * Retrieves the body of the request as binary data using
-     * a {@link ServletInputStream}.  Either this method or
-     * {@link #getReader} may be called to read the body, not both.
-     *
-     * @return a {@link ServletInputStream} object containing
-     *         the body of the request
-     * @throws IllegalStateException if the {@link #getReader} method
-     *                               has already been called for this request
-     * @throws IOException           if an input or output exception occurred
-     */
-    ServletInputStream getInputStream() throws IOException;
-
-    /**
-     * Returns the Internet Protocol (IP) address of the interface on
-     * which the request  was received.
-     *
-     * @return a <code>String</code> containing the
-     *         IP address on which the request was received.
-     * @since 2.4
-     */
-    String getLocalAddr();
-
-    /**
-     * Returns the preferred <code>Locale</code> that the client will
-     * accept content in, based on the Accept-Language header.
-     * If the client request doesn't provide an Accept-Language header,
-     * this method returns the default locale for the server.
-     *
-     * @return the preferred <code>Locale</code> for the client
-     */
-    Locale getLocale();
-
-    /**
-     * Returns an <code>Enumeration</code> of <code>Locale</code> objects
-     * indicating, in decreasing order starting with the preferred locale, the
-     * locales that are acceptable to the client based on the Accept-Language
-     * header.
-     * If the client request doesn't provide an Accept-Language header,
-     * this method returns an <code>Enumeration</code> containing one
-     * <code>Locale</code>, the default locale for the server.
-     *
-     * @return an <code>Enumeration</code> of preferred
-     *         <code>Locale</code> objects for the client
-     */
-    Enumeration<Locale> getLocales();
-
-    /**
-     * Returns the host name of the Internet Protocol (IP) interface on
-     * which the request was received.
-     *
-     * @return a <code>String</code> containing the host
-     *         name of the IP on which the request was received.
-     * @since 2.4
-     */
-    String getLocalName();
-
-    /**
-     * Returns the Internet Protocol (IP) port number of the interface
-     * on which the request was received.
-     *
-     * @return an integer specifying the port number
-     * @since 2.4
-     */
-    int getLocalPort();
-
-     /**
-     * Returns the value of a request parameter as a <code>String</code>,
-     * or <code>null</code> if the parameter does not exist. Request parameters
-     * are extra information sent with the request.  For HTTP servlets,
-     * parameters are contained in the query string or posted form data.
-     * <p/>
-     * <p>You should only use this method when you are sure the
-     * parameter has only one value. If the parameter might have
-     * more than one value, use {@link #getParameterValues}.
-     * <p/>
-     * <p>If you use this method with a multivalued
-     * parameter, the value returned is equal to the first value
-     * in the array returned by <code>getParameterValues</code>.
-     * <p/>
-     * <p>If the parameter data was sent in the request body, such as occurs
-     * with an HTTP POST request, then reading the body directly via {@link
-     * #getInputStream} or {@link #getReader} can interfere
-     * with the execution of this method.
-     *
-     * @param name a <code>String</code> specifying the
-     *             name of the parameter
-     * @return a <code>String</code> representing the
-     *         single value of the parameter
-     * @see #getParameterValues
-     */
-    String getParameter(String name);
-
-    /**
-     * Returns a java.util.Map of the parameters of this request.
-     * Request parameters
-     * are extra information sent with the request.  For HTTP servlets,
-     * parameters are contained in the query string or posted form data.
-     *
-     * @return an immutable java.util.Map containing parameter names as
-     *         keys and parameter values as map values. The keys in the parameter
-     *         map are of type String. The values in the parameter map are of type
-     *         String array.
-     */
-    Map<String, String[]> getParameterMap();
-
-    /**
-     * Returns an <code>Enumeration</code> of <code>String</code>
-     * objects containing the names of the parameters contained
-     * in this request. If the request has
-     * no parameters, the method returns an
-     * empty <code>Enumeration</code>.
-     *
-     * @return an <code>Enumeration</code> of <code>String</code>
-     *         objects, each <code>String</code> containing
-     *         the name of a request parameter; or an
-     *         empty <code>Enumeration</code> if the
-     *         request has no parameters
-     */
-    Enumeration<String> getParameterNames();
-
-    /**
-     * Returns an array of <code>String</code> objects containing
-     * all of the values the given request parameter has, or
-     * <code>null</code> if the parameter does not exist.
-     * <p/>
-     * <p>If the parameter has a single value, the array has a length
-     * of 1.
-     *
-     * @param name a <code>String</code> containing the name of
-     *             the parameter whose value is requested
-     * @return an array of <code>String</code> objects
-     *         containing the parameter's values
-     * @see #getParameter
-     */
-
-    String[] getParameterValues(String name);
-
-    /**
-     * Returns the name and version of the protocol the request uses
-     * in the form <i>protocol/majorVersion.minorVersion</i>, for
-     * example, HTTP/1.1. For HTTP servlets, the value
-     * returned is the same as the value of the CGI variable
-     * <code>SERVER_PROTOCOL</code>.
-     *
-     * @return a <code>String</code> containing the protocol
-     *         name and version number
-     */
-    String getProtocol();
-
-    /**
-     * Retrieves the body of the request as character data using
-     * a <code>BufferedReader</code>.  The reader translates the character
-     * data according to the character encoding used on the body.
-     * Either this method or {@link #getInputStream} may be called to read the
-     * body, not both.
-     *
-     * @return a <code>BufferedReader</code>
-     *         containing the body of the request
-     * @throws java.io.UnsupportedEncodingException
-     *                               if the character set encoding
-     *                               used is not supported and the
-     *                               text cannot be decoded
-     * @throws IllegalStateException if {@link #getInputStream} method
-     *                               has been called on this request
-     * @throws IOException           if an input or output exception occurred
-     * @see #getInputStream
-     */
-    BufferedReader getReader() throws IOException;
-
-    /**
-     * @deprecated As of Version 2.1 of the Java Servlet API,
-     *             use {@link ServletContext#getRealPath} instead.
-     */
-    String getRealPath(String path);
-
-    /**
-     * Returns the Internet Protocol (IP) address of the client
-     * or last proxy that sent the request.
-     * For HTTP servlets, same as the value of the
-     * CGI variable <code>REMOTE_ADDR</code>.
-     *
-     * @return a <code>String</code> containing the
-     *         IP address of the client that sent the request
-     */
-    String getRemoteAddr();
-
-    /**
-     * Returns the fully qualified name of the client
-     * or the last proxy that sent the request.
-     * If the engine cannot or chooses not to resolve the hostname
-     * (to improve performance), this method returns the dotted-string form of
-     * the IP address. For HTTP servlets, same as the value of the CGI variable
-     * <code>REMOTE_HOST</code>.
-     *
-     * @return a <code>String</code> containing the fully
-     *         qualified name of the client
-     */
-    String getRemoteHost();
-
-     /**
-      * Returns the Internet Protocol (IP) source port of the client
-      * or last proxy that sent the request.
-      *
-      * @return an integer specifying the port number
-      * @since 2.4
-      */
-     int getRemotePort();
-
-    /**
-     * Returns a {@link RequestDispatcher} object that acts as a wrapper for
-     * the resource located at the given path.
-     * A <code>RequestDispatcher</code> object can be used to forward
-     * a request to the resource or to include the resource in a response.
-     * The resource can be dynamic or static.
-     * <p/>
-     * <p>The pathname specified may be relative, although it cannot extend
-     * outside the current servlet context.  If the path begins with
-     * a "/" it is interpreted as relative to the current context root.
-     * This method returns <code>null</code> if the servlet container
-     * cannot return a <code>RequestDispatcher</code>.
-     * <p/>
-     * <p>The difference between this method and {@link
-     * ServletContext#getRequestDispatcher} is that this method can take a
-     * relative path.
-     *
-     * @param path a <code>String</code> specifying the pathname
-     *             to the resource. If it is relative, it must be
-     *             relative against the current servlet.
-     * @return a <code>RequestDispatcher</code> object
-     *         that acts as a wrapper for the resource
-     *         at the specified path, or <code>null</code>
-     *         if the servlet container cannot return a
-     *         <code>RequestDispatcher</code>
-     * @see RequestDispatcher
-     * @see ServletContext#getRequestDispatcher
-     */
-    RequestDispatcher getRequestDispatcher(String path);
-
-    /**
-     * Returns the name of the scheme used to make this request,
-     * for example,
-     * <code>http</code>, <code>https</code>, or <code>ftp</code>.
-     * Different schemes have different rules for constructing URLs,
-     * as noted in RFC 1738.
-     *
-     * @return a <code>String</code> containing the name
-     *         of the scheme used to make this request
-     */
-    String getScheme();
-
-    /**
-     * Returns the host name of the server to which the request was sent.
-     * It is the value of the part before ":" in the <code>Host</code>
-     * header value, if any, or the resolved server name, or the server IP address.
-     *
-     * @return a <code>String</code> containing the name
-     *         of the server
-     */
-    String getServerName();
-
-    /**
-     * Returns the port number to which the request was sent.
-     * It is the value of the part after ":" in the <code>Host</code>
-     * header value, if any, or the server port where the client connection
-     * was accepted on.
-     *
-     * @return an integer specifying the port number
-     */
-    int getServerPort();
-
-    /**
-      * Get the servlet context the request-response pair was last dispatched through.
-      *
-      * @return the latest ServletContext on the dispatch chain.
-      * @since 3.0
-      */
-     ServletContext getServletContext();
-
-    /**
-     * @since Servlet 3.0
-     * @return if async is started
-     */
-    boolean isAsyncStarted();
-
-    /**
-     * @since Servlet 3.0
-     * @return if async is supported
-     */
-    boolean isAsyncSupported();
-
-    /**
-     * Returns a boolean indicating whether this request was made using a
-     * secure channel, such as HTTPS.
-     *
-     * @return a boolean indicating if the request was made using a
-     *         secure channel
-     */
-    boolean isSecure();
-
-    /**
-     * Removes an attribute from this request.  This method is not
-     * generally needed as attributes only persist as long as the request
-     * is being handled.
-     * <p/>
-     * <p>Attribute names should follow the same conventions as
-     * package names. Names beginning with <code>java.*</code>,
-     * <code>javax.*</code>, and <code>com.sun.*</code>, are
-     * reserved for use by Sun Microsystems.
-     *
-     * @param name a <code>String</code> specifying
-     *             the name of the attribute to remove
-     */
-    void removeAttribute(String name);
-
-    /**
-     * Stores an attribute in this request.
-     * Attributes are reset between requests.  This method is most
-     * often used in conjunction with {@link RequestDispatcher}.
-     * <p/>
-     * <p>Attribute names should follow the same conventions as
-     * package names. Names beginning with <code>java.*</code>,
-     * <code>javax.*</code>, and <code>com.sun.*</code>, are
-     * reserved for use by Sun Microsystems.
-     * <br> If the object passed in is null, the effect is the same as
-     * calling {@link #removeAttribute}.
-     * <br> It is warned that when the request is dispatched from the
-     * servlet resides in a different web application by
-     * <code>RequestDispatcher</code>, the object set by this method
-     * may not be correctly retrieved in the caller servlet.
-     *
-     * @param name a <code>String</code> specifying
-     *             the name of the attribute
-     * @param o    the <code>Object</code> to be stored
-     */
-    void setAttribute(String name, Object o);
-    
-    /**
-     * Overrides the name of the character encoding used in the body of this
-     * request. This method must be called prior to reading request parameters
-     * or reading input using getReader().
-     *
-     * @param env a <code>String</code> containing the name of
-     *            the character encoding.
-     * @throws java.io.UnsupportedEncodingException
-     *          if this is not a valid encoding
-     */
-    void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException;
-
-    /**
-     *
-     * @return AsyncContext to control further work, initialized with the original request and response
-     * @since 3.0
-     */
-    AsyncContext startAsync();
-
-    /**
-     *
-     * @param request servlet request
-     * @param response servlet response
-     * @return AsyncContext to control further work, initialized with the supplied request and response
-     * @since 3.0
-     */
-    AsyncContext startAsync(ServletRequest request, ServletResponse response);
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestAttributeEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestAttributeEvent.java
deleted file mode 100644
index 935298c..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestAttributeEvent.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-
-/**
- * This is the event class for notifications of changes to the
- * attributes of the servlet request in an application.
- *
- * @since Servlet 2.4
- * @see ServletRequestAttributeListener
- * @version $Rev$ $Date$
- */
-
-public class ServletRequestAttributeEvent extends ServletRequestEvent {
-    private final String name;
-    private final Object value;
-
-    /**
-     * Construct a ServletRequestAttributeEvent giving the servlet context
-     * of this web application, the ServletRequest whose attributes are
-     * changing and the name and value of the attribute.
-     *
-     * @param sc      the ServletContext that is sending the event.
-     * @param request the ServletRequest that is sending the event.
-     * @param name    the name of the request attribute.
-     * @param value   the value of the request attribute.
-     */
-    public ServletRequestAttributeEvent(ServletContext sc, ServletRequest request, String name, Object value) {
-        super(sc, request);
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Return the name of the attribute that changed on the ServletRequest.
-     *
-     * @return the name of the changed request attribute
-     */
-    public String getName() {
-        return this.name;
-    }
-
-    /**
-     * Returns the value of the attribute that has been added, removed or
-     * replaced. If the attribute was added, this is the value of the
-     * attribute. If the attribute was removed, this is the value of the
-     * removed attribute. If the attribute was replaced, this is the old
-     * value of the attribute.
-     *
-     * @return the value of the changed request attribute
-     */
-    public Object getValue() {
-        return this.value;   
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestAttributeListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestAttributeListener.java
deleted file mode 100644
index 48d99c4..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestAttributeListener.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.EventListener;
-
-/**
- * A ServletRequestAttributeListener can be implemented by the
- * developer interested in being notified of request attribute
- * changes. Notifications will be generated while the request
- * is within the scope of the web application in which the listener
- * is registered. A request is defined as coming into scope when
- * it is about to enter the first servlet or filter in each web
- * application, as going out of scope when it exits the last servlet
- * or the first filter in the chain.
- *
- * @since Servlet 2.4
- * @version $Rev$ $Date$
- */
-
-public interface ServletRequestAttributeListener extends EventListener {
-    /**
-     * Notification that a new attribute was added to the
-     * * servlet request. Called after the attribute is added.
-     * @param srae event for attribute added
-     */
-    void attributeAdded(ServletRequestAttributeEvent srae);
-
-    /**
-     * Notification that an existing attribute has been removed from the
-     * * servlet request. Called after the attribute is removed.
-     * @param srae event for attribute removed
-     */
-    void attributeRemoved(ServletRequestAttributeEvent srae);
-
-    /**
-     * Notification that an attribute was replaced on the
-     * * servlet request. Called after the attribute is replaced.
-     * @param srae event for attribute replaced
-     */
-    void attributeReplaced(ServletRequestAttributeEvent srae);
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestEvent.java
deleted file mode 100644
index 5fa5c59..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-
-/**
- * Events of this kind indicate lifecycle
- * events for a ServletRequest.
- * The source of the event
- * is the ServletContext of this web application.
- *
- * @since Servlet 2.4
- * @see ServletRequestListener
- * @version $Rev$ $Date$
- */
-
-public class ServletRequestEvent extends java.util.EventObject {
-
-    private final ServletRequest request;
-
-    /**
-     * Construct a ServletRequestEvent for the given ServletContext
-     * and ServletRequest.
-     *
-     * @param sc      the ServletContext of the web application.
-     * @param request the ServletRequest that is sending the event.
-     */
-    public ServletRequestEvent(ServletContext sc, ServletRequest request) {
-        super(sc);
-        this.request = request;
-    }
-
-    /**
-     * Returns the ServletRequest that is changing.
-     */
-    public ServletRequest getServletRequest() {
-        return request;
-    }
-
-    /**
-     * Returns the ServletContext of this web application.
-     */
-    public ServletContext getServletContext() {
-        return (ServletContext) super.getSource();
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestListener.java
deleted file mode 100644
index 33dd6be..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestListener.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.EventListener;
-
-/**
- * A ServletRequestListener can be implemented by the developer
- * interested in being notified of requests coming in and out of
- * scope in a web component. A request is defined as coming into
- * scope when it is about to enter the first servlet or filter
- * in each web application, as going out of scope when it exits
- * the last servlet or the first filter in the chain.
- *
- * @since Servlet 2.4
- * @version $Rev$ $Date$
- */
-
-public interface ServletRequestListener extends EventListener {
-
-    /**
-     * The request is about to go out of scope of the web application.
-     *
-     * @param sre event containing request
-     */
-    void requestDestroyed(ServletRequestEvent sre);
-
-    /**
-     * The request is about to come into scope of the web application.
-     *
-     * @param sre event containing request
-     */
-    void requestInitialized(ServletRequestEvent sre);
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestWrapper.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestWrapper.java
deleted file mode 100644
index 966793b..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletRequestWrapper.java
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.Map;
-
-
-/**
- * Provides a convenient implementation of the ServletRequest interface that
- * can be subclassed by developers wishing to adapt the request to a Servlet.
- * This class implements the Wrapper or Decorator pattern. Methods default to
- * calling through to the wrapped request object.
- *
- * @version $Rev$ $Date$
- * @see javax.servlet.ServletRequest
- * @since v 2.3
- */
-
-public class ServletRequestWrapper implements ServletRequest {
-    private ServletRequest request;
-
-    /**
-     * Creates a ServletRequest adaptor wrapping the given request object.
-     *
-     * @param request request for this wrapper
-     * @throws java.lang.IllegalArgumentException
-     *          if the request is null
-     */
-    public ServletRequestWrapper(ServletRequest request) {
-        if (request == null) {
-            throw new IllegalArgumentException("Request cannot be null");
-        }
-        this.request = request;
-    }
-
-    /**
-     * Return the wrapped request object.
-     *
-     * @return the request for this wrapper
-     */
-    public ServletRequest getRequest() {
-        return this.request;
-    }
-
-    /**
-     * Sets the request object being wrapped.
-     *
-     * @param request request to set
-     * @throws java.lang.IllegalArgumentException
-     *          if the request is null.
-     */
-    public void setRequest(ServletRequest request) {
-        if (request == null) {
-            throw new IllegalArgumentException("Request cannot be null");
-        }
-        this.request = request;
-    }
-
-    /**
-     * The default behavior of this method is to call getAttribute(String name)
-     * on the wrapped request object.
-     */
-    public Object getAttribute(String name) {
-        return this.request.getAttribute(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getAttributeNames()
-     * on the wrapped request object.
-     */
-    public Enumeration<String> getAttributeNames() {
-        return this.request.getAttributeNames();
-    }
-
-    /**
-     * The default behavior of this method is to return getCharacterEncoding()
-     * on the wrapped request object.
-     */
-    public String getCharacterEncoding() {
-        return this.request.getCharacterEncoding();
-    }
-
-    /**
-     * The default behavior of this method is to set the character encoding
-     * on the wrapped request object.
-     */
-    public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException {
-        this.request.setCharacterEncoding(enc);
-    }
-
-    /**
-     * The default behavior of this method is to return getContentLength()
-     * on the wrapped request object.
-     */
-    public int getContentLength() {
-        return this.request.getContentLength();
-    }
-
-    /**
-     * The default behavior of this method is to return getContentType()
-     * on the wrapped request object.
-     */
-    public String getContentType() {
-        return this.request.getContentType();
-    }
-
-    /**
-     * The default behavior of this method is to return getInputStream()
-     * on the wrapped request object.
-     */
-    public ServletInputStream getInputStream() throws IOException {
-        return this.request.getInputStream();
-    }
-
-    /**
-     * The default behavior of this method is to return getParameter(String name)
-     * on the wrapped request object.
-     */
-    public String getParameter(String name) {
-        return this.request.getParameter(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getParameterMap()
-     * on the wrapped request object.
-     */
-    public Map<String, String[]> getParameterMap() {
-        return this.request.getParameterMap();
-    }
-
-    /**
-     * The default behavior of this method is to return getParameterNames()
-     * on the wrapped request object.
-     */
-    public Enumeration<String> getParameterNames() {
-        return this.request.getParameterNames();
-    }
-
-    /**
-     * The default behavior of this method is to return getParameterValues(String name)
-     * on the wrapped request object.
-     */
-    public String[] getParameterValues(String name) {
-        return this.request.getParameterValues(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getProtocol()
-     * on the wrapped request object.
-     */
-    public String getProtocol() {
-        return this.request.getProtocol();
-    }
-
-    /**
-     * The default behavior of this method is to return getScheme()
-     * on the wrapped request object.
-     */
-    public String getScheme() {
-        return this.request.getScheme();
-    }
-
-    /**
-     * The default behavior of this method is to return getServerName()
-     * on the wrapped request object.
-     */
-    public String getServerName() {
-        return this.request.getServerName();
-    }
-
-    /**
-     * The default behavior of this method is to return getServerPort()
-     * on the wrapped request object.
-     */
-    public int getServerPort() {
-        return this.request.getServerPort();
-    }
-
-    /**
-     * The default behavior of this method is to return getReader()
-     * on the wrapped request object.
-     */
-    public BufferedReader getReader() throws IOException {
-        return this.request.getReader();
-    }
-
-    /**
-     * The default behavior of this method is to return getRemoteAddr()
-     * on the wrapped request object.
-     */
-    public String getRemoteAddr() {
-        return this.request.getRemoteAddr();
-    }
-
-    /**
-     * The default behavior of this method is to return getRemoteHost()
-     * on the wrapped request object.
-     */
-    public String getRemoteHost() {
-        return this.request.getRemoteHost();
-    }
-
-    /**
-     * The default behavior of this method is to return setAttribute(String name, Object o)
-     * on the wrapped request object.
-     */
-    public void setAttribute(String name, Object o) {
-        this.request.setAttribute(name, o);
-    }
-
-    /**
-     * The default behavior of this method is to call removeAttribute(String name)
-     * on the wrapped request object.
-     */
-    public void removeAttribute(String name) {
-        this.request.removeAttribute(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getLocale()
-     * on the wrapped request object.
-     */
-    public Locale getLocale() {
-        return this.request.getLocale();
-    }
-
-    /**
-     * The default behavior of this method is to return getLocales()
-     * on the wrapped request object.
-     */
-    public Enumeration<Locale> getLocales() {
-        return this.request.getLocales();
-    }
-
-    /**
-     * The default behavior of this method is to return isSecure()
-     * on the wrapped request object.
-     */
-    public boolean isSecure() {
-        return this.request.isSecure();
-    }
-
-    /**
-     * The default behavior of this method is to return getRequestDispatcher(String path)
-     * on the wrapped request object.
-     */
-    public RequestDispatcher getRequestDispatcher(String path) {
-        return this.request.getRequestDispatcher(path);
-    }
-
-    /**
-     * The default behavior of this method is to return getRealPath(String path)
-     * on the wrapped request object.
-     */
-    public String getRealPath(String path) {
-        return this.request.getRealPath(path);
-    }
-
-    /**
-     * The default behavior of this method is to return
-     * getRemotePort() on the wrapped request object.
-     *
-     * @since 2.4
-     */
-    public int getRemotePort() {
-        return this.request.getRemotePort();
-    }
-
-    /**
-     * The default behavior of this method is to return
-     * getLocalName() on the wrapped request object.
-     *
-     * @since 2.4
-     */
-    public String getLocalName() {
-        return this.request.getLocalName();
-    }
-
-    /**
-     * The default behavior of this method is to return
-     * getLocalAddr() on the wrapped request object.
-     *
-     * @since 2.4
-     */
-    public String getLocalAddr() {
-        return this.request.getLocalAddr();
-    }
-
-    /**
-     * The default behavior of this method is to return
-     * getLocalPort() on the wrapped request object.
-     *
-     * @since 2.4
-     */
-    public int getLocalPort() {
-        return this.request.getLocalPort();
-    }
-
-    /**
-     * Get the servlet context the request-response pair was last dispatched through.
-     *
-     * @return the latest ServletContext on the dispatch chain.
-     * @since 3.0
-     */
-    public ServletContext getServletContext() {
-        return this.request.getServletContext();
-    }
-
-    public AsyncContext getAsyncContext() {
-        return this.request.getAsyncContext();
-    }
-
-    public boolean isAsyncStarted() {
-        return this.request.isAsyncStarted();
-    }
-
-    public boolean isAsyncSupported() {
-        return this.request.isAsyncSupported();
-    }
-
-    public AsyncContext startAsync() {
-        return this.request.startAsync();
-    }
-
-    public AsyncContext startAsync(ServletRequest request, ServletResponse response) {
-        return this.request.startAsync(request, response);
-    }
-
-    public DispatcherType getDispatcherType() {
-        return this.request.getDispatcherType();
-    }
-
-    public boolean isWrapperFor(Class wrappedType) {
-        if (this.request.getClass().isAssignableFrom(wrappedType)) {
-            return true;
-        }
-        if (this.request instanceof ServletRequestWrapper) {
-            return ((ServletRequestWrapper)this.request).isWrapperFor(wrappedType);
-        }
-        return false;
-    }
-
-    public boolean isWrapperFor(ServletRequest instance) {
-        if (instance == this.request) {
-            return true;
-        }
-        if (this.request instanceof ServletRequestWrapper) {
-            return ((ServletRequestWrapper)this.request).isWrapperFor(instance);
-        }
-        return false;
-    }
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletResponse.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletResponse.java
deleted file mode 100644
index 849e668..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletResponse.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Locale;
-
-
-/**
- * Defines an object to assist a servlet in sending a response to the client.
- * The servlet container creates a <code>ServletResponse</code> object and
- * passes it as an argument to the servlet's <code>service</code> method.
- * <p/>
- * <p>To send binary data in a MIME body response, use
- * the {@link ServletOutputStream} returned by {@link #getOutputStream}.
- * To send character data, use the <code>PrintWriter</code> object
- * returned by {@link #getWriter}. To mix binary and text data,
- * for example, to create a multipart response, use a
- * <code>ServletOutputStream</code> and manage the character sections
- * manually.
- * <p/>
- * <p>The charset for the MIME body response can be specified
- * explicitly using the {@link #setCharacterEncoding} and
- * {@link #setContentType} methods, or implicitly
- * using the {@link #setLocale} method.
- * Explicit specifications take precedence over
- * implicit specifications. If no charset is specified, ISO-8859-1 will be
- * used. The <code>setCharacterEncoding</code>,
- * <code>setContentType</code>, or <code>setLocale</code> method must
- * be called before <code>getWriter</code> and before committing
- * the response for the character encoding to be used.
- * <p/>
- * <p>See the Internet RFCs such as
- * <a href="http://www.ietf.org/rfc/rfc2045.txt">
- * RFC 2045</a> for more information on MIME. Protocols such as SMTP
- * and HTTP define profiles of MIME, and those standards
- * are still evolving.
- *
- * @version $Rev$ $Date$
- * @see                ServletOutputStream
- */
-
-public interface ServletResponse {
-
-    /**
-     * Forces any content in the buffer to be written to the client.  A call
-     * to this method automatically commits the response, meaning the status
-     * code and headers will be written.
-     *
-     * @see #setBufferSize
-     * @see #getBufferSize
-     * @see #isCommitted
-     * @see #reset
-     */
-    void flushBuffer() throws IOException;
-
-    /**
-     * Returns the actual buffer size used for the response.  If no buffering
-     * is used, this method returns 0.
-     *
-     * @return the actual buffer size used
-     * @see #setBufferSize
-     * @see #flushBuffer
-     * @see #isCommitted
-     * @see #reset
-     */
-    int getBufferSize();
-
-    /**
-     * Returns the name of the character encoding (MIME charset)
-     * used for the body sent in this response.
-     * The character encoding may have been specified explicitly
-     * using the {@link #setCharacterEncoding} or
-     * {@link #setContentType} methods, or implicitly using the
-     * {@link #setLocale} method. Explicit specifications take
-     * precedence over implicit specifications. Calls made
-     * to these methods after <code>getWriter</code> has been
-     * called or after the response has been committed have no
-     * effect on the character encoding. If no character encoding
-     * has been specified, <code>ISO-8859-1</code> is returned.
-     * <p>See RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
-     * for more information about character encoding and MIME.
-     *
-     * @return a <code>String</code> specifying the
-     * name of the character encoding, for
-     * example, <code>UTF-8</code>
-     */
-    String getCharacterEncoding();
-
-    /**
-     * Returns the content type used for the MIME body
-     * sent in this response. The content type proper must
-     * have been specified using {@link #setContentType}
-     * before the response is committed. If no content type
-     * has been specified, this method returns null.
-     * If a content type has been specified and a
-     * character encoding has been explicitly or implicitly
-     * specified as described in {@link #getCharacterEncoding},
-     * the charset parameter is included in the string returned.
-     * If no character encoding has been specified, the
-     * charset parameter is omitted.
-     *
-     * @return a <code>String</code> specifying the
-     * content type, for example,
-     * <code>text/html; charset=UTF-8</code>,
-     * or null
-     * @since 2.4
-     */
-    String getContentType();
-
-    /**
-     * Returns the locale specified for this response
-     * using the {@link #setLocale} method. Calls made to
-     * <code>setLocale</code> after the response is committed
-     * have no effect. If no locale has been specified,
-     * the container's default locale is returned.
-     *
-     * @return locale specified for this response
-     * @see #setLocale
-     */
-    Locale getLocale();
-
-    /**
-     * Returns a {@link ServletOutputStream} suitable for writing binary
-     * data in the response. The servlet container does not encode the
-     * binary data.
-     * <p/>
-     * <p> Calling flush() on the ServletOutputStream commits the response.
-     * <p/>
-     * Either this method or {@link #getWriter} may
-     * be called to write the body, not both.
-     *
-     * @throws IllegalStateException if the <code>getWriter</code> method
-     *                               has been called on this response
-     * @throws IOException           if an input or output exception occurred
-     * @return a {@link ServletOutputStream} for writing binary data
-     * @see #getWriter
-     */
-    ServletOutputStream getOutputStream() throws IOException;
-
-    /**
-     * Returns a <code>PrintWriter</code> object that
-     * can send character text to the client.
-     * The <code>PrintWriter</code> uses the character
-     * encoding returned by {@link #getCharacterEncoding}.
-     * If the response's character encoding has not been
-     * specified as described in <code>getCharacterEncoding</code>
-     * (i.e., the method just returns the default value
-     * <code>ISO-8859-1</code>), <code>getWriter</code>
-     * updates it to <code>ISO-8859-1</code>.
-     * <p>Calling flush() on the <code>PrintWriter</code>
-     * commits the response.
-     * <p>Either this method or {@link #getOutputStream} may be called
-     * to write the body, not both.
-     *
-     * @return a <code>PrintWriter</code> object that
-     *         can return character data to the client
-     * @throws java.io.UnsupportedEncodingException
-     *                               if the character encoding returned
-     *                               by <code>getCharacterEncoding</code> cannot be used
-     * @throws IllegalStateException if the <code>getOutputStream</code>
-     *                               method has already been called for this
-     *                               response object
-     * @throws IOException           if an input or output exception occurred
-     * @see #getOutputStream
-     * @see #setCharacterEncoding
-     */
-    PrintWriter getWriter() throws IOException;
-
-    /**
-     * Returns a boolean indicating if the response has been
-     * committed.  A committed response has already had its status
-     * code and headers written.
-     *
-     * @return a boolean indicating if the response has been
-     * committed
-     * @see #setBufferSize
-     * @see #getBufferSize
-     * @see #flushBuffer
-     * @see #reset
-     */
-    boolean isCommitted();
-
-    /**
-     * Clears any data that exists in the buffer as well as the status code and
-     * headers.  If the response has been committed, this method throws an
-     * <code>IllegalStateException</code>.
-     *
-     * @throws IllegalStateException if the response has already been
-     *                               committed
-     * @see #setBufferSize
-     * @see #getBufferSize
-     * @see #flushBuffer
-     * @see #isCommitted
-     */
-    void reset();
-
-    /**
-     * Clears the content of the underlying buffer in the response without
-     * clearing headers or status code. If the
-     * response has been committed, this method throws an
-     * <code>IllegalStateException</code>.
-     *
-     * @see #setBufferSize
-     * @see #getBufferSize
-     * @see #isCommitted
-     * @see #reset
-     * @since 2.3
-     */
-    void resetBuffer();
-
-    /**
-     * Sets the preferred buffer size for the body of the response.
-     * The servlet container will use a buffer at least as large as
-     * the size requested.  The actual buffer size used can be found
-     * using <code>getBufferSize</code>.
-     * <p/>
-     * <p>A larger buffer allows more content to be written before anything is
-     * actually sent, thus providing the servlet with more time to set
-     * appropriate status codes and headers.  A smaller buffer decreases
-     * server memory load and allows the client to start receiving data more
-     * quickly.
-     * <p/>
-     * <p>This method must be called before any response body content is
-     * written; if content has been written or the response object has
-     * been committed, this method throws an
-     * <code>IllegalStateException</code>.
-     *
-     * @param size the preferred buffer size
-     * @throws IllegalStateException if this method is called after
-     *                               content has been written
-     * @see #getBufferSize
-     * @see #flushBuffer
-     * @see #isCommitted
-     * @see #reset
-     */
-    void setBufferSize(int size);
-
-    /**
-     * Sets the character encoding (MIME charset) of the response
-     * being sent to the client, for example, to UTF-8.
-     * If the character encoding has already been set by
-     * {@link #setContentType} or {@link #setLocale},
-     * this method overrides it.
-     * Calling {@link #setContentType} with the <code>String</code>
-     * of <code>text/html</code> and calling
-     * this method with the <code>String</code> of <code>UTF-8</code>
-     * is equivalent with calling
-     * <code>setContentType</code> with the <code>String</code> of
-     * <code>text/html; charset=UTF-8</code>.
-     * <p>This method can be called repeatedly to change the character
-     * encoding.
-     * This method has no effect if it is called after
-     * <code>getWriter</code> has been
-     * called or after the response has been committed.
-     * <p>Containers must communicate the character encoding used for
-     * the servlet response's writer to the client if the protocol
-     * provides a way for doing so. In the case of HTTP, the character
-     * encoding is communicated as part of the <code>Content-Type</code>
-     * header for text media types. Note that the character encoding
-     * cannot be communicated via HTTP headers if the servlet does not
-     * specify a content type; however, it is still used to encode text
-     * written via the servlet response's writer.
-     *
-     * @param charset a String specifying only the character set
-     *                defined by IANA Character Sets
-     *                (http://www.iana.org/assignments/character-sets)
-     * @see                #setContentType #setLocale
-     * @since 2.4
-     */
-    void setCharacterEncoding(String charset);
-
-    /**
-     * Sets the length of the content body in the response
-     * In HTTP servlets, this method sets the HTTP Content-Length header.
-     *
-     * @param len an integer specifying the length of the
-     *            content being returned to the client; sets
-     *            the Content-Length header
-     */
-    void setContentLength(int len);
-
-    /**
-     * Sets the content type of the response being sent to
-     * the client, if the response has not been committed yet.
-     * The given content type may include a character encoding
-     * specification, for example, <code>text/html;charset=UTF-8</code>.
-     * The response's character encoding is only set from the given
-     * content type if this method is called before <code>getWriter</code>
-     * is called.
-     * <p>This method may be called repeatedly to change content type and
-     * character encoding.
-     * This method has no effect if called after the response
-     * has been committed. It does not set the response's character
-     * encoding if it is called after <code>getWriter</code>
-     * has been called or after the response has been committed.
-     * <p>Containers must communicate the content type and the character
-     * encoding used for the servlet response's writer to the client if
-     * the protocol provides a way for doing so. In the case of HTTP,
-     * the <code>Content-Type</code> header is used.
-     *
-     * @param type a <code>String</code> specifying the MIME
-     *             type of the content
-     * @see #setLocale
-     * @see #setCharacterEncoding
-     * @see #getOutputStream
-     * @see #getWriter
-     */
-    void setContentType(String type);
-
-
-    /**
-     * Sets the locale of the response, if the response has not been
-     * committed yet. It also sets the response's character encoding
-     * appropriately for the locale, if the character encoding has not
-     * been explicitly set using {@link #setContentType} or
-     * {@link #setCharacterEncoding}, <code>getWriter</code> hasn't
-     * been called yet, and the response hasn't been committed yet.
-     * If the deployment descriptor contains a
-     * <code>locale-encoding-mapping-list</code> element, and that
-     * element provides a mapping for the given locale, that mapping
-     * is used. Otherwise, the mapping from locale to character
-     * encoding is container dependent.
-     * <p>This method may be called repeatedly to change locale and
-     * character encoding. The method has no effect if called after the
-     * response has been committed. It does not set the response's
-     * character encoding if it is called after {@link #setContentType}
-     * has been called with a charset specification, after
-     * {@link #setCharacterEncoding} has been called, after
-     * <code>getWriter</code> has been called, or after the response
-     * has been committed.
-     * <p>Containers must communicate the locale and the character encoding
-     * used for the servlet response's writer to the client if the protocol
-     * provides a way for doing so. In the case of HTTP, the locale is
-     * communicated via the <code>Content-Language</code> header,
-     * the character encoding as part of the <code>Content-Type</code>
-     * header for text media types. Note that the character encoding
-     * cannot be communicated via HTTP headers if the servlet does not
-     * specify a content type; however, it is still used to encode text
-     * written via the servlet response's writer.
-     *
-     * @param loc the locale of the response
-     * @see #getLocale
-     * @see #setContentType
-     * @see #setCharacterEncoding
-     */
-    void setLocale(Locale loc);
-}
-
-
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletResponseWrapper.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletResponseWrapper.java
deleted file mode 100644
index f8aad9c..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletResponseWrapper.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.Locale;
-
-/**
- * Provides a convenient implementation of the ServletResponse interface that
- * can be subclassed by developers wishing to adapt the response from a Servlet.
- * This class implements the Wrapper or Decorator pattern. Methods default to
- * calling through to the wrapped response object.
- *
- * @version $Rev$ $Date$
- * @see javax.servlet.ServletResponse
- * @since v 2.3
- */
-
-public class ServletResponseWrapper implements ServletResponse {
-    private ServletResponse response;
-
-    /**
-     * Creates a ServletResponse adaptor wrapping the given response object.
-     *
-     * @param response response to wrap
-     * @throws java.lang.IllegalArgumentException
-     *          if the response is null.
-     */
-    public ServletResponseWrapper(ServletResponse response) {
-        if (response == null) {
-            throw new IllegalArgumentException("Response cannot be null");
-        }
-        this.response = response;
-    }
-
-    /**
-     * Return the wrapped ServletResponse object.
-     *
-     * @return wrapped response
-     */
-    public ServletResponse getResponse() {
-        return this.response;
-    }
-
-    /**
-     * Sets the response being wrapped.
-     *
-     * @param response response to wrap
-     * @throws java.lang.IllegalArgumentException
-     *          if the response is null.
-     */
-    public void setResponse(ServletResponse response) {
-        if (response == null) {
-            throw new IllegalArgumentException("Response cannot be null");
-        }
-        this.response = response;
-    }
-
-    /**
-     * The default behavior of this method is to call setCharacterEncoding(String charset)
-     * on the wrapped response object.
-     *
-     * @since 2.4
-     */
-    public void setCharacterEncoding(String charset) {
-        this.response.setCharacterEncoding(charset);
-    }
-
-    /**
-     * The default behavior of this method is to return getCharacterEncoding()
-     * on the wrapped response object.
-     */
-    public String getCharacterEncoding() {
-        return this.response.getCharacterEncoding();
-    }
-
-    /**
-     * The default behavior of this method is to return getOutputStream()
-     * on the wrapped response object.
-     */
-    public ServletOutputStream getOutputStream() throws IOException {
-        return this.response.getOutputStream();
-    }
-
-    /**
-     * The default behavior of this method is to return getWriter()
-     * on the wrapped response object.
-     */
-    public PrintWriter getWriter() throws IOException {
-        return this.response.getWriter();
-    }
-
-    /**
-     * The default behavior of this method is to call setContentLength(int len)
-     * on the wrapped response object.
-     */
-    public void setContentLength(int len) {
-        this.response.setContentLength(len);
-    }
-
-    /**
-     * The default behavior of this method is to call setContentType(String type)
-     * on the wrapped response object.
-     */
-    public void setContentType(String type) {
-        this.response.setContentType(type);
-    }
-
-    /**
-     * The default behavior of this method is to return getContentType()
-     * on the wrapped response object.
-     *
-     * @since 2.4
-     */
-    public String getContentType() {
-        return this.response.getContentType();
-    }
-
-    /**
-     * The default behavior of this method is to call setBufferSize(int size)
-     * on the wrapped response object.
-     */
-    public void setBufferSize(int size) {
-        this.response.setBufferSize(size);
-    }
-
-    /**
-     * The default behavior of this method is to return getBufferSize()
-     * on the wrapped response object.
-     */
-    public int getBufferSize() {
-        return this.response.getBufferSize();
-    }
-
-    /**
-     * The default behavior of this method is to call flushBuffer()
-     * on the wrapped response object.
-     */
-    public void flushBuffer() throws IOException {
-        this.response.flushBuffer();
-    }
-
-    /**
-     * The default behavior of this method is to return isCommitted()
-     * on the wrapped response object.
-     */
-    public boolean isCommitted() {
-        return this.response.isCommitted();
-    }
-
-    /**
-     * The default behavior of this method is to call reset()
-     * on the wrapped response object.
-     */
-    public void reset() {
-        this.response.reset();
-    }
-
-    /**
-     * The default behavior of this method is to call resetBuffer()
-     * on the wrapped response object.
-     */
-    public void resetBuffer() {
-        this.response.resetBuffer();
-    }
-
-    /**
-     * The default behavior of this method is to call setLocale(Locale loc)
-     * on the wrapped response object.
-     */
-    public void setLocale(Locale loc) {
-        this.response.setLocale(loc);
-    }
-
-    /**
-     * The default behavior of this method is to return getLocale()
-     * on the wrapped response object.
-     */
-    public Locale getLocale() {
-        return this.response.getLocale();
-    }
-
-    public boolean isWrapperFor(Class wrappedType) {
-        if (this.response.getClass().isAssignableFrom(wrappedType)) {
-            return true;
-        }
-        if (this.response instanceof ServletResponseWrapper) {
-            return ((ServletResponseWrapper)this.response).isWrapperFor(wrappedType);
-        }
-        return false;
-    }
-
-    public boolean isWrapperFor(ServletResponse instance) {
-        if (instance == this.response) {
-            return true;
-        }
-        if (this.response instanceof ServletResponseWrapper) {
-            return ((ServletResponseWrapper)this.response).isWrapperFor(instance);
-        }
-        return false;
-    }
-
-
-}
-
-
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletSecurityElement.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletSecurityElement.java
deleted file mode 100644
index 77d94cf..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/ServletSecurityElement.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-
-import javax.servlet.annotation.HttpMethodConstraint;
-import javax.servlet.annotation.ServletSecurity;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public class ServletSecurityElement extends HttpConstraintElement {
-
-    private final Collection<HttpMethodConstraintElement> httpMethodConstraints;
-
-    private final Collection<String> methodNames;
-
-    public ServletSecurityElement() {
-        httpMethodConstraints = Collections.emptySet();
-        methodNames = Collections.emptySet();
-    }
-
-    public ServletSecurityElement(HttpConstraintElement defaultHttpConstraintElement) {
-        super(defaultHttpConstraintElement.getEmptyRoleSemantic(), defaultHttpConstraintElement.getTransportGuarantee(), defaultHttpConstraintElement.getRolesAllowed());
-        httpMethodConstraints = Collections.emptySet();
-        methodNames = Collections.emptySet();
-    }
-
-    public ServletSecurityElement(Collection<HttpMethodConstraintElement> httpMethodConstraints) throws IllegalArgumentException {
-        this.httpMethodConstraints = httpMethodConstraints;
-        this.methodNames = toMethodNames(httpMethodConstraints);
-    }
-
-    public ServletSecurityElement(HttpConstraintElement httpConstraintElement, Collection<HttpMethodConstraintElement> httpMethodConstraints) throws IllegalArgumentException {
-        super(httpConstraintElement.getEmptyRoleSemantic(), httpConstraintElement.getTransportGuarantee(), httpConstraintElement.getRolesAllowed());
-        this.httpMethodConstraints = Collections.unmodifiableCollection(httpMethodConstraints);
-        this.methodNames = toMethodNames(httpMethodConstraints);
-    }
-
-    public ServletSecurityElement(ServletSecurity servletSecurity) throws IllegalArgumentException {
-        super(servletSecurity.value().value(), servletSecurity.value().transportGuarantee(), servletSecurity.value().rolesAllowed());
-        Collection<HttpMethodConstraintElement> httpMethodConstraints = new ArrayList<HttpMethodConstraintElement>();
-        for (HttpMethodConstraint constraint: servletSecurity.httpMethodConstraints()) {
-            httpMethodConstraints.add(new HttpMethodConstraintElement(constraint.value(),
-                    new HttpConstraintElement(constraint.emptyRoleSemantic(),
-                            constraint.transportGuarantee(),
-                            constraint.rolesAllowed())));
-        }
-        this.httpMethodConstraints = Collections.unmodifiableCollection(httpMethodConstraints);
-        methodNames = toMethodNames(httpMethodConstraints);
-    }
-
-    public Collection<HttpMethodConstraintElement> getHttpMethodConstraints() {
-        return httpMethodConstraints;
-    }
-
-    public Collection<String> getMethodNames() {
-        return methodNames;
-    }
-
-    private static Collection<String> toMethodNames(Collection<HttpMethodConstraintElement> constraints) throws IllegalArgumentException {
-        Collection<String> methodNames = new LinkedHashSet<String>(constraints.size());
-        for (HttpMethodConstraintElement constraint: constraints) {
-            if (!methodNames.add(constraint.getMethodName())) {
-                throw new IllegalArgumentException("duplicate method name: " + constraint.getMethodName());
-            }
-        }
-        return Collections.unmodifiableCollection(methodNames);
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SessionCookieConfig.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SessionCookieConfig.java
deleted file mode 100644
index f52480b..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SessionCookieConfig.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public interface SessionCookieConfig {
-
-    String getComment();
-
-    String getDomain();
-
-    /**
-     *
-     * @return max age in seconds for this session cookie
-     */
-    int getMaxAge();
-
-    String getName();
-
-    String getPath();
-
-    boolean isHttpOnly();
-
-    boolean isSecure();
-
-    void setComment(String comment);
-
-    void setDomain(String domain);
-
-    void setHttpOnly(boolean httpOnly);
-
-    void setMaxAge(int maxAge);
-
-    void setName(String name);
-
-    void setPath(String path);
-
-    void setSecure(boolean secure);
-    
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SessionTrackingMode.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SessionTrackingMode.java
deleted file mode 100644
index 4d03406..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SessionTrackingMode.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * Session tracking modes.  Expected order is shown at
- * http://javadoc.glassfish.org/javaee6/apidoc/javax/servlet/SessionTrackingMode.html
- * under "Enum constant details, not "Enum constant summary"
- *
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public enum SessionTrackingMode {
-
-    COOKIE,
-    URL,
-    SSL
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SingleThreadModel.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SingleThreadModel.java
deleted file mode 100644
index fb364b8..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/SingleThreadModel.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * Ensures that servlets handle
- * only one request at a time. This interface has no methods.
- *
- * <p>If a servlet implements this interface, you are <i>guaranteed</i>
- * that no two threads will execute concurrently in the
- * servlet's <code>service</code> method. The servlet container
- * can make this guarantee by synchronizing access to a single
- * instance of the servlet, or by maintaining a pool of servlet
- * instances and dispatching each new request to a free servlet.
- *
- * <p>Note that SingleThreadModel does not solve all thread safety
- * issues.  For example, session attributes and static variables can
- * still be accessed by multiple requests on multiple threads
- * at the same time, even when SingleThreadModel servlets are used.
- * It is recommended that a developer take other means to resolve
- * those issues instead of implementing this interface, such as
- * avoiding the usage of an instance variable or synchronizing
- * the block of the code accessing those resources.
- * This interface is deprecated in Servlet API version 2.4.
- *
- * @version $Rev$ $Date$
- *
- * @deprecated	As of Java Servlet API 2.4, with no direct
- *	replacement.
- */
-
-public interface SingleThreadModel {
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/UnavailableException.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/UnavailableException.java
deleted file mode 100644
index 8f7edab..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/UnavailableException.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet;
-
-/**
- * Defines an exception that a servlet or filter throws to indicate
- * that it is permanently or temporarily unavailable.
- * <p/>
- * <p>When a servlet or filter is permanently unavailable, something is wrong
- * with it, and it cannot handle
- * requests until some action is taken. For example, a servlet
- * might be configured incorrectly, or a filter's state may be corrupted.
- * The component should log both the error and the corrective action
- * that is needed.
- * <p/>
- * <p>A servlet or filter is temporarily unavailable if it cannot handle
- * requests momentarily due to some system-wide problem. For example,
- * a third-tier server might not be accessible, or there may be
- * insufficient memory or disk storage to handle requests. A system
- * administrator may need to take corrective action.
- * <p/>
- * <p>Servlet containers can safely treat both types of unavailable
- * exceptions in the same way. However, treating temporary unavailability
- * effectively makes the servlet container more robust. Specifically,
- * the servlet container might block requests to the servlet or filter for a period
- * of time suggested by the exception, rather than rejecting them until
- * the servlet container restarts.
- *
- * @version $Rev$ $Date$
- */
-
-public class UnavailableException extends ServletException {
-
-    private final Servlet servlet;           // what's unavailable
-    private final boolean permanent;         // needs admin action?
-    private final int seconds;           // unavailability estimate
-
-    /**
-     * @param servlet the <code>Servlet</code> instance that is
-     *                unavailable
-     * @param msg     a <code>String</code> specifying the
-     *                descriptive message
-     * @deprecated As of Java Servlet API 2.2, use {@link
-     * #UnavailableException(String)} instead.
-     */
-    public UnavailableException(Servlet servlet, String msg) {
-        super(msg);
-        this.servlet = servlet;
-        permanent = true;
-        seconds = -1;
-    }
-
-    /**
-     * @param seconds an integer specifying the number of seconds
-     *                the servlet expects to be unavailable; if
-     *                zero or negative, indicates that the servlet
-     *                can't make an estimate
-     * @param servlet the <code>Servlet</code> that is unavailable
-     * @param msg     a <code>String</code> specifying the descriptive
-     *                message, which can be written to a log file or
-     *                displayed for the user.
-     * @deprecated As of Java Servlet API 2.2, use {@link
-     * #UnavailableException(String, int)} instead.
-     */
-    public UnavailableException(int seconds, Servlet servlet, String msg) {
-        super(msg);
-        this.servlet = servlet;
-        if (seconds <= 0)
-            this.seconds = -1;
-        else
-            this.seconds = seconds;
-        permanent = false;
-    }
-
-    /**
-     * Constructs a new exception with a descriptive
-     * message indicating that the servlet is permanently
-     * unavailable.
-     *
-     * @param msg a <code>String</code> specifying the
-     *            descriptive message
-     */
-    public UnavailableException(String msg) {
-        super(msg);
-        servlet = null;
-        permanent = true;
-        seconds = -1;
-    }
-
-    /**
-     * Constructs a new exception with a descriptive message
-     * indicating that the servlet is temporarily unavailable
-     * and giving an estimate of how long it will be unavailable.
-     * <p/>
-     * <p>In some cases, the servlet cannot make an estimate. For
-     * example, the servlet might know that a server it needs is
-     * not running, but not be able to report how long it will take
-     * to be restored to functionality. This can be indicated with
-     * a negative or zero value for the <code>seconds</code> argument.
-     *
-     * @param msg     a <code>String</code> specifying the
-     *                descriptive message, which can be written
-     *                to a log file or displayed for the user.
-     * @param seconds an integer specifying the number of seconds
-     *                the servlet expects to be unavailable; if
-     *                zero or negative, indicates that the servlet
-     *                can't make an estimate
-     */
-    public UnavailableException(String msg, int seconds) {
-        super(msg);
-        servlet = null;
-        if (seconds <= 0)
-            this.seconds = -1;
-        else
-            this.seconds = seconds;
-
-        permanent = false;
-    }
-
-    /**
-     * Returns a <code>boolean</code> indicating
-     * whether the servlet is permanently unavailable.
-     * If so, something is wrong with the servlet, and the
-     * system administrator must take some corrective action.
-     *
-     * @return        <code>true</code> if the servlet is
-     * permanently unavailable; <code>false</code>
-     * if the servlet is available or temporarily
-     * unavailable
-     */
-    public boolean isPermanent() {
-        return permanent;
-    }
-
-    /**
-     * @deprecated As of Java Servlet API 2.2, with no replacement.
-     * <p/>
-     * Returns the servlet that is reporting its unavailability.
-     * @return the <code>Servlet</code> object that is
-     * throwing the <code>UnavailableException</code>
-     */
-    public Servlet getServlet() {
-        return servlet;
-    }
-
-    /**
-     * Returns the number of seconds the servlet expects to
-     * be temporarily unavailable.
-     * <p/>
-     * <p>If this method returns a negative number, the servlet
-     * is permanently unavailable or cannot provide an estimate of
-     * how long it will be unavailable. No effort is
-     * made to correct for the time elapsed since the exception was
-     * first reported.
-     *
-     * @return an integer specifying the number of seconds
-     * the servlet will be temporarily unavailable,
-     * or a negative number if the servlet is permanently
-     * unavailable or cannot make an estimate
-     */
-    public int getUnavailableSeconds() {
-        return permanent ? -1 : seconds;
-    }
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HandlesTypes.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HandlesTypes.java
deleted file mode 100644
index 161644d..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HandlesTypes.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Target(value = ElementType.TYPE)
-@Retention(value = RetentionPolicy.RUNTIME)
-public @interface HandlesTypes {
-
-    Class[] value();
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HttpConstraint.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HttpConstraint.java
deleted file mode 100644
index 9d70eb0..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HttpConstraint.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Documented
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface HttpConstraint {
-
-    String[] rolesAllowed() default {};
-
-    ServletSecurity.TransportGuarantee transportGuarantee() default ServletSecurity.TransportGuarantee.NONE;
-
-    ServletSecurity.EmptyRoleSemantic value() default ServletSecurity.EmptyRoleSemantic.PERMIT;
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HttpMethodConstraint.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HttpMethodConstraint.java
deleted file mode 100644
index c8918cc..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/HttpMethodConstraint.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Documented
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface HttpMethodConstraint {
-
-    /**
-     *
-     * @return http method name
-     */
-    String value();
-
-    ServletSecurity.EmptyRoleSemantic emptyRoleSemantic() default ServletSecurity.EmptyRoleSemantic.PERMIT;
-
-    String[] rolesAllowed() default {};
-
-    ServletSecurity.TransportGuarantee transportGuarantee() default ServletSecurity.TransportGuarantee.NONE;
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/MultipartConfig.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/MultipartConfig.java
deleted file mode 100644
index e488082..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/MultipartConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Target(value = ElementType.TYPE)
-@Retention(value = RetentionPolicy.RUNTIME)
-public @interface MultipartConfig {
-
-    int fileSizeThreshold() default 0;
-
-    String location() default "";
-
-    long maxFileSize() default -1L;
-
-    long maxRequestSize() default -1L;
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/ServletSecurity.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/ServletSecurity.java
deleted file mode 100644
index fd37f58..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/ServletSecurity.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Inherited;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Inherited
-@Documented
-@Target(value= ElementType.TYPE)
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface ServletSecurity {
-
-    enum EmptyRoleSemantic {PERMIT, DENY}
-
-    enum TransportGuarantee {NONE, CONFIDENTIAL}
-
-    HttpMethodConstraint[] httpMethodConstraints() default {};
-
-    HttpConstraint value() default @HttpConstraint;
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebFilter.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebFilter.java
deleted file mode 100644
index 3fdff24..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebFilter.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Documented;
-
-import javax.servlet.DispatcherType;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Documented
-@Target(value= ElementType.TYPE)
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface WebFilter {
-
-    boolean asyncSupported() default false;
-
-    String description() default "";
-
-    DispatcherType[] dispatcherTypes() default DispatcherType.REQUEST;
-
-    String displayName() default "";
-
-    String filterName() default "";
-
-    WebInitParam[] initParams() default {};
-
-    String largeIcon() default "";
-
-    String[] servletNames() default {};
-
-    String smallIcon() default "";
-
-    String[] urlPatterns() default {};
-
-    String[] value() default {};
-
-
-
-
-
-
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebInitParam.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebInitParam.java
deleted file mode 100644
index 1970c5c..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebInitParam.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Documented;
-
-/**
- * @version $Rev$ $Date$
- */
-
-@Documented
-@Target(value= ElementType.TYPE)
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface WebInitParam {
-
-    String description() default "";
-
-    String name();
-
-    String value();
-    
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebListener.java
deleted file mode 100644
index bdb14d4..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Documented;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Documented
-@Target(value= ElementType.TYPE)
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface WebListener {
-
-    String value() default "";
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebServlet.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebServlet.java
deleted file mode 100644
index f1e85a5..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/annotation/WebServlet.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.annotation;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Documented;
-
-/**
- * @version $Rev$ $Date$
- * @since 3.0
- */
-
-@Documented
-@Target(value= ElementType.TYPE)
-@Retention(value= RetentionPolicy.RUNTIME)
-public @interface WebServlet {
-
-    boolean asyncSupported() default false;
-
-    String description() default "";
-
-    String displayName() default "";
-
-    WebInitParam[] initParams() default {};
-
-    String largeIcon() default "";
-
-    int loadOnStartup() default -1;
-
-    String name() default "";
-
-    String smallIcon() default "";
-
-    String[] urlPatterns() default {};
-
-    String[] value() default {};
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/JspConfigDescriptor.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/JspConfigDescriptor.java
deleted file mode 100644
index 724cf0c..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/JspConfigDescriptor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.descriptor;
-
-import java.util.Collection;
-
-/**
- * @version $Rev$ $Date$
- * @since Servlet 3.0
- */
-public interface JspConfigDescriptor {
-
-    Collection<JspPropertyGroupDescriptor> getJspPropertyGroups();
-
-    Collection<TaglibDescriptor> getTaglibs();
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java
deleted file mode 100644
index ecc8190..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/JspPropertyGroupDescriptor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.descriptor;
-
-import java.util.Collection;
-
-/**
- * @version $Rev$ $Date$
- * @since Servlet 3.0
- */
-public interface JspPropertyGroupDescriptor {
-
-    String getBuffer();
-
-    String getDefaultContentType();
-
-    String getDeferredSyntaxAllowedAsLiteral();
-
-    String getElIgnored();
-
-    String getErrorOnUndeclaredNamespace();
-
-    Collection<String> getIncludeCodas();
-
-    Collection<String> getIncludePreludes();
-
-    String getIsXml();
-
-    String getPageEncoding();
-
-    String getScriptingInvalid();
-
-    String getTrimDirectiveWhitespaces();
-
-    Collection<String> getUrlPatterns();
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/TaglibDescriptor.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/TaglibDescriptor.java
deleted file mode 100644
index d075eb6..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/descriptor/TaglibDescriptor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.descriptor;
-
-/**
- * @version $Rev$ $Date$
- * @since Servlet 3.0
- */
-public interface TaglibDescriptor {
-
-    String getTaglibLocation();
-
-    String getTaglibURI();
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/Cookie.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/Cookie.java
deleted file mode 100644
index ba8163d..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/Cookie.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.io.Serializable;
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
-
-/**
- * Creates a cookie, a small amount of information sent by a servlet to
- * a Web browser, saved by the browser, and later sent back to the server.
- * A cookie's value can uniquely
- * identify a client, so cookies are commonly used for session management.
- * <p/>
- * <p>A cookie has a name, a single value, and optional attributes
- * such as a comment, path and domain qualifiers, a maximum age, and a
- * version number. Some Web browsers have bugs in how they handle the
- * optional attributes, so use them sparingly to improve the interoperability
- * of your servlets.
- * <p/>
- * <p>The servlet sends cookies to the browser by using the
- * {@link HttpServletResponse#addCookie} method, which adds
- * fields to HTTP response headers to send cookies to the
- * browser, one at a time. The browser is expected to
- * support 20 cookies for each Web server, 300 cookies total, and
- * may limit cookie size to 4 KB each.
- * <p/>
- * <p>The browser returns cookies to the servlet by adding
- * fields to HTTP request headers. Cookies can be retrieved
- * from a request by using the {@link HttpServletRequest#getCookies} method.
- * Several cookies might have the same name but different path attributes.
- * <p/>
- * <p>Cookies affect the caching of the Web pages that use them.
- * HTTP 1.0 does not cache pages that use cookies created with
- * this class. This class does not support the cache control
- * defined with HTTP 1.1.
- * <p/>
- * <p>This class supports both the Version 0 (by Netscape) and Version 1
- * (by RFC 2109) cookie specifications. By default, cookies are
- * created using Version 0 to ensure the best interoperability.
- *
- * @version $Rev$ $Date$
- */
-
-public class Cookie implements Cloneable, Serializable {
-    private static final long serialVersionUID = -6454587001725327448L;
-
-    private static final String LSTRING_FILE =
-            "javax.servlet.http.LocalStrings";
-    private static ResourceBundle lStrings =
-            ResourceBundle.getBundle(LSTRING_FILE);
-
-    // Note -- disabled for now to allow full Netscape compatibility
-    // from RFC 2068, token special case characters
-    //
-    // private static final String tspecials = "()<>@,;:\\\"/[]?={} \t";
-
-    private static final String tspecials = ",; ";
-
-    //
-    // The value of the cookie itself.
-    //
-
-    private String name;        // NAME= ... "$Name" style is reserved
-    private String value;        // value of NAME
-
-    //
-    // Attributes encoded in the header's cookie fields.
-    //
-
-    private String comment;        // ;Comment=VALUE ... describes cookie's use
-    // ;Discard ... implied by maxAge < 0
-    private String domain;        // ;Domain=VALUE ... domain that sees cookie
-    private int maxAge = -1;        // ;Max-Age=VALUE ... cookies auto-expire
-    private String path;        // ;Path=VALUE ... URLs that see the cookie
-    private boolean secure;        // ;Secure ... e.g. use SSL
-    private int version = 0;        // ;Version=1 ... means RFC 2109++ style
-    private boolean httpOnly;
-
-    /**
-     * Constructs a cookie with a specified name and value.
-     * <p/>
-     * <p>The name must conform to RFC 2109. That means it can contain
-     * only ASCII alphanumeric characters and cannot contain commas,
-     * semicolons, or white space or begin with a $ character. The cookie's
-     * name cannot be changed after creation.
-     * <p/>
-     * <p>The value can be anything the server chooses to send. Its
-     * value is probably of interest only to the server. The cookie's
-     * value can be changed after creation with the
-     * <code>setValue</code> method.
-     * <p/>
-     * <p>By default, cookies are created according to the Netscape
-     * cookie specification. The version can be changed with the
-     * <code>setVersion</code> method.
-     *
-     * @param name  a <code>String</code> specifying the name of the cookie
-     * @param value a <code>String</code> specifying the value of the cookie
-     * @throws IllegalArgumentException if the cookie name contains illegal characters
-     *                                  (for example, a comma, space, or semicolon)
-     *                                  or it is one of the tokens reserved for use
-     *                                  by the cookie protocol
-     * @see #setValue
-     * @see #setVersion
-     */
-    public Cookie(String name, String value) {
-        if (!isToken(name)
-                || name.equalsIgnoreCase("Comment")        // rfc2019
-                || name.equalsIgnoreCase("Discard")        // 2019++
-                || name.equalsIgnoreCase("Domain")
-                || name.equalsIgnoreCase("Expires")        // (old cookies)
-                || name.equalsIgnoreCase("Max-Age")        // rfc2019
-                || name.equalsIgnoreCase("Path")
-                || name.equalsIgnoreCase("Secure")
-                || name.equalsIgnoreCase("Version")
-                || name.startsWith("$")
-                ) {
-            String errMsg = lStrings.getString("err.cookie_name_is_token");
-            Object[] errArgs = new Object[1];
-            errArgs[0] = name;
-            errMsg = MessageFormat.format(errMsg, errArgs);
-            throw new IllegalArgumentException(errMsg);
-        }
-
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Specifies a comment that describes a cookie's purpose.
-     * The comment is useful if the browser presents the cookie
-     * to the user. Comments
-     * are not supported by Netscape Version 0 cookies.
-     *
-     * @param purpose a <code>String</code> specifying the comment
-     *                to display to the user
-     * @see #getComment
-     */
-    public void setComment(String purpose) {
-        comment = purpose;
-    }
-
-    /**
-     * Returns the comment describing the purpose of this cookie, or
-     * <code>null</code> if the cookie has no comment.
-     *
-     * @return a <code>String</code> containing the comment,
-     * or <code>null</code> if none
-     * @see #setComment
-     */
-    public String getComment() {
-        return comment;
-    }
-
-    /**
-     * Specifies the domain within which this cookie should be presented.
-     * <p/>
-     * <p>The form of the domain name is specified by RFC 2109. A domain
-     * name begins with a dot (<code>.foo.com</code>) and means that
-     * the cookie is visible to servers in a specified Domain Name System
-     * (DNS) zone (for example, <code>www.foo.com</code>, but not
-     * <code>a.b.foo.com</code>). By default, cookies are only returned
-     * to the server that sent them.
-     *
-     * @param pattern a <code>String</code> containing the domain name
-     *                within which this cookie is visible;
-     *                form is according to RFC 2109
-     * @see #getDomain
-     */
-    public void setDomain(String pattern) {
-        domain = pattern.toLowerCase();        // IE allegedly needs this
-    }
-
-    /**
-     * Returns the domain name set for this cookie. The form of
-     * the domain name is set by RFC 2109.
-     *
-     * @return a <code>String</code> containing the domain name
-     * @see #setDomain
-     */
-    public String getDomain() {
-        return domain;
-    }
-
-    /**
-     * Sets the maximum age of the cookie in seconds.
-     * <p/>
-     * <p>A positive value indicates that the cookie will expire
-     * after that many seconds have passed. Note that the value is
-     * the <i>maximum</i> age when the cookie will expire, not the cookie's
-     * current age.
-     * <p/>
-     * <p>A negative value means
-     * that the cookie is not stored persistently and will be deleted
-     * when the Web browser exits. A zero value causes the cookie
-     * to be deleted.
-     *
-     * @param expiry an integer specifying the maximum age of the
-     *               cookie in seconds; if negative, means
-     *               the cookie is not stored; if zero, deletes
-     *               the cookie
-     * @see #getMaxAge
-     */
-    public void setMaxAge(int expiry) {
-        maxAge = expiry;
-    }
-
-    /**
-     * Returns the maximum age of the cookie, specified in seconds,
-     * By default, <code>-1</code> indicating the cookie will persist
-     * until browser shutdown.
-     *
-     * @return an integer specifying the maximum age of the
-     * cookie in seconds; if negative, means
-     * the cookie persists until browser shutdown
-     * @see #setMaxAge
-     */
-    public int getMaxAge() {
-        return maxAge;
-    }
-
-    /**
-     * Specifies a path for the cookie
-     * to which the client should return the cookie.
-     * <p/>
-     * <p>The cookie is visible to all the pages in the directory
-     * you specify, and all the pages in that directory's subdirectories.
-     * A cookie's path must include the servlet that set the cookie,
-     * for example, <i>/catalog</i>, which makes the cookie
-     * visible to all directories on the server under <i>/catalog</i>.
-     * <p/>
-     * <p>Consult RFC 2109 (available on the Internet) for more
-     * information on setting path names for cookies.
-     *
-     * @param uri a <code>String</code> specifying a path
-     * @see #getPath
-     */
-    public void setPath(String uri) {
-        path = uri;
-    }
-
-    /**
-     * Returns the path on the server
-     * to which the browser returns this cookie. The
-     * cookie is visible to all subpaths on the server.
-     *
-     * @return a <code>String</code> specifying a path that contains
-     * a servlet name, for example, <i>/catalog</i>
-     * @see #setPath
-     */
-    public String getPath() {
-        return path;
-    }
-
-    /**
-     * Indicates to the browser whether the cookie should only be sent
-     * using a secure protocol, such as HTTPS or SSL.
-     * <p/>
-     * <p>The default value is <code>false</code>.
-     *
-     * @param flag if <code>true</code>, sends the cookie from the browser
-     *             to the server only when using a secure protocol;
-     *             if <code>false</code>, sent on any protocol
-     * @see #getSecure
-     */
-    public void setSecure(boolean flag) {
-        secure = flag;
-    }
-
-    /**
-     * Returns <code>true</code> if the browser is sending cookies
-     * only over a secure protocol, or <code>false</code> if the
-     * browser can send cookies using any protocol.
-     *
-     * @return                <code>true</code> if the browser uses a secure protocol;
-     * otherwise, <code>true</code>
-     * @see #setSecure
-     */
-    public boolean getSecure() {
-        return secure;
-    }
-
-    /**
-     * Returns the name of the cookie. The name cannot be changed after
-     * creation.
-     *
-     * @return a <code>String</code> specifying the cookie's name
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Assigns a new value to a cookie after the cookie is created.
-     * If you use a binary value, you may want to use BASE64 encoding.
-     * <p/>
-     * <p>With Version 0 cookies, values should not contain white
-     * space, brackets, parentheses, equals signs, commas,
-     * double quotes, slashes, question marks, at signs, colons,
-     * and semicolons. Empty values may not behave the same way
-     * on all browsers.
-     *
-     * @param newValue a <code>String</code> specifying the new value
-     * @see #getValue
-     * @see Cookie
-     */
-    public void setValue(String newValue) {
-        value = newValue;
-    }
-
-    /**
-     * Returns the value of the cookie.
-     *
-     * @return a <code>String</code> containing the cookie's
-     * present value
-     * @see #setValue
-     * @see Cookie
-     */
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * Returns the version of the protocol this cookie complies
-     * with. Version 1 complies with RFC 2109,
-     * and version 0 complies with the original
-     * cookie specification drafted by Netscape. Cookies provided
-     * by a browser use and identify the browser's cookie version.
-     *
-     * @return 0 if the cookie complies with the
-     * original Netscape specification; 1
-     * if the cookie complies with RFC 2109
-     * @see #setVersion
-     */
-    public int getVersion() {
-        return version;
-    }
-
-    /**
-     * Sets the version of the cookie protocol this cookie complies
-     * with. Version 0 complies with the original Netscape cookie
-     * specification. Version 1 complies with RFC 2109.
-     * <p/>
-     * <p>Since RFC 2109 is still somewhat new, consider
-     * version 1 as experimental; do not use it yet on production sites.
-     *
-     * @param v 0 if the cookie should comply with
-     *          the original Netscape specification;
-     *          1 if the cookie should comply with RFC 2109
-     * @see #getVersion
-     */
-    public void setVersion(int v) {
-        version = v;
-    }
-
-    /*
-     * Tests a string and returns true if the string counts as a 
-     * reserved token in the Java language.
-     * 
-     * @param value		the <code>String</code> to be tested
-     *
-     * @return			<code>true</code> if the <code>String</code> is
-     *				a reserved token; <code>false</code>
-     *				if it is not			
-     */
-    private boolean isToken(String value) {
-        int len = value.length();
-
-        for (int i = 0; i < len; i++) {
-            char c = value.charAt(i);
-
-            if (c < 0x20 || c >= 0x7f || tspecials.indexOf(c) != -1)
-                return false;
-        }
-        return true;
-    }
-
-    /**
-     * Overrides the standard <code>java.lang.Object.clone</code>
-     * method to return a copy of this cookie.
-     */
-    public Object clone() {
-        try {
-            return super.clone();
-        } catch (CloneNotSupportedException e) {
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
-    /**
-     * @return whether cookie is http only
-     * @since servlet 3.0
-     */
-    public boolean isHttpOnly() {
-        return httpOnly;
-    }
-
-    /**
-     * @param httpOnly httpOnly setting
-     * @since servlet 3.0
-     */
-    public void setHttpOnly(boolean httpOnly) {
-        this.httpOnly = httpOnly;
-    }
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServlet.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServlet.java
deleted file mode 100644
index 3833e32..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServlet.java
+++ /dev/null
@@ -1,759 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Method;
-import java.text.MessageFormat;
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-
-
-/**
- * Provides an abstract class to be subclassed to create
- * an HTTP servlet suitable for a Web site. A subclass of
- * <code>HttpServlet</code> must override at least
- * one method, usually one of these:
- * <p/>
- * <ul>
- * <li> <code>doGet</code>, if the servlet supports HTTP GET requests
- * <li> <code>doPost</code>, for HTTP POST requests
- * <li> <code>doPut</code>, for HTTP PUT requests
- * <li> <code>doDelete</code>, for HTTP DELETE requests
- * <li> <code>init</code> and <code>destroy</code>,
- * to manage resources that are held for the life of the servlet
- * <li> <code>getServletInfo</code>, which the servlet uses to
- * provide information about itself
- * </ul>
- * <p/>
- * <p>There's almost no reason to override the <code>service</code>
- * method. <code>service</code> handles standard HTTP
- * requests by dispatching them to the handler methods
- * for each HTTP request type (the <code>do</code><i>XXX</i>
- * methods listed above).
- * <p/>
- * <p>Likewise, there's almost no reason to override the
- * <code>doOptions</code> and <code>doTrace</code> methods.
- * <p/>
- * <p>Servlets typically run on multithreaded servers,
- * so be aware that a servlet must handle concurrent
- * requests and be careful to synchronize access to shared resources.
- * Shared resources include in-memory data such as
- * instance or class variables and external objects
- * such as files, database connections, and network
- * connections.
- * See the
- * <a href="http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html">
- * Java Tutorial on Multithreaded Programming</a> for more
- * information on handling multiple threads in a Java program.
- *
- * @version $Rev$ $Date$
- */
-
-public abstract class HttpServlet extends GenericServlet
-        implements java.io.Serializable {
-    private static final String METHOD_DELETE = "DELETE";
-    private static final String METHOD_HEAD = "HEAD";
-    private static final String METHOD_GET = "GET";
-    private static final String METHOD_OPTIONS = "OPTIONS";
-    private static final String METHOD_POST = "POST";
-    private static final String METHOD_PUT = "PUT";
-    private static final String METHOD_TRACE = "TRACE";
-
-    private static final String HEADER_IFMODSINCE = "If-Modified-Since";
-    private static final String HEADER_LASTMOD = "Last-Modified";
-
-    private static final String LSTRING_FILE =
-            "javax.servlet.http.LocalStrings";
-    private static ResourceBundle lStrings =
-            ResourceBundle.getBundle(LSTRING_FILE);
-
-    /**
-     * Does nothing, because this is an abstract class.
-     */
-
-    public HttpServlet() {
-    }
-
-    /**
-     * Called by the server (via the <code>service</code> method) to
-     * allow a servlet to handle a GET request.
-     * <p/>
-     * <p>Overriding this method to support a GET request also
-     * automatically supports an HTTP HEAD request. A HEAD
-     * request is a GET request that returns no body in the
-     * response, only the request header fields.
-     * <p/>
-     * <p>When overriding this method, read the request data,
-     * write the response headers, get the response's writer or
-     * output stream object, and finally, write the response data.
-     * It's best to include content type and encoding. When using
-     * a <code>PrintWriter</code> object to return the response,
-     * set the content type before accessing the
-     * <code>PrintWriter</code> object.
-     * <p/>
-     * <p>The servlet container must write the headers before
-     * committing the response, because in HTTP the headers must be sent
-     * before the response body.
-     * <p/>
-     * <p>Where possible, set the Content-Length header (with the
-     * {@link javax.servlet.ServletResponse#setContentLength} method),
-     * to allow the servlet container to use a persistent connection
-     * to return its response to the client, improving performance.
-     * The content length is automatically set if the entire response fits
-     * inside the response buffer.
-     * <p/>
-     * <p>When using HTTP 1.1 chunked encoding (which means that the response
-     * has a Transfer-Encoding header), do not set the Content-Length header.
-     * <p/>
-     * <p>The GET method should be safe, that is, without
-     * any side effects for which users are held responsible.
-     * For example, most form queries have no side effects.
-     * If a client request is intended to change stored data,
-     * the request should use some other HTTP method.
-     * <p/>
-     * <p>The GET method should also be idempotent, meaning
-     * that it can be safely repeated. Sometimes making a
-     * method safe also makes it idempotent. For example,
-     * repeating queries is both safe and idempotent, but
-     * buying a product online or modifying data is neither
-     * safe nor idempotent.
-     * <p/>
-     * <p>If the request is incorrectly formatted, <code>doGet</code>
-     * returns an HTTP "Bad Request" message.
-     *
-     * @param req  an {@link HttpServletRequest} object that
-     *             contains the request the client has made
-     *             of the servlet
-     * @param resp an {@link HttpServletResponse} object that
-     *             contains the response the servlet sends
-     *             to the client
-     * @throws IOException      if an input or output error is
-     *                          detected when the servlet handles
-     *                          the GET request
-     * @throws ServletException if the request for the GET
-     *                          could not be handled
-     * @see javax.servlet.ServletResponse#setContentType
-     */
-    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-        String protocol = req.getProtocol();
-        String msg = lStrings.getString("http.method_get_not_supported");
-        if (protocol.endsWith("1.1")) {
-            resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-        } else {
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-        }
-    }
-
-    /**
-     * Returns the time the <code>HttpServletRequest</code>
-     * object was last modified,
-     * in milliseconds since midnight January 1, 1970 GMT.
-     * If the time is unknown, this method returns a negative
-     * number (the default).
-     * <p/>
-     * <p>Servlets that support HTTP GET requests and can quickly determine
-     * their last modification time should override this method.
-     * This makes browser and proxy caches work more effectively,
-     * reducing the load on server and network resources.
-     *
-     * @param req the <code>HttpServletRequest</code>
-     *            object that is sent to the servlet
-     * @return a <code>long</code> integer specifying
-     * the time the <code>HttpServletRequest</code>
-     * object was last modified, in milliseconds
-     * since midnight, January 1, 1970 GMT, or
-     * -1 if the time is not known
-     */
-    protected long getLastModified(HttpServletRequest req) {
-        return -1;
-    }
-
-    /**
-     * <p>Receives an HTTP HEAD request from the protected
-     * <code>service</code> method and handles the
-     * request.
-     * The client sends a HEAD request when it wants
-     * to see only the headers of a response, such as
-     * Content-Type or Content-Length. The HTTP HEAD
-     * method counts the output bytes in the response
-     * to set the Content-Length header accurately.
-     * <p/>
-     * <p>If you override this method, you can avoid computing
-     * the response body and just set the response headers
-     * directly to improve performance. Make sure that the
-     * <code>doHead</code> method you write is both safe
-     * and idempotent (that is, protects itself from being
-     * called multiple times for one HTTP HEAD request).
-     * <p/>
-     * <p>If the HTTP HEAD request is incorrectly formatted,
-     * <code>doHead</code> returns an HTTP "Bad Request"
-     * message.
-     *
-     * @param req  the request object that is passed
-     *             to the servlet
-     * @param resp the response object that the servlet
-     *             uses to return the headers to the clien
-     * @throws IOException      if an input or output error occurs
-     * @throws ServletException if the request for the HEAD
-     *                          could not be handled
-     */
-    protected void doHead(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-        NoBodyResponse response = new NoBodyResponse(resp);
-
-        doGet(req, response);
-        response.setContentLength();
-    }
-
-    /**
-     * Called by the server (via the <code>service</code> method)
-     * to allow a servlet to handle a POST request.
-     * <p/>
-     * The HTTP POST method allows the client to send
-     * data of unlimited length to the Web server a single time
-     * and is useful when posting information such as
-     * credit card numbers.
-     * <p/>
-     * <p>When overriding this method, read the request data,
-     * write the response headers, get the response's writer or output
-     * stream object, and finally, write the response data. It's best
-     * to include content type and encoding. When using a
-     * <code>PrintWriter</code> object to return the response, set the
-     * content type before accessing the <code>PrintWriter</code> object.
-     * <p/>
-     * <p>The servlet container must write the headers before committing the
-     * response, because in HTTP the headers must be sent before the
-     * response body.
-     * <p/>
-     * <p>Where possible, set the Content-Length header (with the
-     * {@link javax.servlet.ServletResponse#setContentLength} method),
-     * to allow the servlet container to use a persistent connection
-     * to return its response to the client, improving performance.
-     * The content length is automatically set if the entire response fits
-     * inside the response buffer.
-     * <p/>
-     * <p>When using HTTP 1.1 chunked encoding (which means that the response
-     * has a Transfer-Encoding header), do not set the Content-Length header.
-     * <p/>
-     * <p>This method does not need to be either safe or idempotent.
-     * Operations requested through POST can have side effects for
-     * which the user can be held accountable, for example,
-     * updating stored data or buying items online.
-     * <p/>
-     * <p>If the HTTP POST request is incorrectly formatted,
-     * <code>doPost</code> returns an HTTP "Bad Request" message.
-     *
-     * @param req  an {@link HttpServletRequest} object that
-     *             contains the request the client has made
-     *             of the servlet
-     * @param resp an {@link HttpServletResponse} object that
-     *             contains the response the servlet sends
-     *             to the client
-     * @throws IOException      if an input or output error is
-     *                          detected when the servlet handles
-     *                          the request
-     * @throws ServletException if the request for the POST
-     *                          could not be handled
-     * @see javax.servlet.ServletOutputStream
-     * @see javax.servlet.ServletResponse#setContentType
-     */
-    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-        String protocol = req.getProtocol();
-        String msg = lStrings.getString("http.method_post_not_supported");
-        if (protocol.endsWith("1.1")) {
-            resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-        } else {
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-        }
-    }
-
-    /**
-     * Called by the server (via the <code>service</code> method)
-     * to allow a servlet to handle a PUT request.
-     * <p/>
-     * The PUT operation allows a client to
-     * place a file on the server and is similar to
-     * sending a file by FTP.
-     * <p/>
-     * <p>When overriding this method, leave intact
-     * any content headers sent with the request (including
-     * Content-Length, Content-Type, Content-Transfer-Encoding,
-     * Content-Encoding, Content-Base, Content-Language, Content-Location,
-     * Content-MD5, and Content-Range). If your method cannot
-     * handle a content header, it must issue an error message
-     * (HTTP 501 - Not Implemented) and discard the request.
-     * For more information on HTTP 1.1, see RFC 2616
-     * <a href="http://www.ietf.org/rfc/rfc2616.txt"></a>.
-     * <p/>
-     * <p>This method does not need to be either safe or idempotent.
-     * Operations that <code>doPut</code> performs can have side
-     * effects for which the user can be held accountable. When using
-     * this method, it may be useful to save a copy of the
-     * affected URL in temporary storage.
-     * <p/>
-     * <p>If the HTTP PUT request is incorrectly formatted,
-     * <code>doPut</code> returns an HTTP "Bad Request" message.
-     *
-     * @param req  the {@link HttpServletRequest} object that
-     *             contains the request the client made of
-     *             the servlet
-     * @param resp the {@link HttpServletResponse} object that
-     *             contains the response the servlet returns
-     *             to the client
-     * @throws IOException      if an input or output error occurs
-     *                          while the servlet is handling the
-     *                          PUT request
-     * @throws ServletException if the request for the PUT
-     *                          cannot be handled
-     */
-    protected void doPut(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-        String protocol = req.getProtocol();
-        String msg = lStrings.getString("http.method_put_not_supported");
-        if (protocol.endsWith("1.1")) {
-            resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-        } else {
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-        }
-    }
-
-    /**
-     * Called by the server (via the <code>service</code> method)
-     * to allow a servlet to handle a DELETE request.
-     * <p/>
-     * The DELETE operation allows a client to remove a document
-     * or Web page from the server.
-     * <p/>
-     * <p>This method does not need to be either safe
-     * or idempotent. Operations requested through
-     * DELETE can have side effects for which users
-     * can be held accountable. When using
-     * this method, it may be useful to save a copy of the
-     * affected URL in temporary storage.
-     * <p/>
-     * <p>If the HTTP DELETE request is incorrectly formatted,
-     * <code>doDelete</code> returns an HTTP "Bad Request"
-     * message.
-     *
-     * @param req  the {@link HttpServletRequest} object that
-     *             contains the request the client made of
-     *             the servlet
-     * @param resp the {@link HttpServletResponse} object that
-     *             contains the response the servlet returns
-     *             to the client
-     * @throws IOException      if an input or output error occurs
-     *                          while the servlet is handling the
-     *                          DELETE request
-     * @throws ServletException if the request for the
-     *                          DELETE cannot be handled
-     */
-    protected void doDelete(HttpServletRequest req,
-                            HttpServletResponse resp)
-            throws ServletException, IOException {
-        String protocol = req.getProtocol();
-        String msg = lStrings.getString("http.method_delete_not_supported");
-        if (protocol.endsWith("1.1")) {
-            resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
-        } else {
-            resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
-        }
-    }
-
-    private static Method[] getAllDeclaredMethods(Class c) {
-
-        if (c.equals(javax.servlet.http.HttpServlet.class)) {
-            return null;
-        }
-
-        Method[] parentMethods = getAllDeclaredMethods(c.getSuperclass());
-        Method[] thisMethods = c.getDeclaredMethods();
-
-        if ((parentMethods != null) && (parentMethods.length > 0)) {
-            Method[] allMethods =
-                    new Method[parentMethods.length + thisMethods.length];
-            System.arraycopy(parentMethods, 0, allMethods, 0,
-                    parentMethods.length);
-            System.arraycopy(thisMethods, 0, allMethods, parentMethods.length,
-                    thisMethods.length);
-
-            thisMethods = allMethods;
-        }
-
-        return thisMethods;
-    }
-
-    /**
-     * Called by the server (via the <code>service</code> method)
-     * to allow a servlet to handle a OPTIONS request.
-     * <p/>
-     * The OPTIONS request determines which HTTP methods
-     * the server supports and
-     * returns an appropriate header. For example, if a servlet
-     * overrides <code>doGet</code>, this method returns the
-     * following header:
-     * <p/>
-     * <p><code>Allow: GET, HEAD, TRACE, OPTIONS</code>
-     * <p/>
-     * <p>There's no need to override this method unless the
-     * servlet implements new HTTP methods, beyond those
-     * implemented by HTTP 1.1.
-     *
-     * @param req  the {@link HttpServletRequest} object that
-     *             contains the request the client made of
-     *             the servlet
-     * @param resp the {@link HttpServletResponse} object that
-     *             contains the response the servlet returns
-     *             to the client
-     * @throws IOException      if an input or output error occurs
-     *                          while the servlet is handling the
-     *                          OPTIONS request
-     * @throws ServletException if the request for the
-     *                          OPTIONS cannot be handled
-     */
-    protected void doOptions(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-        Method[] methods = getAllDeclaredMethods(this.getClass());
-
-        boolean ALLOW_GET = false;
-        boolean ALLOW_HEAD = false;
-        boolean ALLOW_POST = false;
-        boolean ALLOW_PUT = false;
-        boolean ALLOW_DELETE = false;
-        boolean ALLOW_TRACE = true;
-        boolean ALLOW_OPTIONS = true;
-
-        for (int i = 0; i < methods.length; i++) {
-            Method m = methods[i];
-
-            if (m.getName().equals("doGet")) {
-                ALLOW_GET = true;
-                ALLOW_HEAD = true;
-            }
-            if (m.getName().equals("doPost"))
-                ALLOW_POST = true;
-            if (m.getName().equals("doPut"))
-                ALLOW_PUT = true;
-            if (m.getName().equals("doDelete"))
-                ALLOW_DELETE = true;
-
-        }
-
-        String allow = null;
-        if (ALLOW_GET)
-            if (allow == null) allow = METHOD_GET;
-        if (ALLOW_HEAD)
-            if (allow == null) allow = METHOD_HEAD;
-            else allow += ", " + METHOD_HEAD;
-        if (ALLOW_POST)
-            if (allow == null) allow = METHOD_POST;
-            else allow += ", " + METHOD_POST;
-        if (ALLOW_PUT)
-            if (allow == null) allow = METHOD_PUT;
-            else allow += ", " + METHOD_PUT;
-        if (ALLOW_DELETE)
-            if (allow == null) allow = METHOD_DELETE;
-            else allow += ", " + METHOD_DELETE;
-        if (ALLOW_TRACE)
-            if (allow == null) allow = METHOD_TRACE;
-            else allow += ", " + METHOD_TRACE;
-        if (ALLOW_OPTIONS)
-            if (allow == null) allow = METHOD_OPTIONS;
-            else allow += ", " + METHOD_OPTIONS;
-
-        resp.setHeader("Allow", allow);
-    }
-
-    /**
-     * Called by the server (via the <code>service</code> method)
-     * to allow a servlet to handle a TRACE request.
-     * <p/>
-     * A TRACE returns the headers sent with the TRACE
-     * request to the client, so that they can be used in
-     * debugging. There's no need to override this method.
-     *
-     * @param req  the {@link HttpServletRequest} object that
-     *             contains the request the client made of
-     *             the servlet
-     * @param resp the {@link HttpServletResponse} object that
-     *             contains the response the servlet returns
-     *             to the client
-     * @throws IOException      if an input or output error occurs
-     *                          while the servlet is handling the
-     *                          TRACE request
-     * @throws ServletException if the request for the
-     *                          TRACE cannot be handled
-     */
-    protected void doTrace(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-
-        int responseLength;
-
-        String CRLF = "\r\n";
-        String responseString = "TRACE " + req.getRequestURI() +
-                " " + req.getProtocol();
-
-        Enumeration reqHeaderEnum = req.getHeaderNames();
-
-        while (reqHeaderEnum.hasMoreElements()) {
-            String headerName = (String) reqHeaderEnum.nextElement();
-            responseString += CRLF + headerName + ": " +
-                    req.getHeader(headerName);
-        }
-
-        responseString += CRLF;
-
-        responseLength = responseString.length();
-
-        resp.setContentType("message/http");
-        resp.setContentLength(responseLength);
-        ServletOutputStream out = resp.getOutputStream();
-        out.print(responseString);
-        out.close();
-        return;
-    }
-
-    /**
-     * Receives standard HTTP requests from the public
-     * <code>service</code> method and dispatches
-     * them to the <code>do</code><i>XXX</i> methods defined in
-     * this class. This method is an HTTP-specific version of the
-     * {@link javax.servlet.Servlet#service} method. There's no
-     * need to override this method.
-     *
-     * @param req  the {@link HttpServletRequest} object that
-     *             contains the request the client made of
-     *             the servlet
-     * @param resp the {@link HttpServletResponse} object that
-     *             contains the response the servlet returns
-     *             to the client
-     * @throws IOException      if an input or output error occurs
-     *                          while the servlet is handling the
-     *                          HTTP request
-     * @throws ServletException if the HTTP request
-     *                          cannot be handled
-     * @see javax.servlet.Servlet#service
-     */
-    protected void service(HttpServletRequest req, HttpServletResponse resp)
-            throws ServletException, IOException {
-        String method = req.getMethod();
-
-        if (method.equals(METHOD_GET)) {
-            long lastModified = getLastModified(req);
-            if (lastModified == -1) {
-                // servlet doesn't support if-modified-since, no reason
-                // to go through further expensive logic
-                doGet(req, resp);
-            } else {
-                long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
-                if (ifModifiedSince < (lastModified / 1000 * 1000)) {
-                    // If the servlet mod time is later, call doGet()
-                    // Round down to the nearest second for a proper compare
-                    // A ifModifiedSince of -1 will always be less
-                    maybeSetLastModified(resp, lastModified);
-                    doGet(req, resp);
-                } else {
-                    resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
-                }
-            }
-
-        } else if (method.equals(METHOD_HEAD)) {
-            long lastModified = getLastModified(req);
-            maybeSetLastModified(resp, lastModified);
-            doHead(req, resp);
-
-        } else if (method.equals(METHOD_POST)) {
-            doPost(req, resp);
-
-        } else if (method.equals(METHOD_PUT)) {
-            doPut(req, resp);
-
-        } else if (method.equals(METHOD_DELETE)) {
-            doDelete(req, resp);
-
-        } else if (method.equals(METHOD_OPTIONS)) {
-            doOptions(req, resp);
-
-        } else if (method.equals(METHOD_TRACE)) {
-            doTrace(req, resp);
-
-        } else {
-            //
-            // Note that this means NO servlet supports whatever
-            // method was requested, anywhere on this server.
-            //
-
-            String errMsg = lStrings.getString("http.method_not_implemented");
-            Object[] errArgs = new Object[1];
-            errArgs[0] = method;
-            errMsg = MessageFormat.format(errMsg, errArgs);
-
-            resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
-        }
-    }
-
-    /*
-     * Sets the Last-Modified entity header field, if it has not
-     * already been set and if the value is meaningful.  Called before
-     * doGet, to ensure that headers are set before response data is
-     * written.  A subclass might have set this header already, so we
-     * check.
-     */
-    private void maybeSetLastModified(HttpServletResponse resp,
-                                      long lastModified) {
-        if (resp.containsHeader(HEADER_LASTMOD))
-            return;
-        if (lastModified >= 0)
-            resp.setDateHeader(HEADER_LASTMOD, lastModified);
-    }
-
-    /**
-     * Dispatches client requests to the protected
-     * <code>service</code> method. There's no need to
-     * override this method.
-     *
-     * @param req the {@link HttpServletRequest} object that
-     *            contains the request the client made of
-     *            the servlet
-     * @param res the {@link HttpServletResponse} object that
-     *            contains the response the servlet returns
-     *            to the client
-     * @throws IOException      if an input or output error occurs
-     *                          while the servlet is handling the
-     *                          HTTP request
-     * @throws ServletException if the HTTP request cannot
-     *                          be handled
-     * @see javax.servlet.Servlet#service
-     */
-    public void service(ServletRequest req, ServletResponse res)
-            throws ServletException, IOException {
-        HttpServletRequest request;
-        HttpServletResponse response;
-
-        try {
-            request = (HttpServletRequest) req;
-            response = (HttpServletResponse) res;
-        } catch (ClassCastException e) {
-            throw new ServletException("non-HTTP request or response");
-        }
-        service(request, response);
-    }
-}
-
-/*
- * A response that includes no body, for use in (dumb) "HEAD" support.
- * This just swallows that body, counting the bytes in order to set
- * the content length appropriately.  All other methods delegate directly
- * to the HTTP Servlet Response object used to construct this one.
- */
-
-// file private
-class NoBodyResponse extends HttpServletResponseWrapper {
-    private NoBodyOutputStream noBody;
-    private PrintWriter writer;
-    private boolean didSetContentLength;
-
-    // file private
-    NoBodyResponse(HttpServletResponse r) {
-        super(r);
-        noBody = new NoBodyOutputStream();
-    }
-
-    // file private
-    void setContentLength() {
-        if (!didSetContentLength)
-            super.setContentLength(noBody.getContentLength());
-    }
-
-    // SERVLET RESPONSE interface methods
-
-    public void setContentLength(int len) {
-        super.setContentLength(len);
-        didSetContentLength = true;
-    }
-
-    public ServletOutputStream getOutputStream() throws IOException {
-        return noBody;
-    }
-
-    public PrintWriter getWriter() throws UnsupportedEncodingException {
-        if (writer == null) {
-            OutputStreamWriter w;
-
-            w = new OutputStreamWriter(noBody, getCharacterEncoding());
-            writer = new PrintWriter(w);
-        }
-        return writer;
-    }
-
-}
-
-/*
- * Servlet output stream that gobbles up all its data.
- */
-
-// file private
-class NoBodyOutputStream extends ServletOutputStream {
-
-    private static final String LSTRING_FILE =
-            "javax.servlet.http.LocalStrings";
-    private static ResourceBundle lStrings =
-            ResourceBundle.getBundle(LSTRING_FILE);
-
-    private int contentLength = 0;
-
-    // file private
-    NoBodyOutputStream() {
-    }
-
-    // file private
-    int getContentLength() {
-        return contentLength;
-    }
-
-    public void write(int b) {
-        contentLength++;
-    }
-
-    public void write(byte buf[], int offset, int len)
-            throws IOException {
-        if (len >= 0) {
-            contentLength += len;
-        } else {
-            // XXX
-            // isn't this really an IllegalArgumentException?
-
-            String msg = lStrings.getString("err.io.negativelength");
-            throw new IOException("negative length");
-        }
-    }
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletRequest.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletRequest.java
deleted file mode 100644
index 416074d..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletRequest.java
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Enumeration;
-
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-
-/**
- * Extends the {@link javax.servlet.ServletRequest} interface
- * to provide request information for HTTP servlets.
- * <p/>
- * <p>The servlet container creates an <code>HttpServletRequest</code>
- * object and passes it as an argument to the servlet's service
- * methods (<code>doGet</code>, <code>doPost</code>, etc).
- *
- * @version $Rev$ $Date$
- */
-
-public interface HttpServletRequest extends ServletRequest {
-
-    /**
-     * String identifier for Basic authentication. Value "BASIC"
-     */
-    String BASIC_AUTH = "BASIC";
-    /**
-     * String identifier for Form authentication. Value "FORM"
-     */
-    String FORM_AUTH = "FORM";
-    /**
-     * String identifier for Client Certificate authentication. Value "CLIENT_CERT"
-     */
-    String CLIENT_CERT_AUTH = "CLIENT_CERT";
-    /**
-     * String identifier for Digest authentication. Value "DIGEST"
-     */
-    String DIGEST_AUTH = "DIGEST";
-
-    /**
-     * authenticate user using container facilities
-     *
-     * @param response response to use to conduct a dialog if necessary
-     * @return whether authentication was successful
-     * @throws javax.servlet.ServletException if something goes wrong
-     * @throws java.io.IOException if something IO related goes wrong
-     * @since 3.0
-     */
-    boolean authenticate(HttpServletResponse response) throws IOException, ServletException;
-
-    /**
-     * Returns the name of the authentication scheme used to protect
-     * the servlet. All servlet containers support basic, form and client
-     * certificate authentication, and may additionally support digest
-     * authentication.
-     * If the servlet is not authenticated <code>null</code> is returned.
-     * <p/>
-     * <p>Same as the value of the CGI variable AUTH_TYPE.
-     *
-     * @return one of the static members BASIC_AUTH,
-     *         FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
-     *         (suitable for == comparison) or
-     *         the container-specific string indicating
-     *         the authentication scheme, or
-     *         <code>null</code> if the request was
-     *         not authenticated.
-     */
-    String getAuthType();
-
-    /**
-     * Returns the portion of the request URI that indicates the context
-     * of the request.  The context path always comes first in a request
-     * URI.  The path starts with a "/" character but does not end with a "/"
-     * character.  For servlets in the default (root) context, this method
-     * returns "". The container does not decode this string.
-     *
-     * @return a <code>String</code> specifying the
-     *         portion of the request URI that indicates the context
-     *         of the request
-     */
-    String getContextPath();
-
-    /**
-     * Returns an array containing all of the <code>Cookie</code>
-     * objects the client sent with this request.
-     * This method returns <code>null</code> if no cookies were sent.
-     *
-     * @return an array of all the <code>Cookies</code>
-     *         included with this request, or <code>null</code>
-     *         if the request has no cookies
-     */
-    Cookie[] getCookies();
-
-    /**
-     * Returns the value of the specified request header
-     * as a <code>long</code> value that represents a
-     * <code>Date</code> object. Use this method with
-     * headers that contain dates, such as
-     * <code>If-Modified-Since</code>.
-     * <p/>
-     * <p>The date is returned as
-     * the number of milliseconds since January 1, 1970 GMT.
-     * The header name is case insensitive.
-     * <p/>
-     * <p>If the request did not have a header of the
-     * specified name, this method returns -1. If the header
-     * can't be converted to a date, the method throws
-     * an <code>IllegalArgumentException</code>.
-     *
-     * @param name a <code>String</code> specifying the
-     *             name of the header
-     * @return a <code>long</code> value
-     *         representing the date specified
-     *         in the header expressed as
-     *         the number of milliseconds
-     *         since January 1, 1970 GMT,
-     *         or -1 if the named header
-     *         was not included with the
-     *         request
-     * @throws IllegalArgumentException If the header value
-     *                                  can't be converted
-     *                                  to a date
-     */
-    long getDateHeader(String name);
-
-    /**
-     * Returns the value of the specified request header
-     * as a <code>String</code>. If the request did not include a header
-     * of the specified name, this method returns <code>null</code>.
-     * If there are multiple headers with the same name, this method
-     * returns the first head in the request.
-     * The header name is case insensitive. You can use
-     * this method with any request header.
-     *
-     * @param name a <code>String</code> specifying the
-     *             header name
-     * @return a <code>String</code> containing the
-     *         value of the requested
-     *         header, or <code>null</code>
-     *         if the request does not
-     *         have a header of that name
-     */
-    String getHeader(String name);
-
-    /**
-     * Returns an enumeration of all the header names
-     * this request contains. If the request has no
-     * headers, this method returns an empty enumeration.
-     * <p/>
-     * <p>Some servlet containers do not allow
-     * servlets to access headers using this method, in
-     * which case this method returns <code>null</code>
-     *
-     * @return an enumeration of all the
-     *         header names sent with this
-     *         request; if the request has
-     *         no headers, an empty enumeration;
-     *         if the servlet container does not
-     *         allow servlets to use this method,
-     *         <code>null</code>
-     */
-    Enumeration<String> getHeaderNames();
-
-    /**
-     * Returns all the values of the specified request header
-     * as an <code>Enumeration</code> of <code>String</code> objects.
-     * <p/>
-     * <p>Some headers, such as <code>Accept-Language</code> can be sent
-     * by clients as several headers each with a different value rather than
-     * sending the header as a comma separated list.
-     * <p/>
-     * <p>If the request did not include any headers
-     * of the specified name, this method returns an empty
-     * <code>Enumeration</code>.
-     * The header name is case insensitive. You can use
-     * this method with any request header.
-     *
-     * @param name a <code>String</code> specifying the
-     *             header name
-     * @return an <code>Enumeration</code> containing
-     *         the values of the requested header. If
-     *         the request does not have any headers of
-     *         that name return an empty
-     *         enumeration. If
-     *         the container does not allow access to
-     *         header information, return null
-     */
-    Enumeration<String> getHeaders(String name);
-
-    /**
-     * Returns the value of the specified request header
-     * as an <code>int</code>. If the request does not have a header
-     * of the specified name, this method returns -1. If the
-     * header cannot be converted to an integer, this method
-     * throws a <code>NumberFormatException</code>.
-     * <p/>
-     * <p>The header name is case insensitive.
-     *
-     * @param name a <code>String</code> specifying the name
-     *             of a request header
-     * @return an integer expressing the value
-     *         of the request header or -1
-     *         if the request doesn't have a
-     *         header of this name
-     * @throws NumberFormatException If the header value
-     *                               can't be converted
-     *                               to an <code>int</code>
-     */
-    int getIntHeader(String name);
-
-    /**
-     * Returns the name of the HTTP method with which this
-     * request was made, for example, GET, POST, or PUT.
-     * Same as the value of the CGI variable REQUEST_METHOD.
-     *
-     * @return a <code>String</code>
-     *         specifying the name
-     *         of the method with which
-     *         this request was made
-     */
-    String getMethod();
-
-    /**
-     * @param name part name
-     * @return named part
-     * @throws java.io.IOException if something IO related goes wrong
-     * @throws javax.servlet.ServletException if something goes wrong
-     * @since 3.0
-     */
-    Part getPart(String name) throws IOException, ServletException;
-
-    /**
-     * @return all the parts
-     * @throws java.io.IOException if something IO related goes wrong
-     * @throws javax.servlet.ServletException if something goes wrong
-     * @since 3.0
-     */
-    Collection<Part> getParts() throws IOException, ServletException;
-
-    /**
-     * Returns any extra path information associated with
-     * the URL the client sent when it made this request.
-     * The extra path information follows the servlet path
-     * but precedes the query string and will start with
-     * a "/" character.
-     * <p/>
-     * <p>This method returns <code>null</code> if there
-     * was no extra path information.
-     * <p/>
-     * <p>Same as the value of the CGI variable PATH_INFO.
-     *
-     * @return a <code>String</code>, decoded by the
-     *         web container, specifying
-     *         extra path information that comes
-     *         after the servlet path but before
-     *         the query string in the request URL;
-     *         or <code>null</code> if the URL does not have
-     *         any extra path information
-     */
-    String getPathInfo();
-
-    /**
-     * Returns any extra path information after the servlet name
-     * but before the query string, and translates it to a real
-     * path. Same as the value of the CGI variable PATH_TRANSLATED.
-     * <p/>
-     * <p>If the URL does not have any extra path information,
-     * this method returns <code>null</code> or the servlet container
-     * cannot translate the virtual path to a real path for any reason
-     * (such as when the web application is executed from an archive).
-     * <p/>
-     * The web container does not decode this string.
-     *
-     * @return a <code>String</code> specifying the
-     *         real path, or <code>null</code> if
-     *         the URL does not have any extra path
-     *         information
-     */
-    String getPathTranslated();
-
-    /**
-     * Returns the query string that is contained in the request
-     * URL after the path. This method returns <code>null</code>
-     * if the URL does not have a query string. Same as the value
-     * of the CGI variable QUERY_STRING.
-     *
-     * @return a <code>String</code> containing the query
-     *         string or <code>null</code> if the URL
-     *         contains no query string. The value is not
-     *         decoded by the container.
-     */
-    String getQueryString();
-
-    /**
-     * Returns the login of the user making this request, if the
-     * user has been authenticated, or <code>null</code> if the user
-     * has not been authenticated.
-     * Whether the user name is sent with each subsequent request
-     * depends on the browser and type of authentication. Same as the
-     * value of the CGI variable REMOTE_USER.
-     *
-     * @return a <code>String</code> specifying the login
-     *         of the user making this request, or <code>null</code>
-     *         if the user login is not known
-     */
-    String getRemoteUser();
-
-    /**
-     * Returns the session ID specified by the client. This may
-     * not be the same as the ID of the current valid session
-     * for this request.
-     * If the client did not specify a session ID, this method returns
-     * <code>null</code>.
-     *
-     * @return a <code>String</code> specifying the session
-     *         ID, or <code>null</code> if the request did
-     *         not specify a session ID
-     * @see #isRequestedSessionIdValid
-     */
-    String getRequestedSessionId();
-
-    /**
-     * Returns the part of this request's URL from the protocol
-     * name up to the query string in the first line of the HTTP request.
-     * The web container does not decode this String.
-     * For example:
-     * <p/>
-     * <p/>
-     * <table summary="Examples of Returned Values">
-     * <tr align=left><th>First line of HTTP request      </th>
-     * <th>     Returned Value</th>
-     * <tr><td>POST /some/path.html HTTP/1.1<td><td>/some/path.html
-     * <tr><td>GET http://foo.bar/a.html HTTP/1.0
-     * <td><td>/a.html
-     * <tr><td>HEAD /xyz?a=b HTTP/1.1<td><td>/xyz
-     * </table>
-     * <p/>
-     * <p>To reconstruct an URL with a scheme and host, use
-     * {@link HttpUtils#getRequestURL}.
-     *
-     * @return a <code>String</code> containing
-     *         the part of the URL from the
-     *         protocol name up to the query string
-     * @see HttpUtils#getRequestURL
-     */
-    String getRequestURI();
-
-    /**
-     * Reconstructs the URL the client used to make the request.
-     * The returned URL contains a protocol, server name, port
-     * number, and server path, but it does not include query
-     * string parameters.
-     * <p/>
-     * <p>Because this method returns a <code>StringBuffer</code>,
-     * not a string, you can modify the URL easily, for example,
-     * to append query parameters.
-     * <p/>
-     * <p>This method is useful for creating redirect messages
-     * and for reporting errors.
-     *
-     * @return a <code>StringBuffer</code> object containing
-     *         the reconstructed URL
-     */
-    StringBuffer getRequestURL();
-
-    /**
-     * Returns the part of this request's URL that calls
-     * the servlet. This path starts with a "/" character
-     * and includes either the servlet name or a path to
-     * the servlet, but does not include any extra path
-     * information or a query string. Same as the value of
-     * the CGI variable SCRIPT_NAME.
-     * <p/>
-     * <p>This method will return an empty string ("") if the
-     * servlet used to process this request was matched using
-     * the "/*" pattern.
-     *
-     * @return a <code>String</code> containing
-     *         the name or path of the servlet being
-     *         called, as specified in the request URL,
-     *         decoded, or an empty string if the servlet
-     *         used to process the request is matched
-     *         using the "/*" pattern.
-     */
-    String getServletPath();
-
-    /**
-     * Returns the current session associated with this request,
-     * or if the request does not have a session, creates one.
-     *
-     * @return the <code>HttpSession</code> associated
-     *         with this request
-     * @see #getSession(boolean)
-     */
-    HttpSession getSession();
-
-    /**
-     * Returns the current <code>HttpSession</code>
-     * associated with this request or, if there is no
-     * current session and <code>create</code> is true, returns
-     * a new session.
-     * <p/>
-     * <p>If <code>create</code> is <code>false</code>
-     * and the request has no valid <code>HttpSession</code>,
-     * this method returns <code>null</code>.
-     * <p/>
-     * <p>To make sure the session is properly maintained,
-     * you must call this method before
-     * the response is committed. If the container is using cookies
-     * to maintain session integrity and is asked to create a new session
-     * when the response is committed, an IllegalStateException is thrown.
-     *
-     * @param create <code>true</code> to create
-     *               a new session for this request if necessary;
-     *               <code>false</code> to return <code>null</code>
-     *               if there's no current session
-     * @return the <code>HttpSession</code> associated
-     *         with this request or <code>null</code> if
-     *         <code>create</code> is <code>false</code>
-     *         and the request has no valid session
-     * @see #getSession()
-     */
-    HttpSession getSession(boolean create);
-
-    /**
-     * Returns a <code>java.security.Principal</code> object containing
-     * the name of the current authenticated user. If the user has not been
-     * authenticated, the method returns <code>null</code>.
-     *
-     * @return a <code>java.security.Principal</code> containing
-     *         the name of the user making this request;
-     *         <code>null</code> if the user has not been
-     *         authenticated
-     */
-    java.security.Principal getUserPrincipal();
-
-    /**
-     * Checks whether the requested session ID came in as a cookie.
-     *
-     * @return <code>true</code> if the session ID
-     *         came in as a
-     *         cookie; otherwise, <code>false</code>
-     * @see #getSession
-     */
-    boolean isRequestedSessionIdFromCookie();
-
-    /**
-     * @deprecated As of Version 2.1 of the Java Servlet
-     *             API, use {@link #isRequestedSessionIdFromURL}
-     *             instead.
-     */
-    boolean isRequestedSessionIdFromUrl();
-
-    /**
-     * Checks whether the requested session ID came in as part of the
-     * request URL.
-     *
-     * @return <code>true</code> if the session ID
-     *         came in as part of a URL; otherwise,
-     *         <code>false</code>
-     * @see #getSession
-     */
-    boolean isRequestedSessionIdFromURL();
-
-    /**
-     * Checks whether the requested session ID is still valid.
-     *
-     * @return <code>true</code> if this
-     *         request has an id for a valid session
-     *         in the current session context;
-     *         <code>false</code> otherwise
-     * @see #getRequestedSessionId
-     * @see #getSession
-     * @see HttpSessionContext
-     */
-    boolean isRequestedSessionIdValid();
-
-    /**
-     * Returns a boolean indicating whether the authenticated user is included
-     * in the specified logical "role".  Roles and role membership can be
-     * defined using deployment descriptors.  If the user has not been
-     * authenticated, the method returns <code>false</code>.
-     *
-     * @param role a <code>String</code> specifying the name
-     *             of the role
-     * @return a <code>boolean</code> indicating whether
-     *         the user making this request belongs to a given role;
-     *         <code>false</code> if the user has not been
-     *         authenticated
-     */
-    boolean isUserInRole(String role);
-
-    /**
-     * @param username username
-     * @param password password
-     * @since 3.0
-     * @throws javax.servlet.ServletException if username/password authentication not supported,
-     * if a user has already been established, or if authentication fails.
-     */
-    void login(String username, String password) throws ServletException;
-
-    /**
-     * @since 3.0
-     * @throws javax.servlet.ServletException if logout fails
-     */
-    void logout() throws ServletException;
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java
deleted file mode 100644
index d4e0bbc..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletRequestWrapper.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import javax.servlet.ServletRequestWrapper;
-import javax.servlet.ServletException;
-
-import java.util.Enumeration;
-import java.util.Collection;
-import java.io.IOException;
-
-/**
- * Provides a convenient implementation of the HttpServletRequest interface that
- * can be subclassed by developers wishing to adapt the request to a Servlet.
- * This class implements the Wrapper or Decorator pattern. Methods default to
- * calling through to the wrapped request object.
- *
- * @version $Rev$ $Date$
- * @since v 2.3
- * @see javax.servlet.http.HttpServletRequest
- */
-
-
-public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest {
-
-    /**
-     * Constructs a request object wrapping the given request.
-     *
-     * @param request request to wrap
-     * @throws java.lang.IllegalArgumentException
-     *          if the request is null
-     */
-    public HttpServletRequestWrapper(HttpServletRequest request) {
-        super(request);
-    }
-
-    private HttpServletRequest getHttpServletRequest() {
-        return (HttpServletRequest) super.getRequest();
-    }
-
-    public boolean authenticate(HttpServletResponse response) throws IOException, ServletException {
-        return getHttpServletRequest().authenticate(response);
-    }
-
-    /**
-     * The default behavior of this method is to return getAuthType()
-     * on the wrapped request object.
-     */
-    public String getAuthType() {
-        return getHttpServletRequest().getAuthType();
-    }
-
-    /**
-     * The default behavior of this method is to return getCookies()
-     * on the wrapped request object.
-     */
-    public Cookie[] getCookies() {
-        return getHttpServletRequest().getCookies();
-    }
-
-    /**
-     * The default behavior of this method is to return getDateHeader(String name)
-     * on the wrapped request object.
-     */
-    public long getDateHeader(String name) {
-        return getHttpServletRequest().getDateHeader(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getHeader(String name)
-     * on the wrapped request object.
-     */
-    public String getHeader(String name) {
-        return getHttpServletRequest().getHeader(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getHeaders(String name)
-     * on the wrapped request object.
-     */
-    public Enumeration<String> getHeaders(String name) {
-        return getHttpServletRequest().getHeaders(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getHeaderNames()
-     * on the wrapped request object.
-     */
-
-    public Enumeration<String> getHeaderNames() {
-        return getHttpServletRequest().getHeaderNames();
-    }
-
-    /**
-     * The default behavior of this method is to return getIntHeader(String name)
-     * on the wrapped request object.
-     */
-
-    public int getIntHeader(String name) {
-        return getHttpServletRequest().getIntHeader(name);
-    }
-
-    /**
-     * The default behavior of this method is to return getMethod()
-     * on the wrapped request object.
-     */
-    public String getMethod() {
-        return getHttpServletRequest().getMethod();
-    }
-
-    public Part getPart(String name) throws IOException, ServletException {
-        return getHttpServletRequest().getPart(name);
-    }
-
-    public Collection<Part> getParts() throws IOException, ServletException {
-        return getHttpServletRequest().getParts();
-    }
-
-    /**
-     * The default behavior of this method is to return getPathInfo()
-     * on the wrapped request object.
-     */
-    public String getPathInfo() {
-        return getHttpServletRequest().getPathInfo();
-    }
-
-    /**
-     * The default behavior of this method is to return getPathTranslated()
-     * on the wrapped request object.
-     */
-
-    public String getPathTranslated() {
-        return getHttpServletRequest().getPathTranslated();
-    }
-
-    /**
-     * The default behavior of this method is to return getContextPath()
-     * on the wrapped request object.
-     */
-    public String getContextPath() {
-        return getHttpServletRequest().getContextPath();
-    }
-
-    /**
-     * The default behavior of this method is to return getQueryString()
-     * on the wrapped request object.
-     */
-    public String getQueryString() {
-        return getHttpServletRequest().getQueryString();
-    }
-
-    /**
-     * The default behavior of this method is to return getRemoteUser()
-     * on the wrapped request object.
-     */
-    public String getRemoteUser() {
-        return getHttpServletRequest().getRemoteUser();
-    }
-
-    /**
-     * The default behavior of this method is to return isUserInRole(String role)
-     * on the wrapped request object.
-     */
-    public boolean isUserInRole(String role) {
-        return getHttpServletRequest().isUserInRole(role);
-    }
-
-    public void login(String username, String password) throws ServletException {
-        getHttpServletRequest().login(username, password);
-    }
-
-    public void logout() throws ServletException {
-        getHttpServletRequest().logout();
-    }
-
-    /**
-     * The default behavior of this method is to return getUserPrincipal()
-     * on the wrapped request object.
-     */
-    public java.security.Principal getUserPrincipal() {
-        return getHttpServletRequest().getUserPrincipal();
-    }
-
-    /**
-     * The default behavior of this method is to return getRequestedSessionId()
-     * on the wrapped request object.
-     */
-    public String getRequestedSessionId() {
-        return getHttpServletRequest().getRequestedSessionId();
-    }
-
-    /**
-     * The default behavior of this method is to return getRequestURI()
-     * on the wrapped request object.
-     */
-    public String getRequestURI() {
-        return getHttpServletRequest().getRequestURI();
-    }
-
-    /**
-     * The default behavior of this method is to return getRequestURL()
-     * on the wrapped request object.
-     */
-    public StringBuffer getRequestURL() {
-        return getHttpServletRequest().getRequestURL();
-    }
-
-    /**
-     * The default behavior of this method is to return getServletPath()
-     * on the wrapped request object.
-     */
-    public String getServletPath() {
-        return getHttpServletRequest().getServletPath();
-    }
-
-    /**
-     * The default behavior of this method is to return getSession(boolean create)
-     * on the wrapped request object.
-     */
-    public HttpSession getSession(boolean create) {
-        return getHttpServletRequest().getSession(create);
-    }
-
-    /**
-     * The default behavior of this method is to return getSession()
-     * on the wrapped request object.
-     */
-    public HttpSession getSession() {
-        return getHttpServletRequest().getSession();
-    }
-
-    /**
-     * The default behavior of this method is to return isRequestedSessionIdValid()
-     * on the wrapped request object.
-     */
-
-    public boolean isRequestedSessionIdValid() {
-        return getHttpServletRequest().isRequestedSessionIdValid();
-    }
-
-    /**
-     * The default behavior of this method is to return isRequestedSessionIdFromCookie()
-     * on the wrapped request object.
-     */
-    public boolean isRequestedSessionIdFromCookie() {
-        return getHttpServletRequest().isRequestedSessionIdFromCookie();
-    }
-
-    /**
-     * The default behavior of this method is to return isRequestedSessionIdFromURL()
-     * on the wrapped request object.
-     */
-    public boolean isRequestedSessionIdFromURL() {
-        return getHttpServletRequest().isRequestedSessionIdFromURL();
-    }
-
-    /**
-     * The default behavior of this method is to return isRequestedSessionIdFromUrl()
-     * on the wrapped request object.
-     */
-    public boolean isRequestedSessionIdFromUrl() {
-        return getHttpServletRequest().isRequestedSessionIdFromUrl();
-    }
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletResponse.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletResponse.java
deleted file mode 100644
index 4001eb2..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletResponse.java
+++ /dev/null
@@ -1,628 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import javax.servlet.ServletResponse;
-
-/**
- * Extends the {@link ServletResponse} interface to provide HTTP-specific
- * functionality in sending a response.  For example, it has methods
- * to access HTTP headers and cookies.
- * <p/>
- * <p>The servlet container creates an <code>HttpServletResponse</code> object
- * and passes it as an argument to the servlet's service methods
- * (<code>doGet</code>, <code>doPost</code>, etc).
- *
- * @version $Rev$ $Date$
- * @see javax.servlet.ServletResponse
- */
-
-
-public interface HttpServletResponse extends ServletResponse {
-    /*
-     * Server status codes; see RFC 2068.
-     */
-
-    /**
-     * Status code (100) indicating the client can continue.
-     */
-
-    int SC_CONTINUE = 100;
-
-
-    /**
-     * Status code (101) indicating the server is switching protocols
-     * according to Upgrade header.
-     */
-
-    int SC_SWITCHING_PROTOCOLS = 101;
-
-    /**
-     * Status code (200) indicating the request succeeded normally.
-     */
-
-    int SC_OK = 200;
-
-    /**
-     * Status code (201) indicating the request succeeded and created
-     * a new resource on the server.
-     */
-
-    int SC_CREATED = 201;
-
-    /**
-     * Status code (202) indicating that a request was accepted for
-     * processing, but was not completed.
-     */
-
-    int SC_ACCEPTED = 202;
-
-    /**
-     * Status code (203) indicating that the meta information presented
-     * by the client did not originate from the server.
-     */
-
-    int SC_NON_AUTHORITATIVE_INFORMATION = 203;
-
-    /**
-     * Status code (204) indicating that the request succeeded but that
-     * there was no new information to return.
-     */
-
-    int SC_NO_CONTENT = 204;
-
-    /**
-     * Status code (205) indicating that the agent <em>SHOULD</em> reset
-     * the document view which caused the request to be sent.
-     */
-
-    int SC_RESET_CONTENT = 205;
-
-    /**
-     * Status code (206) indicating that the server has fulfilled
-     * the partial GET request for the resource.
-     */
-
-    int SC_PARTIAL_CONTENT = 206;
-
-    /**
-     * Status code (300) indicating that the requested resource
-     * corresponds to any one of a set of representations, each with
-     * its own specific location.
-     */
-
-    int SC_MULTIPLE_CHOICES = 300;
-
-    /**
-     * Status code (301) indicating that the resource has permanently
-     * moved to a new location, and that future references should use a
-     * new URI with their requests.
-     */
-
-    int SC_MOVED_PERMANENTLY = 301;
-
-    /**
-     * Status code (302) indicating that the resource has temporarily
-     * moved to another location, but that future references should
-     * still use the original URI to access the resource.
-     * <p/>
-     * This definition is being retained for backwards compatibility.
-     * SC_FOUND is now the preferred definition.
-     */
-
-    int SC_MOVED_TEMPORARILY = 302;
-
-    /**
-     * Status code (302) indicating that the resource reside
-     * temporarily under a different URI. Since the redirection might
-     * be altered on occasion, the client should continue to use the
-     * Request-URI for future requests.(HTTP/1.1) To represent the
-     * status code (302), it is recommended to use this variable.
-     */
-
-    int SC_FOUND = 302;
-
-    /**
-     * Status code (303) indicating that the response to the request
-     * can be found under a different URI.
-     */
-
-    int SC_SEE_OTHER = 303;
-
-    /**
-     * Status code (304) indicating that a conditional GET operation
-     * found that the resource was available and not modified.
-     */
-
-    int SC_NOT_MODIFIED = 304;
-
-    /**
-     * Status code (305) indicating that the requested resource
-     * <em>MUST</em> be accessed through the proxy given by the
-     * <code><em>Location</em></code> field.
-     */
-
-    int SC_USE_PROXY = 305;
-
-    /**
-     * Status code (307) indicating that the requested resource
-     * resides temporarily under a different URI. The temporary URI
-     * <em>SHOULD</em> be given by the <code><em>Location</em></code>
-     * field in the response.
-     */
-
-    int SC_TEMPORARY_REDIRECT = 307;
-
-    /**
-     * Status code (400) indicating the request sent by the client was
-     * syntactically incorrect.
-     */
-
-    int SC_BAD_REQUEST = 400;
-
-    /**
-     * Status code (401) indicating that the request requires HTTP
-     * authentication.
-     */
-
-    int SC_UNAUTHORIZED = 401;
-
-    /**
-     * Status code (402) reserved for future use.
-     */
-
-    int SC_PAYMENT_REQUIRED = 402;
-
-    /**
-     * Status code (403) indicating the server understood the request
-     * but refused to fulfill it.
-     */
-
-    int SC_FORBIDDEN = 403;
-
-    /**
-     * Status code (404) indicating that the requested resource is not
-     * available.
-     */
-
-    int SC_NOT_FOUND = 404;
-
-    /**
-     * Status code (405) indicating that the method specified in the
-     * <code><em>Request-Line</em></code> is not allowed for the resource
-     * identified by the <code><em>Request-URI</em></code>.
-     */
-
-    int SC_METHOD_NOT_ALLOWED = 405;
-
-    /**
-     * Status code (406) indicating that the resource identified by the
-     * request is only capable of generating response entities which have
-     * content characteristics not acceptable according to the accept
-     * headers sent in the request.
-     */
-
-    int SC_NOT_ACCEPTABLE = 406;
-
-    /**
-     * Status code (407) indicating that the client <em>MUST</em> first
-     * authenticate itself with the proxy.
-     */
-
-    int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
-
-    /**
-     * Status code (408) indicating that the client did not produce a
-     * request within the time that the server was prepared to wait.
-     */
-
-    int SC_REQUEST_TIMEOUT = 408;
-
-    /**
-     * Status code (409) indicating that the request could not be
-     * completed due to a conflict with the current state of the
-     * resource.
-     */
-
-    int SC_CONFLICT = 409;
-
-    /**
-     * Status code (410) indicating that the resource is no longer
-     * available at the server and no forwarding address is known.
-     * This condition <em>SHOULD</em> be considered permanent.
-     */
-
-    int SC_GONE = 410;
-
-    /**
-     * Status code (411) indicating that the request cannot be handled
-     * without a defined <code><em>Content-Length</em></code>.
-     */
-
-    int SC_LENGTH_REQUIRED = 411;
-
-    /**
-     * Status code (412) indicating that the precondition given in one
-     * or more of the request-header fields evaluated to false when it
-     * was tested on the server.
-     */
-
-    int SC_PRECONDITION_FAILED = 412;
-
-    /**
-     * Status code (413) indicating that the server is refusing to process
-     * the request because the request entity is larger than the server is
-     * willing or able to process.
-     */
-
-    int SC_REQUEST_ENTITY_TOO_LARGE = 413;
-
-    /**
-     * Status code (414) indicating that the server is refusing to service
-     * the request because the <code><em>Request-URI</em></code> is longer
-     * than the server is willing to interpret.
-     */
-
-    int SC_REQUEST_URI_TOO_LONG = 414;
-
-    /**
-     * Status code (415) indicating that the server is refusing to service
-     * the request because the entity of the request is in a format not
-     * supported by the requested resource for the requested method.
-     */
-
-    int SC_UNSUPPORTED_MEDIA_TYPE = 415;
-
-    /**
-     * Status code (416) indicating that the server cannot serve the
-     * requested byte range.
-     */
-
-    int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
-
-    /**
-     * Status code (417) indicating that the server could not meet the
-     * expectation given in the Expect request header.
-     */
-
-    int SC_EXPECTATION_FAILED = 417;
-
-    /**
-     * Status code (500) indicating an error inside the HTTP server
-     * which prevented it from fulfilling the request.
-     */
-
-    int SC_INTERNAL_SERVER_ERROR = 500;
-
-    /**
-     * Status code (501) indicating the HTTP server does not support
-     * the functionality needed to fulfill the request.
-     */
-
-    int SC_NOT_IMPLEMENTED = 501;
-
-    /**
-     * Status code (502) indicating that the HTTP server received an
-     * invalid response from a server it consulted when acting as a
-     * proxy or gateway.
-     */
-
-    int SC_BAD_GATEWAY = 502;
-
-    /**
-     * Status code (503) indicating that the HTTP server is
-     * temporarily overloaded, and unable to handle the request.
-     */
-
-    int SC_SERVICE_UNAVAILABLE = 503;
-
-    /**
-     * Status code (504) indicating that the server did not receive
-     * a timely response from the upstream server while acting as
-     * a gateway or proxy.
-     */
-
-    int SC_GATEWAY_TIMEOUT = 504;
-
-    /**
-     * Status code (505) indicating that the server does not support
-     * or refuses to support the HTTP protocol version that was used
-     * in the request message.
-     */
-
-    int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
-
-    /**
-     * Adds the specified cookie to the response.  This method can be called
-     * multiple times to set more than one cookie.
-     *
-     * @param cookie the Cookie to return to the client
-     */
-
-    void addCookie(Cookie cookie);
-
-    /**
-     * Adds a response header with the given name and
-     * date-value.  The date is specified in terms of
-     * milliseconds since the epoch.  This method allows response headers
-     * to have multiple values.
-     *
-     * @param name the name of the header to set
-     * @param date the additional date value
-     * @see #setDateHeader
-     */
-
-    void addDateHeader(String name, long date);
-
-    /**
-     * Adds a response header with the given name and value.
-     * This method allows response headers to have multiple values.
-     *
-     * @param name  the name of the header
-     * @param value the additional header value   If it contains
-     *              octet string, it should be encoded
-     *              according to RFC 2047
-     *              (http://www.ietf.org/rfc/rfc2047.txt)
-     * @see #setHeader
-     */
-    void addHeader(String name, String value);
-
-    /**
-     * Adds a response header with the given name and
-     * integer value.  This method allows response headers to have multiple
-     * values.
-     *
-     * @param name  the name of the header
-     * @param value the assigned integer value
-     * @see #setIntHeader
-     */
-    void addIntHeader(String name, int value);
-
-    /**
-     * Returns a boolean indicating whether the named response header
-     * has already been set.
-     *
-     * @param name the header name
-     * @return <code>true</code> if the named response header
-     *         has already been set;
-     *         <code>false</code> otherwise
-     */
-    boolean containsHeader(String name);
-
-    /**
-     * Encodes the specified URL by including the session ID in it,
-     * or, if encoding is not needed, returns the URL unchanged.
-     * The implementation of this method includes the logic to
-     * determine whether the session ID needs to be encoded in the URL.
-     * For example, if the browser supports cookies, or session
-     * tracking is turned off, URL encoding is unnecessary.
-     * <p/>
-     * <p>For robust session tracking, all URLs emitted by a servlet
-     * should be run through this
-     * method.  Otherwise, URL rewriting cannot be used with browsers
-     * which do not support cookies.
-     *
-     * @param url the url to be encoded.
-     * @return the encoded URL if encoding is needed;
-     *         the unchanged URL otherwise.
-     */
-    String encodeURL(String url);
-
-    /**
-     * Encodes the specified URL for use in the
-     * <code>sendRedirect</code> method or, if encoding is not needed,
-     * returns the URL unchanged.  The implementation of this method
-     * includes the logic to determine whether the session ID
-     * needs to be encoded in the URL.  Because the rules for making
-     * this determination can differ from those used to decide whether to
-     * encode a normal link, this method is separated from the
-     * <code>encodeURL</code> method.
-     * <p/>
-     * <p>All URLs sent to the <code>HttpServletResponse.sendRedirect</code>
-     * method should be run through this method.  Otherwise, URL
-     * rewriting cannot be used with browsers which do not support
-     * cookies.
-     *
-     * @param url the url to be encoded.
-     * @return the encoded URL if encoding is needed;
-     *         the unchanged URL otherwise.
-     * @see #sendRedirect
-     * @see #encodeUrl
-     */
-    String encodeRedirectURL(String url);
-
-    /**
-     * @param url the url to be encoded.
-     * @return the encoded URL if encoding is needed;
-     *         the unchanged URL otherwise.
-     * @deprecated As of version 2.1, use encodeURL(String url) instead
-     */
-    String encodeUrl(String url);
-
-    /**
-     * @param url the url to be encoded.
-     * @return the encoded URL if encoding is needed;
-     *         the unchanged URL otherwise.
-     * @deprecated As of version 2.1, use
-     *             encodeRedirectURL(String url) instead
-     */
-    String encodeRedirectUrl(String url);
-
-    /**
-     * @param name header name
-     * @return header value
-     * @since 3.0
-     */
-    String getHeader(String name);
-
-    /**
-     * @return all the header names
-     * @since 3.0
-     */
-    Collection<String> getHeaderNames();
-
-    /**
-     * @param headerName header name for which headers are requested
-     * @return all the header values
-     * @since 3.0
-     */
-    Collection<String> getHeaders(String headerName);
-
-    /**
-     * @return current http status
-     * @since 3.0
-     */
-    int getStatus();
-
-    /**
-     * Sends an error response to the client using the specified status
-     * code and clearing the buffer.
-     * <p>If the response has already been committed, this method throws
-     * an IllegalStateException.
-     * After using this method, the response should be considered
-     * to be committed and should not be written to.
-     *
-     * @param sc the error status code
-     * @throws IOException           If an input or output exception occurs
-     * @throws IllegalStateException If the response was committed
-     *                               before this method call
-     */
-    void sendError(int sc) throws IOException;
-
-    /**
-     * Sends an error response to the client using the specified
-     * status.  The server defaults to creating the
-     * response to look like an HTML-formatted server error page
-     * containing the specified message, setting the content type
-     * to "text/html", leaving cookies and other headers unmodified.
-     * <p/>
-     * If an error-page declaration has been made for the web application
-     * corresponding to the status code passed in, it will be served back in
-     * preference to the suggested msg parameter.
-     * <p/>
-     * <p>If the response has already been committed, this method throws
-     * an IllegalStateException.
-     * After using this method, the response should be considered
-     * to be committed and should not be written to.
-     *
-     * @param sc  the error status code
-     * @param msg the descriptive message
-     * @throws IOException           If an input or output exception occurs
-     * @throws IllegalStateException If the response was committed
-     */
-    void sendError(int sc, String msg) throws IOException;
-
-    /**
-     * Sends a temporary redirect response to the client using the
-     * specified redirect location URL.  This method can accept relative URLs;
-     * the servlet container must convert the relative URL to an absolute URL
-     * before sending the response to the client. If the location is relative
-     * without a leading '/' the container interprets it as relative to
-     * the current request URI. If the location is relative with a leading
-     * '/' the container interprets it as relative to the servlet container root.
-     * <p/>
-     * <p>If the response has already been committed, this method throws
-     * an IllegalStateException.
-     * After using this method, the response should be considered
-     * to be committed and should not be written to.
-     *
-     * @param location the redirect location URL
-     * @throws IOException           If an input or output exception occurs
-     * @throws IllegalStateException If the response was committed or
-     *                               if a partial URL is given and cannot be converted into a valid URL
-     */
-    void sendRedirect(String location) throws IOException;
-
-    /**
-     * Sets a response header with the given name and
-     * date-value.  The date is specified in terms of
-     * milliseconds since the epoch.  If the header had already
-     * been set, the new value overwrites the previous one.  The
-     * <code>containsHeader</code> method can be used to test for the
-     * presence of a header before setting its value.
-     *
-     * @param name the name of the header to set
-     * @param date the assigned date value
-     * @see #containsHeader
-     * @see #addDateHeader
-     */
-    void setDateHeader(String name, long date);
-
-    /**
-     * Sets a response header with the given name and value.
-     * If the header had already been set, the new value overwrites the
-     * previous one.  The <code>containsHeader</code> method can be
-     * used to test for the presence of a header before setting its
-     * value.
-     *
-     * @param name  the name of the header
-     * @param value the header value  If it contains octet string,
-     *              it should be encoded according to RFC 2047
-     *              (http://www.ietf.org/rfc/rfc2047.txt)
-     * @see #containsHeader
-     * @see #addHeader
-     */
-    void setHeader(String name, String value);
-
-    /**
-     * Sets a response header with the given name and
-     * integer value.  If the header had already been set, the new value
-     * overwrites the previous one.  The <code>containsHeader</code>
-     * method can be used to test for the presence of a header before
-     * setting its value.
-     *
-     * @param name  the name of the header
-     * @param value the assigned integer value
-     * @see #containsHeader
-     * @see #addIntHeader
-     */
-    void setIntHeader(String name, int value);
-
-    /**
-     * Sets the status code for this response.  This method is used to
-     * set the return status code when there is no error (for example,
-     * for the status codes SC_OK or SC_MOVED_TEMPORARILY).  If there
-     * is an error, and the caller wishes to invoke an error-page defined
-     * in the web application, the <code>sendError</code> method should be used
-     * instead.
-     * <p> The container clears the buffer and sets the Location header, preserving
-     * cookies and other headers.
-     *
-     * @param sc the status code
-     * @see #sendError
-     */
-    void setStatus(int sc);
-
-    /**
-     * @param sc the status code
-     * @param sm the status message
-     * @deprecated As of version 2.1, due to ambiguous meaning of the
-     *             message parameter. To set a status code
-     *             use <code>setStatus(int)</code>, to send an error with a description
-     *             use <code>sendError(int, String)</code>.
-     *             <p/>
-     *             Sets the status code and message for this response.
-     */
-    void setStatus(int sc, String sm);
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletResponseWrapper.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletResponseWrapper.java
deleted file mode 100644
index 574c5e2..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpServletResponseWrapper.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import javax.servlet.ServletResponseWrapper;
-
-/**
- * Provides a convenient implementation of the HttpServletResponse interface that
- * can be subclassed by developers wishing to adapt the response from a Servlet.
- * This class implements the Wrapper or Decorator pattern. Methods default to
- * calling through to the wrapped response object.
- *
- * @version $Rev$ $Date$
- * @since v 2.3
- * @see javax.servlet.http.HttpServletResponse
- */
-
-public class HttpServletResponseWrapper extends ServletResponseWrapper implements HttpServletResponse {
-
-
-    /**
-     * Constructs a response adaptor wrapping the given response.
-     *
-     * @param response response to wrap
-     * @throws java.lang.IllegalArgumentException
-     *          if the response is null
-     */
-    public HttpServletResponseWrapper(HttpServletResponse response) {
-        super(response);
-    }
-
-    private HttpServletResponse getHttpServletResponse() {
-        return (HttpServletResponse) super.getResponse();
-    }
-
-    /**
-     * The default behavior of this method is to call addCookie(Cookie cookie)
-     * on the wrapped response object.
-     */
-    public void addCookie(Cookie cookie) {
-        getHttpServletResponse().addCookie(cookie);
-    }
-
-    /**
-     * The default behavior of this method is to call containsHeader(String name)
-     * on the wrapped response object.
-     */
-
-
-    public boolean containsHeader(String name) {
-        return getHttpServletResponse().containsHeader(name);
-    }
-
-    /**
-     * The default behavior of this method is to call encodeURL(String url)
-     * on the wrapped response object.
-     */
-    public String encodeURL(String url) {
-        return getHttpServletResponse().encodeURL(url);
-    }
-
-    /**
-     * The default behavior of this method is to return encodeRedirectURL(String url)
-     * on the wrapped response object.
-     */
-    public String encodeRedirectURL(String url) {
-        return getHttpServletResponse().encodeRedirectURL(url);
-    }
-
-    /**
-     * The default behavior of this method is to call encodeUrl(String url)
-     * on the wrapped response object.
-     */
-    public String encodeUrl(String url) {
-        return getHttpServletResponse().encodeUrl(url);
-    }
-
-    /**
-     * The default behavior of this method is to return encodeRedirectUrl(String url)
-     * on the wrapped response object.
-     */
-    public String encodeRedirectUrl(String url) {
-        return getHttpServletResponse().encodeRedirectUrl(url);
-    }
-
-    public String getHeader(String name) {
-        return getHttpServletResponse().getHeader(name);
-    }
-
-    public Collection<String> getHeaderNames() {
-        return getHttpServletResponse().getHeaderNames();
-    }
-
-    public Collection<String> getHeaders(String headerName) {
-        return getHttpServletResponse().getHeaders(headerName);
-    }
-
-    public int getStatus() {
-        return getHttpServletResponse().getStatus();
-    }
-
-    /**
-     * The default behavior of this method is to call sendError(int sc, String msg)
-     * on the wrapped response object.
-     */
-    public void sendError(int sc, String msg) throws IOException {
-        getHttpServletResponse().sendError(sc, msg);
-    }
-
-    /**
-     * The default behavior of this method is to call sendError(int sc)
-     * on the wrapped response object.
-     */
-
-
-    public void sendError(int sc) throws IOException {
-        getHttpServletResponse().sendError(sc);
-    }
-
-    /**
-     * The default behavior of this method is to return sendRedirect(String location)
-     * on the wrapped response object.
-     */
-    public void sendRedirect(String location) throws IOException {
-        getHttpServletResponse().sendRedirect(location);
-    }
-
-    /**
-     * The default behavior of this method is to call setDateHeader(String name, long date)
-     * on the wrapped response object.
-     */
-    public void setDateHeader(String name, long date) {
-        getHttpServletResponse().setDateHeader(name, date);
-    }
-
-    /**
-     * The default behavior of this method is to call addDateHeader(String name, long date)
-     * on the wrapped response object.
-     */
-    public void addDateHeader(String name, long date) {
-        getHttpServletResponse().addDateHeader(name, date);
-    }
-
-    /**
-     * The default behavior of this method is to return setHeader(String name, String value)
-     * on the wrapped response object.
-     */
-    public void setHeader(String name, String value) {
-        getHttpServletResponse().setHeader(name, value);
-    }
-
-    /**
-     * The default behavior of this method is to return addHeader(String name, String value)
-     * on the wrapped response object.
-     */
-    public void addHeader(String name, String value) {
-        getHttpServletResponse().addHeader(name, value);
-    }
-
-    /**
-     * The default behavior of this method is to call setIntHeader(String name, int value)
-     * on the wrapped response object.
-     */
-    public void setIntHeader(String name, int value) {
-        getHttpServletResponse().setIntHeader(name, value);
-    }
-
-    /**
-     * The default behavior of this method is to call addIntHeader(String name, int value)
-     * on the wrapped response object.
-     */
-    public void addIntHeader(String name, int value) {
-        getHttpServletResponse().addIntHeader(name, value);
-    }
-
-    /**
-     * The default behavior of this method is to call setStatus(int sc)
-     * on the wrapped response object.
-     */
-
-
-    public void setStatus(int sc) {
-        getHttpServletResponse().setStatus(sc);
-    }
-
-    /**
-     * The default behavior of this method is to call setStatus(int sc, String sm)
-     * on the wrapped response object.
-     */
-    public void setStatus(int sc, String sm) {
-        getHttpServletResponse().setStatus(sc, sm);
-    }
-
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSession.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSession.java
deleted file mode 100644
index 64b8f72..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSession.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.util.Enumeration;
-
-import javax.servlet.ServletContext;
-
-/**
- * Provides a way to identify a user across more than one page
- * request or visit to a Web site and to store information about that user.
- * <p/>
- * <p>The servlet container uses this interface to create a session
- * between an HTTP client and an HTTP server. The session persists
- * for a specified time period, across more than one connection or
- * page request from the user. A session usually corresponds to one
- * user, who may visit a site many times. The server can maintain a
- * session in many ways such as using cookies or rewriting URLs.
- * <p/>
- * <p>This interface allows servlets to
- * <ul>
- * <li>View and manipulate information about a session, such as
- * the session identifier, creation time, and last accessed time
- * <li>Bind objects to sessions, allowing user information to persist
- * across multiple user connections
- * </ul>
- * <p/>
- * <p>When an application stores an object in or removes an object from a
- * session, the session checks whether the object implements
- * {@link HttpSessionBindingListener}. If it does,
- * the servlet notifies the object that it has been bound to or unbound
- * from the session. Notifications are sent after the binding methods complete.
- * For session that are invalidated or expire, notifications are sent after
- * the session has been invalidated or expired.
- * <p/>
- * <p> When container migrates a session between VMs in a distributed container
- * setting, all session attributes implementing the {@link HttpSessionActivationListener}
- * interface are notified.
- * <p/>
- * <p>A servlet should be able to handle cases in which
- * the client does not choose to join a session, such as when cookies are
- * intentionally turned off. Until the client joins the session,
- * <code>isNew</code> returns <code>true</code>.  If the client chooses
- * not to join
- * the session, <code>getSession</code> will return a different session
- * on each request, and <code>isNew</code> will always return
- * <code>true</code>.
- * <p/>
- * <p>Session information is scoped only to the current web application
- * (<code>ServletContext</code>), so information stored in one context
- * will not be directly visible in another.
- *
- * @version $Rev$ $Date$
- * @see HttpSessionBindingListener
- * @see HttpSessionContext
- */
-
-public interface HttpSession {
-
-    /**
-     * Returns the time when this session was created, measured
-     * in milliseconds since midnight January 1, 1970 GMT.
-     *
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return a <code>long</code> specifying
-     * when this session was created,
-     * expressed in
-     * milliseconds since 1/1/1970 GMT
-     */
-    long getCreationTime();
-
-    /**
-     * Returns a string containing the unique identifier assigned
-     * to this session. The identifier is assigned
-     * by the servlet container and is implementation dependent.
-     *
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return a string specifying the identifier
-     * assigned to this session
-     */
-    String getId();
-
-    /**
-     * Returns the last time the client sent a request associated with
-     * this session, as the number of milliseconds since midnight
-     * January 1, 1970 GMT, and marked by the time the container received the request.
-     * <p/>
-     * <p>Actions that your application takes, such as getting or setting
-     * a value associated with the session, do not affect the access
-     * time.
-     *
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return a <code>long</code>
-     * representing the last time
-     * the client sent a request associated
-     * with this session, expressed in
-     * milliseconds since 1/1/1970 GMT
-     */
-    long getLastAccessedTime();
-
-    /**
-     * Returns the ServletContext to which this session belongs.
-     *
-     * @return The ServletContext object for the web application
-     * @since 2.3
-     */
-    ServletContext getServletContext();
-
-    /**
-     * Specifies the time, in seconds, between client requests before the
-     * servlet container will invalidate this session.  A negative time
-     * indicates the session should never timeout.
-     *
-     * @param interval An integer specifying the number
-     *                 of seconds
-     */
-    void setMaxInactiveInterval(int interval);
-
-    /**
-     * Returns the maximum time interval, in seconds, that
-     * the servlet container will keep this session open between
-     * client accesses. After this interval, the servlet container
-     * will invalidate the session.  The maximum time interval can be set
-     * with the <code>setMaxInactiveInterval</code> method.
-     * A negative time indicates the session should never timeout.
-     *
-     * @return an integer specifying the number of
-     * seconds this session remains open
-     * between client requests
-     * @see                #setMaxInactiveInterval
-     */
-    int getMaxInactiveInterval();
-
-    /**
-     * @deprecated As of Version 2.1, this method is
-     *             deprecated and has no replacement.
-     *             It will be removed in a future
-     *             version of the Java Servlet API.
-     */
-    HttpSessionContext getSessionContext();
-
-    /**
-     * Returns the object bound with the specified name in this session, or
-     * <code>null</code> if no object is bound under the name.
-     *
-     * @param name a string specifying the name of the object
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return the object with the specified name
-     */
-    Object getAttribute(String name);
-
-    /**
-     * @param name a string specifying the name of the object
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return the object with the specified name
-     * @deprecated As of Version 2.2, this method is
-     *             replaced by {@link #getAttribute}.
-     */
-    Object getValue(String name);
-
-    /**
-     * Returns an <code>Enumeration</code> of <code>String</code> objects
-     * containing the names of all the objects bound to this session.
-     *
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return an <code>Enumeration</code> of
-     * <code>String</code> objects specifying the
-     * names of all the objects bound to
-     * this session
-     */
-    Enumeration<String> getAttributeNames();
-
-    /**
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @return an array of <code>String</code>
-     * objects specifying the
-     * names of all the objects bound to
-     * this session
-     * @deprecated As of Version 2.2, this method is
-     *             replaced by {@link #getAttributeNames}
-     */
-    String[] getValueNames();
-
-    /**
-     * Binds an object to this session, using the name specified.
-     * If an object of the same name is already bound to the session,
-     * the object is replaced.
-     * <p/>
-     * <p>After this method executes, and if the new object
-     * implements <code>HttpSessionBindingListener</code>,
-     * the container calls
-     * <code>HttpSessionBindingListener.valueBound</code>. The container then
-     * notifies any <code>HttpSessionAttributeListener</code>s in the web
-     * application.
-     * <p/>
-     * <p>If an object was already bound to this session of this name
-     * that implements <code>HttpSessionBindingListener</code>, its
-     * <code>HttpSessionBindingListener.valueUnbound</code> method is called.
-     * <p/>
-     * <p>If the value passed in is null, this has the same effect as calling
-     * <code>removeAttribute()<code>.
-     *
-     * @param name  the name to which the object is bound;
-     *              cannot be null
-     * @param value the object to be bound
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     */
-    void setAttribute(String name, Object value);
-
-    /**
-     * @param name  the name to which the object is bound;
-     *              cannot be null
-     * @param value the object to be bound; cannot be null
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @deprecated As of Version 2.2, this method is
-     *             replaced by {@link #setAttribute}
-     */
-    void putValue(String name, Object value);
-
-    /**
-     * Removes the object bound with the specified name from
-     * this session. If the session does not have an object
-     * bound with the specified name, this method does nothing.
-     * <p/>
-     * <p>After this method executes, and if the object
-     * implements <code>HttpSessionBindingListener</code>,
-     * the container calls
-     * <code>HttpSessionBindingListener.valueUnbound</code>. The container
-     * then notifies any <code>HttpSessionAttributeListener</code>s in the web
-     * application.
-     *
-     * @param name the name of the object to
-     *             remove from this session
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     */
-    void removeAttribute(String name);
-
-    /**
-     * @param name the name of the object to
-     *             remove from this session
-     * @throws IllegalStateException if this method is called on an
-     *                               invalidated session
-     * @deprecated As of Version 2.2, this method is
-     *             replaced by {@link #removeAttribute}
-     */
-    void removeValue(String name);
-
-    /**
-     * Invalidates this session then unbinds any objects bound
-     * to it.
-     *
-     * @throws IllegalStateException if this method is called on an
-     *                               already invalidated session
-     */
-    void invalidate();
-
-    /**
-     * Returns <code>true</code> if the client does not yet know about the
-     * session or if the client chooses not to join the session.  For
-     * example, if the server used only cookie-based sessions, and
-     * the client had disabled the use of cookies, then a session would
-     * be new on each request.
-     *
-     * @return <code>true</code> if the
-     *         server has created a session,
-     *         but the client has not yet joined
-     * @throws IllegalStateException if this method is called on an
-     *                               already invalidated session
-     */
-    boolean isNew();
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionActivationListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionActivationListener.java
deleted file mode 100644
index f2636e2..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionActivationListener.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.util.EventListener;
-
-/**
- * Objects that are bound to a session may listen to container
- * events notifying them that sessions will be passivated and that
- * session will be activated. A container that migrates session between VMs
- * or persists sessions is required to notify all attributes bound to sessions
- * implementing HttpSessionActivationListener.
- *
- * @version $Rev$ $Date$
- * @since 2.3
- */
-
-public interface HttpSessionActivationListener extends EventListener {
-
-    /**
-     * Notification that the session is about to be passivated.
-     */
-    void sessionWillPassivate(HttpSessionEvent se);
-
-    /**
-     * Notification that the session has just been activated.
-     */
-    void sessionDidActivate(HttpSessionEvent se);
-} 
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionAttributeListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionAttributeListener.java
deleted file mode 100644
index d5e9c99..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionAttributeListener.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.util.EventListener;
-
-/**
- * This listener interface can be implemented in order to
- * get notifications of changes to the attribute lists of sessions within
- * this web application.
- *
- * @version $Rev$ $Date$
- * @since v 2.3
- */
-
-public interface HttpSessionAttributeListener extends EventListener {
-    /**
-     * Notification that an attribute has been added to a session. Called after the attribute is added.
-     */
-    void attributeAdded(HttpSessionBindingEvent se);
-
-    /**
-     * Notification that an attribute has been removed from a session. Called after the attribute is removed.
-     */
-    void attributeRemoved(HttpSessionBindingEvent se);
-
-    /**
-     * Notification that an attribute has been replaced in a session. Called after the attribute is replaced.
-     */
-    void attributeReplaced(HttpSessionBindingEvent se);
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionBindingEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionBindingEvent.java
deleted file mode 100644
index 47cc098..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionBindingEvent.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-/**
- * Events of this type are either sent to an object that implements
- * {@link HttpSessionBindingListener} when it is bound or
- * unbound from a session, or to a {@link HttpSessionAttributeListener}
- * that has been configured in the deployment descriptor when any attribute is
- * bound, unbound or replaced in a session.
- * <p/>
- * <p>The session binds the object by a call to
- * <code>HttpSession.setAttribute</code> and unbinds the object
- * by a call to <code>HttpSession.removeAttribute</code>.
- *
- * @version $Rev$ $Date$
- * @see HttpSessionAttributeListener
- * @see HttpSession
- * @see HttpSessionBindingListener
- */
-public class HttpSessionBindingEvent extends HttpSessionEvent {
-
-    /* The name to which the object is being bound or unbound */
-    private final String name;
-
-    /* The object is being bound or unbound */
-    private final Object value;
-
-    /**
-     * Constructs an event that notifies an object that it
-     * has been bound to or unbound from a session.
-     * To receive the event, the object must implement
-     * {@link HttpSessionBindingListener}.
-     *
-     * @param session the session to which the object is bound or unbound
-     * @param name    the name with which the object is bound or unbound
-     * @see #getName
-     * @see #getSession
-     */
-    public HttpSessionBindingEvent(HttpSession session, String name) {
-        super(session);
-        this.name = name;
-        value = null;
-    }
-
-    /**
-     * Constructs an event that notifies an object that it
-     * has been bound to or unbound from a session.
-     * To receive the event, the object must implement
-     * {@link HttpSessionBindingListener}.
-     *
-     * @param session the session to which the object is bound or unbound
-     * @param name    the name with which the object is bound or unbound
-     * @see #getName
-     * @see #getSession
-     */
-    public HttpSessionBindingEvent(HttpSession session, String name, Object value) {
-        super(session);
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Return the session that changed.
-     */
-    public HttpSession getSession() {
-        return super.getSession();
-    }
-
-    /**
-     * Returns the name with which the attribute is bound to or
-     * unbound from the session.
-     *
-     * @return a string specifying the name with which
-     *         the object is bound to or unbound from
-     *         the session
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the value of the attribute that has been added, removed or replaced.
-     * If the attribute was added (or bound), this is the value of the attribute. If the attribute was
-     * removed (or unbound), this is the value of the removed attribute. If the attribute was replaced, this
-     * is the old value of the attribute.
-     *
-     * @since 2.3
-     */
-    public Object getValue() {
-        return this.value;
-    }
-
-}
-
-
-
-
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionBindingListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionBindingListener.java
deleted file mode 100644
index 6412632..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionBindingListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.util.EventListener;
-
-/**
- * Causes an object to be notified when it is bound to
- * or unbound from a session. The object is notified
- * by an {@link HttpSessionBindingEvent} object. This may be as a result
- * of a servlet programmer explicitly unbinding an attribute from a session,
- * due to a session being invalidated, or due to a session timing out.
- *
- * @version $Rev$ $Date$
- * @see HttpSession
- * @see HttpSessionBindingEvent
- */
-public interface HttpSessionBindingListener extends EventListener {
-    /**
-     * Notifies the object that it is being bound to
-     * a session and identifies the session.
-     *
-     * @param event the event that identifies the
-     *              session
-     * @see #valueUnbound
-     */
-    void valueBound(HttpSessionBindingEvent event);
-
-
-    /**
-     * Notifies the object that it is being unbound
-     * from a session and identifies the session.
-     *
-     * @param event the event that identifies
-     *              the session
-     * @see #valueBound
-     */
-    void valueUnbound(HttpSessionBindingEvent event);
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionContext.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionContext.java
deleted file mode 100644
index e6d8f5d..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionContext.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.util.Enumeration;
-
-/**
- * @version $Rev$ $Date$
- * @see HttpSession
- * @see HttpSessionBindingEvent
- * @see HttpSessionBindingListener
- * @deprecated As of Java(tm) Servlet API 2.1
- *             for security reasons, with no replacement.
- *             This interface will be removed in a future
- *             version of this API.
- */
-public interface HttpSessionContext {
-
-    /**
-     * @deprecated As of Java Servlet API 2.1 with
-     *             no replacement. This method must
-     *             return null and will be removed in
-     *             a future version of this API.
-     */
-    HttpSession getSession(String sessionId);
-
-    /**
-     * @deprecated As of Java Servlet API 2.1 with
-     *             no replacement. This method must return
-     *             an empty <code>Enumeration</code> and will be removed
-     *             in a future version of this API.
-     */
-    Enumeration<String> getIds();
-}
-
-
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionEvent.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionEvent.java
deleted file mode 100644
index cdbefdf..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionEvent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-/**
- * This is the class representing event notifications for
- * changes to sessions within a web application.
- *
- * @version $Rev$ $Date$
- * @since v 2.3
- */
-public class HttpSessionEvent extends java.util.EventObject {
-
-    /**
-     * Construct a session event from the given source.
-     */
-    public HttpSessionEvent(HttpSession source) {
-        super(source);
-    }
-
-    /**
-     * Return the session that changed.
-     */
-    public HttpSession getSession() {
-        return (HttpSession) super.getSource();
-    }
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionListener.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionListener.java
deleted file mode 100644
index 79dd6b8..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpSessionListener.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.util.EventListener;
-
-/**
- * Implementations of this interface are notified of changes to the
- * list of active sessions in a web application.
- * To receive notification events, the implementation class
- * must be configured in the deployment descriptor for the web application.
- *
- * @version $Rev$ $Date$
- * @see HttpSessionEvent
- * @since v 2.3
- */
-
-public interface HttpSessionListener extends EventListener {
-
-    /**
-     * Notification that a session was created.
-     *
-     * @param se the notification event
-     */
-    void sessionCreated(HttpSessionEvent se);
-
-    /**
-     * Notification that a session is about to be invalidated.
-     *
-     * @param se the notification event
-     */
-    void sessionDestroyed(HttpSessionEvent se);
-
-}
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpUtils.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpUtils.java
deleted file mode 100644
index 117d2be..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/HttpUtils.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import javax.servlet.ServletInputStream;
-
-import java.util.Hashtable;
-import java.util.ResourceBundle;
-import java.util.StringTokenizer;
-import java.io.IOException;
-
-/**
- * @version $Rev$ $Date$
- * @deprecated As of Java(tm) Servlet API 2.3.
- *             These methods were only useful
- *             with the default encoding and have been moved
- *             to the request interfaces.
- */
-
-
-public class HttpUtils {
-
-    private static final String LSTRING_FILE =
-            "javax.servlet.http.LocalStrings";
-    private static ResourceBundle lStrings =
-            ResourceBundle.getBundle(LSTRING_FILE);
-
-    /**
-     * Constructs an empty <code>HttpUtils</code> object.
-     */
-    public HttpUtils() {
-    }
-
-    /**
-     * Parses a query string passed from the client to the
-     * server and builds a <code>HashTable</code> object
-     * with key-value pairs.
-     * The query string should be in the form of a string
-     * packaged by the GET or POST method, that is, it
-     * should have key-value pairs in the form <i>key=value</i>,
-     * with each pair separated from the next by a &amp; character.
-     * <p/>
-     * <p>A key can appear more than once in the query string
-     * with different values. However, the key appears only once in
-     * the hashtable, with its value being
-     * an array of strings containing the multiple values sent
-     * by the query string.
-     * <p/>
-     * <p>The keys and values in the hashtable are stored in their
-     * decoded form, so
-     * any + characters are converted to spaces, and characters
-     * sent in hexadecimal notation (like <i>%xx</i>) are
-     * converted to ASCII characters.
-     *
-     * @param s a string containing the query to be parsed
-     * @return a <code>HashTable</code> object built
-     *         from the parsed key-value pairs
-     * @throws IllegalArgumentException if the query string
-     *                                  is invalid
-     */
-    static public Hashtable<String, String[]> parseQueryString(String s) {
-
-        String valArray[];
-
-        if (s == null) {
-            throw new IllegalArgumentException();
-        }
-        Hashtable<String, String[]> ht = new Hashtable<String, String[]>();
-        StringBuffer sb = new StringBuffer();
-        StringTokenizer st = new StringTokenizer(s, "&");
-        while (st.hasMoreTokens()) {
-            String pair = st.nextToken();
-            int pos = pair.indexOf('=');
-            if (pos == -1) {
-                // XXX
-                // should give more detail about the illegal argument
-                throw new IllegalArgumentException();
-            }
-            String key = parseName(pair.substring(0, pos), sb);
-            String val = parseName(pair.substring(pos + 1, pair.length()), sb);
-            if (ht.containsKey(key)) {
-                String oldVals[] = ht.get(key);
-                valArray = new String[oldVals.length + 1];
-                System.arraycopy(oldVals, 0, valArray, 0, oldVals.length);
-                valArray[oldVals.length] = val;
-            } else {
-                valArray = new String[1];
-                valArray[0] = val;
-            }
-            ht.put(key, valArray);
-        }
-        return ht;
-    }
-
-    /**
-     * Parses data from an HTML form that the client sends to
-     * the server using the HTTP POST method and the
-     * <i>application/x-www-form-urlencoded</i> MIME type.
-     * <p/>
-     * <p>The data sent by the POST method contains key-value
-     * pairs. A key can appear more than once in the POST data
-     * with different values. However, the key appears only once in
-     * the hashtable, with its value being
-     * an array of strings containing the multiple values sent
-     * by the POST method.
-     * <p/>
-     * <p>The keys and values in the hashtable are stored in their
-     * decoded form, so
-     * any + characters are converted to spaces, and characters
-     * sent in hexadecimal notation (like <i>%xx</i>) are
-     * converted to ASCII characters.
-     *
-     * @param len an integer specifying the length,
-     *            in characters, of the
-     *            <code>ServletInputStream</code>
-     *            object that is also passed to this
-     *            method
-     * @param in  the <code>ServletInputStream</code>
-     *            object that contains the data sent
-     *            from the client
-     * @return a <code>HashTable</code> object built
-     *         from the parsed key-value pairs
-     * @throws IllegalArgumentException if the data
-     *                                  sent by the POST method is invalid
-     */
-
-
-    static public Hashtable<String, String[]> parsePostData(int len,
-                                                            ServletInputStream in) {
-        // XXX
-        // should a length of 0 be an IllegalArgumentException
-
-        if (len <= 0)
-            return new Hashtable<String, String[]>(); // cheap hack to return an empty hash
-
-        if (in == null) {
-            throw new IllegalArgumentException();
-        }
-
-        //
-        // Make sure we read the entire POSTed body.
-        //
-        byte[] postedBytes = new byte[len];
-        try {
-            int offset = 0;
-
-            do {
-                int inputLen = in.read(postedBytes, offset, len - offset);
-                if (inputLen <= 0) {
-                    String msg = lStrings.getString("err.io.short_read");
-                    throw new IllegalArgumentException(msg);
-                }
-                offset += inputLen;
-            } while ((len - offset) > 0);
-
-        } catch (IOException e) {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-
-        // XXX we shouldn't assume that the only kind of POST body
-        // is FORM data encoded using ASCII or ISO Latin/1 ... or
-        // that the body should always be treated as FORM data.
-        //
-
-        try {
-            String postedBody = new String(postedBytes, 0, len, "8859_1");
-            return parseQueryString(postedBody);
-        } catch (java.io.UnsupportedEncodingException e) {
-            // XXX function should accept an encoding parameter & throw this
-            // exception.  Otherwise throw something expected.
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-
-    /*
-    * Parse a name in the query string.
-    */
-    static private String parseName(String s, StringBuffer sb) {
-        sb.setLength(0);
-        for (int i = 0; i < s.length(); i++) {
-            char c = s.charAt(i);
-            switch (c) {
-                case '+':
-                    sb.append(' ');
-                    break;
-                case '%':
-                    try {
-                        sb.append((char) Integer.parseInt(s.substring(i + 1, i + 3),
-                                16));
-                        i += 2;
-                    } catch (NumberFormatException e) {
-                        // XXX
-                        // need to be more specific about illegal arg
-                        throw new IllegalArgumentException();
-                    } catch (StringIndexOutOfBoundsException e) {
-                        String rest = s.substring(i);
-                        sb.append(rest);
-                        if (rest.length() == 2)
-                            i++;
-                    }
-
-                    break;
-                default:
-                    sb.append(c);
-                    break;
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Reconstructs the URL the client used to make the request,
-     * using information in the <code>HttpServletRequest</code> object.
-     * The returned URL contains a protocol, server name, port
-     * number, and server path, but it does not include query
-     * string parameters.
-     * <p/>
-     * <p>Because this method returns a <code>StringBuffer</code>,
-     * not a string, you can modify the URL easily, for example,
-     * to append query parameters.
-     * <p/>
-     * <p>This method is useful for creating redirect messages
-     * and for reporting errors.
-     *
-     * @param req a <code>HttpServletRequest</code> object
-     *            containing the client's request
-     * @return a <code>StringBuffer</code> object containing
-     *         the reconstructed URL
-     */
-    public static StringBuffer getRequestURL(HttpServletRequest req) {
-        StringBuffer url = new StringBuffer();
-        String scheme = req.getScheme();
-        int port = req.getServerPort();
-        String urlPath = req.getRequestURI();
-
-        //String		servletPath = req.getServletPath ();
-        //String		pathInfo = req.getPathInfo ();
-
-        url.append(scheme);                // http, https
-        url.append("://");
-        url.append(req.getServerName());
-        if ((scheme.equals("http") && port != 80)
-                || (scheme.equals("https") && port != 443)) {
-            url.append(':');
-            url.append(req.getServerPort());
-        }
-        //if (servletPath != null)
-        //    url.append (servletPath);
-        //if (pathInfo != null)
-        //    url.append (pathInfo);
-        url.append(urlPath);
-        return url;
-    }
-}
-
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/Part.java b/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/Part.java
deleted file mode 100644
index 7f5b266..0000000
--- a/geronimo-servlet_3.0_spec/src/main/java/javax/servlet/http/Part.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 javax.servlet.http;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collection;
-
-/**
- * multipart/form-data part or form item
- *
- * @version $Rev$ $Date$
- * @since 3.0
- */
-public interface Part {
-
-    void delete() throws IOException;
-
-    String getContentType();
-
-    String getHeader(String headerName);
-
-    Collection<String> getHeaderNames();
-
-    Collection<String> getHeaders(String headerName);
-
-    InputStream getInputStream() throws IOException;
-
-    String getName();
-
-    long getSize();
-
-    void write(String fileName) throws IOException;
-
-}
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings.properties
deleted file mode 100644
index 6289359..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized for Locale en_US
-
-err.not_iso8859_1=Not an ISO 8859-1 character: {0}
-value.true=true
-value.false=false
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings_fr.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings_fr.properties
deleted file mode 100644
index f6f1112..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings_fr.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized for Locale fr_FR
-
-err.not_iso8859_1={0} n''est pas un caractère ISO 8859-1
-value.true=true
-value.false=false 
-
-
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings_ja.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings_ja.properties
deleted file mode 100644
index 20b9bb5..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/LocalStrings_ja.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized for Locale ja_JP
-
-err.not_iso8859_1=ISO 8859-1 \u306e\u6587\u5b57\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0}
-value.true=true
-value.false=false
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings.properties
deleted file mode 100644
index eb08a1d..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized for Locale en_US
-
-err.cookie_name_is_token=Cookie name \"{0}\" is a reserved token
-err.io.negativelength=Negative Length given in write method
-err.io.short_read=Short Read
-
-http.method_not_implemented=Method {0} is not defined in RFC 2068 and is not supported by the Servlet API 
-
-http.method_get_not_supported=HTTP method GET is not supported by this URL
-http.method_post_not_supported=HTTP method POST is not supported by this URL
-http.method_put_not_supported=HTTP method PUT is not supported by this URL
-http.method_delete_not_supported=Http method DELETE is not supported by this URL
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_es.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_es.properties
deleted file mode 100644
index fe55479..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_es.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized para Locale es_ES
-
-err.cookie_name_is_token=El Nombre de Cookie {0} es una palabra reservada
-err.io.negativelength=Longitud Negativa en el metodo write
-err.io.short_read=Lectura Corta
-
-http.method_not_implemented=El Metodo {0} no esta definido en la especificacion RFC 2068 y no es soportado por la API Servlet 
-
-http.method_get_not_supported=El Metodo HTTP GET no es soportado por esta URL
-http.method_post_not_supported=El Metodo HTTP POST no es soportado por esta URL
-http.method_put_not_supported=El Metodo HTTP PUT no es soportado por esta URL
-http.method_delete_not_supported=El Metodo HTTP DELETE no es soportado por esta URL
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_fr.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_fr.properties
deleted file mode 100644
index 182b56e..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_fr.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized for Locale fr_FR
-
-err.cookie_name_is_token=Le nom de cookie \"{0}\" est un \"token\" réservé
-err.io.negativelength=Taille négative donnée dans la méthode \"write\"
-err.io.short_read=Lecture partielle
-
-http.method_not_implemented=Le méthode {0} n''est pas définie dans la RFC 2068 et n''est pas supportée par l''API Servlet
-
-http.method_get_not_supported=La méthode HTTP GET n''est pas supportée par cette URL
-http.method_post_not_supported=La méthode HTTP POST n''est pas supportée par cette URL
-http.method_put_not_supported=La méthode HTTP PUT n''est pas supportée par cette URL
-http.method_delete_not_supported=La méthode HTTP DELETE n''est pas supportée par cette URL 
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_ja.properties b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_ja.properties
deleted file mode 100644
index 2882d6f..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/http/LocalStrings_ja.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you 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.
-##
-
-##
-## $Rev$ $Date$
-##
-
-# Default localized string information
-# Localized for Locale ja_JP
-
-err.cookie_name_is_token=\u30af\u30c3\u30ad\u30fc\u540d \"{0}\" \u306f\u4e88\u7d04\u6e08\u306e\u30c8\u30fc\u30af\u30f3\u3067\u3059\u3002
-err.io.negativelength=write\u30e1\u30bd\u30c3\u30c9\u306b\u8ca0\u306e\u9577\u3055\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002
-err.io.short_read=\u8aad\u307f\u8fbc\u307f\u304c\u3059\u3050\u306b\u7d42\u308f\u308a\u307e\u3057\u305f\u3002
-
-http.method_not_implemented=\u30e1\u30bd\u30c3\u30c9 {0} \u306fRFC 2068\u306b\u306f\u5b9a\u7fa9\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8API\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002
-
-http.method_get_not_supported=HTTP\u306eGET\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-http.method_post_not_supported=HTTP\u306ePOST\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-http.method_put_not_supported=HTTP\u306ePUT\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-http.method_delete_not_supported=HTTP\u306eDELETE\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u3053\u306eURL\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/XMLSchema.dtd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/XMLSchema.dtd
deleted file mode 100644
index 7969fe1..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/XMLSchema.dtd
+++ /dev/null
@@ -1,402 +0,0 @@
-<!-- DTD for XML Schemas: Part 1: Structures
-     Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
-     Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
-<!-- $Rev$ $Date$ -->
-<!-- Note this DTD is NOT normative, or even definitive. -->           <!--d-->
-<!-- prose copy in the structures REC is the definitive version -->    <!--d-->
-<!-- (which shouldn't differ from this one except for this -->         <!--d-->
-<!-- comment and entity expansions, but just in case) -->              <!--d-->
-<!-- With the exception of cases with multiple namespace
-     prefixes for the XML Schema namespace, any XML document which is
-     not valid per this DTD given redefinitions in its internal subset of the
-     'p' and 's' parameter entities below appropriate to its namespace
-     declaration of the XML Schema namespace is almost certainly not
-     a valid schema. -->
-
-<!-- The simpleType element and its constituent parts
-     are defined in XML Schema: Part 2: Datatypes -->
-<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
-
-<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
-                         schema document to establish a different
-                         namespace prefix -->
-<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
-                         also define %s as the suffix for the appropriate
-                         namespace declaration (e.g. :foo) -->
-<!ENTITY % nds 'xmlns%s;'>
-
-<!-- Define all the element names, with optional prefix -->
-<!ENTITY % schema "%p;schema">
-<!ENTITY % complexType "%p;complexType">
-<!ENTITY % complexContent "%p;complexContent">
-<!ENTITY % simpleContent "%p;simpleContent">
-<!ENTITY % extension "%p;extension">
-<!ENTITY % element "%p;element">
-<!ENTITY % unique "%p;unique">
-<!ENTITY % key "%p;key">
-<!ENTITY % keyref "%p;keyref">
-<!ENTITY % selector "%p;selector">
-<!ENTITY % field "%p;field">
-<!ENTITY % group "%p;group">
-<!ENTITY % all "%p;all">
-<!ENTITY % choice "%p;choice">
-<!ENTITY % sequence "%p;sequence">
-<!ENTITY % any "%p;any">
-<!ENTITY % anyAttribute "%p;anyAttribute">
-<!ENTITY % attribute "%p;attribute">
-<!ENTITY % attributeGroup "%p;attributeGroup">
-<!ENTITY % include "%p;include">
-<!ENTITY % import "%p;import">
-<!ENTITY % redefine "%p;redefine">
-<!ENTITY % notation "%p;notation">
-
-<!-- annotation elements -->
-<!ENTITY % annotation "%p;annotation">
-<!ENTITY % appinfo "%p;appinfo">
-<!ENTITY % documentation "%p;documentation">
-
-<!-- Customisation entities for the ATTLIST of each element type.
-     Define one of these if your schema takes advantage of the
-     anyAttribute='##other' in the schema for schemas -->
-
-<!ENTITY % schemaAttrs ''>
-<!ENTITY % complexTypeAttrs ''>
-<!ENTITY % complexContentAttrs ''>
-<!ENTITY % simpleContentAttrs ''>
-<!ENTITY % extensionAttrs ''>
-<!ENTITY % elementAttrs ''>
-<!ENTITY % groupAttrs ''>
-<!ENTITY % allAttrs ''>
-<!ENTITY % choiceAttrs ''>
-<!ENTITY % sequenceAttrs ''>
-<!ENTITY % anyAttrs ''>
-<!ENTITY % anyAttributeAttrs ''>
-<!ENTITY % attributeAttrs ''>
-<!ENTITY % attributeGroupAttrs ''>
-<!ENTITY % uniqueAttrs ''>
-<!ENTITY % keyAttrs ''>
-<!ENTITY % keyrefAttrs ''>
-<!ENTITY % selectorAttrs ''>
-<!ENTITY % fieldAttrs ''>
-<!ENTITY % includeAttrs ''>
-<!ENTITY % importAttrs ''>
-<!ENTITY % redefineAttrs ''>
-<!ENTITY % notationAttrs ''>
-<!ENTITY % annotationAttrs ''>
-<!ENTITY % appinfoAttrs ''>
-<!ENTITY % documentationAttrs ''>
-
-<!ENTITY % complexDerivationSet "CDATA">
-      <!-- #all or space-separated list drawn from derivationChoice -->
-<!ENTITY % blockSet "CDATA">
-      <!-- #all or space-separated list drawn from
-                      derivationChoice + 'substitution' -->
-
-<!ENTITY % mgs '%all; | %choice; | %sequence;'>
-<!ENTITY % cs '%choice; | %sequence;'>
-<!ENTITY % formValues '(qualified|unqualified)'>
-
-
-<!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
-
-<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
-
-<!-- This is used in part2 -->
-<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
-
-%xs-datatypes;
-
-<!-- the duplication below is to produce an unambiguous content model
-     which allows annotation everywhere -->
-<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
-                    ((%simpleType; | %complexType;
-                      | %element; | %attribute;
-                      | %attributeGroup; | %group;
-                      | %notation; ),
-                     (%annotation;)*)* )>
-<!ATTLIST %schema;
-   targetNamespace      %URIref;               #IMPLIED
-   version              CDATA                  #IMPLIED
-   %nds;                %URIref;               #FIXED 'http://www.w3.org/2001/XMLSchema'
-   xmlns                CDATA                  #IMPLIED
-   finalDefault         %complexDerivationSet; ''
-   blockDefault         %blockSet;             ''
-   id                   ID                     #IMPLIED
-   elementFormDefault   %formValues;           'unqualified'
-   attributeFormDefault %formValues;           'unqualified'
-   xml:lang             CDATA                  #IMPLIED
-   %schemaAttrs;>
-<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
-     because at the Infoset level where schemas operate,
-     xmlns(:prefix) is NOT an attribute! -->
-<!-- The declaration of xmlns is a convenience for schema authors -->
- 
-<!-- The id attribute here and below is for use in external references
-     from non-schemas using simple fragment identifiers.
-     It is NOT used for schema-to-schema reference, internal or
-     external. -->
-
-<!-- a type is a named content type specification which allows attribute
-     declarations-->
-<!-- -->
-
-<!ELEMENT %complexType; ((%annotation;)?,
-                         (%simpleContent;|%complexContent;|
-                          %particleAndAttrs;))>
-
-<!ATTLIST %complexType;
-          name      %NCName;                        #IMPLIED
-          id        ID                              #IMPLIED
-          abstract  %boolean;                       #IMPLIED
-          final     %complexDerivationSet;          #IMPLIED
-          block     %complexDerivationSet;          #IMPLIED
-          mixed (true|false) 'false'
-          %complexTypeAttrs;>
-
-<!-- particleAndAttrs is shorthand for a root type -->
-<!-- mixed is disallowed if simpleContent, overriden if complexContent
-     has one too. -->
-
-<!-- If anyAttribute appears in one or more referenced attributeGroups
-     and/or explicitly, the intersection of the permissions is used -->
-
-<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
-<!ATTLIST %complexContent;
-          mixed (true|false) #IMPLIED
-          id    ID           #IMPLIED
-          %complexContentAttrs;>
-
-<!-- restriction should use the branch defined above, not the simple
-     one from part2; extension should use the full model  -->
-
-<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
-<!ATTLIST %simpleContent;
-          id    ID           #IMPLIED
-          %simpleContentAttrs;>
-
-<!-- restriction should use the simple branch from part2, not the 
-     one defined above; extension should have no particle  -->
-
-<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
-<!ATTLIST %extension;
-          base  %QName;      #REQUIRED
-          id    ID           #IMPLIED
-          %extensionAttrs;>
-
-<!-- an element is declared by either:
- a name and a type (either nested or referenced via the type attribute)
- or a ref to an existing element declaration -->
-
-<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
-                     (%unique; | %key; | %keyref;)*)>
-<!-- simpleType or complexType only if no type|ref attribute -->
-<!-- ref not allowed at top level -->
-<!ATTLIST %element;
-            name               %NCName;               #IMPLIED
-            id                 ID                     #IMPLIED
-            ref                %QName;                #IMPLIED
-            type               %QName;                #IMPLIED
-            minOccurs          %nonNegativeInteger;   #IMPLIED
-            maxOccurs          CDATA                  #IMPLIED
-            nillable           %boolean;              #IMPLIED
-            substitutionGroup  %QName;                #IMPLIED
-            abstract           %boolean;              #IMPLIED
-            final              %complexDerivationSet; #IMPLIED
-            block              %blockSet;             #IMPLIED
-            default            CDATA                  #IMPLIED
-            fixed              CDATA                  #IMPLIED
-            form               %formValues;           #IMPLIED
-            %elementAttrs;>
-<!-- type and ref are mutually exclusive.
-     name and ref are mutually exclusive, one is required -->
-<!-- In the absence of type AND ref, type defaults to type of
-     substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
-<!-- default and fixed are mutually exclusive -->
-
-<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
-<!ATTLIST %group; 
-          name        %NCName;               #IMPLIED
-          ref         %QName;                #IMPLIED
-          minOccurs   %nonNegativeInteger;   #IMPLIED
-          maxOccurs   CDATA                  #IMPLIED
-          id          ID                     #IMPLIED
-          %groupAttrs;>
-
-<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
-<!ATTLIST %all;
-          minOccurs   (1)                    #IMPLIED
-          maxOccurs   (1)                    #IMPLIED
-          id          ID                     #IMPLIED
-          %allAttrs;>
-
-<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
-<!ATTLIST %choice;
-          minOccurs   %nonNegativeInteger;   #IMPLIED
-          maxOccurs   CDATA                  #IMPLIED
-          id          ID                     #IMPLIED
-          %choiceAttrs;>
-
-<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
-<!ATTLIST %sequence;
-          minOccurs   %nonNegativeInteger;   #IMPLIED
-          maxOccurs   CDATA                  #IMPLIED
-          id          ID                     #IMPLIED
-          %sequenceAttrs;>
-
-<!-- an anonymous grouping in a model, or
-     a top-level named group definition, or a reference to same -->
-
-<!-- Note that if order is 'all', group is not allowed inside.
-     If order is 'all' THIS group must be alone (or referenced alone) at
-     the top level of a content model -->
-<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
-<!-- Should allow minOccurs=0 inside order='all' . . . -->
-
-<!ELEMENT %any; (%annotation;)?>
-<!ATTLIST %any;
-            namespace       CDATA                  '##any'
-            processContents (skip|lax|strict)      'strict'
-            minOccurs       %nonNegativeInteger;   '1'
-            maxOccurs       CDATA                  '1'
-            id              ID                     #IMPLIED
-            %anyAttrs;>
-
-<!-- namespace is interpreted as follows:
-                  ##any      - - any non-conflicting WFXML at all
-
-                  ##other    - - any non-conflicting WFXML from namespace other
-                                  than targetNamespace
-
-                  ##local    - - any unqualified non-conflicting WFXML/attribute
-                  one or     - - any non-conflicting WFXML from
-                  more URI        the listed namespaces
-                  references
-
-                  ##targetNamespace ##local may appear in the above list,
-                    with the obvious meaning -->
-
-<!ELEMENT %anyAttribute; (%annotation;)?>
-<!ATTLIST %anyAttribute;
-            namespace       CDATA              '##any'
-            processContents (skip|lax|strict)  'strict'
-            id              ID                 #IMPLIED
-            %anyAttributeAttrs;>
-<!-- namespace is interpreted as for 'any' above -->
-
-<!-- simpleType only if no type|ref attribute -->
-<!-- ref not allowed at top level, name iff at top level -->
-<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
-<!ATTLIST %attribute;
-          name      %NCName;      #IMPLIED
-          id        ID            #IMPLIED
-          ref       %QName;       #IMPLIED
-          type      %QName;       #IMPLIED
-          use       (prohibited|optional|required) #IMPLIED
-          default   CDATA         #IMPLIED
-          fixed     CDATA         #IMPLIED
-          form      %formValues;  #IMPLIED
-          %attributeAttrs;>
-<!-- type and ref are mutually exclusive.
-     name and ref are mutually exclusive, one is required -->
-<!-- default for use is optional when nested, none otherwise -->
-<!-- default and fixed are mutually exclusive -->
-<!-- type attr and simpleType content are mutually exclusive -->
-
-<!-- an attributeGroup is a named collection of attribute decls, or a
-     reference thereto -->
-<!ELEMENT %attributeGroup; ((%annotation;)?,
-                       (%attribute; | %attributeGroup;)*,
-                       (%anyAttribute;)?) >
-<!ATTLIST %attributeGroup;
-                 name       %NCName;       #IMPLIED
-                 id         ID             #IMPLIED
-                 ref        %QName;        #IMPLIED
-                 %attributeGroupAttrs;>
-
-<!-- ref iff no content, no name.  ref iff not top level -->
-
-<!-- better reference mechanisms -->
-<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
-<!ATTLIST %unique;
-          name     %NCName;       #REQUIRED
-	  id       ID             #IMPLIED
-	  %uniqueAttrs;>
-
-<!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
-<!ATTLIST %key;
-          name     %NCName;       #REQUIRED
-	  id       ID             #IMPLIED
-	  %keyAttrs;>
-
-<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
-<!ATTLIST %keyref;
-          name     %NCName;       #REQUIRED
-	  refer    %QName;        #REQUIRED
-	  id       ID             #IMPLIED
-	  %keyrefAttrs;>
-
-<!ELEMENT %selector; ((%annotation;)?)>
-<!ATTLIST %selector;
-          xpath %XPathExpr; #REQUIRED
-          id    ID          #IMPLIED
-          %selectorAttrs;>
-<!ELEMENT %field; ((%annotation;)?)>
-<!ATTLIST %field;
-          xpath %XPathExpr; #REQUIRED
-          id    ID          #IMPLIED
-          %fieldAttrs;>
-
-<!-- Schema combination mechanisms -->
-<!ELEMENT %include; (%annotation;)?>
-<!ATTLIST %include;
-          schemaLocation %URIref; #REQUIRED
-          id             ID       #IMPLIED
-          %includeAttrs;>
-
-<!ELEMENT %import; (%annotation;)?>
-<!ATTLIST %import;
-          namespace      %URIref; #IMPLIED
-          schemaLocation %URIref; #IMPLIED
-          id             ID       #IMPLIED
-          %importAttrs;>
-
-<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
-                      %attributeGroup; | %group;)*>
-<!ATTLIST %redefine;
-          schemaLocation %URIref; #REQUIRED
-          id             ID       #IMPLIED
-          %redefineAttrs;>
-
-<!ELEMENT %notation; (%annotation;)?>
-<!ATTLIST %notation;
-	  name        %NCName;    #REQUIRED
-	  id          ID          #IMPLIED
-	  public      CDATA       #REQUIRED
-	  system      %URIref;    #IMPLIED
-	  %notationAttrs;>
-
-<!-- Annotation is either application information or documentation -->
-<!-- By having these here they are available for datatypes as well
-     as all the structures elements -->
-
-<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
-<!ATTLIST %annotation; %annotationAttrs;>
-
-<!-- User must define annotation elements in internal subset for this
-     to work -->
-<!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
-<!ATTLIST %appinfo;
-          source     %URIref;      #IMPLIED
-          id         ID         #IMPLIED
-          %appinfoAttrs;>
-<!ELEMENT %documentation; ANY>   <!-- too restrictive -->
-<!ATTLIST %documentation;
-          source     %URIref;   #IMPLIED
-          id         ID         #IMPLIED
-          xml:lang   CDATA      #IMPLIED
-          %documentationAttrs;>
-
-<!NOTATION XMLSchemaStructures PUBLIC
-           'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
-<!NOTATION XML PUBLIC
-           'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/datatypes.dtd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/datatypes.dtd
deleted file mode 100644
index 695f669..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/datatypes.dtd
+++ /dev/null
@@ -1,219 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!--
-        DTD for XML Schemas: Part 2: Datatypes
-        $Id$
-        Note this DTD is NOT normative, or even definitive. - - the
-        prose copy in the datatypes REC is the definitive version
-        (which shouldn't differ from this one except for this comment
-        and entity expansions, but just in case)
-  -->
-
-<!--
-        This DTD cannot be used on its own, it is intended
-        only for incorporation in XMLSchema.dtd, q.v.
-  -->
-
-<!-- Define all the element names, with optional prefix -->
-<!ENTITY % simpleType "%p;simpleType">
-<!ENTITY % restriction "%p;restriction">
-<!ENTITY % list "%p;list">
-<!ENTITY % union "%p;union">
-<!ENTITY % maxExclusive "%p;maxExclusive">
-<!ENTITY % minExclusive "%p;minExclusive">
-<!ENTITY % maxInclusive "%p;maxInclusive">
-<!ENTITY % minInclusive "%p;minInclusive">
-<!ENTITY % totalDigits "%p;totalDigits">
-<!ENTITY % fractionDigits "%p;fractionDigits">
-<!ENTITY % length "%p;length">
-<!ENTITY % minLength "%p;minLength">
-<!ENTITY % maxLength "%p;maxLength">
-<!ENTITY % enumeration "%p;enumeration">
-<!ENTITY % whiteSpace "%p;whiteSpace">
-<!ENTITY % pattern "%p;pattern">
-
-<!--
-        Customisation entities for the ATTLIST of each element
-        type. Define one of these if your schema takes advantage
-        of the anyAttribute='##other' in the schema for schemas
-  -->
-
-<!ENTITY % simpleTypeAttrs "">
-<!ENTITY % restrictionAttrs "">
-<!ENTITY % listAttrs "">
-<!ENTITY % unionAttrs "">
-<!ENTITY % maxExclusiveAttrs "">
-<!ENTITY % minExclusiveAttrs "">
-<!ENTITY % maxInclusiveAttrs "">
-<!ENTITY % minInclusiveAttrs "">
-<!ENTITY % totalDigitsAttrs "">
-<!ENTITY % fractionDigitsAttrs "">
-<!ENTITY % lengthAttrs "">
-<!ENTITY % minLengthAttrs "">
-<!ENTITY % maxLengthAttrs "">
-<!ENTITY % enumerationAttrs "">
-<!ENTITY % whiteSpaceAttrs "">
-<!ENTITY % patternAttrs "">
-
-<!-- Define some entities for informative use as attribute
-        types -->
-<!ENTITY % URIref "CDATA">
-<!ENTITY % XPathExpr "CDATA">
-<!ENTITY % QName "NMTOKEN">
-<!ENTITY % QNames "NMTOKENS">
-<!ENTITY % NCName "NMTOKEN">
-<!ENTITY % nonNegativeInteger "NMTOKEN">
-<!ENTITY % boolean "(true|false)">
-<!ENTITY % simpleDerivationSet "CDATA">
-<!--
-        #all or space-separated list drawn from derivationChoice
-  -->
-
-<!--
-        Note that the use of 'facet' below is less restrictive
-        than is really intended:  There should in fact be no
-        more than one of each of minInclusive, minExclusive,
-        maxInclusive, maxExclusive, totalDigits, fractionDigits,
-        length, maxLength, minLength within datatype,
-        and the min- and max- variants of Inclusive and Exclusive
-        are mutually exclusive. On the other hand,  pattern and
-        enumeration may repeat.
-  -->
-<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
-<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
-<!ENTITY % bounds "%minBound; | %maxBound;">
-<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
-<!ENTITY % ordered "%bounds; | %numeric;">
-<!ENTITY % unordered
-   "%pattern; | %enumeration; | %whiteSpace; | %length; |
-   %maxLength; | %minLength;">
-<!ENTITY % facet "%ordered; | %unordered;">
-<!ENTITY % facetAttr 
-        "value CDATA #REQUIRED
-        id ID #IMPLIED">
-<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
-<!ENTITY % facetModel "(%annotation;)?">
-<!ELEMENT %simpleType;
-        ((%annotation;)?, (%restriction; | %list; | %union;))>
-<!ATTLIST %simpleType;
-    name      %NCName; #IMPLIED
-    final     %simpleDerivationSet; #IMPLIED
-    id        ID       #IMPLIED
-    %simpleTypeAttrs;>
-<!-- name is required at top level -->
-<!ELEMENT %restriction; ((%annotation;)?,
-                         (%restriction1; |
-                          ((%simpleType;)?,(%facet;)*)),
-                         (%attrDecls;))>
-<!ATTLIST %restriction;
-    base      %QName;                  #IMPLIED
-    id        ID       #IMPLIED
-    %restrictionAttrs;>
-<!--
-        base and simpleType child are mutually exclusive,
-        one is required.
-
-        restriction is shared between simpleType and
-        simpleContent and complexContent (in XMLSchema.xsd).
-        restriction1 is for the latter cases, when this
-        is restricting a complex type, as is attrDecls.
-  -->
-<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
-<!ATTLIST %list;
-    itemType      %QName;             #IMPLIED
-    id        ID       #IMPLIED
-    %listAttrs;>
-<!--
-        itemType and simpleType child are mutually exclusive,
-        one is required
-  -->
-<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
-<!ATTLIST %union;
-    id            ID       #IMPLIED
-    memberTypes   %QNames;            #IMPLIED
-    %unionAttrs;>
-<!--
-        At least one item in memberTypes or one simpleType
-        child is required
-  -->
-
-<!ELEMENT %maxExclusive; %facetModel;>
-<!ATTLIST %maxExclusive;
-        %facetAttr;
-        %fixedAttr;
-        %maxExclusiveAttrs;>
-<!ELEMENT %minExclusive; %facetModel;>
-<!ATTLIST %minExclusive;
-        %facetAttr;
-        %fixedAttr;
-        %minExclusiveAttrs;>
-
-<!ELEMENT %maxInclusive; %facetModel;>
-<!ATTLIST %maxInclusive;
-        %facetAttr;
-        %fixedAttr;
-        %maxInclusiveAttrs;>
-<!ELEMENT %minInclusive; %facetModel;>
-<!ATTLIST %minInclusive;
-        %facetAttr;
-        %fixedAttr;
-        %minInclusiveAttrs;>
-
-<!ELEMENT %totalDigits; %facetModel;>
-<!ATTLIST %totalDigits;
-        %facetAttr;
-        %fixedAttr;
-        %totalDigitsAttrs;>
-<!ELEMENT %fractionDigits; %facetModel;>
-<!ATTLIST %fractionDigits;
-        %facetAttr;
-        %fixedAttr;
-        %fractionDigitsAttrs;>
-
-<!ELEMENT %length; %facetModel;>
-<!ATTLIST %length;
-        %facetAttr;
-        %fixedAttr;
-        %lengthAttrs;>
-<!ELEMENT %minLength; %facetModel;>
-<!ATTLIST %minLength;
-        %facetAttr;
-        %fixedAttr;
-        %minLengthAttrs;>
-<!ELEMENT %maxLength; %facetModel;>
-<!ATTLIST %maxLength;
-        %facetAttr;
-        %fixedAttr;
-        %maxLengthAttrs;>
-
-<!-- This one can be repeated -->
-<!ELEMENT %enumeration; %facetModel;>
-<!ATTLIST %enumeration;
-        %facetAttr;
-        %enumerationAttrs;>
-
-<!ELEMENT %whiteSpace; %facetModel;>
-<!ATTLIST %whiteSpace;
-        %facetAttr;
-        %fixedAttr;
-        %whiteSpaceAttrs;>
-
-<!-- This one can be repeated -->
-<!ELEMENT %pattern; %facetModel;>
-<!ATTLIST %pattern;
-        %facetAttr;
-        %patternAttrs;>
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_1_4.xsd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_1_4.xsd
deleted file mode 100644
index 6852f0f..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_1_4.xsd
+++ /dev/null
@@ -1,392 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  **  This is the J2EE 1.4 XSD with only the required elements to support an implementation.
-  **  Please see http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd for a fully documented and latest
-  **  XSD. 
--->
-
-<xsd:schema targetNamespace="http://java.sun.com/xml/ns/j2ee"
-            xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-            elementFormDefault="qualified" 
-            attributeFormDefault="unqualified" 
-            version="1.4">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd" />
-    <xsd:include schemaLocation="http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd" />
-    <xsd:group name="descriptionGroup">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="display-name" type="j2ee:display-nameType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="icon" type="j2ee:iconType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-    </xsd:group>
-    <xsd:complexType name="descriptionType">
-        <xsd:simpleContent>
-            <xsd:extension base="j2ee:xsdStringType">
-                <xsd:attribute ref="xml:lang" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:simpleType name="dewey-versionType">
-        <xsd:restriction base="xsd:decimal">
-            <xsd:whiteSpace value="collapse" />
-        </xsd:restriction>
-    </xsd:simpleType>
-    <xsd:complexType name="display-nameType">
-        <xsd:simpleContent>
-            <xsd:extension base="j2ee:string">
-                <xsd:attribute ref="xml:lang" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="ejb-linkType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="ejb-local-refType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="ejb-ref-name" type="j2ee:ejb-ref-nameType" />
-            <xsd:element name="ejb-ref-type" type="j2ee:ejb-ref-typeType" />
-            <xsd:element name="local-home" type="j2ee:local-homeType" />
-            <xsd:element name="local" type="j2ee:localType" />
-            <xsd:element name="ejb-link" type="j2ee:ejb-linkType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="ejb-ref-nameType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:jndi-nameType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="ejb-ref-typeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="Entity" />
-                <xsd:enumeration value="Session" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="ejb-refType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="ejb-ref-name" type="j2ee:ejb-ref-nameType" />
-            <xsd:element name="ejb-ref-type" type="j2ee:ejb-ref-typeType" />
-            <xsd:element name="home" type="j2ee:homeType" />
-            <xsd:element name="remote" type="j2ee:remoteType" />
-            <xsd:element name="ejb-link" type="j2ee:ejb-linkType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="emptyType">
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="env-entry-type-valuesType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="java.lang.Boolean" />
-                <xsd:enumeration value="java.lang.Byte" />
-                <xsd:enumeration value="java.lang.Character" />
-                <xsd:enumeration value="java.lang.String" />
-                <xsd:enumeration value="java.lang.Short" />
-                <xsd:enumeration value="java.lang.Integer" />
-                <xsd:enumeration value="java.lang.Long" />
-                <xsd:enumeration value="java.lang.Float" />
-                <xsd:enumeration value="java.lang.Double" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="env-entryType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="env-entry-name" type="j2ee:jndi-nameType"></xsd:element>
-            <xsd:element name="env-entry-type" type="j2ee:env-entry-type-valuesType" />
-            <xsd:element name="env-entry-value" type="j2ee:xsdStringType" minOccurs="0"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="fully-qualified-classType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="generic-booleanType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="true" />
-                <xsd:enumeration value="false" />
-                <xsd:enumeration value="yes" />
-                <xsd:enumeration value="no" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="homeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:fully-qualified-classType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="iconType">
-        <xsd:sequence>
-            <xsd:element name="small-icon" type="j2ee:pathType" minOccurs="0"></xsd:element>
-            <xsd:element name="large-icon" type="j2ee:pathType" minOccurs="0"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute ref="xml:lang" />
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="java-identifierType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:pattern value="($|_|\p{L})(\p{L}|\p{Nd}|_|$)*" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="java-typeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:pattern value="[^\p{Z}]*" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="jndi-nameType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:group name="jndiEnvironmentRefsGroup">
-        <xsd:sequence>
-            <xsd:element name="env-entry" type="j2ee:env-entryType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="ejb-ref" type="j2ee:ejb-refType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="ejb-local-ref" type="j2ee:ejb-local-refType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:group ref="j2ee:service-refGroup" />
-            <xsd:element name="resource-ref" type="j2ee:resource-refType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="resource-env-ref" type="j2ee:resource-env-refType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="message-destination-ref" type="j2ee:message-destination-refType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-    </xsd:group>
-    <xsd:complexType name="listenerType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="listener-class" type="j2ee:fully-qualified-classType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="local-homeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:fully-qualified-classType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="localType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:fully-qualified-classType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="message-destination-linkType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="message-destination-refType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="message-destination-ref-name" type="j2ee:jndi-nameType"></xsd:element>
-            <xsd:element name="message-destination-type" type="j2ee:message-destination-typeType" />
-            <xsd:element name="message-destination-usage" type="j2ee:message-destination-usageType" />
-            <xsd:element name="message-destination-link" type="j2ee:message-destination-linkType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="message-destination-typeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:fully-qualified-classType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="message-destination-usageType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="Consumes" />
-                <xsd:enumeration value="Produces" />
-                <xsd:enumeration value="ConsumesProduces" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="message-destinationType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="message-destination-name" type="j2ee:string"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="param-valueType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="param-name" type="j2ee:string"></xsd:element>
-            <xsd:element name="param-value" type="j2ee:xsdStringType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="pathType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="remoteType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:fully-qualified-classType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="res-authType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="Application" />
-                <xsd:enumeration value="Container" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="res-sharing-scopeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="Shareable" />
-                <xsd:enumeration value="Unshareable" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="resource-env-refType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="resource-env-ref-name" type="j2ee:jndi-nameType"></xsd:element>
-            <xsd:element name="resource-env-ref-type" type="j2ee:fully-qualified-classType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="resource-refType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="res-ref-name" type="j2ee:jndi-nameType"></xsd:element>
-            <xsd:element name="res-type" type="j2ee:fully-qualified-classType"></xsd:element>
-            <xsd:element name="res-auth" type="j2ee:res-authType" />
-            <xsd:element name="res-sharing-scope" type="j2ee:res-sharing-scopeType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="role-nameType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="run-asType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="role-name" type="j2ee:role-nameType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="security-role-refType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="role-name" type="j2ee:role-nameType"></xsd:element>
-            <xsd:element name="role-link" type="j2ee:role-nameType" minOccurs="0"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="security-roleType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="role-name" type="j2ee:role-nameType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="string">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:token">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="true-falseType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:xsdBooleanType">
-                <xsd:pattern value="(true|false)" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="url-patternType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdAnyURIType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:anyURI">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdBooleanType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:boolean">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdIntegerType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:integer">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdNMTOKENType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:NMTOKEN">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdNonNegativeIntegerType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:nonNegativeInteger">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdPositiveIntegerType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:positiveInteger">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdQNameType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:QName">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="xsdStringType">
-        <xsd:simpleContent>
-            <xsd:extension base="xsd:string">
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:extension>
-        </xsd:simpleContent>
-    </xsd:complexType>
-</xsd:schema>
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_web_services_1_1.xsd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_web_services_1_1.xsd
deleted file mode 100644
index f88d4bc..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_web_services_1_1.xsd
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  **  This is the J2EE Web Services 1.1 XSD with only the required elements to support an implementation.
-  **  Please see http://java.sun.com/xml/ns/j2ee/j2ee_web_services_1_1.xsd for a fully documented and latest
-  **  XSD. 
--->
-
-<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
-            targetNamespace="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-            elementFormDefault="qualified" 
-            attributeFormDefault="unqualified" version="1.1">
-
-    <xsd:include schemaLocation="j2ee_1_4.xsd" />
-
-    <xsd:element name="webservices" type="j2ee:webservicesType">
-        <xsd:key name="webservice-description-name-key">
-            <xsd:selector xpath="j2ee:webservice-description" />
-            <xsd:field xpath="j2ee:webservice-description-name" />
-        </xsd:key>
-    </xsd:element>
-
-    <xsd:complexType name="port-componentType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="display-name" type="j2ee:display-nameType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="icon" type="j2ee:iconType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="port-component-name" type="j2ee:string" />
-            <xsd:element name="wsdl-port" type="j2ee:xsdQNameType" />
-            <xsd:element name="service-endpoint-interface" type="j2ee:fully-qualified-classType" />
-            <xsd:element name="service-impl-bean" type="j2ee:service-impl-beanType" />
-            <xsd:element name="handler" type="j2ee:port-component_handlerType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <xsd:complexType name="port-component_handlerType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="handler-name" type="j2ee:string" />
-            <xsd:element name="handler-class" type="j2ee:fully-qualified-classType" />
-            <xsd:element name="init-param" type="j2ee:param-valueType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="soap-header" type="j2ee:xsdQNameType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="soap-role" type="j2ee:string" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <xsd:complexType name="service-impl-beanType">
-        <xsd:choice>
-            <xsd:element name="ejb-link" type="j2ee:ejb-linkType" />
-            <xsd:element name="servlet-link" type="j2ee:servlet-linkType" />
-        </xsd:choice>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <xsd:complexType name="servlet-linkType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <xsd:complexType name="webservice-descriptionType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="display-name" type="j2ee:display-nameType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="icon" type="j2ee:iconType" minOccurs="0" maxOccurs="1" />
-            <xsd:element name="webservice-description-name" type="j2ee:string" />
-            <xsd:element name="wsdl-file" type="j2ee:pathType" />
-            <xsd:element name="jaxrpc-mapping-file" type="j2ee:pathType" />
-            <xsd:element name="port-component" type="j2ee:port-componentType" minOccurs="1" maxOccurs="unbounded">
-                <xsd:key name="port-component_handler-name-key">
-                    <xsd:selector xpath="j2ee:handler" />
-                    <xsd:field xpath="j2ee:handler-name" />
-                </xsd:key>
-            </xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <xsd:complexType name="webservicesType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="webservice-description" type="j2ee:webservice-descriptionType" minOccurs="1" maxOccurs="unbounded">
-                <xsd:key name="port-component-name-key">
-                    <xsd:selector xpath="j2ee:port-component" />
-                    <xsd:field xpath="j2ee:port-component-name" />
-                </xsd:key>
-            </xsd:element>
-        </xsd:sequence>
-
-        <xsd:attribute name="version" type="j2ee:dewey-versionType" fixed="1.1" use="required"></xsd:attribute>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-</xsd:schema>
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_web_services_client_1_1.xsd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_web_services_client_1_1.xsd
deleted file mode 100644
index 17a9c5f..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/j2ee_web_services_client_1_1.xsd
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  **  This is the J2EE Web Services Client 1.1 XSD with only the required elements to support an implementation.
-  **  Please see http://java.sun.com/xml/ns/j2ee/j2ee_web_services_client_1_1.xsd for a fully documented and latest
-  **  XSD. 
--->
-
-<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
-            targetNamespace="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-            elementFormDefault="qualified" 
-            attributeFormDefault="unqualified" version="1.1">
-    <xsd:complexType name="port-component-refType">
-        <xsd:sequence>
-            <xsd:element name="service-endpoint-interface" type="j2ee:fully-qualified-classType" />
-            <xsd:element name="port-component-link" type="j2ee:string" minOccurs="0" maxOccurs="1" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <xsd:group name="service-refGroup">
-        <xsd:sequence>
-            <xsd:element name="service-ref" type="j2ee:service-refType" minOccurs="0" maxOccurs="unbounded">
-                <xsd:key name="service-ref_handler-name-key">
-                    <xsd:selector xpath="j2ee:handler" />
-                    <xsd:field xpath="j2ee:handler-name" />
-                </xsd:key>
-            </xsd:element>
-        </xsd:sequence>
-    </xsd:group>
-
-    <xsd:complexType name="service-refType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="service-ref-name" type="j2ee:jndi-nameType" />
-
-            <xsd:element name="service-interface" type="j2ee:fully-qualified-classType" />
-
-            <xsd:element name="wsdl-file" type="j2ee:xsdAnyURIType" minOccurs="0" maxOccurs="1" />
-
-            <xsd:element name="jaxrpc-mapping-file" type="j2ee:pathType" minOccurs="0" maxOccurs="1" />
-
-            <xsd:element name="service-qname" type="j2ee:xsdQNameType" minOccurs="0" maxOccurs="1" />
-
-            <xsd:element name="port-component-ref" type="j2ee:port-component-refType" minOccurs="0" maxOccurs="unbounded" />
-
-            <xsd:element name="handler" type="j2ee:service-ref_handlerType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <xsd:complexType name="service-ref_handlerType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="handler-name" type="j2ee:string" />
-            <xsd:element name="handler-class" type="j2ee:fully-qualified-classType" />
-            <xsd:element name="init-param" type="j2ee:param-valueType" minOccurs="0" maxOccurs="unbounded" />
-
-            <xsd:element name="soap-header" type="j2ee:xsdQNameType" minOccurs="0" maxOccurs="unbounded" />
-
-            <xsd:element name="soap-role" type="j2ee:string" minOccurs="0" maxOccurs="unbounded" />
-
-            <xsd:element name="port-name" type="j2ee:string" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-</xsd:schema>
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_2.dtd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_2.dtd
deleted file mode 100644
index 6e81118..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_2.dtd
+++ /dev/null
@@ -1,155 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-<!--
-  **  This is the Web Application 2.2 with only the required elements to support an implementation.
-  **  Please see http://java.sun.com/j2ee/dtds/web-app_2_2.dtd for a fully documented and latest
-  **  DTD. 
--->
-
-<!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, servlet*, servlet-mapping*, 
-session-config?, mime-mapping*, welcome-file-list?, error-page*, taglib*, resource-ref*, security-constraint*, 
-login-config?, security-role*, env-entry*, ejb-ref*)>
-
-<!ELEMENT icon (small-icon?, large-icon?)>
-<!ELEMENT small-icon (#PCDATA)>
-<!ELEMENT large-icon (#PCDATA)>
-<!ELEMENT display-name (#PCDATA)>
-<!ELEMENT description (#PCDATA)>
-<!ELEMENT distributable EMPTY>
-<!ELEMENT context-param (param-name, param-value, description?)>
-<!ELEMENT param-name (#PCDATA)>
-<!ELEMENT param-value (#PCDATA)>
-<!ELEMENT servlet (icon?, servlet-name, display-name?, description?,
-(servlet-class|jsp-file), init-param*, load-on-startup?, security-role-ref*)>
-<!ELEMENT servlet-name (#PCDATA)>
-<!ELEMENT servlet-class (#PCDATA)>
-<!ELEMENT jsp-file (#PCDATA)>
-<!ELEMENT init-param (param-name, param-value, description?)>
-<!ELEMENT load-on-startup (#PCDATA)>
-<!ELEMENT servlet-mapping (servlet-name, url-pattern)>
-<!ELEMENT url-pattern (#PCDATA)>
-<!ELEMENT session-config (session-timeout?)>
-<!ELEMENT session-timeout (#PCDATA)>
-<!ELEMENT mime-mapping (extension, mime-type)>
-<!ELEMENT extension (#PCDATA)>
-<!ELEMENT mime-type (#PCDATA)>
-<!ELEMENT welcome-file-list (welcome-file+)>
-<!ELEMENT welcome-file (#PCDATA)>
-<!ELEMENT taglib (taglib-uri, taglib-location)>
-<!ELEMENT taglib-uri (#PCDATA)>
-<!ELEMENT taglib-location (#PCDATA)>
-<!ELEMENT error-page ((error-code | exception-type), location)>
-<!ELEMENT error-code (#PCDATA)>
-<!ELEMENT exception-type (#PCDATA)>
-<!ELEMENT location (#PCDATA)>
-<!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth)>
-<!ELEMENT res-ref-name (#PCDATA)>
-<!ELEMENT res-type (#PCDATA)>
-<!ELEMENT res-auth (#PCDATA)>
-<!ELEMENT security-constraint (web-resource-collection+, auth-constraint?, user-data-constraint?)>
-<!ELEMENT web-resource-collection (web-resource-name, description?, url-pattern*, http-method*)>
-<!ELEMENT web-resource-name (#PCDATA)>
-<!ELEMENT http-method (#PCDATA)>
-<!ELEMENT user-data-constraint (description?, transport-guarantee)>
-<!ELEMENT transport-guarantee (#PCDATA)>
-<!ELEMENT auth-constraint (description?, role-name*)>
-<!ELEMENT role-name (#PCDATA)>
-<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>
-<!ELEMENT realm-name (#PCDATA)>
-<!ELEMENT form-login-config (form-login-page, form-error-page)>
-<!ELEMENT form-login-page (#PCDATA)>
-<!ELEMENT form-error-page (#PCDATA)>
-<!ELEMENT auth-method (#PCDATA)>
-<!ELEMENT security-role (description?, role-name)>
-<!ELEMENT security-role-ref (description?, role-name, role-link)>
-<!ELEMENT role-link (#PCDATA)>
-<!ELEMENT env-entry (description?, env-entry-name, env-entry-value?, env-entry-type)>
-<!ELEMENT env-entry-name (#PCDATA)>
-<!ELEMENT env-entry-value (#PCDATA)>
-<!ELEMENT env-entry-type (#PCDATA)>
-<!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type, home, remote, ejb-link?)>
-<!ELEMENT ejb-ref-name (#PCDATA)>
-<!ELEMENT ejb-ref-type (#PCDATA)>
-<!ELEMENT home (#PCDATA)>
-<!ELEMENT remote (#PCDATA)>
-<!ELEMENT ejb-link (#PCDATA)>
-
-<!ATTLIST web-app id ID #IMPLIED>
-<!ATTLIST icon id ID #IMPLIED>
-<!ATTLIST small-icon id ID #IMPLIED>
-<!ATTLIST large-icon id ID #IMPLIED>
-<!ATTLIST display-name id ID #IMPLIED>
-<!ATTLIST description id ID #IMPLIED>
-<!ATTLIST distributable id ID #IMPLIED>
-<!ATTLIST context-param id ID #IMPLIED>
-<!ATTLIST param-name id ID #IMPLIED>
-<!ATTLIST param-value id ID #IMPLIED>
-<!ATTLIST servlet id ID #IMPLIED>
-<!ATTLIST servlet-name id ID #IMPLIED>
-<!ATTLIST servlet-class id ID #IMPLIED>
-<!ATTLIST jsp-file id ID #IMPLIED>
-<!ATTLIST init-param id ID #IMPLIED>
-<!ATTLIST load-on-startup id ID #IMPLIED>
-<!ATTLIST servlet-mapping id ID #IMPLIED>
-<!ATTLIST url-pattern id ID #IMPLIED>
-<!ATTLIST session-config id ID #IMPLIED>
-<!ATTLIST session-timeout id ID #IMPLIED>
-<!ATTLIST mime-mapping id ID #IMPLIED>
-<!ATTLIST extension id ID #IMPLIED>
-<!ATTLIST mime-type id ID #IMPLIED>
-<!ATTLIST welcome-file-list id ID #IMPLIED>
-<!ATTLIST welcome-file id ID #IMPLIED>
-<!ATTLIST taglib id ID #IMPLIED>
-<!ATTLIST taglib-uri id ID #IMPLIED>
-<!ATTLIST taglib-location id ID #IMPLIED>
-<!ATTLIST error-page id ID #IMPLIED>
-<!ATTLIST error-code id ID #IMPLIED>
-<!ATTLIST exception-type id ID #IMPLIED>
-<!ATTLIST location id ID #IMPLIED>
-<!ATTLIST resource-ref id ID #IMPLIED>
-<!ATTLIST res-ref-name id ID #IMPLIED>
-<!ATTLIST res-type id ID #IMPLIED>
-<!ATTLIST res-auth id ID #IMPLIED>
-<!ATTLIST security-constraint id ID #IMPLIED>
-<!ATTLIST web-resource-collection id ID #IMPLIED>
-<!ATTLIST web-resource-name id ID #IMPLIED>
-<!ATTLIST http-method id ID #IMPLIED>
-<!ATTLIST user-data-constraint id ID #IMPLIED>
-<!ATTLIST transport-guarantee id ID #IMPLIED>
-<!ATTLIST auth-constraint id ID #IMPLIED>
-<!ATTLIST role-name id ID #IMPLIED>
-<!ATTLIST login-config id ID #IMPLIED>
-<!ATTLIST realm-name id ID #IMPLIED>
-<!ATTLIST form-login-config id ID #IMPLIED>
-<!ATTLIST form-login-page id ID #IMPLIED>
-<!ATTLIST form-error-page id ID #IMPLIED>
-<!ATTLIST auth-method id ID #IMPLIED>
-<!ATTLIST security-role id ID #IMPLIED>
-<!ATTLIST security-role-ref id ID #IMPLIED>
-<!ATTLIST role-link id ID #IMPLIED>
-<!ATTLIST env-entry id ID #IMPLIED>
-<!ATTLIST env-entry-name id ID #IMPLIED>
-<!ATTLIST env-entry-value id ID #IMPLIED>
-<!ATTLIST env-entry-type id ID #IMPLIED>
-<!ATTLIST ejb-ref id ID #IMPLIED>
-<!ATTLIST ejb-ref-name id ID #IMPLIED>
-<!ATTLIST ejb-ref-type id ID #IMPLIED>
-<!ATTLIST home id ID #IMPLIED>
-<!ATTLIST remote id ID #IMPLIED>
-<!ATTLIST ejb-link id ID #IMPLIED>
\ No newline at end of file
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_3.dtd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_3.dtd
deleted file mode 100644
index 4a4df7e..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_3.dtd
+++ /dev/null
@@ -1,261 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!ELEMENT web-app (icon?, display-name?, description?, distributable?,
-context-param*, filter*, filter-mapping*, listener*, servlet*,
-servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,
-error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*,
-login-config?, security-role*, env-entry*, ejb-ref*,  ejb-local-ref*)>
-
-<!ELEMENT auth-constraint (description?, role-name*)>
-
-<!ELEMENT auth-method (#PCDATA)>
-
-<!ELEMENT context-param (param-name, param-value, description?)>
-
-<!ELEMENT description (#PCDATA)>
-
-<!ELEMENT display-name (#PCDATA)>
-
-<!ELEMENT distributable EMPTY>
-
-<!ELEMENT ejb-link (#PCDATA)>
-
-<!ELEMENT ejb-local-ref (description?, ejb-ref-name, ejb-ref-type,
-		local-home, local, ejb-link?)>
-
-<!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type,
-		home, remote, ejb-link?)>
-
-<!ELEMENT ejb-ref-name (#PCDATA)>
-
-<!ELEMENT ejb-ref-type (#PCDATA)>
-
-<!ELEMENT env-entry (description?, env-entry-name, env-entry-value?,
-env-entry-type)>
-
-<!ELEMENT env-entry-name (#PCDATA)>
-
-<!ELEMENT env-entry-type (#PCDATA)>
-
-<!ELEMENT env-entry-value (#PCDATA)>
-
-<!ELEMENT error-code (#PCDATA)>
-
-<!ELEMENT error-page ((error-code | exception-type), location)>
-
-<!ELEMENT exception-type (#PCDATA)>
-
-<!ELEMENT extension (#PCDATA)>
-
-<!ELEMENT filter (icon?, filter-name, display-name?, description?,
-filter-class, init-param*)>
-
-<!ELEMENT filter-class (#PCDATA)>
-
-<!ELEMENT filter-mapping (filter-name, (url-pattern | servlet-name))>
-
-<!ELEMENT filter-name (#PCDATA)>
-
-<!ELEMENT form-error-page (#PCDATA)>
-
-<!ELEMENT form-login-config (form-login-page, form-error-page)>
-
-<!ELEMENT form-login-page (#PCDATA)>
-
-<!ELEMENT home (#PCDATA)>
-
-<!ELEMENT http-method (#PCDATA)>
-
-<!ELEMENT icon (small-icon?, large-icon?)>
-
-<!ELEMENT init-param (param-name, param-value, description?)>
-
-<!ELEMENT jsp-file (#PCDATA)>
-
-<!ELEMENT large-icon (#PCDATA)>
-
-<!ELEMENT listener (listener-class)>
-
-<!ELEMENT listener-class (#PCDATA)>
-
-<!ELEMENT load-on-startup (#PCDATA)>
-
-<!ELEMENT local (#PCDATA)>
-
-<!ELEMENT local-home (#PCDATA)>
-
-<!ELEMENT location (#PCDATA)>
-
-<!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>
-
-<!ELEMENT mime-mapping (extension, mime-type)>
-
-<!ELEMENT mime-type (#PCDATA)>
-
-<!ELEMENT param-name (#PCDATA)>
-
-<!ELEMENT param-value (#PCDATA)>
-
-<!ELEMENT realm-name (#PCDATA)>
-
-<!ELEMENT remote (#PCDATA)>
-
-<!ELEMENT res-auth (#PCDATA)>
-
-<!ELEMENT res-ref-name (#PCDATA)>
-
-<!ELEMENT res-sharing-scope (#PCDATA)>
-
-<!ELEMENT res-type (#PCDATA)>
-
-<!ELEMENT resource-env-ref (description?, resource-env-ref-name,
-		resource-env-ref-type)>
-
-<!ELEMENT resource-env-ref-name (#PCDATA)>
-
-<!ELEMENT resource-env-ref-type (#PCDATA)>
-
-<!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth,
-		res-sharing-scope?)>
-
-<!ELEMENT role-link (#PCDATA)>
-
-<!ELEMENT role-name (#PCDATA)>
-
-<!ELEMENT run-as (description?, role-name)>
-
-<!ELEMENT security-constraint (display-name?, web-resource-collection+,
-auth-constraint?, user-data-constraint?)>
-
-<!ELEMENT security-role (description?, role-name)>
-
-<!ELEMENT security-role-ref (description?, role-name, role-link?)>
-
-<!ELEMENT servlet (icon?, servlet-name, display-name?, description?,
-(servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>
-
-<!ELEMENT servlet-class (#PCDATA)>
-
-<!ELEMENT servlet-mapping (servlet-name, url-pattern)>
-
-<!ELEMENT servlet-name (#PCDATA)>
-
-<!ELEMENT session-config (session-timeout?)>
-
-<!ELEMENT session-timeout (#PCDATA)>
-
-<!ELEMENT small-icon (#PCDATA)>
-
-<!ELEMENT taglib (taglib-uri, taglib-location)>
-
-<!ELEMENT taglib-location (#PCDATA)>
-
-<!ELEMENT taglib-uri (#PCDATA)>
-
-<!ELEMENT transport-guarantee (#PCDATA)>
-
-<!ELEMENT url-pattern (#PCDATA)>
-
-<!ELEMENT user-data-constraint (description?, transport-guarantee)>
-
-<!ELEMENT web-resource-collection (web-resource-name, description?,
-url-pattern*, http-method*)>
-
-<!ELEMENT web-resource-name (#PCDATA)>
-
-<!ELEMENT welcome-file (#PCDATA)>
-
-<!ELEMENT welcome-file-list (welcome-file+)>
-
-<!ATTLIST auth-constraint id ID #IMPLIED>
-<!ATTLIST auth-method id ID #IMPLIED>
-<!ATTLIST context-param id ID #IMPLIED>
-<!ATTLIST description id ID #IMPLIED>
-<!ATTLIST display-name id ID #IMPLIED>
-<!ATTLIST distributable id ID #IMPLIED>
-<!ATTLIST ejb-link id ID #IMPLIED>
-<!ATTLIST ejb-local-ref id ID #IMPLIED>
-<!ATTLIST ejb-ref id ID #IMPLIED>
-<!ATTLIST ejb-ref-name id ID #IMPLIED>
-<!ATTLIST ejb-ref-type id ID #IMPLIED>
-<!ATTLIST env-entry id ID #IMPLIED>
-<!ATTLIST env-entry-name id ID #IMPLIED>
-<!ATTLIST env-entry-type id ID #IMPLIED>
-<!ATTLIST env-entry-value id ID #IMPLIED>
-<!ATTLIST error-code id ID #IMPLIED>
-<!ATTLIST error-page id ID #IMPLIED>
-<!ATTLIST exception-type id ID #IMPLIED>
-<!ATTLIST extension id ID #IMPLIED>
-<!ATTLIST filter id ID #IMPLIED>
-<!ATTLIST filter-class id ID #IMPLIED>
-<!ATTLIST filter-mapping id ID #IMPLIED>
-<!ATTLIST filter-name id ID #IMPLIED>
-<!ATTLIST form-error-page id ID #IMPLIED>
-<!ATTLIST form-login-config id ID #IMPLIED>
-<!ATTLIST form-login-page id ID #IMPLIED>
-<!ATTLIST home id ID #IMPLIED>
-<!ATTLIST http-method id ID #IMPLIED>
-<!ATTLIST icon id ID #IMPLIED>
-<!ATTLIST init-param id ID #IMPLIED>
-<!ATTLIST jsp-file id ID #IMPLIED>
-<!ATTLIST large-icon id ID #IMPLIED>
-<!ATTLIST listener id ID #IMPLIED>
-<!ATTLIST listener-class id ID #IMPLIED>
-<!ATTLIST load-on-startup id ID #IMPLIED>
-<!ATTLIST local id ID #IMPLIED>
-<!ATTLIST local-home id ID #IMPLIED>
-<!ATTLIST location id ID #IMPLIED>
-<!ATTLIST login-config id ID #IMPLIED>
-<!ATTLIST mime-mapping id ID #IMPLIED>
-<!ATTLIST mime-type id ID #IMPLIED>
-<!ATTLIST param-name id ID #IMPLIED>
-<!ATTLIST param-value id ID #IMPLIED>
-<!ATTLIST realm-name id ID #IMPLIED>
-<!ATTLIST remote id ID #IMPLIED>
-<!ATTLIST res-auth id ID #IMPLIED>
-<!ATTLIST res-ref-name id ID #IMPLIED>
-<!ATTLIST res-sharing-scope id ID #IMPLIED>
-<!ATTLIST res-type id ID #IMPLIED>
-<!ATTLIST resource-env-ref id ID #IMPLIED>
-<!ATTLIST resource-env-ref-name id ID #IMPLIED>
-<!ATTLIST resource-env-ref-type id ID #IMPLIED>
-<!ATTLIST resource-ref id ID #IMPLIED>
-<!ATTLIST role-link id ID #IMPLIED>
-<!ATTLIST role-name id ID #IMPLIED>
-<!ATTLIST run-as id ID #IMPLIED>
-<!ATTLIST security-constraint id ID #IMPLIED>
-<!ATTLIST security-role id ID #IMPLIED>
-<!ATTLIST security-role-ref id ID #IMPLIED>
-<!ATTLIST servlet id ID #IMPLIED>
-<!ATTLIST servlet-class id ID #IMPLIED>
-<!ATTLIST servlet-mapping id ID #IMPLIED>
-<!ATTLIST servlet-name id ID #IMPLIED>
-<!ATTLIST session-config id ID #IMPLIED>
-<!ATTLIST session-timeout id ID #IMPLIED>
-<!ATTLIST small-icon id ID #IMPLIED>
-<!ATTLIST taglib id ID #IMPLIED>
-<!ATTLIST taglib-location id ID #IMPLIED>
-<!ATTLIST taglib-uri id ID #IMPLIED>
-<!ATTLIST transport-guarantee id ID #IMPLIED>
-<!ATTLIST url-pattern id ID #IMPLIED>
-<!ATTLIST user-data-constraint id ID #IMPLIED>
-<!ATTLIST web-app id ID #IMPLIED>
-<!ATTLIST web-resource-collection id ID #IMPLIED>
-<!ATTLIST web-resource-name id ID #IMPLIED>
-<!ATTLIST welcome-file id ID #IMPLIED>
-<!ATTLIST welcome-file-list id ID #IMPLIED>
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_4.xsd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_4.xsd
deleted file mode 100644
index ff9a731..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_4.xsd
+++ /dev/null
@@ -1,325 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You 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.
--->
-
-<!--
-  **  The actual Sun XSD for this stripped down XSD can be found at
-  **  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
-  **  This XSD contains only the functional elements for programatic use.
--->
-
-
-<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
-            targetNamespace="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" 
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-            elementFormDefault="qualified" 
-            attributeFormDefault="unqualified" 
-            version="2.4">
-    <xsd:include schemaLocation="j2ee_1_4.xsd" />
-    <xsd:include schemaLocation="jsp_2_0.xsd" />
-    <xsd:element name="web-app" type="j2ee:web-appType">
-        <xsd:unique name="web-app-servlet-name-uniqueness">
-            <xsd:selector xpath="j2ee:servlet" />
-            <xsd:field xpath="j2ee:servlet-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-filter-name-uniqueness">
-            <xsd:selector xpath="j2ee:filter" />
-            <xsd:field xpath="j2ee:filter-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-ejb-local-ref-name-uniqueness">
-            <xsd:selector xpath="j2ee:ejb-local-ref" />
-            <xsd:field xpath="j2ee:ejb-ref-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-ejb-ref-name-uniqueness">
-            <xsd:selector xpath="j2ee:ejb-ref" />
-            <xsd:field xpath="j2ee:ejb-ref-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-resource-env-ref-uniqueness">
-            <xsd:selector xpath="j2ee:resource-env-ref" />
-            <xsd:field xpath="j2ee:resource-env-ref-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-message-destination-ref-uniqueness">
-            <xsd:selector xpath="j2ee:message-destination-ref" />
-            <xsd:field xpath="j2ee:message-destination-ref-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-res-ref-name-uniqueness">
-            <xsd:selector xpath="j2ee:resource-ref" />
-            <xsd:field xpath="j2ee:res-ref-name" />
-        </xsd:unique>
-        <xsd:unique name="web-app-env-entry-name-uniqueness">
-            <xsd:selector xpath="j2ee:env-entry" />
-            <xsd:field xpath="j2ee:env-entry-name" />
-        </xsd:unique>
-        <xsd:key name="web-app-role-name-key">
-            <xsd:selector xpath="j2ee:security-role" />
-            <xsd:field xpath="j2ee:role-name" />
-        </xsd:key>
-        <xsd:keyref name="web-app-role-name-references" refer="j2ee:web-app-role-name-key">
-            <xsd:selector xpath="j2ee:servlet/j2ee:security-role-ref" />
-            <xsd:field xpath="j2ee:role-link" />
-        </xsd:keyref>
-    </xsd:element>
-    <xsd:complexType name="auth-constraintType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="role-name" type="j2ee:role-nameType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="auth-methodType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="dispatcherType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="FORWARD" />
-                <xsd:enumeration value="INCLUDE" />
-                <xsd:enumeration value="REQUEST" />
-                <xsd:enumeration value="ERROR" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:simpleType name="encodingType">
-        <xsd:restriction base="xsd:string">
-            <xsd:pattern value="[^\s]+" />
-        </xsd:restriction>
-    </xsd:simpleType>
-    <xsd:complexType name="error-codeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:xsdPositiveIntegerType">
-                <xsd:pattern value="\d{3}" />
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="error-pageType">
-        <xsd:sequence>
-            <xsd:choice>
-                <xsd:element name="error-code" type="j2ee:error-codeType" />
-                <xsd:element name="exception-type" type="j2ee:fully-qualified-classType"></xsd:element>
-            </xsd:choice>
-            <xsd:element name="location" type="j2ee:war-pathType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="filter-mappingType">
-        <xsd:sequence>
-            <xsd:element name="filter-name" type="j2ee:filter-nameType" />
-            <xsd:choice>
-                <xsd:element name="url-pattern" type="j2ee:url-patternType" />
-                <xsd:element name="servlet-name" type="j2ee:servlet-nameType" />
-            </xsd:choice>
-            <xsd:element name="dispatcher" type="j2ee:dispatcherType" minOccurs="0" maxOccurs="4" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="filter-nameType">
-        <xsd:simpleContent>
-            <xsd:extension base="j2ee:nonEmptyStringType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="filterType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="filter-name" type="j2ee:filter-nameType" />
-            <xsd:element name="filter-class" type="j2ee:fully-qualified-classType"></xsd:element>
-            <xsd:element name="init-param" type="j2ee:param-valueType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="form-login-configType">
-        <xsd:sequence>
-            <xsd:element name="form-login-page" type="j2ee:war-pathType"></xsd:element>
-            <xsd:element name="form-error-page" type="j2ee:war-pathType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="http-methodType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="GET" />
-                <xsd:enumeration value="POST" />
-                <xsd:enumeration value="PUT" />
-                <xsd:enumeration value="DELETE" />
-                <xsd:enumeration value="HEAD" />
-                <xsd:enumeration value="OPTIONS" />
-                <xsd:enumeration value="TRACE" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="locale-encoding-mapping-listType">
-        <xsd:sequence>
-            <xsd:element name="locale-encoding-mapping" type="j2ee:locale-encoding-mappingType" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="locale-encoding-mappingType">
-        <xsd:sequence>
-            <xsd:element name="locale" type="j2ee:localeType" />
-            <xsd:element name="encoding" type="j2ee:encodingType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:simpleType name="localeType">
-        <xsd:restriction base="xsd:string">
-            <xsd:pattern value="[a-z]{2}(_|-)?([\p{L}\-\p{Nd}]{2})?" />
-        </xsd:restriction>
-    </xsd:simpleType>
-    <xsd:complexType name="login-configType">
-        <xsd:sequence>
-            <xsd:element name="auth-method" type="j2ee:auth-methodType" minOccurs="0" />
-            <xsd:element name="realm-name" type="j2ee:string" minOccurs="0"></xsd:element>
-            <xsd:element name="form-login-config" type="j2ee:form-login-configType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="mime-mappingType">
-        <xsd:sequence>
-            <xsd:element name="extension" type="j2ee:string" />
-            <xsd:element name="mime-type" type="j2ee:mime-typeType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="mime-typeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:pattern value="[\p{L}\-\p{Nd}]+/[\p{L}\-\p{Nd}\.]+" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="nonEmptyStringType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:minLength value="1" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="security-constraintType">
-        <xsd:sequence>
-            <xsd:element name="display-name" type="j2ee:display-nameType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="web-resource-collection" type="j2ee:web-resource-collectionType" maxOccurs="unbounded" />
-            <xsd:element name="auth-constraint" type="j2ee:auth-constraintType" minOccurs="0" />
-            <xsd:element name="user-data-constraint" type="j2ee:user-data-constraintType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="servlet-mappingType">
-        <xsd:sequence>
-            <xsd:element name="servlet-name" type="j2ee:servlet-nameType" />
-            <xsd:element name="url-pattern" type="j2ee:url-patternType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="servlet-nameType">
-        <xsd:simpleContent>
-            <xsd:extension base="j2ee:nonEmptyStringType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="servletType">
-        <xsd:sequence>
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="servlet-name" type="j2ee:servlet-nameType" />
-            <xsd:choice>
-                <xsd:element name="servlet-class" type="j2ee:fully-qualified-classType"></xsd:element>
-                <xsd:element name="jsp-file" type="j2ee:jsp-fileType" />
-            </xsd:choice>
-            <xsd:element name="init-param" type="j2ee:param-valueType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="load-on-startup" type="j2ee:xsdIntegerType" minOccurs="0"></xsd:element>
-            <xsd:element name="run-as" type="j2ee:run-asType" minOccurs="0" />
-            <xsd:element name="security-role-ref" type="j2ee:security-role-refType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="session-configType">
-        <xsd:sequence>
-            <xsd:element name="session-timeout" type="j2ee:xsdIntegerType" minOccurs="0"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="transport-guaranteeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:enumeration value="NONE" />
-                <xsd:enumeration value="INTEGRAL" />
-                <xsd:enumeration value="CONFIDENTIAL" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:complexType name="user-data-constraintType">
-        <xsd:sequence>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="transport-guarantee" type="j2ee:transport-guaranteeType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="war-pathType">
-        <xsd:simpleContent>
-            <xsd:restriction base="j2ee:string">
-                <xsd:pattern value="/.*" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-    <xsd:simpleType name="web-app-versionType">
-        <xsd:restriction base="xsd:token">
-            <xsd:enumeration value="2.4" />
-        </xsd:restriction>
-    </xsd:simpleType>
-    <xsd:complexType name="web-appType">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:group ref="j2ee:descriptionGroup" />
-            <xsd:element name="distributable" type="j2ee:emptyType" />
-            <xsd:element name="context-param" type="j2ee:param-valueType"></xsd:element>
-            <xsd:element name="filter" type="j2ee:filterType" />
-            <xsd:element name="filter-mapping" type="j2ee:filter-mappingType" />
-            <xsd:element name="listener" type="j2ee:listenerType" />
-            <xsd:element name="servlet" type="j2ee:servletType" />
-            <xsd:element name="servlet-mapping" type="j2ee:servlet-mappingType" />
-            <xsd:element name="session-config" type="j2ee:session-configType" />
-            <xsd:element name="mime-mapping" type="j2ee:mime-mappingType" />
-            <xsd:element name="welcome-file-list" type="j2ee:welcome-file-listType" />
-            <xsd:element name="error-page" type="j2ee:error-pageType" />
-            <xsd:element name="jsp-config" type="j2ee:jsp-configType" />
-            <xsd:element name="security-constraint" type="j2ee:security-constraintType" />
-            <xsd:element name="login-config" type="j2ee:login-configType" />
-            <xsd:element name="security-role" type="j2ee:security-roleType" />
-            <xsd:group ref="j2ee:jndiEnvironmentRefsGroup" />
-            <xsd:element name="message-destination" type="j2ee:message-destinationType" />
-            <xsd:element name="locale-encoding-mapping-list" type="j2ee:locale-encoding-mapping-listType" />
-        </xsd:choice>
-        <xsd:attribute name="version" type="j2ee:web-app-versionType" use="required" />
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="web-resource-collectionType">
-        <xsd:sequence>
-            <xsd:element name="web-resource-name" type="j2ee:string"></xsd:element>
-            <xsd:element name="description" type="j2ee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="url-pattern" type="j2ee:url-patternType" maxOccurs="unbounded" />
-            <xsd:element name="http-method" type="j2ee:http-methodType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-    <xsd:complexType name="welcome-file-listType">
-        <xsd:sequence>
-            <xsd:element name="welcome-file" type="xsd:string" maxOccurs="unbounded"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-</xsd:schema>
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_5.xsd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_5.xsd
deleted file mode 100644
index 616bdcf..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/web-app_2_5.xsd
+++ /dev/null
@@ -1,470 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You 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.
--->
-
-<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://java.sun.com/xml/ns/javaee"
-    xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
-    attributeFormDefault="unqualified" version="2.5">
-
-    <!--
-        **  This is the Web Application 2.5 XSD with only the required elements to support an implementation.
-        **  Please see http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd for a fully documented and latest
-        **  XSD. 
-    -->
-
-    <xsd:include schemaLocation="javaee_5.xsd" />
-    <xsd:include schemaLocation="jsp_2_1.xsd" />
-
-    <!-- 
-        **
-    -->
-    <xsd:element name="web-app" type="javaee:web-appType">
-        <xsd:unique name="web-app-servlet-name-uniqueness">
-            <xsd:selector xpath="javaee:servlet" />
-            <xsd:field xpath="javaee:servlet-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-filter-name-uniqueness">
-            <xsd:selector xpath="javaee:filter" />
-            <xsd:field xpath="javaee:filter-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-ejb-local-ref-name-uniqueness">
-            <xsd:selector xpath="javaee:ejb-local-ref" />
-            <xsd:field xpath="javaee:ejb-ref-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-ejb-ref-name-uniqueness">
-            <xsd:selector xpath="javaee:ejb-ref" />
-            <xsd:field xpath="javaee:ejb-ref-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-resource-env-ref-uniqueness">
-            <xsd:selector xpath="javaee:resource-env-ref" />
-            <xsd:field xpath="javaee:resource-env-ref-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-message-destination-ref-uniqueness">
-            <xsd:selector xpath="javaee:message-destination-ref" />
-            <xsd:field xpath="javaee:message-destination-ref-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-res-ref-name-uniqueness">
-            <xsd:selector xpath="javaee:resource-ref" />
-            <xsd:field xpath="javaee:res-ref-name" />
-        </xsd:unique>
-
-        <xsd:unique name="web-app-env-entry-name-uniqueness">
-            <xsd:selector xpath="javaee:env-entry" />
-            <xsd:field xpath="javaee:env-entry-name" />
-        </xsd:unique>
-
-        <xsd:key name="web-app-role-name-key">
-            <xsd:selector xpath="javaee:security-role" />
-            <xsd:field xpath="javaee:role-name" />
-        </xsd:key>
-
-        <xsd:keyref name="web-app-role-name-references" refer="javaee:web-app-role-name-key">
-            <xsd:selector xpath="javaee:servlet/javaee:security-role-ref" />
-            <xsd:field xpath="javaee:role-link" />
-        </xsd:keyref>
-    </xsd:element>
-
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="auth-constraintType">
-        <xsd:sequence>
-            <xsd:element name="description" type="javaee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="role-name" type="javaee:role-nameType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="auth-methodType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:string" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="dispatcherType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:string">
-                <xsd:enumeration value="FORWARD" />
-                <xsd:enumeration value="INCLUDE" />
-                <xsd:enumeration value="REQUEST" />
-                <xsd:enumeration value="ERROR" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:simpleType name="encodingType">
-        <xsd:restriction base="xsd:string">
-            <xsd:pattern value="[^\s]+" />
-        </xsd:restriction>
-    </xsd:simpleType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="error-codeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:xsdPositiveIntegerType">
-                <xsd:pattern value="\d{3}" />
-                <xsd:attribute name="id" type="xsd:ID" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="error-pageType">
-        <!-- 
-            **
-        -->
-        <xsd:sequence>
-            <xsd:choice>
-                <xsd:element name="error-code" type="javaee:error-codeType" />
-                <xsd:element name="exception-type" type="javaee:fully-qualified-classType"></xsd:element>
-            </xsd:choice>
-
-            <xsd:element name="location" type="javaee:war-pathType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="filter-mappingType">
-        <xsd:sequence>
-            <xsd:element name="filter-name" type="javaee:filter-nameType" />
-            <xsd:choice minOccurs="1" maxOccurs="unbounded">
-                <xsd:element name="url-pattern" type="javaee:url-patternType" />
-                <xsd:element name="servlet-name" type="javaee:servlet-nameType" />
-            </xsd:choice>
-            <xsd:element name="dispatcher" type="javaee:dispatcherType" minOccurs="0" maxOccurs="4" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="filter-nameType">
-        <xsd:simpleContent>
-            <xsd:extension base="javaee:nonEmptyStringType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="filterType">
-        <xsd:sequence>
-            <xsd:group ref="javaee:descriptionGroup" />
-            <xsd:element name="filter-name" type="javaee:filter-nameType" />
-            <xsd:element name="filter-class" type="javaee:fully-qualified-classType"></xsd:element>
-            <xsd:element name="init-param" type="javaee:param-valueType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="form-login-configType">
-        <xsd:sequence>
-            <xsd:element name="form-login-page" type="javaee:war-pathType">
-            </xsd:element>
-            <xsd:element name="form-error-page" type="javaee:war-pathType"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:simpleType name="http-methodType">
-        <xsd:restriction base="xsd:token">
-            <xsd:pattern value="[&#33;-&#126;-[\(\)&#60;&#62;@,;:&#34;/\[\]?=\{\}\\\p{Z}]]+" />
-        </xsd:restriction>
-    </xsd:simpleType>
-
-    <!-- 
-        **
-    -->
-    <xsd:simpleType name="load-on-startupType">
-        <xsd:union memberTypes="javaee:null-charType xsd:integer" />
-    </xsd:simpleType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="locale-encoding-mapping-listType">
-        <xsd:sequence>
-            <xsd:element name="locale-encoding-mapping" type="javaee:locale-encoding-mappingType" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="locale-encoding-mappingType">
-        <xsd:sequence>
-            <xsd:element name="locale" type="javaee:localeType" />
-            <xsd:element name="encoding" type="javaee:encodingType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:simpleType name="localeType">
-        <xsd:restriction base="xsd:string">
-            <xsd:pattern value="[a-z]{2}(_|-)?([\p{L}\-\p{Nd}]{2})?" />
-        </xsd:restriction>
-    </xsd:simpleType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="login-configType">
-        <xsd:sequence>
-            <xsd:element name="auth-method" type="javaee:auth-methodType" minOccurs="0" />
-            <xsd:element name="realm-name" type="javaee:string" minOccurs="0"></xsd:element>
-            <xsd:element name="form-login-config" type="javaee:form-login-configType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="mime-mappingType">
-        <xsd:sequence>
-            <xsd:element name="extension" type="javaee:string" />
-            <xsd:element name="mime-type" type="javaee:mime-typeType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="mime-typeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:string">
-                <xsd:pattern value="[^\p{Cc}^\s]+/[^\p{Cc}^\s]+" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="nonEmptyStringType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:string">
-                <xsd:minLength value="1" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:simpleType name="null-charType">
-        <xsd:restriction base="xsd:string">
-            <xsd:enumeration value="" />
-        </xsd:restriction>
-    </xsd:simpleType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="security-constraintType">
-        <xsd:sequence>
-            <xsd:element name="display-name" type="javaee:display-nameType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="web-resource-collection" type="javaee:web-resource-collectionType" maxOccurs="unbounded" />
-            <xsd:element name="auth-constraint" type="javaee:auth-constraintType" minOccurs="0" />
-            <xsd:element name="user-data-constraint" type="javaee:user-data-constraintType" minOccurs="0" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="servlet-mappingType">
-        <xsd:sequence>
-            <xsd:element name="servlet-name" type="javaee:servlet-nameType" />
-            <xsd:element name="url-pattern" type="javaee:url-patternType" minOccurs="1" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="servlet-nameType">
-        <xsd:simpleContent>
-            <xsd:extension base="javaee:nonEmptyStringType" />
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="servletType">
-        <xsd:sequence>
-            <xsd:group ref="javaee:descriptionGroup" />
-            <xsd:element name="servlet-name" type="javaee:servlet-nameType" />
-            <xsd:choice>
-                <xsd:element name="servlet-class" type="javaee:fully-qualified-classType"></xsd:element>
-                <xsd:element name="jsp-file" type="javaee:jsp-fileType" />
-            </xsd:choice>
-            <xsd:element name="init-param" type="javaee:param-valueType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="load-on-startup" type="javaee:load-on-startupType" minOccurs="0"></xsd:element>
-            <xsd:element name="run-as" type="javaee:run-asType" minOccurs="0" />
-            <xsd:element name="security-role-ref" type="javaee:security-role-refType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="session-configType">
-        <xsd:sequence>
-            <xsd:element name="session-timeout" type="javaee:xsdIntegerType" minOccurs="0"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="transport-guaranteeType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:string">
-                <xsd:enumeration value="NONE" />
-                <xsd:enumeration value="INTEGRAL" />
-                <xsd:enumeration value="CONFIDENTIAL" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="user-data-constraintType">
-        <xsd:sequence>
-            <xsd:element name="description" type="javaee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="transport-guarantee" type="javaee:transport-guaranteeType" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="war-pathType">
-        <xsd:simpleContent>
-            <xsd:restriction base="javaee:string">
-                <xsd:pattern value="/.*" />
-            </xsd:restriction>
-        </xsd:simpleContent>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:simpleType name="web-app-versionType">
-        <xsd:restriction base="xsd:token">
-            <xsd:enumeration value="2.5" />
-        </xsd:restriction>
-    </xsd:simpleType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="web-appType">
-        <xsd:choice minOccurs="0" maxOccurs="unbounded">
-            <xsd:group ref="javaee:descriptionGroup" />
-            <xsd:element name="distributable" type="javaee:emptyType" />
-            <xsd:element name="context-param" type="javaee:param-valueType"></xsd:element>
-            <xsd:element name="filter" type="javaee:filterType" />
-            <xsd:element name="filter-mapping" type="javaee:filter-mappingType" />
-            <xsd:element name="listener" type="javaee:listenerType" />
-            <xsd:element name="servlet" type="javaee:servletType" />
-            <xsd:element name="servlet-mapping" type="javaee:servlet-mappingType" />
-            <xsd:element name="session-config" type="javaee:session-configType" />
-            <xsd:element name="mime-mapping" type="javaee:mime-mappingType" />
-            <xsd:element name="welcome-file-list" type="javaee:welcome-file-listType" />
-            <xsd:element name="error-page" type="javaee:error-pageType" />
-            <xsd:element name="jsp-config" type="javaee:jsp-configType" />
-            <xsd:element name="security-constraint" type="javaee:security-constraintType" />
-            <xsd:element name="login-config" type="javaee:login-configType" />
-            <xsd:element name="security-role" type="javaee:security-roleType" />
-            <xsd:group ref="javaee:jndiEnvironmentRefsGroup" />
-            <xsd:element name="message-destination" type="javaee:message-destinationType" />
-            <xsd:element name="locale-encoding-mapping-list" type="javaee:locale-encoding-mapping-listType" />
-        </xsd:choice>
-
-        <xsd:attribute name="version" type="javaee:web-app-versionType" use="required" />
-        <xsd:attribute name="id" type="xsd:ID" />
-        <xsd:attribute name="metadata-complete" type="xsd:boolean"></xsd:attribute>
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="web-resource-collectionType">
-        <xsd:sequence>
-            <xsd:element name="web-resource-name" type="javaee:string"></xsd:element>
-            <xsd:element name="description" type="javaee:descriptionType" minOccurs="0" maxOccurs="unbounded" />
-            <xsd:element name="url-pattern" type="javaee:url-patternType" maxOccurs="unbounded" />
-            <xsd:element name="http-method" type="javaee:http-methodType" minOccurs="0" maxOccurs="unbounded" />
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-
-    <!-- 
-        **
-    -->
-    <xsd:complexType name="welcome-file-listType">
-        <xsd:sequence>
-            <xsd:element name="welcome-file" type="xsd:string" maxOccurs="unbounded"></xsd:element>
-        </xsd:sequence>
-        <xsd:attribute name="id" type="xsd:ID" />
-    </xsd:complexType>
-</xsd:schema>
\ No newline at end of file
diff --git a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/xml.xsd b/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/xml.xsd
deleted file mode 100644
index ac4b0ec..0000000
--- a/geronimo-servlet_3.0_spec/src/main/resources/javax/servlet/resources/xml.xsd
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" >
-<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
-
- <xs:annotation>
-  <xs:documentation>
-   See http://www.w3.org/XML/1998/namespace.html and
-   http://www.w3.org/TR/REC-xml for information about this namespace.
-
-    This schema document describes the XML namespace, in a form
-    suitable for import by other schema documents.
-
-    Note that local names in this namespace are intended to be defined
-    only by the World Wide Web Consortium or its subgroups.  The
-    following names are currently defined in this namespace and should
-    not be used with conflicting semantics by any Working Group,
-    specification, or document instance:
-
-    base (as an attribute name): denotes an attribute whose value
-         provides a URI to be used as the base for interpreting any
-         relative URIs in the scope of the element on which it
-         appears; its value is inherited.  This name is reserved
-         by virtue of its definition in the XML Base specification.
-
-    lang (as an attribute name): denotes an attribute whose value
-         is a language code for the natural language of the content of
-         any element; its value is inherited.  This name is reserved
-         by virtue of its definition in the XML specification.
-
-    space (as an attribute name): denotes an attribute whose
-         value is a keyword indicating what whitespace processing
-         discipline is intended for the content of the element; its
-         value is inherited.  This name is reserved by virtue of its
-         definition in the XML specification.
-
-    Father (in any context at all): denotes Jon Bosak, the chair of
-         the original XML Working Group.  This name is reserved by
-         the following decision of the W3C XML Plenary and
-         XML Coordination groups:
-
-             In appreciation for his vision, leadership and dedication
-             the W3C XML Plenary on this 10th day of February, 2000
-             reserves for Jon Bosak in perpetuity the XML name
-             xml:Father
-  </xs:documentation>
- </xs:annotation>
-
- <xs:annotation>
-  <xs:documentation>This schema defines attributes and an attribute group
-        suitable for use by
-        schemas wishing to allow xml:base, xml:lang or xml:space attributes
-        on elements they define.
-
-        To enable this, such a schema must import this schema
-        for the XML namespace, e.g. as follows:
-        &lt;schema . . .>
-         . . .
-         &lt;import namespace="http://www.w3.org/XML/1998/namespace"
-                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
-
-        Subsequently, qualified reference to any of the attributes
-        or the group defined below will have the desired effect, e.g.
-
-        &lt;type . . .>
-         . . .
-         &lt;attributeGroup ref="xml:specialAttrs"/>
-
-         will define a type which will schema-validate an instance
-         element with any of those attributes</xs:documentation>
- </xs:annotation>
-
- <xs:annotation>
-  <xs:documentation>In keeping with the XML Schema WG's standard versioning
-   policy, this schema document will persist at
-   http://www.w3.org/2001/03/xml.xsd.
-   At the date of issue it can also be found at
-   http://www.w3.org/2001/xml.xsd.
-   The schema document at that URI may however change in the future,
-   in order to remain compatible with the latest version of XML Schema
-   itself.  In other words, if the XML Schema namespace changes, the version
-   of this document at
-   http://www.w3.org/2001/xml.xsd will change
-   accordingly; the version at
-   http://www.w3.org/2001/03/xml.xsd will not change.
-  </xs:documentation>
- </xs:annotation>
-
- <xs:attribute name="lang" type="xs:language">
-  <xs:annotation>
-   <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
-         codes as the enumerated possible values . . .</xs:documentation>
-  </xs:annotation>
- </xs:attribute>
-
- <xs:attribute name="space" default="preserve">
-  <xs:simpleType>
-   <xs:restriction base="xs:NCName">
-    <xs:enumeration value="default"/>
-    <xs:enumeration value="preserve"/>
-   </xs:restriction>
-  </xs:simpleType>
- </xs:attribute>
-
- <xs:attribute name="base" type="xs:anyURI">
-  <xs:annotation>
-   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
-                     information about this attribute.</xs:documentation>
-  </xs:annotation>
- </xs:attribute>
-
- <xs:attributeGroup name="specialAttrs">
-  <xs:attribute ref="xml:base"/>
-  <xs:attribute ref="xml:lang"/>
-  <xs:attribute ref="xml:space"/>
- </xs:attributeGroup>
-
-</xs:schema>