You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2009/04/23 18:15:01 UTC

svn commit: r767956 [1/2] - in /tomcat/trunk/java: javax/servlet/ javax/servlet/annotation/ javax/servlet/http/ org/apache/catalina/connector/ org/apache/catalina/core/ org/apache/catalina/valves/ org/apache/jasper/servlet/

Author: markt
Date: Thu Apr 23 16:14:59 2009
New Revision: 767956

URL: http://svn.apache.org/viewvc?rev=767956&view=rev
Log:
Update for April draft of servlet spec. Some 3.0 stuff that was complete will need to be re-done

Added:
    tomcat/trunk/java/javax/servlet/AsyncContext.java   (contents, props changed)
      - copied, changed from r766074, tomcat/trunk/java/javax/servlet/AsyncContext.java
    tomcat/trunk/java/javax/servlet/FilterRegistration.java   (with props)
    tomcat/trunk/java/javax/servlet/Registration.java   (with props)
    tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java   (with props)
    tomcat/trunk/java/javax/servlet/ServletRegistration.java   (with props)
    tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java   (with props)
    tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java   (with props)
    tomcat/trunk/java/javax/servlet/annotation/WebFilter.java
      - copied, changed from r766650, tomcat/trunk/java/javax/servlet/annotation/ServletFilter.java
    tomcat/trunk/java/javax/servlet/annotation/WebInitParam.java
      - copied, changed from r766650, tomcat/trunk/java/javax/servlet/annotation/InitParam.java
    tomcat/trunk/java/javax/servlet/annotation/WebListener.java
      - copied, changed from r766650, tomcat/trunk/java/javax/servlet/annotation/WebServletContextListener.java
    tomcat/trunk/java/javax/servlet/http/HttpUtils.java   (props changed)
      - copied unchanged from r766074, tomcat/trunk/java/javax/servlet/http/HttpUtils.java
    tomcat/trunk/java/javax/servlet/http/Part.java   (with props)
Removed:
    tomcat/trunk/java/javax/servlet/AsyncDispatcher.java
    tomcat/trunk/java/javax/servlet/annotation/InitParam.java
    tomcat/trunk/java/javax/servlet/annotation/ServletFilter.java
    tomcat/trunk/java/javax/servlet/annotation/WebServletContextListener.java
Modified:
    tomcat/trunk/java/javax/servlet/AsyncListener.java
    tomcat/trunk/java/javax/servlet/DispatcherType.java
    tomcat/trunk/java/javax/servlet/RequestDispatcher.java
    tomcat/trunk/java/javax/servlet/ServletContext.java
    tomcat/trunk/java/javax/servlet/ServletRequest.java
    tomcat/trunk/java/javax/servlet/ServletRequestWrapper.java
    tomcat/trunk/java/javax/servlet/ServletResponseWrapper.java
    tomcat/trunk/java/javax/servlet/SessionCookieConfig.java
    tomcat/trunk/java/javax/servlet/SessionTrackingMode.java
    tomcat/trunk/java/javax/servlet/annotation/WebServlet.java
    tomcat/trunk/java/javax/servlet/http/HttpServletRequest.java
    tomcat/trunk/java/javax/servlet/http/HttpServletRequestWrapper.java
    tomcat/trunk/java/javax/servlet/http/HttpServletResponse.java
    tomcat/trunk/java/javax/servlet/http/HttpServletResponseWrapper.java
    tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
    tomcat/trunk/java/org/apache/catalina/connector/Request.java
    tomcat/trunk/java/org/apache/catalina/connector/RequestFacade.java
    tomcat/trunk/java/org/apache/catalina/connector/Response.java
    tomcat/trunk/java/org/apache/catalina/connector/ResponseFacade.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
    tomcat/trunk/java/org/apache/catalina/core/DummyRequest.java
    tomcat/trunk/java/org/apache/catalina/core/DummyResponse.java
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java
    tomcat/trunk/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
    tomcat/trunk/java/org/apache/catalina/valves/RequestDumperValve.java
    tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java

Copied: tomcat/trunk/java/javax/servlet/AsyncContext.java (from r766074, tomcat/trunk/java/javax/servlet/AsyncContext.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/AsyncContext.java?p2=tomcat/trunk/java/javax/servlet/AsyncContext.java&p1=tomcat/trunk/java/javax/servlet/AsyncContext.java&r1=766074&r2=767956&rev=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/AsyncContext.java (original)
+++ tomcat/trunk/java/javax/servlet/AsyncContext.java Thu Apr 23 16:14:59 2009
@@ -22,12 +22,45 @@
  * TODO SERVLET3
  */
 public interface AsyncContext {
+    public static final String ASYNC_REQUEST_URI =
+        "javax.servlet.async.request_uri";
+    public static final String ASYNC_CONTEXT_PATH  =
+        "javax.servlet.async.context_path";
+    public static final String ASYNC_PATH_INFO =
+        "javax.servlet.async.path_info";
+    public static final String ASYNC_SERVLET_PATH =
+        "javax.servlet.async.servlet_path";
+    public static final String ASYNC_QUERY_STRING =
+        "javax.servlet.async.query_string";
+    
     ServletRequest getRequest();
+    
     ServletResponse getResponse();
+    
     boolean hasOriginalRequestAndResponse();
-    void forward();
-    void forward(String path);
-    void forward(ServletContext context, String path);
+    
+    /**
+     * 
+     * @throws IllegalStateException
+     */
+    void dispatch();
+    
+    /**
+     * 
+     * @param path
+     * @throws IllegalStateException
+     */
+    void dispatch(String path);
+    
+    /**
+     * 
+     * @param context
+     * @param path
+     * @throws IllegalStateException
+     */
+    void dispatch(ServletContext context, String path);
+    
     void complete();
+    
     void start(Runnable run);
 }

Propchange: tomcat/trunk/java/javax/servlet/AsyncContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/AsyncContext.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Propchange: tomcat/trunk/java/javax/servlet/AsyncContext.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Apr 23 16:14:59 2009
@@ -0,0 +1 @@
+/tomcat/tc6.0.x/trunk/java/javax/servlet/AsyncContext.java:742915

Modified: tomcat/trunk/java/javax/servlet/AsyncListener.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/AsyncListener.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/AsyncListener.java (original)
+++ tomcat/trunk/java/javax/servlet/AsyncListener.java Thu Apr 23 16:14:59 2009
@@ -25,6 +25,6 @@
  * TODO SERVLET3 - Add comments
  */
 public interface AsyncListener extends EventListener {
-    void onDoneAsync(AsyncEvent event) throws IOException;
+    void onComplete(AsyncEvent event) throws IOException;
     void onTimeout(AsyncEvent event) throws IOException;
 }

Modified: tomcat/trunk/java/javax/servlet/DispatcherType.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/DispatcherType.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/DispatcherType.java (original)
+++ tomcat/trunk/java/javax/servlet/DispatcherType.java Thu Apr 23 16:14:59 2009
@@ -24,5 +24,6 @@
     FORWARD,
     INCLUDE,
     REQUEST,
+    ASYNC,
     ERROR
 }

Added: tomcat/trunk/java/javax/servlet/FilterRegistration.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/FilterRegistration.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/FilterRegistration.java (added)
+++ tomcat/trunk/java/javax/servlet/FilterRegistration.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,53 @@
+/*
+* 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.EnumSet;
+
+/**
+ * @since 3.0
+ * $Id$
+ * TODO SERVLET3 - Add comments
+ */
+public interface FilterRegistration extends Registration {
+    
+    /**
+     * 
+     * @param dispatcherTypes
+     * @param isMatchAfter
+     * @param servletNames
+     * @throws IllegalArgumentException
+     * @throws IllegalStateException
+     */
+    public void addMappingForServletNames(EnumSet<DispatcherType> dispatcherTypes,
+            boolean isMatchAfter, String... servletNames);
+    
+    /**
+     * 
+     * @param dispatcherTypes
+     * @param isMatchAfter
+     * @param urlPatterns
+     * @throws IllegalArgumentException
+     * @throws IllegalStateException
+     */
+    public void addMappingForUrlPatterns(EnumSet<DispatcherType> dispatcherTypes,
+            boolean isMatchAfter, String... urlPatterns);
+
+    public static interface Dynamic
+    extends FilterRegistration, Registration.Dynamic {
+    }
+}

