You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by at...@apache.org on 2009/03/14 04:17:05 UTC

svn commit: r753592 [1/2] - in /portals/pluto/trunk: pluto-container-api/src/main/java/org/apache/pluto/container/ pluto-container-api/src/main/java/org/apache/pluto/container/driver/ pluto-container-api/src/main/java/org/apache/pluto/container/om/port...

Author: ate
Date: Sat Mar 14 03:17:03 2009
New Revision: 753592

URL: http://svn.apache.org/viewvc?rev=753592&view=rev
Log:
Final big bang commit after the large schale refactoring of the Pluto container.
This new implementation now (again) passes the Portlet API 2.0 TCK 100%!

This commit for the container (and one follow up commit for the portal driver & util changes) fixes and completes at least the following open issues (possibly even more):

PLUTO-478 - Portlet Dispatching loses wrappers
PLUTO-523 - Further abstractions of the Pluto SPI to support embedding in and extending by other portals
PLUTO-529 - PortletRequest/PortletResponse implementations extending HttpServletRequest/Response wrappers causes "indentity" problems when accessed from servlets
PLUTO-530 - RequestDispatcher path query string parameter handling too limited and broken with nested dispatches
PLUTO-531 - New PortletRequestStateService SPI to replace and extend most of the currrent incorrect used PropertyManager SPI and PortletURLProvider SPI
PLUTO-532 - New PortletResponseStateProvider SPI
PLUTO-535 - Dispatched HttpServletRequest path info methods must return path information used to obtain the PortletRequestDispatcher
PLUTO-536 - Setting the ResourceResponse character encoding requires to support locale-encoding-mapping-list from web.xml
PLUTO-537 - Cleaning up Pluto packages
PLUTO-538 - New EventCoordinationService and merging EventContainer with PortletContainer

Added:
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java   (with props)
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletConfig.java   (contents, props changed)
      - copied, changed from r752883, portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletConfig.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletContext.java   (contents, props changed)
      - copied, changed from r752883, portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletContext.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/RequestDispatcherPathInfoProviderImpl.java   (with props)
Removed:
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/Constants.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletConfig.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletContext.java
Modified:
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletAppDescriptorService.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletEnvironmentService.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletInvokerService.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletMimeResponseContext.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContextService.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResponseContext.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletURLProvider.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletContextService.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletInvocationEvent.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/om/portlet/PortletApplicationDefinition.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DefaultPortletInvokerService.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/InlinePortletResourceBundle.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletConfigImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextManager.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletDescriptorRegistry.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionRequestImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ClientDataRequestImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventRequestImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletAppDescriptorServiceImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletContainerImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletEnvironmentServiceImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestDispatcherImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderRequestImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/RenderResponseImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/StateAwareResponseImpl.java
    portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/om/portlet/impl/PortletAppType.java
    portals/pluto/trunk/pluto-container/src/main/resources/org/apache/pluto/container/driver/impl/pluto-configuration.properties
    portals/pluto/trunk/pluto-container/src/test/java/org/apache/pluto/container/impl/JaxBDescriptorServiceImplTest.java
    portals/pluto/trunk/pluto-container/src/test/java/org/apache/pluto/container/impl/PortletRequestImplTest.java

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletAppDescriptorService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletAppDescriptorService.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletAppDescriptorService.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletAppDescriptorService.java Sat Mar 14 03:17:03 2009
@@ -41,7 +41,7 @@
      * @return Object representation of the descriptor.
      * @throws IOException if an IO error occurs.
      */