Propchange: tomcat/trunk/java/javax/servlet/FilterRegistration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/FilterRegistration.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Added: tomcat/trunk/java/javax/servlet/Registration.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/Registration.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/Registration.java (added)
+++ tomcat/trunk/java/javax/servlet/Registration.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,43 @@
+/*
+* 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;
+
+/**
+ * @since 3.0
+ * $Id$
+ * TODO SERVLET3 - Add comments
+ */
+public interface Registration {
+    
+    public boolean setInitParameter(String name, String value)
+    throws IllegalArgumentException, IllegalStateException;
+
+    public Set<String> setInitParameters(Map<String,String> initParameters)
+    throws IllegalArgumentException, IllegalStateException;
+
+    public interface Dynamic {
+        
+        public void setDescription(String description)
+        throws IllegalStateException;
+        
+        public void setAsyncSupported(boolean isAsyncSupported)
+        throws IllegalStateException;
+    }
+}

Propchange: tomcat/trunk/java/javax/servlet/Registration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/Registration.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Modified: tomcat/trunk/java/javax/servlet/RequestDispatcher.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/RequestDispatcher.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/RequestDispatcher.java (original)
+++ tomcat/trunk/java/javax/servlet/RequestDispatcher.java Thu Apr 23 16:14:59 2009
@@ -43,7 +43,38 @@
  
 public interface RequestDispatcher {
 
-
+    public static final String ERROR_EXCEPTION =
+        "javax.servlet.error.exception";
+    public static final String ERROR_EXCEPTION_TYPE =
+        "javax.servlet.error.exception_type";
+    public static final String ERROR_MESSAGE =
+        "javax.servlet.error.message";
+    public static final String ERROR_REQUEST_URI =
+        "javax.servlet.error.request_uri";
+    public static final String ERROR_SERVLET_NAME =
+        "javax.servlet.error.servlet_name";
+    public static final String ERROR_STATUS_CODE =
+        "javax.servlet.error.status_code";
+    public static final String FORWARD_CONTEXT_PATH =
+        "javax.servlet.forward.context_path";
+    public static final String FORWARD_PATH_INFO =
+        "javax.servlet.forward.path_info";
+    public static final String FORWARD_QUERY_STRING =
+        "javax.servlet.forward.query_string";
+    public static final String FORWARD_REQUEST_URI =
+        "javax.servlet.forward.request_uri";
+    public static final String FORWARD_SERVLET_PATH =
+        "javax.servlet.forward.servlet_path";
+    public static final String INCLUDE_CONTEXT_PATH =
+        "javax.servlet.include.context_path";
+    public static final String INCLUDE_PATH_INFO =
+        "javax.servlet.include.path_info";
+    public static final String INCLUDE_QUERY_STRING =
+        "javax.servlet.include.query_string";
+    public static final String INCLUDE_REQUEST_URI =
+        "javax.servlet.include.request_uri";
+    public static final String INCLUDE_SERVLET_PATH =
+        "javax.servlet.include.servlet_path";
 
 
 

Added: tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java (added)
+++ tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,27 @@
+/*
+* 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;
+
+/**
+ * @since 3.0
+ * $Id$
+ * TODO SERVLET3 - Add comments
+ */
+public interface ServletContainerInitializer {
+    public void onStartup(java.util.Set<java.lang.Class<?>> c,
+            ServletContext ctx);
+}

Propchange: tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/ServletContainerInitializer.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Modified: tomcat/trunk/java/javax/servlet/ServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletContext.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletContext.java (original)
+++ tomcat/trunk/java/javax/servlet/ServletContext.java Thu Apr 23 16:14:59 2009
@@ -21,10 +21,8 @@
 import java.net.URL;
 import java.util.EnumSet;
 import java.util.Enumeration;
-import java.util.Map;
 import java.util.Set;
 
-
 /**
  * 
  * Defines a set of methods that a servlet uses to communicate with its
@@ -57,6 +55,7 @@
 
 public interface ServletContext {
 
+    public static final String TEMPDIR = "javax.servlet.context.tempdir";
 
     /**
      * Returns a <code>ServletContext</code> object that 
@@ -527,7 +526,17 @@
     public Enumeration<String> getInitParameterNames();
     
     
-
+    /**
+     * 
+     * @param name
+     * @param value
+     * @return
+     * @throws IllegalStateException
+     * @since Servlet 3.0
+     */
+    public 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.
@@ -648,93 +657,120 @@
     /**
      * 
      * @param servletName
-     * @param description
      * @param className
-     * @param initParameters
-     * @param loadOnStartup
-     * @throws IllegalArgumentException If the servlet name already exists
      * @throws IllegalStateException    If the context has already been
      *                                  initialised
      * @since 3.0
      */
-    public void addServlet(String servletName, String description,
-            String className, Map<String,String> initParameters,
-            int loadOnStartup)
-            throws IllegalArgumentException, IllegalStateException;
+    public ServletRegistration.Dynamic addServlet(String servletName,
+            String className);
     
     
     /**
      * 
      * @param servletName
-     * @param urlPatterns
-     * @throws IllegalArgumentException If urlPatters is null or empty
+     * @param servlet
+     * @since 3.0
      * @throws IllegalStateException    If the context has already been
      *                                  initialised
+     */
+    public ServletRegistration.Dynamic addServlet(String servletName,
+            Servlet servlet);
+    
+    
+    /**
      * 
+     * @param servletName
+     * @param servletClass
      * @since 3.0
+     * @throws IllegalStateException    If the context has already been
+     *                                  initialised
      */
-    public void addServletMapping(String servletName, String[] urlPatterns)
-            throws IllegalArgumentException, IllegalStateException;
+    public ServletRegistration.Dynamic addServlet(String servletName,
+            Class<? extends Servlet> servletClass);
+    
+
+    /**
+     * 
+     * @param c
+     * @return
+     * @throws ServletException
+     * @since Servlet 3.0
+     */
+    public <T extends Servlet> T createServlet(Class<T> c)
+    throws ServletException;
+
+    
+    /**
+     * 
+     * @param servletName
+     * @return
+     * @since Servlet 3.0 
+     */
+    public ServletRegistration findServletRegistration(String servletName);
+
 
     /**
      * 
      * @param filterName
-     * @param description
      * @param className
-     * @param initParameters
-     * @throws IllegalArgumentException If the filter name already exists
      * @throws IllegalStateException    If the context has already been
      *                                  initialised
      * 
      * @since 3.0
      */
-    public void addFilter(String filterName, String description,
-            String className, Map<String,String> initParameters)
-            throws IllegalArgumentException, IllegalStateException;
+    public FilterRegistration.Dynamic  addFilter(String filterName,
+            String className);
+    
     
     /**
      * 
      * @param filterName
-     * @param dispatcherTypes
-     * @param isMatchAfter
-     * @param servletNames
-     * @throws IllegalArgumentException If servletNames is null or empty
+     * @param filter
      * @throws IllegalStateException    If the context has already been
      *                                  initialised
+     * 
      * @since 3.0
      */
-    public void addFilterMappingForServletNames(String filterName,
-            EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
-            String... servletNames)
-            throws IllegalArgumentException, IllegalStateException;
+    public FilterRegistration.Dynamic  addFilter(String filterName,
+            Filter filter);
+
     
     /**
      * 
      * @param filterName
-     * @param dispatcherTypes
-     * @param isMatchAfter
-     * @param urlPatterns
-4     *
+     * @param filterClass
+     * @throws IllegalStateException    If the context has already been
+     *                                  initialised
+     * 
      * @since 3.0
      */
-    public void addFilterMappingForUrlPatterns(String filterName,
-            EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
-            String... urlPatterns)
-            throws IllegalArgumentException, IllegalStateException;
+    public FilterRegistration.Dynamic  addFilter(String filterName,
+            Class<? extends Filter> filterClass);
     
 
     /**
      * 
-     * @param sessionCookieConfig
-     * @throws IllegalStateException    If the context has already been
-     *                                  initialised
-     * @since 3.0
+     * @param c
+     * @return
+     * @throws ServletException
+     * @since Servlet 3.0
      */
-    public void setSessionCookieConfig(SessionCookieConfig sessionCookieConfig)
-            throws IllegalStateException;
+    public <T extends Filter> T createFilter(Class<T> c)
+    throws ServletException;
+
     
     /**
      * 
+     * @param filterName
+     * @return
+     * @since Servlet 3.0 
+     */
+    public FilterRegistration findFilterRegistration(String filterName);
+
+
+    /**
+     * 
      * @return
      * @since 3.0
      */
@@ -769,11 +805,4 @@
      */
     public EnumSet<SessionTrackingMode> getEffectiveSessionTrackingModes();
     
-    /**
-     * 
-     * @param path
-     * @return
-     * @since 3.0
-     */
-    public AsyncDispatcher getAsyncDispatcher(String path);
 }