-    PortletApplicationDefinition read(InputStream in) throws IOException;
+    PortletApplicationDefinition read(String name, String contextPath, InputStream in) throws IOException;
 
     /**
      * Merge web.xml descriptor meta data with the PortletApplicationDefinition.

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletEnvironmentService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletEnvironmentService.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletEnvironmentService.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletEnvironmentService.java Sat Mar 14 03:17:03 2009
@@ -18,7 +18,6 @@
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
-import javax.portlet.CacheControl;
 import javax.portlet.Event;
 import javax.portlet.EventRequest;
 import javax.portlet.EventResponse;
@@ -38,16 +37,16 @@
  */
 public interface PortletEnvironmentService
 {    
-    ActionRequest createActionRequest(PortletRequestContext requestContext);
+    ActionRequest createActionRequest(PortletRequestContext requestContext, PortletActionResponseContext responseContext);
     ActionResponse createActionResponse(PortletActionResponseContext responseContext);
 
-    EventRequest createEventRequest(PortletRequestContext requestContext, Event event);
+    EventRequest createEventRequest(PortletRequestContext requestContext, PortletEventResponseContext responseContext, Event event);
     EventResponse createEventResponse(PortletEventResponseContext responseContext);
     
-    RenderRequest createRenderRequest(PortletRequestContext requestContext, CacheControl cacheControl);
+    RenderRequest createRenderRequest(PortletRequestContext requestContext, PortletRenderResponseContext responseContext);
     RenderResponse createRenderResponse(PortletRenderResponseContext responseContext);
     
-    ResourceRequest createResourceRequest(PortletResourceRequestContext requestContext, CacheControl cacheControl);
+    ResourceRequest createResourceRequest(PortletResourceRequestContext requestContext, PortletResourceResponseContext responseContext);
     ResourceResponse createResourceResponse(PortletResourceResponseContext responseContext, String requestCacheLevel);
 
     PortletSession createPortletSession(PortletContext portletContext, PortletWindow portletWindow, HttpSession session);

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletInvokerService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletInvokerService.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletInvokerService.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletInvokerService.java Sat Mar 14 03:17:03 2009
@@ -36,6 +36,80 @@
  */
 public interface PortletInvokerService {
 	
+    /**
+     * The key used to bind the <code>PortletRequest</code> to the underlying
+     * <code>HttpServletRequest</code>.
+     */
+    public final static String PORTLET_REQUEST = "javax.portlet.request";
+    /**
+     * The key used to bind the <code>PortletResponse</code> to the underlying
+     * <code>HttpServletRequest</code>.
+     */
+    public final static String PORTLET_RESPONSE = "javax.portlet.response";
+    /**
+     * The key used to bind the <code>PortletConfig</code> to the underlying
+     * PortletConfig.
+     */
+    public final static String PORTLET_CONFIG = "javax.portlet.config";
+    /**
+     * The request attribute key used to retrieve the <code>PortletRequestContext</code> instance
+     */
+    public final static String REQUEST_CONTEXT = PortletRequestContext.class.getName();
+    /**
+     * The request attribute key used to retrieve the <code>PortletRequestContext</code> instance
+     */
+    public final static String RESPONSE_CONTEXT = PortletResponseContext.class.getName();
+    /**
+     * The key used to bind the method of processing being requested by the
+     * container to the underlying <code>PortletRquest</code>.
+     */
+    public final static String METHOD_ID = "org.apache.pluto.core.method";
+    /**
+     * The unique method identifier for render requests.  Render requests are
+     * requested through a call to the {@link PortletContainer#doRender(org.apache.pluto.container.PortletWindow,
+        * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
+     * method.
+     */
+    public final static Integer METHOD_RENDER = new Integer(1);
+    /**
+     * The unique method identifier for render requests.  Render requests are
+     * requested through a call to the {@link PortletContainer#doAction(org.apache.pluto.container.PortletWindow,
+        * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
+     * method.
+     */
+    public final static Integer METHOD_ACTION = new Integer(3);
+    /**
+     * The unique method identifier for noop (load) requests.  Load requests are
+     * requested through a call to the {@link PortletContainer#doLoad(org.apache.pluto.container.PortletWindow,
+        * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
+     * method.
+     */
+    public final static Integer METHOD_NOOP = new Integer(5);
+    /**
+     * The unique method identifier for resource Serving requests.  Resource requests are
+     * requested through a call to the {@link PortletContainer#doServeResource(PortletWindow,
+     *  javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
+     * method.
+     */
+    public final static Integer METHOD_RESOURCE = new Integer(7);
+    /**
+     * The unique method identifier for render requests.  Render requests are
+     * requested through a call to the {@link PortletContainer#doEvent(org.apache.pluto.container.PortletWindow,
+     * javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
+     * method.
+     */
+    public final static Integer METHOD_EVENT = new Integer(9);
+    /**
+     * The unique method identifier for admin requests.  Admin requests
+     * are requested through a call to the {@link PortletContainer#doAdmin(PortletWindow, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
+     * method.
+     */
+    public final static Integer  METHOD_ADMIN = new Integer(11);
+    /**
+     * The public key, to store the FilterManager in the request.
+     */
+    public static final String FILTER_MANAGER = "FilterManager";
+
     public void action(PortletRequestContext ctx, ActionRequest req, ActionResponse res, FilterManager filterManager)
     	throws IOException, PortletException, PortletContainerException;
     

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletMimeResponseContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletMimeResponseContext.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletMimeResponseContext.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletMimeResponseContext.java Sat Mar 14 03:17:03 2009
@@ -17,6 +17,7 @@
 
 package org.apache.pluto.container;
 
+import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.util.Locale;
@@ -35,12 +36,12 @@
     String getContentType();
     void setContentType(String contentType);
     String getCharacterEncoding();
-    OutputStream getOutputStream();
-    PrintWriter getWriter();
+    OutputStream getOutputStream() throws IOException, IllegalStateException;
+    PrintWriter getWriter() throws IOException, IllegalStateException;
     int getBufferSize();
     void setBufferSize(int size);
     void reset();
     void resetBuffer();
-    void flushBuffer();
+    void flushBuffer() throws IOException;
     boolean isCommitted();
 }

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java Sat Mar 14 03:17:03 2009
@@ -21,6 +21,8 @@
 import java.util.Locale;
 import java.util.Map;
 
+import javax.portlet.PortletContext;
+import javax.servlet.ServletContext;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -32,9 +34,12 @@
  */
 public interface PortletRequestContext
 {
-    void init(ContainerPortletConfig portletConfig);
+    void init(PortletContext portletContext, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse);
     PortletContainer getContainer();
-    ContainerPortletConfig getPortletConfig();
+    PortletContext getPortletContext();
+    ServletContext getServletContext();
+    HttpServletRequest getContainerRequest();
+    HttpServletResponse getContainerResponse();
     HttpServletRequest getServletRequest();
     HttpServletResponse getServletResponse();
     PortletWindow getPortletWindow();

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContextService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContextService.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContextService.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContextService.java Sat Mar 14 03:17:03 2009
@@ -26,31 +26,31 @@
  */
 public interface PortletRequestContextService
 {
-    PortletRequestContext getPortletActionRequestContext(PortletContainer container, HttpServletRequest request,
-                                                         HttpServletResponse response, PortletWindow window);
+    PortletRequestContext getPortletActionRequestContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                         HttpServletResponse containerResponse, PortletWindow window);
 
-    PortletRequestContext getPortletEventRequestContext(PortletContainer container, HttpServletRequest request,
-                                                        HttpServletResponse response, PortletWindow window);
+    PortletRequestContext getPortletEventRequestContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                        HttpServletResponse containerResponse, PortletWindow window);
 
     PortletResourceRequestContext getPortletResourceRequestContext(PortletContainer container,
-                                                                   HttpServletRequest request,
-                                                                   HttpServletResponse response, PortletWindow window);
+                                                                   HttpServletRequest containerRequest,
+                                                                   HttpServletResponse containerResponse, PortletWindow window);
 
-    PortletRequestContext getPortletRenderRequestContext(PortletContainer container, HttpServletRequest request,
-                                                         HttpServletResponse response, PortletWindow window);
+    PortletRequestContext getPortletRenderRequestContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                         HttpServletResponse containerResponse, PortletWindow window);
 
     PortletActionResponseContext getPortletActionResponseContext(PortletContainer container,
-                                                                 HttpServletRequest request,
-                                                                 HttpServletResponse response, PortletWindow window);
+                                                                 HttpServletRequest containerRequest,
+                                                                 HttpServletResponse containerResponse, PortletWindow window);
 
-    PortletEventResponseContext getPortletEventResponseContext(PortletContainer container, HttpServletRequest request,
-                                                               HttpServletResponse response, PortletWindow window);
+    PortletEventResponseContext getPortletEventResponseContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                               HttpServletResponse containerResponse, PortletWindow window);
 
     PortletResourceResponseContext getPortletResourceResponseContext(PortletContainer container,
-                                                                     HttpServletRequest request,
-                                                                     HttpServletResponse response, PortletWindow window);
+                                                                     HttpServletRequest containerRequest,
+                                                                     HttpServletResponse containerResponse, PortletWindow window);
 
     PortletRenderResponseContext getPortletRenderResponseContext(PortletContainer container,
-                                                                 HttpServletRequest request,
-                                                                 HttpServletResponse response, PortletWindow window);
+                                                                 HttpServletRequest containerRequest,
+                                                                 HttpServletResponse containerResponse, PortletWindow window);
 }

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResponseContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResponseContext.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResponseContext.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResponseContext.java Sat Mar 14 03:17:03 2009
@@ -29,7 +29,10 @@
  */
 public interface PortletResponseContext
 {
+    void init(HttpServletRequest servletRequest, HttpServletResponse servletResponse);
     PortletContainer getContainer();
+    HttpServletRequest getContainerRequest();
+    HttpServletResponse getContainerResponse();
     HttpServletRequest getServletRequest();
     HttpServletResponse getServletResponse();
     PortletWindow getPortletWindow();

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletURLProvider.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletURLProvider.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletURLProvider.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletURLProvider.java Sat Mar 14 03:17:03 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.pluto.container;
 
+import java.io.IOException;
 import java.io.Writer;
 import java.util.List;
 import java.util.Map;
@@ -74,8 +75,7 @@
      */
     String toURL(boolean absolute);
     
-    void write(Writer out);
-    void write(Writer out, boolean escapeXML);
+    void write(Writer out, boolean escapeXML) throws IOException;
 
     /**
      * Gets the mutable map of vendor-specific properties as set on the BaseURL

Added: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java?rev=753592&view=auto
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java (added)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java Sat Mar 14 03:17:03 2009
@@ -0,0 +1,31 @@
+package org.apache.pluto.container;
+/*
+ * 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.
+ */
+/**
+ * @version $Id$
+ *
+ */
+public interface RequestDispatcherPathInfoProvider
+{
+    /**
+     * PortletContext attribute key for storing and retrieving this provider.
+     */
+    String CONTEXT_KEY = RequestDispatcherPathInfoProvider.class.getName();
+    
+    RequestDispatcherPathInfo getPathInfo(String contextPath, String path);
+    RequestDispatcherPathInfo getNamedRequestDispatcherPathInfo();
+}

Propchange: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/RequestDispatcherPathInfoProvider.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletConfig.java (from r752883, portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletConfig.java)
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletConfig.java?p2=portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletConfig.java&p1=portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletConfig.java&r1=752883&r2=753592&rev=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletConfig.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletConfig.java Sat Mar 14 03:17:03 2009
@@ -14,16 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pluto.container;
+package org.apache.pluto.container.driver;
 
 import javax.portlet.PortletConfig;
 
 import org.apache.pluto.container.om.portlet.PortletDefinition;
 
-public interface ContainerPortletConfig extends PortletConfig {
+public interface DriverPortletConfig extends PortletConfig {
 
     PortletDefinition getPortletDefinition();
-    ContainerPortletContext getPortletContext();
 }
 
 

Propchange: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletContext.java (from r752883, portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletContext.java)
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletContext.java?p2=portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletContext.java&p1=portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletContext.java&r1=752883&r2=753592&rev=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/ContainerPortletContext.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletContext.java Sat Mar 14 03:17:03 2009
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pluto.container;
+package org.apache.pluto.container.driver;
 
 import javax.portlet.PortletContext;
 import javax.servlet.ServletContext;
 
 import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
 
-public interface ContainerPortletContext extends PortletContext {
+public interface DriverPortletContext extends PortletContext {
 
     /**
      * Retrieve the unique identifier for the portlet context.
@@ -37,17 +37,9 @@
     
     /**
      *
-     * @return the context path for this PortletContext
-     */
-    public String getContextPath();
-    
-    /**
-     *
      * @return application config
      */
     public PortletApplicationDefinition getPortletApplicationDefinition();
-    
-    RequestDispatcherPathInfo getPathInfo(String path);
 }
 
 

Propchange: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/DriverPortletContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletContextService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletContextService.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletContextService.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletContextService.java Sat Mar 14 03:17:03 2009
@@ -21,8 +21,6 @@
 
 import javax.servlet.ServletConfig;
 
-import org.apache.pluto.container.ContainerPortletConfig;
-import org.apache.pluto.container.ContainerPortletContext;
 import org.apache.pluto.container.PortletContainerException;
 import org.apache.pluto.container.PortletWindow;
 
@@ -45,7 +43,7 @@
      *
      * @return iterator of all application descriptors.
      */
-    Iterator<ContainerPortletContext> getPortletContexts();
+    Iterator<DriverPortletContext> getPortletContexts();
 
     /**
      * Retrieve the InternalPortletContext for the specified portlet application name
@@ -53,7 +51,7 @@
      * @param applicationName portlet application name
      * @return portlet context or null if not registered
      */
-    ContainerPortletContext getPortletContext(String applicationName)
+    DriverPortletContext getPortletContext(String applicationName)
         throws PortletContainerException;
 
     /**
@@ -62,7 +60,7 @@
      * @param portletWindow portlet window
      * @return portlet context or null if not registered
      */
-    ContainerPortletContext getPortletContext(PortletWindow portletWindow)
+    DriverPortletContext getPortletContext(PortletWindow portletWindow)
         throws PortletContainerException;
 
     /**
@@ -72,7 +70,7 @@
      * @return portletconfig
      * @throws PortletContainerException if portlet or application unknown
      */
-    ContainerPortletConfig getPortletConfig(String applicationName, String portletName)
+    DriverPortletConfig getPortletConfig(String applicationName, String portletName)
         throws PortletContainerException;
 
     /**
@@ -97,5 +95,5 @@
      * 
      * @param context
      */
-    void unregister(ContainerPortletContext context);
+    void unregister(DriverPortletContext context);
 }

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletInvocationEvent.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletInvocationEvent.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletInvocationEvent.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletInvocationEvent.java Sat Mar 14 03:17:03 2009
@@ -19,19 +19,19 @@
 
 import javax.portlet.PortletRequest;
 
-import org.apache.pluto.container.Constants;
+import org.apache.pluto.container.PortletInvokerService;
 import org.apache.pluto.container.PortletWindow;
 
 
 public class PortletInvocationEvent {
 
-    public static int LOAD = Constants.METHOD_NOOP.intValue();
+    public static int LOAD = PortletInvokerService.METHOD_NOOP.intValue();
 
-    public static int ACTION = Constants.METHOD_ACTION.intValue();
+    public static int ACTION = PortletInvokerService.METHOD_ACTION.intValue();
 
-    public static int RENDER = Constants.METHOD_RENDER.intValue();
+    public static int RENDER = PortletInvokerService.METHOD_RENDER.intValue();
 
-    public static int ADMIN = Constants.METHOD_ADMIN.intValue();
+    public static int ADMIN = PortletInvokerService.METHOD_ADMIN.intValue();
 
     private PortletRequest portletRequest;
 

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java Sat Mar 14 03:17:03 2009
@@ -43,12 +43,11 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.pluto.container.Constants;
-import org.apache.pluto.container.ContainerPortletConfig;
-import org.apache.pluto.container.ContainerPortletContext;
 import org.apache.pluto.container.FilterManager;
 import org.apache.pluto.container.PortletContainerException;
+import org.apache.pluto.container.PortletInvokerService;
 import org.apache.pluto.container.PortletRequestContext;
+import org.apache.pluto.container.PortletResponseContext;
 import org.apache.pluto.container.PortletWindow;
 import org.apache.pluto.container.om.portlet.PortletDefinition;
 
@@ -108,12 +107,12 @@
     /**
      * The internal portlet context instance.
      */
-    private ContainerPortletContext portletContext;
+    private DriverPortletContext portletContext;
 
     /**
      * The internal portlet config instance.
      */
-    private ContainerPortletConfig portletConfig;
+    private DriverPortletConfig portletConfig;
 
     /**
      * The Event Portlet instance (the same object as portlet) wrapped by this
@@ -302,28 +301,26 @@
         }
         // Save portlet config into servlet request.
 
-        request.setAttribute(Constants.PORTLET_CONFIG, portletConfig);
+        request.setAttribute(PortletInvokerService.PORTLET_CONFIG, portletConfig);
 
         // Retrieve attributes from the servlet request.
-        Integer methodId = (Integer) request.getAttribute(Constants.METHOD_ID);
+        Integer methodId = (Integer) request.getAttribute(PortletInvokerService.METHOD_ID);
 
-        final PortletRequest portletRequest = (PortletRequest) request
-                .getAttribute(Constants.PORTLET_REQUEST);
+        final PortletRequest portletRequest = (PortletRequest)request.getAttribute(PortletInvokerService.PORTLET_REQUEST);
 
-        final PortletResponse portletResponse = (PortletResponse) request
-                .getAttribute(Constants.PORTLET_RESPONSE);
+        final PortletResponse portletResponse = (PortletResponse)request.getAttribute(PortletInvokerService.PORTLET_RESPONSE);
         
-        final PortletRequestContext requestContext = (PortletRequestContext)request.getAttribute(Constants.REQUEST_CONTEXT);
+        final PortletRequestContext requestContext = (PortletRequestContext)portletRequest.getAttribute(PortletInvokerService.REQUEST_CONTEXT);
+        final PortletResponseContext responseContext = (PortletResponseContext)portletRequest.getAttribute(PortletInvokerService.RESPONSE_CONTEXT);
         
-        FilterManager filterManager = (FilterManager) request
-                .getAttribute(Constants.FILTER_MANAGER);
+        final FilterManager filterManager = (FilterManager)request.getAttribute(PortletInvokerService.FILTER_MANAGER);
 
-        requestContext.init(portletConfig);
+        requestContext.init(portletConfig.getPortletContext(), getServletContext(), request, response);
+        responseContext.init(request, response);
 
         PortletWindow window = requestContext.getPortletWindow();
 
-        PortletInvocationEvent event = new PortletInvocationEvent(
-                portletRequest, window, methodId.intValue());
+        PortletInvocationEvent event = new PortletInvocationEvent(portletRequest, window, methodId.intValue());
 
         notify(event, true, null);
 
@@ -337,7 +334,7 @@
         {
 
             // The requested method is RENDER: call Portlet.render(..)
-            if (methodId == Constants.METHOD_RENDER)
+            if (methodId == PortletInvokerService.METHOD_RENDER)
             {
                 RenderRequest renderRequest = (RenderRequest) portletRequest;
                 RenderResponse renderResponse = (RenderResponse) portletResponse;
@@ -347,7 +344,7 @@
 
             // The requested method is RESOURCE: call
             // ResourceServingPortlet.serveResource(..)
-            else if (methodId == Constants.METHOD_RESOURCE)
+            else if (methodId == PortletInvokerService.METHOD_RESOURCE)
             {
                 ResourceRequest resourceRequest = (ResourceRequest) portletRequest;
                 ResourceResponse resourceResponse = (ResourceResponse) portletResponse;
@@ -356,7 +353,7 @@
             }
 
             // The requested method is ACTION: call Portlet.processAction(..)
-            else if (methodId == Constants.METHOD_ACTION)
+            else if (methodId == PortletInvokerService.METHOD_ACTION)
             {
                 ActionRequest actionRequest = (ActionRequest) portletRequest;
                 ActionResponse actionResponse = (ActionResponse) portletResponse;
@@ -365,7 +362,7 @@
             }
 
             // The request methode is Event: call Portlet.processEvent(..)
-            else if (methodId == Constants.METHOD_EVENT)
+            else if (methodId == PortletInvokerService.METHOD_EVENT)
             {
                 EventRequest eventRequest = (EventRequest) portletRequest;
                 EventResponse eventResponse = (EventResponse) portletResponse;
@@ -373,7 +370,7 @@
                         loader, eventPortlet, portletContext);
             }
             // The requested method is ADMIN: call handlers.
-            else if (methodId == Constants.METHOD_ADMIN)
+            else if (methodId == PortletInvokerService.METHOD_ADMIN)
             {
                 PortalAdministrationService pas = PlutoServices.getServices().getPortalAdministrationService();
 
@@ -384,7 +381,7 @@
             }
 
             // The requested method is NOOP: do nothing.
-            else if (methodId == Constants.METHOD_NOOP)
+            else if (methodId == PortletInvokerService.METHOD_NOOP)
             {
                 // Do nothing.
             }
@@ -428,7 +425,7 @@
         }
         finally
         {
-            request.removeAttribute(Constants.PORTLET_CONFIG);
+            request.removeAttribute(PortletInvokerService.PORTLET_CONFIG);
         }
     }
 

Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/om/portlet/PortletApplicationDefinition.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/om/portlet/PortletApplicationDefinition.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/om/portlet/PortletApplicationDefinition.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/om/portlet/PortletApplicationDefinition.java Sat Mar 14 03:17:03 2009
@@ -30,6 +30,9 @@
     String getName();
     void setName(String name);
     
+    String getContextPath();
+    void setContextPath(String contextPath);
+    
     PortletDefinition getPortlet(String portletName);
 	List<? extends PortletDefinition> getPortlets();
 	PortletDefinition addPortlet(String name);

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DefaultPortletInvokerService.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DefaultPortletInvokerService.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DefaultPortletInvokerService.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DefaultPortletInvokerService.java Sat Mar 14 03:17:03 2009
@@ -37,7 +37,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.pluto.container.Constants;
 import org.apache.pluto.container.FilterManager;
 import org.apache.pluto.container.PortletContainerException;
 import org.apache.pluto.container.PortletInvokerService;
@@ -100,7 +99,7 @@
         if (LOG.isDebugEnabled()) {
             LOG.debug("Performing Action Invocation");
         }
-        invoke(context, request, response, filterManager, Constants.METHOD_ACTION);
+        invoke(context, request, response, filterManager, PortletInvokerService.METHOD_ACTION);
     }
 
     /**
@@ -116,7 +115,7 @@
         if (LOG.isDebugEnabled()) {
             LOG.debug("Performing Render Invocation");
         }
-        invoke(context, request, response, filterManager, Constants.METHOD_RENDER);        
+        invoke(context, request, response, filterManager, PortletInvokerService.METHOD_RENDER);        
     }
     
     /**
@@ -132,7 +131,7 @@
         if (LOG.isDebugEnabled()) {
             LOG.debug("Performing Render Invocation");
         }
-        invoke(context, request, response, filterManager, Constants.METHOD_EVENT);
+        invoke(context, request, response, filterManager, PortletInvokerService.METHOD_EVENT);
     }
     
     /**
@@ -148,7 +147,7 @@
         if (LOG.isDebugEnabled()) {
             LOG.debug("Performing Resource Invocation");
         }
-        invoke(context, request, response, filterManager, Constants.METHOD_RESOURCE);
+        invoke(context, request, response, filterManager, PortletInvokerService.METHOD_RESOURCE);
     }
 
     /**
@@ -163,7 +162,7 @@
         if (LOG.isDebugEnabled()) {
             LOG.debug("Performing Load Invocation.");
         }
-        invoke(context, request, response, Constants.METHOD_NOOP);
+        invoke(context, request, response, PortletInvokerService.METHOD_NOOP);
     }
 
     public void admin(PortletRequestContext context, PortletRequest request, PortletResponse response)
@@ -172,7 +171,7 @@
             LOG.debug("Performing Admin Invocation.");
         }
 
-        invoke(context, request, response, Constants.METHOD_ADMIN);
+        invoke(context, request, response, PortletInvokerService.METHOD_ADMIN);
     }
 
     // Private Invoke Method ---------------------------------------------------
@@ -215,23 +214,24 @@
         RequestDispatcher dispatcher = servletContext.getRequestDispatcher(uri);
 
         if (dispatcher != null) {
+
+            HttpServletRequest containerRequest = context.getContainerRequest();
+            HttpServletResponse containerResponse = context.getContainerResponse();
+            
             try {
-                HttpServletRequest servletRequest = context.getServletRequest();
-                HttpServletResponse servletResponse = context.getServletResponse();
 
-                servletRequest.setAttribute(Constants.REQUEST_CONTEXT, context);
-                servletRequest.setAttribute(Constants.METHOD_ID, methodID);
-                servletRequest.setAttribute(Constants.PORTLET_REQUEST, request);
-                servletRequest.setAttribute(Constants.PORTLET_RESPONSE, response);
-                servletRequest.setAttribute(Constants.FILTER_MANAGER, filterManager);
+                containerRequest.setAttribute(PortletInvokerService.METHOD_ID, methodID);
+                containerRequest.setAttribute(PortletInvokerService.PORTLET_REQUEST, request);
+                containerRequest.setAttribute(PortletInvokerService.PORTLET_RESPONSE, response);
+                containerRequest.setAttribute(PortletInvokerService.FILTER_MANAGER, filterManager);
                 
-                if (methodID.equals(Constants.METHOD_RESOURCE))
+                if (methodID.equals(PortletInvokerService.METHOD_RESOURCE))
                 {
-                    dispatcher.forward(servletRequest, servletResponse);
+                    dispatcher.forward(containerRequest, containerResponse);
                 }
                 else
                 {
-                    dispatcher.include(servletRequest, servletResponse);
+                    dispatcher.include(containerRequest, containerResponse);
                 }
 
 
@@ -263,11 +263,10 @@
                 }
 
             } finally {
-                request.removeAttribute(Constants.REQUEST_CONTEXT);
-                request.removeAttribute(Constants.METHOD_ID);
-                request.removeAttribute(Constants.PORTLET_REQUEST);
-                request.removeAttribute(Constants.PORTLET_RESPONSE);
-                request.removeAttribute(Constants.FILTER_MANAGER);
+                containerRequest.removeAttribute(PortletInvokerService.METHOD_ID);
+                containerRequest.removeAttribute(PortletInvokerService.PORTLET_REQUEST);
+                containerRequest.removeAttribute(PortletInvokerService.PORTLET_RESPONSE);
+                containerRequest.removeAttribute(PortletInvokerService.FILTER_MANAGER);
             }
         } else {
             String msg = EXCEPTIONS.getString(

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/InlinePortletResourceBundle.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/InlinePortletResourceBundle.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/InlinePortletResourceBundle.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/InlinePortletResourceBundle.java Sat Mar 14 03:17:03 2009
@@ -19,8 +19,6 @@
 import java.util.ArrayList;
 import java.util.ListResourceBundle;
 
-import org.apache.pluto.container.Constants;
-
 /**
  * InlinePortletResourceBundle implementation which provides the
  * inline title, short-title, and keywords as properties from the
@@ -31,6 +29,10 @@
  */
 class InlinePortletResourceBundle extends ListResourceBundle {
 
+   private final static String TITLE_KEY = "javax.portlet.title";
+   private final static String SHORT_TITLE_KEY = "javax.portlet.short-title";
+   private final static String KEYWORDS_KEY = "javax.portlet.keywords";
+
     private Object[][] contents;
 
     public InlinePortletResourceBundle(Object[][] contents) {
@@ -40,13 +42,13 @@
     public InlinePortletResourceBundle(String title, String shortTitle, String keywords) {
         ArrayList<Object[]> temp = new ArrayList<Object[]>();
         if(title != null)
-            temp.add(new Object[] {Constants.TITLE_KEY, title});
+            temp.add(new Object[] {TITLE_KEY, title});
 
         if(shortTitle != null)
-            temp.add(new Object[] {Constants.SHORT_TITLE_KEY, shortTitle});
+            temp.add(new Object[] {SHORT_TITLE_KEY, shortTitle});
 
         if(keywords != null)
-            temp.add(new Object[] {Constants.KEYWORDS_KEY, keywords});
+            temp.add(new Object[] {KEYWORDS_KEY, keywords});
 
         contents = temp.toArray(new Object[temp.size()][]);
     }

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletConfigImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletConfigImpl.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletConfigImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletConfigImpl.java Sat Mar 14 03:17:03 2009
@@ -29,27 +29,28 @@
 import java.util.Set;
 
 import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
 import javax.xml.XMLConstants;
 import javax.xml.namespace.QName;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.pluto.container.ContainerPortletConfig;
-import org.apache.pluto.container.ContainerPortletContext;
+import org.apache.pluto.container.driver.DriverPortletConfig;
+import org.apache.pluto.container.driver.DriverPortletContext;
 import org.apache.pluto.container.om.portlet.ContainerRuntimeOption;
 import org.apache.pluto.container.om.portlet.EventDefinitionReference;
 import org.apache.pluto.container.om.portlet.InitParam;
 import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
 import org.apache.pluto.container.om.portlet.PortletDefinition;
 
-public class PortletConfigImpl implements PortletConfig, ContainerPortletConfig {
+public class PortletConfigImpl implements PortletConfig, DriverPortletConfig {
 
     private static final Log LOG = LogFactory.getLog(PortletConfigImpl.class);
 
     /**
      * The Portlet Application Context within which we exist.
      */
-    protected ContainerPortletContext portletContext;
+    protected DriverPortletContext portletContext;
 
     /**
      * The portlet descriptor.
@@ -67,7 +68,7 @@
     
     protected Set<String> supportedContainerRuntimeOptions; 
 
-    public PortletConfigImpl(ContainerPortletContext portletContext,
+    public PortletConfigImpl(DriverPortletContext portletContext,
                              PortletDefinition portletDD,
                              PortletApplicationDefinition portletAppDD) {
         this.portletContext = portletContext;
@@ -84,7 +85,7 @@
         return portlet.getPortletName();
     }
 
-    public ContainerPortletContext getPortletContext() {
+    public PortletContext getPortletContext() {
         return portletContext;
     }
 

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextImpl.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextImpl.java Sat Mar 14 03:17:03 2009
@@ -19,10 +19,8 @@
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
-import java.util.List;
 import java.util.Set;
 
 import javax.portlet.PortletContext;
@@ -32,10 +30,10 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.pluto.container.ContainerPortletContext;
-import org.apache.pluto.container.RequestDispatcherPathInfo;
+import org.apache.pluto.container.RequestDispatcherPathInfoProvider;
+import org.apache.pluto.container.driver.DriverPortletContext;
 import org.apache.pluto.container.impl.PortletRequestDispatcherImpl;
-import org.apache.pluto.container.impl.RequestDispatcherPathInfoImpl;
+import org.apache.pluto.container.impl.RequestDispatcherPathInfoProviderImpl;
 import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
 
 /**
@@ -46,7 +44,7 @@
  * @version 1.1
  */
 public class PortletContextImpl
-implements PortletContext, ContainerPortletContext {
+implements PortletContext, DriverPortletContext {
 	
 	/**
 	 *  Logger.
@@ -60,11 +58,6 @@
     protected final ServletContext servletContext;
     protected ClassLoader contextClassLoader;
 
-    protected List<String> exactServletMappingURLPatterns;
-    protected List<String> pathServletMappingURLPatterns;
-    protected List<String> extServletMappingURLPatterns;
-    protected boolean defaultServletMapping = false;
-    
     // Constructor -------------------------------------------------------------
     
     /**
@@ -104,11 +97,7 @@
     }
 
     public String getContextPath() {
-        String path = portletApp.getName();
-        if (!path.equals("")) {
-            path = "/" + path;
-        }
-        return path;
+        return portletApp.getContextPath();
     }
     
     // PortletContext Impl -----------------------------------------------------
@@ -122,104 +111,8 @@
         return Configuration.getServerInfo();
     }
     
-    public RequestDispatcherPathInfo getPathInfo(String path)
+    public PortletRequestDispatcher getRequestDispatcher(String path)
     {
-        String servletPath = null;
-        String pathInfo = null;
-        String queryString = null;
-        
-        int index = path.indexOf('?');
-        if (index != -1)
-        {
-            queryString = path.substring(index+1, path.length());
-            path = path.substring(0, index);
-        }
-        
-        synchronized (this)
-        {
-            if (exactServletMappingURLPatterns == null)
-            {
-                defaultServletMapping = false;
-                exactServletMappingURLPatterns = new ArrayList<String>();
-                pathServletMappingURLPatterns = new ArrayList<String>();
-                extServletMappingURLPatterns = new ArrayList<String>();
-                
-                for (String pat : portletApp.getServletMappingURLPatterns())
-                {                 
-                    if (pat.startsWith("/"))
-                    {
-                        if (pat.equals("/"))
-                        {
-                            defaultServletMapping = true;
-                        }
-                        else if (pat.endsWith("/*"))
-                        {
-                            pathServletMappingURLPatterns.add(pat.substring(0,-2));
-                        }
-                        else
-                        {
-                            exactServletMappingURLPatterns.add(pat);
-                        }
-                    }
-                    else if (pat.startsWith("*."))
-                    {
-                        extServletMappingURLPatterns.add(pat.substring(1));
-                    }
-                    else
-                    {
-                        exactServletMappingURLPatterns.add(pat);
-                    }
-                }
-            }
-        }
-        if (exactServletMappingURLPatterns.contains(path))
-        {
-            servletPath = path;
-        }
-        else if (path.length() == 1 && defaultServletMapping)
-        {
-            servletPath = path;
-        }
-        else
-        {
-            String sub = path;
-            index = path.lastIndexOf('/');
-            do
-            {
-                sub = sub.substring(0, index);
-                if (pathServletMappingURLPatterns.contains(sub))
-                {
-                    servletPath = sub;
-                    if (sub.length() < path.length())
-                    {
-                        pathInfo = path.substring(sub.length()+1);
-                    }
-                    break;
-                }
-                index = sub.lastIndexOf('/');
-            }
-            while (index != 0);
-        }
-        if (servletPath == null)
-        {
-            index = path.lastIndexOf('/');
-            int ext = path.indexOf('.', index);
-            if (extServletMappingURLPatterns.contains(path.substring(ext)))
-            {
-                servletPath = index > 0 ? path.substring(0, index) : "";
-                pathInfo = path.substring(index);
-            }
-        }
-        if (servletPath == null)
-        {
-            servletPath = path;            
-        }
-        
-        return new RequestDispatcherPathInfoImpl(getContextPath(),servletPath,pathInfo,queryString);
-    }
-
-    public PortletRequestDispatcher getRequestDispatcher(String path) {
-    	
         if (LOG.isDebugEnabled()) {
             LOG.debug("PortletRequestDispatcher requested: " + path);
         }
@@ -237,11 +130,11 @@
         // Construct PortletRequestDispatcher.
         PortletRequestDispatcher portletRequestDispatcher = null;
         try {
-            RequestDispatcher servletRequestDispatcher = servletContext
-            		.getRequestDispatcher(path);
+            RequestDispatcher servletRequestDispatcher = servletContext.getRequestDispatcher(path);
             if (servletRequestDispatcher != null) {
 
-            	portletRequestDispatcher = new PortletRequestDispatcherImpl(servletRequestDispatcher, getPathInfo(path));
+                RequestDispatcherPathInfoProvider provider = RequestDispatcherPathInfoProviderImpl.getProvider(this, portletApp);
+            	portletRequestDispatcher = new PortletRequestDispatcherImpl(servletRequestDispatcher, provider.getPathInfo(getContextPath(), path));
             } else {
             	if (LOG.isInfoEnabled()) {
             		LOG.info("No matching request dispatcher found for: " + path);
@@ -262,8 +155,10 @@
     
     public PortletRequestDispatcher getNamedDispatcher(String name) {
         RequestDispatcher dispatcher = servletContext.getNamedDispatcher(name);
-        if (dispatcher != null) {
-            return new PortletRequestDispatcherImpl(dispatcher);
+        if (dispatcher != null)
+        {
+            RequestDispatcherPathInfoProvider provider = RequestDispatcherPathInfoProviderImpl.getProvider(this, portletApp);
+            return new PortletRequestDispatcherImpl(dispatcher, provider.getNamedRequestDispatcherPathInfo());
         } else {
         	if (LOG.isInfoEnabled()) {
         		LOG.info("No matching request dispatcher found for name: "

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextManager.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextManager.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextManager.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletContextManager.java Sat Mar 14 03:17:03 2009
@@ -30,10 +30,10 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.pluto.container.ContainerPortletConfig;
-import org.apache.pluto.container.ContainerPortletContext;
 import org.apache.pluto.container.PortletContainerException;
 import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.container.driver.DriverPortletConfig;
+import org.apache.pluto.container.driver.DriverPortletContext;
 import org.apache.pluto.container.driver.PortletContextService;
 import org.apache.pluto.container.driver.PortletRegistryEvent;
 import org.apache.pluto.container.driver.PortletRegistryListener;
@@ -60,7 +60,7 @@
      * The PortletContext cache map: key is servlet context, and value is the
      * associated portlet context.
      */
-    private Map<String,ContainerPortletContext> portletContexts = new HashMap<String,ContainerPortletContext>();
+    private Map<String,DriverPortletContext> portletContexts = new HashMap<String,DriverPortletContext>();
 
     /**
      * List of application id resolvers. *
@@ -74,7 +74,7 @@
      * The PortletContext cache map: key is servlet context, and value is the
      * associated portlet context.
      */
-    private final Map<String,ContainerPortletConfig> portletConfigs = new HashMap<String,ContainerPortletConfig>();
+    private final Map<String,DriverPortletConfig> portletConfigs = new HashMap<String,DriverPortletConfig>();
 
 
     /**
@@ -110,14 +110,14 @@
      */
 	public String register(ServletConfig config) throws PortletContainerException {
 	    ServletContext servletContext = config.getServletContext();
-        String applicationName = getContextPath(servletContext).substring(1);
+	    String contextPath = getContextPath(servletContext);
+        String applicationName = contextPath.substring(1);
         if (!portletContexts.containsKey(applicationName)) {
         	PortletDescriptorRegistry portletRegistry = PortletDescriptorRegistry.getRegistry();
 
-            PortletApplicationDefinition portletApp = portletRegistry.getPortletAppDD(servletContext);
-            portletApp.setName(applicationName);
+            PortletApplicationDefinition portletApp = portletRegistry.getPortletAppDD(servletContext, applicationName, contextPath);
 
-            ContainerPortletContext portletContext = new PortletContextImpl(servletContext, portletApp);
+            DriverPortletContext portletContext = new PortletContextImpl(servletContext, portletApp);
 
             portletContexts.put(applicationName, portletContext);
 
@@ -131,6 +131,11 @@
 
             classLoaders.put(portletApp.getName(), Thread.currentThread().getContextClassLoader());
             for (PortletDefinition portlet: portletApp.getPortlets()) {
+                String appName = portletContext.getApplicationName();
+                if (appName == null)
+                {
+                    System.out.println("HELLLO");
+                }
                 portletConfigs.put(
                     portletContext.getApplicationName() + "/" + portlet.getPortletName(),
                     new PortletConfigImpl(portletContext, portlet, portletApp)
@@ -145,9 +150,9 @@
     }
 
     /**
-     * @see org.apache.pluto.container.driver.PortletContextService#unregister(org.apache.pluto.container.ContainerPortletContext)
+     * @see org.apache.pluto.container.driver.PortletContextService#unregister(org.apache.pluto.container.driver.DriverPortletContext)
      */
-    public void unregister(ContainerPortletContext context) {
+    public void unregister(DriverPortletContext context) {
         portletContexts.remove(context.getApplicationName());
         classLoaders.remove(context.getApplicationName());
         Iterator<String> configs = portletConfigs.keySet().iterator();
@@ -170,21 +175,21 @@
     /**
      * @see org.apache.pluto.container.driver.PortletContextService#getPortletContexts()
      */
-    public Iterator<ContainerPortletContext> getPortletContexts() {
-        return new HashSet<ContainerPortletContext>(portletContexts.values()).iterator();
+    public Iterator<DriverPortletContext> getPortletContexts() {
+        return new HashSet<DriverPortletContext>(portletContexts.values()).iterator();
     }
 
     /**
      * @see org.apache.pluto.container.driver.PortletContextService#getPortletContext(java.lang.String)
      */
-    public ContainerPortletContext getPortletContext(String applicationName) {
+    public DriverPortletContext getPortletContext(String applicationName) {
         return portletContexts.get(applicationName);
     }
 
     /**
      * @see org.apache.pluto.container.driver.PortletContextService#getPortletContext(org.apache.pluto.container.PortletWindow)
      */
-    public ContainerPortletContext getPortletContext(PortletWindow portletWindow) throws PortletContainerException {
+    public DriverPortletContext getPortletContext(PortletWindow portletWindow) throws PortletContainerException {
         return portletContexts.get(portletWindow.getPortletEntity().getPortletDefinition().getApplication().getName());
     }
 
@@ -192,8 +197,8 @@
     /**
      * @see org.apache.pluto.container.driver.PortletContextService#getPortletConfig(java.lang.String, java.lang.String)
      */
-    public ContainerPortletConfig getPortletConfig(String applicationName, String portletName) throws PortletContainerException {
-        ContainerPortletConfig ipc = portletConfigs.get(applicationName + "/" + portletName);
+    public DriverPortletConfig getPortletConfig(String applicationName, String portletName) throws PortletContainerException {
+        DriverPortletConfig ipc = portletConfigs.get(applicationName + "/" + portletName);
         if (ipc != null) {
             return ipc;
         }
@@ -206,7 +211,7 @@
      * @see org.apache.pluto.container.driver.PortletRegistryService#getPortlet(java.lang.String, java.lang.String)
      */
     public PortletDefinition getPortlet(String applicationName, String portletName) throws PortletContainerException {
-        ContainerPortletConfig ipc = portletConfigs.get(applicationName + "/" + portletName);
+        DriverPortletConfig ipc = portletConfigs.get(applicationName + "/" + portletName);
         if (ipc != null) {
             return ipc.getPortletDefinition();
         }
@@ -219,7 +224,7 @@
      * @see org.apache.pluto.container.driver.PortletRegistryService#getPortletApplication(java.lang.String)
      */
     public PortletApplicationDefinition getPortletApplication(String applicationName) throws PortletContainerException {
-        ContainerPortletContext ipc = portletContexts.get(applicationName);
+        DriverPortletContext ipc = portletContexts.get(applicationName);
         if (ipc != null) {
             return ipc.getPortletApplicationDefinition();
         }
@@ -249,7 +254,7 @@
         registryListeners.remove(listener);
     }
 
-    private void fireRegistered(ContainerPortletContext context) {
+    private void fireRegistered(DriverPortletContext context) {
         PortletRegistryEvent event = new PortletRegistryEvent();
         event.setPortletApplication(context.getPortletApplicationDefinition());
 
@@ -259,7 +264,7 @@
         LOG.info("Portlet Context '/" + context.getApplicationName() + "' registered.");
     }
 
-    private void fireRemoved(ContainerPortletContext context) {
+    private void fireRemoved(DriverPortletContext context) {
         PortletRegistryEvent event = new PortletRegistryEvent();
         event.setPortletApplication(context.getPortletApplicationDefinition());
 

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletDescriptorRegistry.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletDescriptorRegistry.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletDescriptorRegistry.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/PortletDescriptorRegistry.java Sat Mar 14 03:17:03 2009
@@ -118,11 +118,11 @@
      * @return The portlet application deployment descriptor.
      * @throws PortletContainerException if the descriptor can not be found or parsed
      */
-    public PortletApplicationDefinition getPortletAppDD(ServletContext servletContext)
+    public PortletApplicationDefinition getPortletAppDD(ServletContext servletContext, String name, String contextPath)
     throws PortletContainerException {
         PortletApplicationDefinition portletApp = cache.get(servletContext);
         if (portletApp == null) {
-        	portletApp = createDefinition(servletContext);
+        	portletApp = createDefinition(servletContext, name, contextPath);
             cache.put(servletContext, portletApp);
         }
         return portletApp;
@@ -138,7 +138,7 @@
      * @return the Portlet Application Deployment Descriptor.
      * @throws PortletContainerException
      */
-    private PortletApplicationDefinition createDefinition(ServletContext servletContext)
+    private PortletApplicationDefinition createDefinition(ServletContext servletContext, String name, String contextPath)
     throws PortletContainerException {
         PortletApplicationDefinition portletApp = null;
         try {
@@ -152,7 +152,7 @@
                 throw new PortletContainerException("Cannot find '" + WEB_XML +
                     "'. Are you sure it is in the deployed package?");
             }
-            portletApp = portletDDService.read(paIn);
+            portletApp = portletDDService.read(name, contextPath, paIn);
             portletDDService.mergeWebDescriptor(portletApp, webIn);
         } catch (Exception ex) {
             throw new PortletContainerException(EXCEPTIONS.getString(

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionRequestImpl.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionRequestImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ActionRequestImpl.java Sat Mar 14 03:17:03 2009
@@ -19,6 +19,7 @@
 import javax.portlet.ActionRequest;
 import javax.portlet.PortletRequest;
 
+import org.apache.pluto.container.PortletActionResponseContext;
 import org.apache.pluto.container.PortletRequestContext;
 
 /**
@@ -26,8 +27,8 @@
  */
 public class ActionRequestImpl extends ClientDataRequestImpl implements ActionRequest
 {
-    public ActionRequestImpl(PortletRequestContext requestContext)
+    public ActionRequestImpl(PortletRequestContext requestContext, PortletActionResponseContext responseContext)
     {
-        super(requestContext, PortletRequest.ACTION_PHASE);
+        super(requestContext, responseContext, PortletRequest.ACTION_PHASE);
     }
 }

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ClientDataRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ClientDataRequestImpl.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ClientDataRequestImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ClientDataRequestImpl.java Sat Mar 14 03:17:03 2009
@@ -25,6 +25,7 @@
 import javax.portlet.ClientDataRequest;
 
 import org.apache.pluto.container.PortletRequestContext;
+import org.apache.pluto.container.PortletResponseContext;
 
 /**
  * Implementation of the <code>javax.portlet.ClientDataRequest</code> interface.
@@ -34,9 +35,9 @@
     /** Flag indicating if the HTTP body reader has been accessed. */
     protected boolean readerAccessed = false;
 
-    public ClientDataRequestImpl(PortletRequestContext requestContext, String lifecyclePhase)
+    public ClientDataRequestImpl(PortletRequestContext requestContext, PortletResponseContext responseContext, String lifecyclePhase)
     {
-        super(requestContext, lifecyclePhase);
+        super(requestContext, responseContext, lifecyclePhase);
     }
 
     private void checkPostedFormData() 

Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventRequestImpl.java?rev=753592&r1=753591&r2=753592&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventRequestImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventRequestImpl.java Sat Mar 14 03:17:03 2009
@@ -21,6 +21,7 @@
 import javax.portlet.EventRequest;
 import javax.portlet.PortletRequest;
 
+import org.apache.pluto.container.PortletEventResponseContext;
 import org.apache.pluto.container.PortletRequestContext;
 
 /**
@@ -31,9 +32,9 @@
 {
 	private final Event event; 
 	
-    public EventRequestImpl(PortletRequestContext requestContext, Event event)
+    public EventRequestImpl(PortletRequestContext requestContext, PortletEventResponseContext responseContext, Event event)
     {
-        super(requestContext, PortletRequest.EVENT_PHASE);
+        super(requestContext, responseContext, PortletRequest.EVENT_PHASE);
         this.event = event;
     }