Added: tomcat/trunk/java/javax/servlet/ServletRegistration.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletRegistration.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletRegistration.java (added)
+++ tomcat/trunk/java/javax/servlet/ServletRegistration.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,42 @@
+/*
+* 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;
+
+/**
+ * @since 3.0
+ * $Id$
+ * TODO SERVLET3 - Add comments
+ */
+public interface ServletRegistration extends Registration {
+    
+    /**
+     * 
+     * @param urlPatterns
+     * @return
+     * @throws IllegalArgumentException if urlPattern is null or empty
+     * @throws IllegalStateException if the associated ServletContext has
+     *                                  already been initialised
+     */
+    public Set<String> addMapping(String... urlPatterns); 
+    
+    public static interface Dynmaic
+    extends ServletRegistration, Registration.Dynamic {
+        
+    }
+}

Propchange: tomcat/trunk/java/javax/servlet/ServletRegistration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/ServletRegistration.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Modified: tomcat/trunk/java/javax/servlet/ServletRequest.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletRequest.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletRequest.java (original)
+++ tomcat/trunk/java/javax/servlet/ServletRequest.java Thu Apr 23 16:14:59 2009
@@ -608,17 +608,18 @@
      *                                          this request
      * @since 3.0
      */
-    public void startAsync() throws java.lang.IllegalStateException;
+    public AsyncContext startAsync();
     
     /**
      * 
-     * @param runnable
+     * @param servletRequest
+     * @param servletResponse
      * @return
      * @throws java.lang.IllegalStateException
      * @since 3.0
      */
-    public void startAsync(Runnable runnable)
-            throws java.lang.IllegalStateException;
+    public AsyncContext startAsync(ServletRequest servletRequest,
+            ServletResponse servletResponse);
     
     /**
      * 
@@ -629,13 +630,6 @@
     
     /**
      * 
-     * @throws IllegalStateException    If startAsync was never called
-     * @since 3.0
-     */
-    public void doneAsync() throws IllegalStateException;
-
-    /**
-     * 
      * @return
      * @since 3.0
      */
@@ -644,17 +638,17 @@
     /**
      * 
      * @return
+     * @throws java.lang.IllegalStateException
      * @since 3.0
      */
-    public AsyncDispatcher getAsyncDispatcher();
+    public AsyncContext getAsyncContext();
 
     /**
      * 
-     * @param path
-     * @return
+     * @param listener
      * @since 3.0
      */
-    public AsyncDispatcher getAsyncDispatcher(String path);
+    public void addAsyncListener(AsyncListener listener);
 
     /**
      * 
@@ -666,5 +660,28 @@
     public void addAsyncListener(AsyncListener listener,
             ServletRequest servletRequest, ServletResponse servletResponse);
     
+    /**
+     * 
+     * @param timeout
+     * @throws java.lang.IllegalStateException
+     * @since 3.0
+     */
+    public void setAsyncTimeout(long timeout);
+    
+    
+    /**
+     * 
+     * @return
+     * @since 3.0
+     */
+    public long getAsyncTimeout();
+
+    
+    /**
+     * 
+     * @return
+     * @since 3.0
+     */
+    public DispatcherType getDispatcherType();
 }
 

Modified: tomcat/trunk/java/javax/servlet/ServletRequestWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletRequestWrapper.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletRequestWrapper.java (original)
+++ tomcat/trunk/java/javax/servlet/ServletRequestWrapper.java Thu Apr 23 16:14:59 2009
@@ -417,22 +417,24 @@
      * @throws java.lang.IllegalStateException
      * @since 3.0
      */
-    public void startAsync() throws java.lang.IllegalStateException {
-        request.startAsync();
+    public AsyncContext startAsync() {
+        return request.startAsync();
     }
     
     /**
      * The default behavior of this method is to return
      * startAsync(Runnable) on the wrapped request object.
      * 
-     * @param runnable
+     * @param servletRequest
+     * @param servletResponse
      * @return
      * @throws java.lang.IllegalStateException
      * @since 3.0
      */
-    public void startAsync(Runnable runnable)
+    public AsyncContext startAsync(ServletRequest servletRequest,
+            ServletResponse servletResponse)
             throws java.lang.IllegalStateException {
-        request.startAsync(runnable);
+        return request.startAsync(servletRequest, servletResponse);
     }
     
     /**
@@ -448,16 +450,6 @@
 
     /**
      * The default behavior of this method is to return
-     * doneAsync() on the wrapped request object.
-     * @throws java.lang.IllegalStateException
-     * @since 3.0
-     */
-    public void doneAsync() throws IllegalStateException {
-        request.doneAsync();
-    }
-
-    /**
-     * The default behavior of this method is to return
      * isAsyncSupported() on the wrapped request object.
      * 
      * @return
@@ -469,26 +461,26 @@
     
     /**
      * The default behavior of this method is to return
-     * getAsyncDispatcher() on the wrapped request object.
+     * getAsyncContext() on the wrapped request object.
      * 
      * @return
      * @since 3.0
      */
-    public AsyncDispatcher getAsyncDispatcher() {
-        return request.getAsyncDispatcher();
+    public AsyncContext getAsyncContext() {
+        return request.getAsyncContext();
     }
 
     /**
-     * The default behavior of this method is to return
-     * getAsyncDispatcher(path) on the wrapped request object.
+     * The default behavior of this method is to call
+     * addAsyncListener(AsyncListener) on the wrapped request object.
      * 
-     * @return
+     * @param listener
      * @since 3.0
      */
-    public AsyncDispatcher getAsyncDispatcher(String path) {
-        return request.getAsyncDispatcher(path);
+    public void addAsyncListener(AsyncListener listener) {
+        request.addAsyncListener(listener);
     }
-
+    
     /**
      * The default behavior of this method is to call
      * addAsyncListener(AsyncListener, ServletRequest, ServletResponse) on the
@@ -504,5 +496,65 @@
         request.addAsyncListener(listener, servletRequest, servletResponse);
     }
     
+    /**
+     * The default behavior of this method is to call
+     * setAsyncTimeout(long) on the wrapped request object.
+     * 
+     * @param listener
+     * @since 3.0
+     */
+    public void setAsyncTimeout(long timeout) {
+        request.setAsyncTimeout(timeout);
+    }
+    
+    /**
+     * The default behavior of this method is to call
+     * getAsyncTimeout() on the wrapped request object.
+     * 
+     * @since 3.0
+     */
+    public long getAsyncTimeout() {
+        return request.getAsyncTimeout();
+    }
+    
+    /**
+     * 
+     * @param listener
+     * @since 3.0
+     */
+    public boolean isWrapperFor(ServletRequest wrapped) {
+        if (request == wrapped) {
+            return true;
+        }
+        if (request instanceof ServletRequestWrapper) {
+            return ((ServletRequestWrapper)request).isWrapperFor(wrapped);
+        }
+        return false;
+    }
+    
+    /**
+     * 
+     * @param listener
+     * @since 3.0
+     */
+    public boolean isWrapperFor(Class<? extends ServletRequest> wrappedType) {
+        if (wrappedType.isAssignableFrom(request.getClass())) {
+            return true;
+        }
+        if (request instanceof ServletRequestWrapper) {
+            return ((ServletRequestWrapper)request).isWrapperFor(wrappedType);
+        }
+        return false;
+    }
+    
+    /**
+     * The default behavior of this method is to call
+     * getDispatcherType() on the wrapped request object.
+     * 
+     * @since 3.0
+     */
+    public DispatcherType getDispatcherType() {
+        return this.request.getDispatcherType();
+    }
 }
 

Modified: tomcat/trunk/java/javax/servlet/ServletResponseWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/ServletResponseWrapper.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/ServletResponseWrapper.java (original)
+++ tomcat/trunk/java/javax/servlet/ServletResponseWrapper.java Thu Apr 23 16:14:59 2009
@@ -209,6 +209,36 @@
 	return this.response.getLocale();
     }
 
+    /**
+     * 
+     * @param listener
+     * @since 3.0
+     */
+    public boolean isWrapperFor(ServletResponse wrapped) {
+        if (response == wrapped) {
+            return true;
+        }
+        if (response instanceof ServletResponseWrapper) {
+            return ((ServletResponseWrapper)response).isWrapperFor(wrapped);
+        }
+        return false;
+    }
+    
+    /**
+     * 
+     * @param listener
+     * @since 3.0
+     */
+    public boolean isWrapperFor(Class<? extends ServletResponse> wrappedType) {
+        if (wrappedType.isAssignableFrom(response.getClass())) {
+            return true;
+        }
+        if (response instanceof ServletResponseWrapper) {
+            return ((ServletResponseWrapper)response).isWrapperFor(wrappedType);
+        }
+        return false;
+    }
+    
 
 }
 

Modified: tomcat/trunk/java/javax/servlet/SessionCookieConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/SessionCookieConfig.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/SessionCookieConfig.java (original)
+++ tomcat/trunk/java/javax/servlet/SessionCookieConfig.java Thu Apr 23 16:14:59 2009
@@ -21,58 +21,69 @@
  * @since 3.0
  * $Id$
  */
-public class SessionCookieConfig {
-    private String domain;
-    private String path;
-    private String comment;
-    private boolean httpOnly;
-    private boolean secure;
+public interface SessionCookieConfig {
+    
+    /**
+     * 
+     * @param name
+     * @throws IllegalStateException
+     */
+    public void setName(String name);
+    
+    public String getName();
+    
+    /**
+     * 
+     * @param domain
+     * @throws IllegalStateException
+     */
+    public void setDomain(String domain);
+    
+    public String getDomain();
+    
+    /**
+     * 
+     * @param path
+     * @throws IllegalStateException
+     */
+    public void setPath(String path);
+    
+    public String getPath();
+    
+    /**
+     * 
+     * @param comment
+     * @throws IllegalStateException
+     */
+    public void setComment(String comment);
+    
+    public String getComment();
+    
+    /**
+     * 
+     * @param httpOnly
+     * @throws IllegalStateException
+     */
+    public void setHttpOnly(boolean httpOnly);
+    
+    public boolean isHttpOnly();
+    
+    /**
+     * 
+     * @param secure
+     * @throws IllegalStateException
+     */
+    public void setSecure(boolean secure);
+    
+    public boolean isSecure();
 
     /**
      * 
-     * @param domain      Domain to use for session cookies generated for a
-     *                    {@link ServletContext} in which this
-     *                    {@link SessionCookieConfig} has been set
-     * @param path        Path to use for session cookies generated for a
-     *                    {@link ServletContext} in which this
-     *                    {@link SessionCookieConfig} has been set. If null
-     *                    {@link ServletContext#getContextPath()} is used
-     * @param comment     Comment to use for session cookies generated for a
-     *                    {@link ServletContext} in which this
-     *                    {@link SessionCookieConfig} has been set
-     * @param isHttpOnly  HttpOnly flag to use for session cookies generated for
-     *                    a {@link ServletContext} in which this
-     *                    {@link SessionCookieConfig} has been set
-     * @param isSecure    If <code>true</code>, the cookie will always be marked
-     *                    as secure. If <code>false</code> the cookie will only
-     *                    be marked as secure if the request is secure.
-     */
-    public SessionCookieConfig(String domain, String path, String comment,
-            boolean isHttpOnly, boolean isSecure) {
-        this.domain = domain;
-        this.path = path;
-        this.comment = comment;
-        this.httpOnly = isHttpOnly;
-        this.secure = isSecure;
-    }
-    
-    public java.lang.String getDomain() {
-        return domain;
-    }
-    
-    public java.lang.String getPath() {
-        return path;
-    }
-    
-    public java.lang.String getComment() {
-        return comment;
-    }
-    
-    public boolean isHttpOnly() {
-        return httpOnly;
-    }
-    
-    public boolean isSecure() {
-        return secure;
-    }
+     * @param maxAge
+     * @throws IllegalStateException
+     */
+    public void setMaxAge(int MaxAge);
+    
+    public int getHttpOnly();
+    
 }

Modified: tomcat/trunk/java/javax/servlet/SessionTrackingMode.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/SessionTrackingMode.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/SessionTrackingMode.java (original)
+++ tomcat/trunk/java/javax/servlet/SessionTrackingMode.java Thu Apr 23 16:14:59 2009
@@ -22,6 +22,6 @@
  */
 public enum SessionTrackingMode {
     COOKIE,
-    SSL,
-    URL
+    URL,
+    SSL
 }

Added: tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java (added)
+++ tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,35 @@
+/*
+ * 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.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @since 3.0
+ * $Id$
+ * TODO SERVLET3
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface HandlesTypes {
+    Class<?>[] value();
+}

Propchange: tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/annotation/HandlesTypes.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Added: tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java (added)
+++ tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,38 @@
+/*
+ * 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.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @since 3.0
+ * $Id$
+ * TODO SERVLET3
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface MultipartConfig {
+    String location() default "";
+    int maxFileSize() default 0;
+    int maxRequestSize() default 0;
+    int fileSizeThreshold() default 0;
+}

Propchange: tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/annotation/MultipartConfig.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Copied: tomcat/trunk/java/javax/servlet/annotation/WebFilter.java (from r766650, tomcat/trunk/java/javax/servlet/annotation/ServletFilter.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/annotation/WebFilter.java?p2=tomcat/trunk/java/javax/servlet/annotation/WebFilter.java&p1=tomcat/trunk/java/javax/servlet/annotation/ServletFilter.java&r1=766650&r2=767956&rev=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/annotation/ServletFilter.java (original)
+++ tomcat/trunk/java/javax/servlet/annotation/WebFilter.java Thu Apr 23 16:14:59 2009
@@ -32,16 +32,16 @@
 @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
-public @interface ServletFilter {
+public @interface WebFilter {
     String description() default "";
     String displayName() default "";
-    InitParam[] initParams() default {};
+    WebInitParam[] initParams() default {};
     String filterName() default "";
-    String icon() default "";
+    String smallIcon() default "";
+    String largeIcon() default "";
     String[] servletNames() default {};
     String[] value() default {};
     String[] urlPatterns() default {};
     DispatcherType[] dispatcherTypes() default {DispatcherType.REQUEST};
     boolean asyncSupported() default false;
-    long asyncTimeout() default 60000L;
 }

Copied: tomcat/trunk/java/javax/servlet/annotation/WebInitParam.java (from r766650, tomcat/trunk/java/javax/servlet/annotation/InitParam.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/annotation/WebInitParam.java?p2=tomcat/trunk/java/javax/servlet/annotation/WebInitParam.java&p1=tomcat/trunk/java/javax/servlet/annotation/InitParam.java&r1=766650&r2=767956&rev=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/annotation/InitParam.java (original)
+++ tomcat/trunk/java/javax/servlet/annotation/WebInitParam.java Thu Apr 23 16:14:59 2009
@@ -30,7 +30,7 @@
 @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
-public @interface InitParam {
+public @interface WebInitParam {
     String name();
     String value();
     String description() default "";

Copied: tomcat/trunk/java/javax/servlet/annotation/WebListener.java (from r766650, tomcat/trunk/java/javax/servlet/annotation/WebServletContextListener.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/annotation/WebListener.java?p2=tomcat/trunk/java/javax/servlet/annotation/WebListener.java&p1=tomcat/trunk/java/javax/servlet/annotation/WebServletContextListener.java&r1=766650&r2=767956&rev=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/annotation/WebServletContextListener.java (original)
+++ tomcat/trunk/java/javax/servlet/annotation/WebListener.java Thu Apr 23 16:14:59 2009
@@ -30,6 +30,6 @@
 @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
-public @interface WebServletContextListener {
-    String description() default "";
+public @interface WebListener {
+    String description();
 }

Modified: tomcat/trunk/java/javax/servlet/annotation/WebServlet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/annotation/WebServlet.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/annotation/WebServlet.java (original)
+++ tomcat/trunk/java/javax/servlet/annotation/WebServlet.java Thu Apr 23 16:14:59 2009
@@ -35,9 +35,9 @@
     String[] value() default {};
     String[] urlPatterns() default {};
     int loadOnStartup() default -1;
-    InitParam[] initParams() default {};
+    WebInitParam[] initParams() default {};
     boolean asyncSupported() default false;
-    long asyncTimeout() default 60000L;
-    String icon() default "";
+    String smallIcon() default "";
+    String largeIcon() default "";
     String description() default "";
 }

Modified: tomcat/trunk/java/javax/servlet/http/HttpServletRequest.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/HttpServletRequest.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/HttpServletRequest.java (original)
+++ tomcat/trunk/java/javax/servlet/http/HttpServletRequest.java Thu Apr 23 16:14:59 2009
@@ -17,7 +17,10 @@
 
 package javax.servlet.http;
 
+import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
+
+import java.io.IOException;
 import java.util.Enumeration;
 
 /**
@@ -657,5 +660,51 @@
     public boolean isRequestedSessionIdFromUrl();
 
 
+    /**
+     * 
+     * @param response
+     * @return
+     * @throws IOException
+     * @throws ServletException
+     * @since Servlet 3.0
+     */
+    public boolean login(HttpServletResponse response)
+    throws IOException, ServletException;
+    
+    
+    /**
+     * 
+     * @param username
+     * @param password
+     * @throws ServletException
+     * @since Servlet 3.0
+     */
+    public void login(java.lang.String username, String password)
+    throws ServletException;
     
+    
+    /**
+     * 
+     * @throws ServletException
+     * @since Servlet 3.0
+     */
+    public void logout() throws ServletException;
+    
+    
+    /**
+     * 
+     * @return
+     * @since Servlet 3.0
+     */
+    public Iterable<Part> getParts();
+    
+    
+    /**
+     * 
+     * @param name
+     * @return
+     * @throws IllegalArgumentException
+     * @since Servlet 3.0
+     */
+    public Part getPart(java.lang.String name);
 }

Modified: tomcat/trunk/java/javax/servlet/http/HttpServletRequestWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/HttpServletRequestWrapper.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/HttpServletRequestWrapper.java (original)
+++ tomcat/trunk/java/javax/servlet/http/HttpServletRequestWrapper.java Thu Apr 23 16:14:59 2009
@@ -16,7 +16,10 @@
 */
 package javax.servlet.http;
 
+import javax.servlet.ServletException;
 import javax.servlet.ServletRequestWrapper;
+
+import java.io.IOException;
 import java.util.Enumeration;
 
 /**
@@ -259,6 +262,41 @@
 	return this._getHttpServletRequest().isRequestedSessionIdFromUrl();
     }
 
+    /**
+     * @since Servlet 3.0
+     */
+    public boolean login(HttpServletResponse response)
+    throws IOException, ServletException {
+        return this._getHttpServletRequest().login(response);
+    }
+
+    /**
+     * @since Servlet 3.0
+     */
+    public void login(String username, String password) throws ServletException {
+        this._getHttpServletRequest().login(username, password);
+    }
+
+    /**
+     * @since Servlet 3.0
+     */
+    public void logout() throws ServletException {
+        this._getHttpServletRequest().logout();
+    }
+
+
+    /**
+     * @since Servlet 3.0
+     */
+    public Iterable<Part> getParts() {
+        return this._getHttpServletRequest().getParts();
+    }
+
+    /**
+     * @since Servlet 3.0
+     */
+    public Part getPart(String name) {
+        return this._getHttpServletRequest().getPart(name);
+    }
 
-    
 }

Modified: tomcat/trunk/java/javax/servlet/http/HttpServletResponse.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/HttpServletResponse.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/HttpServletResponse.java (original)
+++ tomcat/trunk/java/javax/servlet/http/HttpServletResponse.java Thu Apr 23 16:14:59 2009
@@ -322,6 +322,40 @@
     public void setStatus(int sc, String sm);
 
     
+    /**
+     * 
+     * @return
+     * @since Servlet 3.0
+     */
+    public int getStatus();
+    
+    
+    /**
+     * 
+     * @param name
+     * @return
+     * @since Servlet 3.0
+     */
+    public String getHeader(String name);
+    
+    
+    /**
+     * 
+     * @param name
+     * @return
+     * @since Servlet 3.0
+     */
+    public Iterable<String> getHeaders(String name);
+
+    
+    /**
+     * 
+     * @return
+     * @since Servlet 3.0
+     */
+    public Iterable<String> getHeaderNames();
+
+    
     /*
      * Server status codes; see RFC 2068.
      */

Modified: tomcat/trunk/java/javax/servlet/http/HttpServletResponseWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/HttpServletResponseWrapper.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/HttpServletResponseWrapper.java (original)
+++ tomcat/trunk/java/javax/servlet/http/HttpServletResponseWrapper.java Thu Apr 23 16:14:59 2009
@@ -195,5 +195,35 @@
 	this._getHttpServletResponse().setStatus(sc, sm);
     }
 
-   
+
+    /**
+     * @since Servlet 3.0
+     */
+    public int getStatus() {
+        return this._getHttpServletResponse().getStatus();
+    }
+
+     
+    /**
+     * @since Servlet 3.0
+     */
+    public String getHeader(String name) {
+        return this._getHttpServletResponse().getHeader(name);
+    }
+
+    
+    /**
+     * @since Servlet 3.0
+     */
+    public Iterable<String> getHeaders(String name) {
+        return this._getHttpServletResponse().getHeaders(name);
+    }
+
+    /**
+     * @since Servlet 3.0
+     */
+    public Iterable<String> getHeaderNames() {
+        return this._getHttpServletResponse().getHeaderNames();
+    }
+
 }

Propchange: tomcat/trunk/java/javax/servlet/http/HttpUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/http/HttpUtils.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: tomcat/trunk/java/javax/servlet/http/HttpUtils.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Apr 23 16:14:59 2009
@@ -0,0 +1 @@
+/tomcat/tc6.0.x/trunk/java/javax/servlet/http/HttpUtils.java:742915

Added: tomcat/trunk/java/javax/servlet/http/Part.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/http/Part.java?rev=767956&view=auto
==============================================================================
--- tomcat/trunk/java/javax/servlet/http/Part.java (added)
+++ tomcat/trunk/java/javax/servlet/http/Part.java Thu Apr 23 16:14:59 2009
@@ -0,0 +1,35 @@
+/*
+* 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;
+
+/**
+ * @since Servlet 3.0
+ */
+public interface Part {
+    public InputStream getInputStream() throws IOException;
+    public String getContentType();
+    public String getName();
+    public long getSize();
+    public void write(String fileName) throws IOException;
+    public void delete() throws IOException;
+    public String getHeader(String name);
+    public Iterable<String> getHeaders(String name);
+    public Iterable<String> getHeaderNames();
+}

Propchange: tomcat/trunk/java/javax/servlet/http/Part.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tomcat/trunk/java/javax/servlet/http/Part.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision

Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Thu Apr 23 16:14:59 2009
@@ -384,7 +384,7 @@
             req.serverName().setString(proxyName);
         }
 
-        // Parse session Id
+        // Parse session Id before decoding / removal of path params
         parseSessionId(req, request);
 
         // URI decoding

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Thu Apr 23 16:14:59 2009
@@ -35,11 +35,13 @@
 import java.util.TreeMap;
 
 import javax.security.auth.Subject;
-import javax.servlet.AsyncDispatcher;
+import javax.servlet.AsyncContext;
 import javax.servlet.AsyncListener;
+import javax.servlet.DispatcherType;
 import javax.servlet.FilterChain;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletRequestAttributeEvent;
@@ -49,7 +51,9 @@
 import javax.servlet.SessionTrackingMode;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.Part;
 
 import org.apache.tomcat.util.buf.B2CConverter;
 import org.apache.tomcat.util.buf.MessageBytes;
@@ -73,7 +77,6 @@
 import org.apache.catalina.realm.GenericPrincipal;
 import org.apache.catalina.util.Enumerator;
 import org.apache.catalina.util.ParameterMap;
-import org.apache.catalina.util.RequestUtil;
 import org.apache.catalina.util.StringManager;
 import org.apache.catalina.util.StringParser;
 
@@ -1505,12 +1508,15 @@
         return context.getServletContext();
      }
 
-    public void startAsync() throws IllegalStateException {
+    public AsyncContext startAsync() {
         // TODO SERVLET3
+        return null;
     }
 
-    public void startAsync(Runnable runnable) throws IllegalStateException {
+    public AsyncContext startAsync(ServletRequest request,
+            ServletResponse response) {
         // TODO SERVLET3
+        return null;
     }
 
     public boolean isAsyncStarted() {
@@ -1518,31 +1524,39 @@
         return false;
     }
 
-    public void doneAsync() throws IllegalStateException {
-        // TODO SERVLET3
-    }
-
     public boolean isAsyncSupported() {
         // TODO SERVLET3
         return false;
     }
 
-    public AsyncDispatcher getAsyncDispatcher() {
+    public AsyncContext getAsyncContext() {
         // TODO SERVLET3
         return null;
     }
 
-    public AsyncDispatcher getAsyncDispatcher(String path) {
+    public void addAsyncListener(AsyncListener listener) {
         // TODO SERVLET3
-        return null;
     }
-    
 
     public void addAsyncListener(AsyncListener listener,
             ServletRequest servletRequest, ServletResponse servletResponse) {
         // TODO SERVLET3
     }
 
+    public void setAsyncTimeout(long timeout) {
+        // TODO SERVLET3
+    }
+    
+    public long getAsyncTimeout() {
+        // TODO SERVLET3
+        return 0;
+    }
+    
+    public DispatcherType getDispatcherType() {
+        // TODO SERVLET3
+        return null;
+    }
+
     // ---------------------------------------------------- HttpRequest Methods
 
 
@@ -2352,7 +2366,30 @@
         return requestedSessionSSL;
     }
     
+    public boolean login(HttpServletResponse response) throws IOException {
+        // TODO Servlet 3
+        return false;
+    }
+    
+    public void login(String username, String password)
+    throws ServletException {
+        // TODO Servlet 3
+    }
+    
+    public void logout() throws ServletException {
+        // TODO Servlet 3
+    }
+    
+    public Iterable<Part> getParts() {
+        // TODO Servlet 3
+        return null;
+    }
     
+    public Part getPart(String name) throws IllegalArgumentException {
+        // TODO Servlet 3.0
+        return null;
+    }
+
     // ------------------------------------------------------ Protected Methods
 
 

Modified: tomcat/trunk/java/org/apache/catalina/connector/RequestFacade.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/RequestFacade.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/RequestFacade.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/RequestFacade.java Thu Apr 23 16:14:59 2009
@@ -26,16 +26,20 @@
 import java.util.Locale;
 import java.util.Map;
 
-import javax.servlet.AsyncDispatcher;
+import javax.servlet.AsyncContext;
 import javax.servlet.AsyncListener;
+import javax.servlet.DispatcherType;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.Part;
 
 import org.apache.catalina.Globals;
 import org.apache.catalina.util.StringManager;
@@ -948,13 +952,14 @@
     }
 
 
-    public void startAsync() throws IllegalStateException {
-        request.startAsync();
+    public AsyncContext startAsync() throws IllegalStateException {
+        return request.startAsync();
     }
 
 
-    public void startAsync(Runnable runnable) throws IllegalStateException {
-        request.startAsync(runnable);
+    public AsyncContext startAsync(ServletRequest request, ServletResponse response)
+    throws IllegalStateException {
+        return request.startAsync(request, response);
     }
 
 
@@ -963,32 +968,59 @@
     }
 
 
-    public void doneAsync() throws IllegalStateException {
-        request.doneAsync();
-    }
-
-    
     public boolean isAsyncSupported() {
         return request.isAsyncStarted();
     }
 
     
-    public AsyncDispatcher getAsyncDispatcher() {
-        return request.getAsyncDispatcher();
+    public void addAsyncListener(AsyncListener listener) {
+        request.addAsyncListener(listener);
     }
 
     
-    public AsyncDispatcher getAsyncDispatcher(String path) {
-        return request.getAsyncDispatcher(path);
+    public void addAsyncListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse) {
+        request.addAsyncListener(listener,servletRequest,servletResponse);
     }
 
+    public AsyncContext getAsyncContext() {
+        return request.getAsyncContext();
+    }
+
+    public long getAsyncTimeout() {
+        return request.getAsyncTimeout();
+    }
     
-    public void addAsyncListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse) {
-        request.addAsyncListener(listener,servletRequest,servletResponse);
+    public void setAsyncTimeout(long timeout) {
+        request.setAsyncTimeout(timeout);
+    }
+    
+    public DispatcherType getDispatcherType() {
+        return request.getDispatcherType();
+    }
+    
+    public boolean login(HttpServletResponse response) throws IOException {
+        return request.login(response);
     }
 
+    public void login(String username, String password)
+    throws ServletException {
+        login(username, password);
+    }
+    
+    public void logout() throws ServletException {
+        request.logout();
+    }
+    
+    public Iterable<Part> getParts() {
+        return request.getParts();
+    }
+    
+    public Part getPart(String name) {
+        return request.getPart(name);
+    }
 
     public boolean getAllowTrace() {
         return request.getConnector().getAllowTrace();
     }
+    
 }

Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Thu Apr 23 16:14:59 2009
@@ -30,6 +30,7 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.List;
 import java.util.Locale;
 import java.util.TimeZone;
 import java.util.Vector;
@@ -883,16 +884,15 @@
 
 
     /**
-     * Return an array of all the header names set for this response, or
-     * a zero-length array if no headers have been set.
+     * Return an Iterable of all the header names set for this response.
      */
-    public String[] getHeaderNames() {
+    public Iterable<String> getHeaderNames() {
 
         MimeHeaders headers = coyoteResponse.getMimeHeaders();
         int n = headers.size();
-        String[] result = new String[n];
+        List<String> result = new ArrayList<String>(n);
         for (int i = 0; i < n; i++) {
-            result[i] = headers.getName(i).toString();
+            result.add(headers.getName(i).toString());
         }
         return result;
 
@@ -900,13 +900,12 @@
 
 
     /**
-     * Return an array of all the header values associated with the
-     * specified header name, or an zero-length array if there are no such
-     * header values.
+     * Return an Iterable of all the header values associated with the
+     * specified header name.
      *
      * @param name Header name to look up
      */
-    public String[] getHeaderValues(String name) {
+    public Iterable<String> getHeaders(String name) {
 
         Enumeration<String> enumeration =
             coyoteResponse.getMimeHeaders().values(name);
@@ -914,10 +913,7 @@
         while (enumeration.hasMoreElements()) {
             result.addElement(enumeration.nextElement());
         }
-        String[] resultArray = new String[result.size()];
-        result.copyInto(resultArray);
-        return resultArray;
-
+        return result;
     }
 
 

Modified: tomcat/trunk/java/org/apache/catalina/connector/ResponseFacade.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/ResponseFacade.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/ResponseFacade.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/ResponseFacade.java Thu Apr 23 16:14:59 2009
@@ -553,4 +553,19 @@
         response.setCharacterEncoding(arg0);
     }
 
+    public int getStatus() {
+        return response.getStatus();
+    }
+    
+    public String getHeader(String name) {
+        return response.getHeader(name);
+    }
+    
+    public Iterable<String> getHeaderNames() {
+        return response.getHeaderNames();
+    }
+    
+    public Iterable<String> getHeaders(String name) {
+        return response.getHeaders(name);
+    }
 }

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Thu Apr 23 16:14:59 2009
@@ -34,13 +34,15 @@
 import javax.naming.Binding;
 import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
-import javax.servlet.AsyncDispatcher;
-import javax.servlet.DispatcherType;
+import javax.servlet.Filter;
+import javax.servlet.FilterRegistration;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextAttributeEvent;
 import javax.servlet.ServletContextAttributeListener;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
 import javax.servlet.SessionCookieConfig;
 import javax.servlet.SessionTrackingMode;
 
@@ -48,8 +50,6 @@
 import org.apache.catalina.Host;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.deploy.ApplicationParameter;
-import org.apache.catalina.deploy.FilterDef;
-import org.apache.catalina.deploy.FilterMap;
 import org.apache.catalina.util.Enumerator;
 import org.apache.catalina.util.RequestUtil;
 import org.apache.catalina.util.ResourceSet;
@@ -838,144 +838,146 @@
     }
 
 
-    public void addFilter(String filterName, String description,
-            String className, Map<String, String> initParameters)
-            throws IllegalArgumentException, IllegalStateException {
+    public FilterRegistration.Dynamic addFilter(String filterName,
+            String className) throws IllegalStateException {
+        
+        if (context.initialized) {
+            //TODO Spec breaking enhancement to ignore this restriction
+            throw new IllegalStateException(
+                    sm.getString("applicationContext.addFilter.ise",
+                            getContextPath()));
+        }
         
         if (context.findFilterDef(filterName) != null) {
-            throw new IllegalArgumentException(sm.getString(
-                    "applicationContext.addFilter.iae", filterName,
-                    getContextPath()));
+            return null;
         }
 
+        // TODO Servlet 3
+        return null;
+    }
+
+    
+    public FilterRegistration.Dynamic addFilter(String filterName,
+            Filter filter) throws IllegalStateException {
+        
         if (context.initialized) {
             //TODO Spec breaking enhancement to ignore this restriction
             throw new IllegalStateException(
                     sm.getString("applicationContext.addFilter.ise",
                             getContextPath()));
         }
-        FilterDef filterDef = new FilterDef();
-        filterDef.setFilterName(filterName);
-        filterDef.setDescription(description);
-        filterDef.setFilterClass(className);
-        filterDef.getParameterMap().putAll(initParameters);
-        context.addFilterDef(filterDef);
+        
+        if (context.findFilterDef(filterName) != null) {
+            return null;
+        }
+
+        // TODO Servlet 3
+        return null;
     }
 
     
-    public void addServlet(String servletName, String description,
-            String className, Map<String, String> initParameters,
-            int loadOnStartup)
-            throws IllegalArgumentException, IllegalStateException {
+    public FilterRegistration.Dynamic addFilter(String filterName,
+            Class<? extends Filter> filterClass) throws IllegalStateException {
         
-        if (context.findFilterDef(servletName) != null) {
-            throw new IllegalArgumentException(sm.getString(
-                    "applicationContext.addServlet.iae", servletName,
-                    getContextPath()));
-        }
-
         if (context.initialized) {
             //TODO Spec breaking enhancement to ignore this restriction
             throw new IllegalStateException(
-                    sm.getString("applicationContext.addServlet.ise",
+                    sm.getString("applicationContext.addFilter.ise",
                             getContextPath()));
         }
-        Wrapper wrapper = context.createWrapper();
-        wrapper.setName(servletName);
-        // Description is ignored
-        wrapper.setServletClass(className);
-        for (Map.Entry<String,String> initParam : initParameters.entrySet()) {
-            wrapper.addInitParameter(initParam.getKey(), initParam.getValue());
-        }
-        wrapper.setLoadOnStartup(loadOnStartup);
-        context.addChild(wrapper);
+        
+        if (context.findFilterDef(filterName) != null) {
+            return null;
+        }
+
+        // TODO Servlet 3
+        return null;
     }
 
+    
+    public <T extends Filter> T createFilter(Class<T> c)
+    throws ServletException {
+        // TODO Servlet 3
+        return null;
+    }
 
-    public void addFilterMappingForServletNames(String filterName,
-            EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
-            String... servletNames)
-            throws IllegalArgumentException, IllegalStateException {
-        
-        if (servletNames == null || servletNames.length == 0) {
-            throw new IllegalArgumentException(sm.getString(
-                    "applicationContext.addFilterMapping.iae.servlet"));
-        }
 
+    public FilterRegistration findFilterRegistration(String filterName) {
+        // TODO Servlet 3.0
+        return null;
+    }
+    
+    public ServletRegistration.Dynmaic addServlet(String servletName,
+            String className) throws IllegalStateException {
+        
         if (context.initialized) {
             //TODO Spec breaking enhancement to ignore this restriction
-            throw new IllegalStateException(sm.getString(
-                    "applicationContext.addFilterMapping.ise",
-                    getContextPath()));
-        }
-        FilterMap filterMap = new FilterMap(); 
-        for (String servletName : servletNames) {
-            filterMap.addServletName(servletName);
-        }
-        filterMap.setFilterName(filterName);
-        for (DispatcherType dispatcherType: dispatcherTypes) {
-            filterMap.setDispatcher(dispatcherType.name());
+            throw new IllegalStateException(
+                    sm.getString("applicationContext.addServlet.ise",
+                            getContextPath()));
         }
-        if (isMatchAfter) {
-            context.addFilterMap(filterMap);
-        } else {
-            context.addFilterMapBefore(filterMap);
+
+        if (context.findChild(servletName) != null) {
+            return null;
         }
+
+        // TODO Servlet 3
+        return null;
     }
 
 
-    public void addFilterMappingForUrlPatterns(String filterName,
-            EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
-            String... urlPatterns)
-            throws IllegalArgumentException, IllegalStateException {
-        
-        if (urlPatterns == null || urlPatterns.length == 0) {
-            throw new IllegalArgumentException(sm.getString(
-                    "applicationContext.addFilterMapping.iae.url",
-                    getContextPath()));
-        }
+    public ServletRegistration.Dynmaic addServlet(String servletName,
+            Servlet servlet) throws IllegalStateException {
         
         if (context.initialized) {
             //TODO Spec breaking enhancement to ignore this restriction
-            throw new IllegalStateException(sm.getString(
-                    "applicationContext.addFilterMapping.ise",
-                    getContextPath()));
-        }
-        FilterMap filterMap = new FilterMap(); 
-        for (String urlPattern : urlPatterns) {
-            filterMap.addURLPattern(urlPattern);
-        }
-        filterMap.setFilterName(filterName);
-        for (DispatcherType dispatcherType: dispatcherTypes) {
-            filterMap.setDispatcher(dispatcherType.name());
+            throw new IllegalStateException(
+                    sm.getString("applicationContext.addServlet.ise",
+                            getContextPath()));
         }
-        if (isMatchAfter) {
-            context.addFilterMap(filterMap);
-        } else {
-            context.addFilterMapBefore(filterMap);
+
+        if (context.findChild(servletName) != null) {
+            return null;
         }
-    }
 
+        // TODO Servlet 3
+        return null;
+    }
 
-    public void addServletMapping(String servletName, String[] urlPatterns)
-            throws IllegalArgumentException, IllegalStateException {
-        if (urlPatterns == null || urlPatterns.length == 0) {
-            throw new IllegalArgumentException(sm.getString(
-                    "applicationContext.addServletMapping.iae"));
-        }
+    
+    public ServletRegistration.Dynmaic addServlet(String servletName,
+            Class <? extends Servlet> servletClass)
+    throws IllegalStateException {
         
         if (context.initialized) {
             //TODO Spec breaking enhancement to ignore this restriction
-            throw new IllegalStateException(sm.getString(
-                    "applicationContext.addServletMapping.ise", getContextPath()));
+            throw new IllegalStateException(
+                    sm.getString("applicationContext.addServlet.ise",
+                            getContextPath()));
         }
-        for (String urlPattern : urlPatterns) {
-            boolean jspWildCard = ("*.jsp".equals(urlPattern));
-            context.addServletMapping(servletName, urlPattern, jspWildCard);
+
+        if (context.findChild(servletName) != null) {
+            return null;
         }
+
+        // TODO Servlet 3
+        return null;
     }
 
 
+    public <T extends Servlet> T createServlet(Class<T> c)
+    throws ServletException {
+        // TODO Servlet 3
+        return null;
+    }
+
+
+    public ServletRegistration findServletRegistration(String servletName) {
+        // TODO Servlet 3.0
+        return null;
+    }
+    
+
     /**
      * By default {@link SessionTrackingMode#URL} is always supported, {@link
      * SessionTrackingMode#COOKIE} is supported unless the <code>cookies</code>
@@ -1016,20 +1018,6 @@
     }
 
 
-    public void setSessionCookieConfig(SessionCookieConfig sessionCookieConfig)
-            throws IllegalArgumentException {
-        
-        if (context.initialized) {
-            //TODO Spec breaking enhancement to ignore this restriction
-            throw new IllegalStateException(sm.getString(
-                    "applicationContext.setSessionCookieConfig.ise",
-                    getContextPath()));
-        }
-
-        this.sessionCookieConfig = sessionCookieConfig;
-    }
-
-
     /**
      * @throws IllegalStateException if the context has already been initialised
      * @throws IllegalArgumentException If SSL is requested in combination with
@@ -1067,11 +1055,12 @@
     }
 
 
-    public AsyncDispatcher getAsyncDispatcher(String path) {
-        // TODO SERVLET 3
-        return null;
+    public boolean setInitParameter(String name, String value) {
+        // TODO Servlet 3
+        return false;
     }
     
+    
     // -------------------------------------------------------- Package Methods
     protected StandardContext getContext() {
         return this.context;

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java Thu Apr 23 16:14:59 2009
@@ -30,15 +30,15 @@
 import java.util.EnumSet;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.AsyncDispatcher;
-import javax.servlet.DispatcherType;
+import javax.servlet.Filter;
+import javax.servlet.FilterRegistration;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
 import javax.servlet.SessionCookieConfig;
 import javax.servlet.SessionTrackingMode;
 
@@ -388,69 +388,114 @@
     }
 
        
-    public void addFilter(String filterName, String description,
-            String className, Map<String, String> initParameters) {
+    public FilterRegistration.Dynamic addFilter(String filterName,
+            String className) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("addFilter", new Object[]{filterName, description,
-                    className, initParameters});
+            return (FilterRegistration.Dynamic) doPrivileged(
+                    "addFilter", new Object[]{filterName, className});
         } else {
-            context.addFilter(filterName, description, className,
-                    initParameters);
+            return context.addFilter(filterName, className);
         }
     }
 
 
-    public void addFilterMappingForServletNames(String filterName,
-            EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
-            String... servletNames) {
+    public FilterRegistration.Dynamic addFilter(String filterName,
+            Filter filter) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("addFilterMappingForServletNames",
-                    new Object[]{filterName, dispatcherTypes,
-                    Boolean.valueOf(isMatchAfter), servletNames});
+            return (FilterRegistration.Dynamic) doPrivileged(
+                    "addFilter", new Object[]{filterName, filter});
         } else {
-            context.addFilterMappingForServletNames(filterName, dispatcherTypes,
-                    isMatchAfter, servletNames);
+            return context.addFilter(filterName, filter);
         }
     }
 
 
-    public void addFilterMappingForUrlPatterns(String filterName,
-            EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,
-            String... urlPatterns) {
+    public FilterRegistration.Dynamic addFilter(String filterName,
+            Class<? extends Filter> filterClass) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("addFilterMappingForUrlPatterns",
-                    new Object[]{filterName, dispatcherTypes,
-                    Boolean.valueOf(isMatchAfter), urlPatterns});
+            return (FilterRegistration.Dynamic) doPrivileged(
+                    "addFilter", new Object[]{filterName, filterClass});
         } else {
-            context.addFilterMappingForUrlPatterns(filterName, dispatcherTypes,
-                    isMatchAfter, urlPatterns);
+            return context.addFilter(filterName, filterClass);
         }
     }
 
 
-    public void addServlet(String servletName, String description,
-            String className, Map<String, String> initParameters,
-            int loadOnStartup) {
+    public <T extends Filter> T createFilter(Class<T> c)
+    throws ServletException {
         if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("addServlet", new Object[]{servletName, description,
-                    className, initParameters, Integer.valueOf(loadOnStartup)});
+            return (T) doPrivileged(
+                    "createFilter", new Object[]{c});
         } else {
-            context.addServlet(servletName, description, className, initParameters,
-                    loadOnStartup);
+            return context.createFilter(c);
+        }
+    }
+
+
+    public FilterRegistration findFilterRegistration(String filterName) {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            return (FilterRegistration) doPrivileged(
+                    "findFilterRegistration", new Object[]{filterName});
+        } else {
+            return context.findFilterRegistration(filterName);
         }
     }
     
     
-    public void addServletMapping(String servletName, String[] urlPatterns) {
+    public ServletRegistration.Dynmaic addServlet(String servletName,
+            String className) {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            return (ServletRegistration.Dynmaic) doPrivileged(
+                    "addServlet", new Object[]{servletName, className});
+        } else {
+            return context.addServlet(servletName, className);
+        }
+    }
+
+
+    public ServletRegistration.Dynmaic addServlet(String servletName,
+            Servlet servlet) {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            return (ServletRegistration.Dynmaic) doPrivileged(
+                    "addServlet", new Object[]{servletName, servlet});
+        } else {
+            return context.addServlet(servletName, servlet);
+        }
+    }
+
+
+    public ServletRegistration.Dynmaic addServlet(String servletName,
+            Class <? extends Servlet> servletClass) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("addServletMapping",
-                    new Object[]{servletName, urlPatterns});
+            return (ServletRegistration.Dynmaic) doPrivileged(
+                    "addServlet", new Object[]{servletName, servletClass});
         } else {
-            context.addServletMapping(servletName, urlPatterns);
+            return context.addServlet(servletName, servletClass);
         }
     }
 
 
+    public <T extends Servlet> T createServlet(Class<T> c)
+    throws ServletException {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            return (T) doPrivileged(
+                    "createServlet", new Object[]{c});
+        } else {
+            return context.createServlet(c);
+        }
+    }
+
+    
+    public ServletRegistration findServletRegistration(String servletName) {
+        if (SecurityUtil.isPackageProtectionEnabled()) {
+            return (ServletRegistration) doPrivileged(
+                    "findServletRegistration", new Object[]{servletName});
+        } else {
+            return context.findServletRegistration(servletName);
+        }
+    }
+    
+    
     public EnumSet<SessionTrackingMode> getDefaultSessionTrackingModes() {
         if (SecurityUtil.isPackageProtectionEnabled()) {
             return (EnumSet<SessionTrackingMode>)
@@ -481,16 +526,6 @@
     }
 
 
-    public void setSessionCookieConfig(SessionCookieConfig sessionCookieConfig) {
-        if (SecurityUtil.isPackageProtectionEnabled()) {
-            doPrivileged("setSessionCookieConfig",
-                    new Object[]{sessionCookieConfig});
-        } else {
-            context.setSessionCookieConfig(sessionCookieConfig);
-        }
-    }
-
-
     public void setSessionTrackingModes(
             EnumSet<SessionTrackingMode> sessionTrackingModes) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
@@ -502,13 +537,12 @@
     }
 
 
-    public AsyncDispatcher getAsyncDispatcher(String path) {
+    public boolean setInitParameter(String name, String value) {
         if (SecurityUtil.isPackageProtectionEnabled()) {
-            return (AsyncDispatcher)
-                doPrivileged("getAsyncDispatcher",
-                        new Object[]{path});
+            return ((Boolean) doPrivileged("setInitParameter",
+                    new Object[]{name, value})).booleanValue();
         } else {
-            return context.getAsyncDispatcher(path);
+            return context.setInitParameter(name, value);
         }
     }
     

Modified: tomcat/trunk/java/org/apache/catalina/core/DummyRequest.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DummyRequest.java?rev=767956&r1=767955&r2=767956&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DummyRequest.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/DummyRequest.java Thu Apr 23 16:14:59 2009
@@ -30,17 +30,21 @@
 import java.util.Locale;
 import java.util.Map;
 
-import javax.servlet.AsyncDispatcher;
+import javax.servlet.AsyncContext;
 import javax.servlet.AsyncListener;
+import javax.servlet.DispatcherType;
 import javax.servlet.FilterChain;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.Part;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.Host;
@@ -282,11 +286,23 @@
             ServletResponse res) {}
     public ServletContext getServletContext() { return null; }
     public boolean isAsyncStarted() { return false; }
-    public void doneAsync() {}
     public boolean isAsyncSupported() { return false; }
-    public void startAsync() throws IllegalStateException {}
-    public void startAsync(Runnable runnable) throws IllegalStateException {}
-    public AsyncDispatcher getAsyncDispatcher() { return null; }
-    public AsyncDispatcher getAsyncDispatcher(String path) { return null; }
+    public AsyncContext startAsync() throws IllegalStateException {
+        return null;
+    }
+    public Part getPart(String name) { return null; }
+    public Iterable<Part> getParts() { return null; }
+    public boolean login(HttpServletResponse response)
+    throws IOException, ServletException { return false; }
+    public void login(String username, String password)
+    throws ServletException {}
+    public void logout() throws ServletException {}
+    public void addAsyncListener(AsyncListener listener) {}
+    public AsyncContext getAsyncContext() { return null; }
+    public long getAsyncTimeout() { return 0; }
+    public DispatcherType getDispatcherType() { return null; }
+    public void setAsyncTimeout(long timeout) {}
+    public AsyncContext startAsync(ServletRequest servletRequest,
+            ServletResponse servletResponse) { return null; }
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org