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:20:22 UTC

svn commit: r753593 [1/2] - in /portals/pluto/trunk: pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/ pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/ pluto-portal-driver/src/main/java/org/apach...

Author: ate
Date: Sat Mar 14 03:20:18 2009
New Revision: 753593

URL: http://svn.apache.org/viewvc?rev=753593&view=rev
Log:
Completion of the 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 portal driver and util (and the one beofre for the container) 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-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java   (with props)
Removed:
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventAttribute.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventList.java
    portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalServletRequest.java
Modified:
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletActionResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletEventResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRenderResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextServiceImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
    portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
    portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java
    portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java
    portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalServletResponse.java
    portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java
    portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
    portals/pluto/trunk/pluto-portal/src/main/webapp/WEB-INF/pluto-portal-driver-services-config.xml
    portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/io/WebXmlStreamingAssembly.java
    portals/pluto/trunk/pluto-util/src/test/java/org/apache/pluto/util/assemble/ear/ComplexEarAssemblerTest.java
    portals/pluto/trunk/pluto-util/src/test/java/org/apache/pluto/util/assemble/ear/EarAssemblerTest.java
    portals/pluto/trunk/pluto-util/src/test/java/org/apache/pluto/util/assemble/io/AssemblyStreamTest.java

Added: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java?rev=753593&view=auto
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java (added)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java Sat Mar 14 03:20:18 2009
@@ -0,0 +1,174 @@
+/*
+ * 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 org.apache.pluto.driver.services.container;
+
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.List;
+
+import javax.portlet.Event;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.pluto.container.EventProvider;
+import org.apache.pluto.container.PortletContainerException;
+import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.container.driver.PortletRegistryService;
+import org.apache.pluto.container.om.portlet.EventDefinition;
+import org.apache.pluto.container.om.portlet.EventDefinitionReference;
+import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
+import org.apache.pluto.driver.services.portal.PortletWindowConfig;
+
+/**
+ * @version $Id$
+ */
+public class EventProviderImpl implements EventProvider
+{
+    /** Logger. */
+    private static final Log LOG = LogFactory.getLog(EventProviderImpl.class);
+    private PortletWindow portletWindow;
+    private PortletRegistryService portletRegistry;
+    
+    public EventProviderImpl(PortletWindow portletWindow, PortletRegistryService portletRegistry)
+    {
+        this.portletWindow = portletWindow;
+        this.portletRegistry = portletRegistry;
+    }
+
+    @SuppressWarnings("unchecked")
+    public Event createEvent(QName qname, Serializable value) throws IllegalArgumentException
+    {
+        if (isDeclaredAsPublishingEvent(qname))
+        {
+            if (value != null && !isValueInstanceOfDefinedClass(qname, value))
+            {
+                throw new IllegalArgumentException("Payload has not the right class");
+            }
+            try
+            {
+                if (value == null)
+                {
+                    return new EventImpl(qname, value);
+                }
+                else
+                {
+                    ClassLoader cl = Thread.currentThread().getContextClassLoader();
+                    Writer out = new StringWriter();
+                    Class clazz = value.getClass();
+                    try
+                    {
+                        Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+                        JAXBContext jc = JAXBContext.newInstance(clazz);
+                        Marshaller marshaller = jc.createMarshaller();
+                        JAXBElement<Serializable> element = new JAXBElement<Serializable>(qname, clazz, value);
+                        marshaller.marshal(element, out);
+                    }
+                    finally
+                    {
+                        Thread.currentThread().setContextClassLoader(cl);
+                    }
+                    return new EventImpl(qname, out.toString());
+                }
+            }
+            catch (JAXBException e)
+            {
+                // maybe there is no valid jaxb binding
+                // TODO wsrp:eventHandlingFailed
+                LOG.error("Event handling failed", e);
+            }
+            catch (FactoryConfigurationError e)
+            {
+                LOG.warn(e);
+            }
+        }
+        return null;
+    }
+
+    private boolean isDeclaredAsPublishingEvent(QName qname)
+    {
+        String applicationId = PortletWindowConfig.parseContextPath(portletWindow.getId().getStringId());
+        String applicationName = applicationId;
+        if (applicationId.length() > 0)
+        {
+            applicationName = applicationId.substring(1);
+        }
+        String portletName = PortletWindowConfig.parsePortletName(portletWindow.getId().getStringId());
+        List<? extends EventDefinitionReference> events = null;
+        try
+        {
+            events = portletRegistry.getPortlet(applicationName, portletName).getSupportedPublishingEvents();
+        }
+        catch (PortletContainerException e1)
+        {
+            e1.printStackTrace();
+        }
+        if (events != null)
+        {
+            String defaultNamespace = portletWindow.getPortletEntity().getPortletDefinition().getApplication()
+                                                   .getDefaultNamespace();
+            for (EventDefinitionReference ref : events)
+            {
+                QName name = ref.getQualifiedName(defaultNamespace);
+                if (name == null)
+                {
+                    continue;
+                }
+                if (qname.equals(name))
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private boolean isValueInstanceOfDefinedClass(QName qname, Serializable value)
+    {
+        PortletApplicationDefinition app = portletWindow.getPortletEntity().getPortletDefinition().getApplication();
+        List<? extends EventDefinition> events = app.getEventDefinitions();
+        if (events != null)
+        {
+            for (EventDefinition def : events)
+            {
+                if (def.getQName() != null)
+                {
+                    if (def.getQName().equals(qname))
+                    {
+                        return value.getClass().getName().equals(def.getValueType());
+                    }
+                }
+                else
+                {
+                    QName tmp = new QName(app.getDefaultNamespace(), def.getName());
+                    if (tmp.equals(qname))
+                    {
+                        return value.getClass().getName().equals(def.getValueType());
+                    }
+                }
+            }
+        }
+        // event not declared
+        return true;
+    }
+}

Propchange: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletActionResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletActionResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletActionResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletActionResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -17,12 +17,17 @@
 
 package org.apache.pluto.driver.services.container;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.pluto.container.PortletActionResponseContext;
 import org.apache.pluto.container.PortletContainer;
 import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.driver.core.PortalRequestContext;
+import org.apache.pluto.driver.url.PortalURL;
 
 /**
  * @version $Id$
@@ -31,43 +36,66 @@
 public class PortletActionResponseContextImpl extends PortletStateAwareResponseContextImpl implements
                 PortletActionResponseContext
 {
-    public PortletActionResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                            HttpServletResponse response, PortletWindow window)
+    private boolean redirect;
+    private String redirectLocation;
+    private String renderURLParamName;
+    
+    public PortletActionResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                            HttpServletResponse containerResponse, PortletWindow window)
     {
-        super(container, request, response, window);
+        super(container, containerRequest, containerResponse, window);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletActionResponseContext#getResponseURL()
-     */
     public String getResponseURL()
     {
-        // TODO Auto-generated method stub
+        if (!isReleased())
+        {
+            close();
+            if (!redirect || renderURLParamName != null)
+            {
+                PortalURL url = PortalRequestContext.getContext(getServletRequest()).createPortalURL();
+                if (redirect)
+                {
+                    try
+                    {
+                        return redirectLocation + "?" + URLEncoder.encode(renderURLParamName, "UTF-8") + "=" + URLEncoder.encode(url.toURL(true), "UTF-8");
+                    }
+                    catch (UnsupportedEncodingException e)
+                    {
+                        // Cannot happen: UTF-8 is a buildin/required encoder
+                        return null;
+                    }
+                }
+                else
+                {
+                    return url.toURL(false);
+                }
+            }
+            else
+            {
+                return redirectLocation;
+            }
+        }
         return null;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletActionResponseContext#isRedirect()
-     */
     public boolean isRedirect()
     {
-        // TODO Auto-generated method stub
-        return false;
+        return redirect;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletActionResponseContext#setRedirect(java.lang.String)
-     */
     public void setRedirect(String location)
     {
-        // TODO Auto-generated method stub
+        setRedirect(location, null);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletActionResponseContext#setRedirect(java.lang.String, java.lang.String)
-     */
     public void setRedirect(String location, String renderURLParamName)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            this.redirectLocation = location;
+            this.renderURLParamName = renderURLParamName;
+            this.redirect = true;
+        }
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletEventResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletEventResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletEventResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletEventResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -32,9 +32,9 @@
                 PortletEventResponseContext
 {
 
-    public PortletEventResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                           HttpServletResponse response, PortletWindow window)
+    public PortletEventResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                           HttpServletResponse containerResponse, PortletWindow window)
     {
-        super(container, request, response, window);
+        super(container, containerRequest, containerResponse, window);
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -17,6 +17,7 @@
 
 package org.apache.pluto.driver.services.container;
 
+import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.util.Locale;
@@ -30,6 +31,7 @@
 import org.apache.pluto.container.PortletURLProvider;
 import org.apache.pluto.container.PortletWindow;
 import org.apache.pluto.container.PortletURLProvider.TYPE;
+import org.apache.pluto.container.util.PrintWriterServletOutputStream;
 
 /**
  * @version $Id$
@@ -37,130 +39,179 @@
  */
 public abstract class PortletMimeResponseContextImpl extends PortletResponseContextImpl implements PortletMimeResponseContext
 {
-    public PortletMimeResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                          HttpServletResponse response, PortletWindow window)
+    private static class CacheControlImpl implements CacheControl
     {
-        super(container, request, response, window);
+        private String eTag;
+        private int expirationTime;
+        private boolean publicScope;
+        private boolean cachedContent;
+        
+        public CacheControlImpl()
+        {
+        }
+
+        public boolean useCachedContent()
+        {
+            return cachedContent;
+        }
+
+        public String getETag()
+        {
+            return this.eTag;
+        }
+
+        public int getExpirationTime()
+        {
+            return expirationTime;
+        }
+
+        public boolean isPublicScope()
+        {
+            return publicScope;
+        }
+
+        public void setETag(String eTag)
+        {
+            this.eTag = eTag;
+        }
+
+        public void setExpirationTime(int expirationTime)
+        {
+            this.expirationTime = expirationTime;
+        }
+
+        public void setPublicScope(boolean publicScope)
+        {
+            this.publicScope = publicScope;
+        }
+
+        public void setUseCachedContent(boolean cachedContent)
+        {
+            this.cachedContent = cachedContent;
+        }
+    }
+    
+    private CacheControl cacheControl;
+    private OutputStream outputStream;
+    
+    public PortletMimeResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                          HttpServletResponse containerResponse, PortletWindow window)
+    {
+        super(container, containerRequest, containerResponse, window);
+    }
+    
+    public void close()
+    {
+        cacheControl = null;
+        outputStream = null;
+        super.close();
+    }
+
+    public void flushBuffer() throws IOException
+    {
+        if (!isClosed())
+        {
+            getServletResponse().flushBuffer();
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#flushBuffer()
-     */
-    public void flushBuffer()
-    {
-        // TODO Auto-generated method stub
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getBufferSize()
-     */
     public int getBufferSize()
     {
-        // TODO Auto-generated method stub
-        return 0;
+        return getServletResponse().getBufferSize();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getCacheControl()
-     */
     public CacheControl getCacheControl()
     {
-        // TODO Auto-generated method stub
-        return null;
+        if (isClosed())
+        {
+            return null;
+        }
+        if (cacheControl == null)
+        {
+            cacheControl = new CacheControlImpl();
+        }
+        return cacheControl;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getCharacterEncoding()
-     */
     public String getCharacterEncoding()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : getServletResponse().getCharacterEncoding();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getContentType()
-     */
     public String getContentType()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : getServletResponse().getContentType();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getLocale()
-     */
     public Locale getLocale()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : getServletResponse().getLocale();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getOutputStream()
-     */
-    public OutputStream getOutputStream()
+    public OutputStream getOutputStream() throws IOException, IllegalStateException
     {
-        // TODO Auto-generated method stub
-        return null;
+        if (isClosed())
+        {
+            return null;
+        }
+        if (outputStream == null)
+        {
+            try
+            {
+                outputStream = getServletResponse().getOutputStream();
+            }
+            catch (IllegalStateException e)
+            {
+                // handle situation where underlying ServletResponse its getWriter()
+                // has been called already anyway: return a wrapped PrintWriter in that case
+                outputStream = new PrintWriterServletOutputStream(getServletResponse().getWriter(),
+                                                                   getServletResponse().getCharacterEncoding());
+            }
+        }
+        return outputStream;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#getWriter()
-     */
-    public PrintWriter getWriter()
+    public PrintWriter getWriter() throws IOException, IllegalStateException
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : getServletResponse().getWriter();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#isCommitted()
-     */
     public boolean isCommitted()
     {
-        // TODO Auto-generated method stub
-        return false;
+        return getServletResponse().isCommitted();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#reset()
-     */
     public void reset()
     {
-        // TODO Auto-generated method stub
+        getServletResponse().reset();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#resetBuffer()
-     */
     public void resetBuffer()
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletResponse().resetBuffer();
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#setBufferSize(int)
-     */
     public void setBufferSize(int size)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletResponse().setBufferSize(size);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletMimeResponseContext#setContentType(java.lang.String)
-     */
     public void setContentType(String contentType)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletResponse().setContentType(contentType);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletMimeResponseContext#getPortletURLProvider(org.apache.pluto.container.PortletURLProvider.TYPE)
-     */
     public PortletURLProvider getPortletURLProvider(TYPE type)
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : new PortletURLProviderImpl(getPortalURL(), type, getPortletWindow());
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRenderResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRenderResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRenderResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRenderResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -26,6 +26,7 @@
 import org.apache.pluto.container.PortletContainer;
 import org.apache.pluto.container.PortletRenderResponseContext;
 import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.driver.AttributeKeys;
 
 /**
  * @version $Id$
@@ -34,25 +35,22 @@
 public class PortletRenderResponseContextImpl extends PortletMimeResponseContextImpl implements
                 PortletRenderResponseContext
 {
-    public PortletRenderResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                            HttpServletResponse response, PortletWindow window)
+    public PortletRenderResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                            HttpServletResponse containerResponse, PortletWindow window)
     {
-        super(container, request, response, window);
+        super(container, containerRequest, containerResponse, window);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRenderResponseContext#setNextPossiblePortletModes(java.util.Collection)
-     */
     public void setNextPossiblePortletModes(Collection<PortletMode> portletModes)
     {
-        // TODO Auto-generated method stub
+        // not supported
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRenderResponseContext#setTitle(java.lang.String)
-     */
     public void setTitle(String title)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletRequest().setAttribute(AttributeKeys.PORTLET_TITLE, title);
+        }
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java Sat Mar 14 03:20:18 2009
@@ -17,18 +17,26 @@
 
 package org.apache.pluto.driver.services.container;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
 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;
 
-import org.apache.pluto.container.ContainerPortletConfig;
 import org.apache.pluto.container.PortletContainer;
 import org.apache.pluto.container.PortletRequestContext;
 import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.driver.core.PortalRequestContext;
+import org.apache.pluto.driver.url.PortalURL;
+import org.apache.pluto.driver.url.PortalURLParameter;
 
 /**
  * @version $Id$
@@ -37,136 +45,239 @@
 public class PortletRequestContextImpl implements PortletRequestContext
 {
     private PortletContainer container;
-    private HttpServletRequest request;
-    private HttpServletResponse response;
+    private HttpServletRequest containerRequest;
+    private HttpServletResponse containerResponse;
+    private HttpServletRequest servletRequest;
+    private HttpServletResponse servletResponse;
     private PortletWindow window;
+    private PortalURL url;
+    private PortletContext portletContext;
+    private ServletContext servletContext;
+    private Cookie cookies[];
+    private boolean useRequestParameters;
     
-    public PortletRequestContextImpl(PortletContainer container, HttpServletRequest request,
-                                     HttpServletResponse response, PortletWindow window)
+    public PortletRequestContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                     HttpServletResponse containerResponse, PortletWindow window, boolean useRequestParameters)
     {
         this.container = container;
-        this.request = request;
-        this.response = response;
+        this.containerRequest = containerRequest;
+        this.containerResponse = containerResponse;
         this.window = window;
+        this.useRequestParameters = useRequestParameters;
+        this.url = PortalRequestContext.getContext(containerRequest).createPortalURL();
+    }
+    
+    protected boolean isReservedAttributeName(String name)
+    {
+        return name.startsWith("java.") || name.startsWith("javax.");
+    }
+    
+    protected String encodeAttributeName(String name)
+    {
+        if (isReservedAttributeName(name))
+        {
+            return name;
+        }
+        return container.getOptionalContainerServices().getNamespaceMapper().encode(window.getId(), name);
+    }
+    
+    protected String decodeAttributeName(String name)
+    {
+        if (isReservedAttributeName(name))
+        {
+            return name;
+        }
+        String result = container.getOptionalContainerServices().getNamespaceMapper().decode(window.getId(), name);
+        return result != null ? result : name;
+    }
+    
+    protected Map<String, String[]> getPrivateRenderParameterMap()
+    {
+        return Collections.emptyMap();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getAttribute(java.lang.String)
-     */
+    protected PortalURL getPortalURL()
+    {
+        return url;
+    }
+    
+    protected boolean isPublicRenderParameter(String name)
+    {
+        List<String> publicRenderParameterNames = window.getPortletEntity().getPortletDefinition().getSupportedPublicRenderParameters();
+        return publicRenderParameterNames.isEmpty() ? false : publicRenderParameterNames.contains(name);
+    }
+        
+    public void init(PortletContext portletContext, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    {
+        this.portletContext = portletContext;
+        this.servletContext = servletContext;
+        this.servletRequest = servletRequest;
+        this.servletResponse = servletResponse;
+    }
+    
     public Object getAttribute(String name)
     {
-        // TODO Auto-generated method stub
-        return null;
+        Object value = servletRequest.getAttribute(encodeAttributeName(name));
+        return value != null ? value : servletRequest.getAttribute(name);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getAttributeNames()
-     */
+    @SuppressWarnings("unchecked")
     public Enumeration<String> getAttributeNames()
     {
-        // TODO Auto-generated method stub
-        return null;
+        ArrayList<String> names = new ArrayList<String>();
+        for (Enumeration<String> e = servletRequest.getAttributeNames(); e.hasMoreElements();)
+        {
+            names.add(decodeAttributeName(e.nextElement()));
+        }
+        return Collections.enumeration(names);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getContainer()
-     */
+    public void setAttribute(String name, Object value)
+    {
+        if (value == null)
+        {
+            servletRequest.removeAttribute(encodeAttributeName(name));
+        }
+        else
+        {
+            servletRequest.setAttribute(encodeAttributeName(name), value);
+        }
+    }
+    
     public PortletContainer getContainer()
     {
         return container;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getCookies()
-     */
     public Cookie[] getCookies()
     {
-        // TODO Auto-generated method stub
-        return null;
+        if (cookies == null)
+        {
+            cookies = servletRequest.getCookies();
+            if (cookies == null)
+            {
+                cookies = new Cookie[0];
+            }
+        }
+        return cookies.length > 0 ? cookies.clone() : null;
+    }
+
+    public PortletContext getPortletContext()
+    {
+        return portletContext;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getPortletConfig()
-     */
-    public ContainerPortletConfig getPortletConfig()
+    public ServletContext getServletContext()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return servletContext;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getPortletWindow()
-     */
     public PortletWindow getPortletWindow()
     {
         return window;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getPreferredLocale()
-     */
     public Locale getPreferredLocale()
     {
-        // TODO Auto-generated method stub
-        return null;
-    }
+        return servletRequest.getLocale();
+    }       
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getPrivateParameterMap()
-     */
+    @SuppressWarnings("unchecked")
     public Map<String, String[]> getPrivateParameterMap()
     {
-        // TODO Auto-generated method stub
-        return null;
+        HashMap<String, String[]> parameters = new HashMap<String, String[]>();
+        if (useRequestParameters)
+        {
+            parameters.putAll(servletRequest.getParameterMap());
+        }
+        for (Map.Entry<String, String[]> entry : getPrivateRenderParameterMap().entrySet())
+        {
+            String[] values = parameters.get(entry.getKey());
+            if (values == null)
+            {
+                parameters.put(entry.getKey(), entry.getValue());
+            }
+            else
+            {
+                String[] copy = new String[values.length+entry.getValue().length];
+                System.arraycopy(values, 0, copy, 0, values.length);
+                System.arraycopy(entry.getValue(), 0, copy, values.length, entry.getValue().length);
+                parameters.put(entry.getKey(), copy);
+            }
+        }        
+        String windowId = window.getId().getStringId();
+        for (PortalURLParameter parm : url.getParameters())
+        {
+            if (windowId.equals(parm.getWindowId()))
+            {
+                String[] values = parameters.get(parm.getName());
+                if (values == null)
+                {
+                    parameters.put(parm.getName(), parm.getValues());
+                }
+                else
+                {
+                    String[] copy = new String[values.length+parm.getValues().length];
+                    System.arraycopy(values, 0, copy, 0, values.length);
+                    System.arraycopy(parm.getValues(), 0, copy, values.length, parm.getValues().length);
+                    parameters.put(parm.getName(), copy);
+                }
+            }                            
+        }
+        return parameters;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getProperties()
-     */
+    @SuppressWarnings("unchecked")
     public Map<String, String[]> getProperties()
     {
-        // TODO Auto-generated method stub
-        return null;
+        HashMap<String, String[]> properties = new HashMap<String, String[]>();
+        for (Enumeration<String> names = servletRequest.getHeaderNames(); names.hasMoreElements(); )
+        {
+            String name = names.nextElement();
+            ArrayList<String> values = new ArrayList<String>();
+            for (Enumeration<String> headers = servletRequest.getHeaders(name); headers.hasMoreElements(); )
+            {
+                values.add(headers.nextElement());
+            }
+            int size = values.size();
+            if (size > 0)
+            {
+                properties.put(name, values.toArray(new String[size]));
+            }
+        }
+        return properties;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getPublicParameterMap()
-     */
     public Map<String, String[]> getPublicParameterMap()
     {
-        // TODO Auto-generated method stub
-        return null;
+        HashMap<String, String[]> parameters = new HashMap<String, String[]>();
+        for (Map.Entry<String, String[]> entry : url.getPublicParameters().entrySet())
+        {
+            if (isPublicRenderParameter(entry.getKey()))
+            {
+                parameters.put(entry.getKey(), entry.getValue());
+            }                            
+        }
+        return parameters;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getServletRequest()
-     */
-    public HttpServletRequest getServletRequest()
+    public HttpServletRequest getContainerRequest()
     {
-        return request;
+        return containerRequest;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#getServletResponse()
-     */
-    public HttpServletResponse getServletResponse()
+    public HttpServletResponse getContainerResponse()
     {
-        return response;
+        return containerResponse;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#init(org.apache.pluto.internal.InternalPortletConfig)
-     */
-    public void init(ContainerPortletConfig portletConfig)
+    public HttpServletRequest getServletRequest()
     {
-        // TODO Auto-generated method stub
+        return servletRequest;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletRequestContext#setAttribute(java.lang.String, java.lang.Object)
-     */
-    public void setAttribute(String name, Object value)
+    public HttpServletResponse getServletResponse()
     {
-        // TODO Auto-generated method stub
+        return servletResponse;
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextServiceImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextServiceImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextServiceImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextServiceImpl.java Sat Mar 14 03:20:18 2009
@@ -36,60 +36,60 @@
  */
 public class PortletRequestContextServiceImpl implements PortletRequestContextService
 {
-    public PortletRequestContext getPortletActionRequestContext(PortletContainer container, HttpServletRequest request,
-                                                                HttpServletResponse response, PortletWindow window)
+    public PortletRequestContext getPortletActionRequestContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                                HttpServletResponse containerResponse, PortletWindow window)
     {
-        return new PortletRequestContextImpl(container, request, response, window);
+        return new PortletRequestContextImpl(container, containerRequest, containerResponse, window, true);
     }
 
     public PortletActionResponseContext getPortletActionResponseContext(PortletContainer container,
-                                                                        HttpServletRequest request,
-                                                                        HttpServletResponse response,
+                                                                        HttpServletRequest containerRequest,
+                                                                        HttpServletResponse containerResponse,
                                                                         PortletWindow window)
     {
-        return new PortletActionResponseContextImpl(container, request, response, window);
+        return new PortletActionResponseContextImpl(container, containerRequest, containerResponse, window);
     }
 
-    public PortletRequestContext getPortletEventRequestContext(PortletContainer container, HttpServletRequest request,
-                                                               HttpServletResponse response, PortletWindow window)
+    public PortletRequestContext getPortletEventRequestContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                               HttpServletResponse containerResponse, PortletWindow window)
     {
-        return new PortletRequestContextImpl(container, request, response, window);
+        return new PortletRequestContextImpl(container, containerRequest, containerResponse, window, false);
     }
 
     public PortletEventResponseContext getPortletEventResponseContext(PortletContainer container,
-                                                                      HttpServletRequest request,
-                                                                      HttpServletResponse response, PortletWindow window)
+                                                                      HttpServletRequest containerRequest,
+                                                                      HttpServletResponse containerResponse, PortletWindow window)
     {
-        return new PortletEventResponseContextImpl(container, request, response, window);
+        return new PortletEventResponseContextImpl(container, containerRequest, containerResponse, window);
     }
 
-    public PortletRequestContext getPortletRenderRequestContext(PortletContainer container, HttpServletRequest request,
-                                                                HttpServletResponse response, PortletWindow window)
+    public PortletRequestContext getPortletRenderRequestContext(PortletContainer container, HttpServletRequest containerRequest,
+                                                                HttpServletResponse containerResponse, PortletWindow window)
     {
-        return new PortletRequestContextImpl(container, request, response, window);
+        return new PortletRequestContextImpl(container, containerRequest, containerResponse, window, false);
     }
 
     public PortletRenderResponseContext getPortletRenderResponseContext(PortletContainer container,
-                                                                        HttpServletRequest request,
-                                                                        HttpServletResponse response,
+                                                                        HttpServletRequest containerRequest,
+                                                                        HttpServletResponse containerResponse,
                                                                         PortletWindow window)
     {
-        return new PortletRenderResponseContextImpl(container, request, response, window);
+        return new PortletRenderResponseContextImpl(container, containerRequest, containerResponse, window);
     }
 
     public PortletResourceRequestContext getPortletResourceRequestContext(PortletContainer container,
-                                                                          HttpServletRequest request,
-                                                                          HttpServletResponse response,
+                                                                          HttpServletRequest containerRequest,
+                                                                          HttpServletResponse containerResponse,
                                                                           PortletWindow window)
     {
-        return new PortletResourceRequestContextImpl(container, request, response, window);
+        return new PortletResourceRequestContextImpl(container, containerRequest, containerResponse, window);
     }
 
     public PortletResourceResponseContext getPortletResourceResponseContext(PortletContainer container,
-                                                                            HttpServletRequest request,
-                                                                            HttpServletResponse response,
+                                                                            HttpServletRequest containerRequest,
+                                                                            HttpServletResponse containerResponse,
                                                                             PortletWindow window)
     {
-        return new PortletResourceResponseContextImpl(container, request, response, window);
+        return new PortletResourceResponseContextImpl(container, containerRequest, containerResponse, window);
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java Sat Mar 14 03:20:18 2009
@@ -33,36 +33,24 @@
 public class PortletResourceRequestContextImpl extends PortletRequestContextImpl implements
                 PortletResourceRequestContext
 {
-    public PortletResourceRequestContextImpl(PortletContainer container, HttpServletRequest request,
-                                             HttpServletResponse response, PortletWindow window)
+    public PortletResourceRequestContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                             HttpServletResponse containerResponse, PortletWindow window)
     {
-        super(container, request, response, window);
+        super(container, containerRequest, containerResponse, window, true);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResourceRequestContext#getCacheability()
-     */
     public String getCacheability()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return getPortalURL().getCacheability();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResourceRequestContext#getPrivateRenderParameterMap()
-     */
     public Map<String, String[]> getPrivateRenderParameterMap()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return getPortalURL().getPrivateRenderParameters();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResourceRequestContext#getResourceID()
-     */
     public String getResourceID()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return getPortalURL().getResourceID();
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -34,33 +34,33 @@
                 PortletResourceResponseContext
 {
     
-    public PortletResourceResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                              HttpServletResponse response, PortletWindow window)
+    public PortletResourceResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                              HttpServletResponse containerResponse, PortletWindow window)
     {        
-        super(container, request, response, window);
+        super(container, containerRequest, containerResponse, window);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResourceResponseContext#setCharacterEncoding(java.lang.String)
-     */
     public void setCharacterEncoding(String charset)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletResponse().setCharacterEncoding(charset);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResourceResponseContext#setContentLength(int)
-     */
     public void setContentLength(int len)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletResponse().setContentLength(len);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResourceResponseContext#setLocale(java.util.Locale)
-     */
     public void setLocale(Locale locale)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            getServletResponse().setLocale(locale);
+        }
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -25,6 +25,8 @@
 import org.apache.pluto.container.PortletResponseContext;
 import org.apache.pluto.container.PortletWindow;
 import org.apache.pluto.container.ResourceURLProvider;
+import org.apache.pluto.driver.core.PortalRequestContext;
+import org.apache.pluto.driver.url.PortalURL;
 import org.w3c.dom.Element;
 
 /**
@@ -34,105 +36,116 @@
 public abstract class PortletResponseContextImpl implements PortletResponseContext
 {
     private PortletContainer container;
-    private HttpServletRequest request;
-    private HttpServletResponse response;
+    private HttpServletRequest containerRequest;
+    private HttpServletResponse containerResponse;
+    private HttpServletRequest servletRequest;
+    private HttpServletResponse servletResponse;
     private PortletWindow window;
+    private PortalURL portalURL;
+    private boolean closed;
+    private boolean released;
     
-    public PortletResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                      HttpServletResponse response, PortletWindow window)
+    public PortletResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                      HttpServletResponse containerResponse, PortletWindow window)
     {
         this.container = container;
-        this.request = request;
-        this.response = response;
+        this.containerRequest = containerRequest;
+        this.containerResponse = containerResponse;
         this.window = window;
+        this.portalURL = PortalRequestContext.getContext(containerRequest).createPortalURL();
+    }
+    
+    protected PortalURL getPortalURL()
+    {
+        return portalURL;
+    }
+
+    protected boolean isClosed()
+    {
+        return closed;
+    }
+    
+    protected boolean isReleased()
+    {
+        return released;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#addProperty(javax.servlet.http.Cookie)
-     */
+    public void init(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+    {
+        this.servletRequest = servletRequest;
+        this.servletResponse = servletResponse;
+    }
+    
     public void addProperty(Cookie cookie)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            servletResponse.addCookie(cookie);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#addProperty(java.lang.String, org.w3c.dom.Element)
-     */
     public void addProperty(String key, Element element)
     {
-        // TODO Auto-generated method stub
+        // not supported 
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#addProperty(java.lang.String, java.lang.String)
-     */
     public void addProperty(String key, String value)
     {
-        // TODO Auto-generated method stub
+        // not supported
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#close()
-     */
     public void close()
     {
-        // TODO Auto-generated method stub
+        closed = true;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#getContainer()
-     */
     public PortletContainer getContainer()
     {
         return container;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#getPortletWindow()
-     */
     public PortletWindow getPortletWindow()
     {
         return window;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#getServletRequest()
-     */
+    public HttpServletRequest getContainerRequest()
+    {
+        return containerRequest;
+    }
+
+    public HttpServletResponse getContainerResponse()
+    {
+        return containerResponse;
+    }
+
     public HttpServletRequest getServletRequest()
     {
-        return request;
+        return servletRequest;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#getServletResponse()
-     */
     public HttpServletResponse getServletResponse()
     {
-        return response;
+        return servletResponse;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#release()
-     */
     public void release()
     {
-        // TODO Auto-generated method stub
+        closed = true;
+        released = true;
+        container = null;
+        servletRequest = null;
+        servletResponse = null;
+        window = null;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletResponseContext#setProperty(java.lang.String, java.lang.String)
-     */
     public void setProperty(String key, String value)
     {
-        // TODO Auto-generated method stub
+        // not supported
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletResponseContext#getResourceURLProvider()
-     */
     public ResourceURLProvider getResourceURLProvider()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isReleased() ? null : new ResourceURLProviderImpl(servletRequest,window);
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java Sat Mar 14 03:20:18 2009
@@ -17,9 +17,9 @@
 
 package org.apache.pluto.driver.services.container;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.portlet.Event;
 import javax.portlet.PortletMode;
@@ -30,7 +30,12 @@
 import org.apache.pluto.container.EventProvider;
 import org.apache.pluto.container.PortletContainer;
 import org.apache.pluto.container.PortletStateAwareResponseContext;
+import org.apache.pluto.container.PortletURLProvider;
 import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.container.driver.PlutoServices;
+import org.apache.pluto.container.impl.PortletURLImpl;
+import org.apache.pluto.driver.core.PortalRequestContext;
+import org.apache.pluto.driver.url.PortalURL;
 
 /**
  * @version $Id$
@@ -39,79 +44,92 @@
 public abstract class PortletStateAwareResponseContextImpl extends PortletResponseContextImpl implements
                 PortletStateAwareResponseContext
 {
-    public PortletStateAwareResponseContextImpl(PortletContainer container, HttpServletRequest request,
-                                                HttpServletResponse response, PortletWindow window)
-    {
-        super(container, request, response, window);
+    private List<Event> events;
+    private PortletURLProviderImpl portletURLProvider;
+    
+    public PortletStateAwareResponseContextImpl(PortletContainer container, HttpServletRequest containerRequest,
+                                                HttpServletResponse containerResponse, PortletWindow window)
+    {
+        super(container, containerRequest, containerResponse, window);
+        this.portletURLProvider = new PortletURLProviderImpl(getPortalURL(), PortletURLProvider.TYPE.RENDER, window);
+    }
+    
+    protected PortletURLProvider getPorletURLProvider()
+    {
+        return portletURLProvider;
+    }
+    
+    @Override
+    public void close()
+    {
+        if (!isClosed())
+        {
+            super.close();
+            new PortletURLImpl(this, portletURLProvider).filterURL();
+            PortalURL url = portletURLProvider.apply();
+            PortalRequestContext.getContext(getServletRequest()).mergePortalURL(url, getPortletWindow().getId().getStringId());
+        }
+    }
+    
+    @Override
+    public void release()
+    {
+        events = null;
+        portletURLProvider = null;
+        super.release();
     }
-
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#getEvents()
-     */
+    
     public List<Event> getEvents()
     {
-        // TODO Auto-generated method stub
-        return null;
+        if (isReleased())
+        {
+            return null;
+        }
+        if (events == null)
+        {
+            events = new ArrayList<Event>();
+        }
+        return events;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#getPortletMode()
-     */
     public PortletMode getPortletMode()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : portletURLProvider.getPortletMode();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletStateAwareResponseContext#getPublicRenderParameters()
-     */
     public Map<String, String[]> getPublicRenderParameters()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : portletURLProvider.getPublicRenderParameters();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#getRenderParameters()
-     */
     public Map<String, String[]> getRenderParameters()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : portletURLProvider.getRenderParameters();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#getWindowState()
-     */
     public WindowState getWindowState()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : portletURLProvider.getWindowState();
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#setPortletMode(javax.portlet.PortletMode)
-     */
     public void setPortletMode(PortletMode portletMode)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            portletURLProvider.setPortletMode(portletMode);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#setWindowState(javax.portlet.WindowState)
-     */
     public void setWindowState(WindowState windowState)
     {
-        // TODO Auto-generated method stub
+        if (!isClosed())
+        {
+            portletURLProvider.setWindowState(windowState);
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletStateAwareResponseContext#getEventProvider()
-     */
     public EventProvider getEventProvider()
     {
-        // TODO Auto-generated method stub
-        return null;
+        return isClosed() ? null : new EventProviderImpl(getPortletWindow(), PlutoServices.getServices().getPortletRegistryService());
     }
 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java Sat Mar 14 03:20:18 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.pluto.driver.services.container;
 
+import java.io.IOException;
 import java.io.Writer;
 import java.util.HashMap;
 import java.util.List;
@@ -34,8 +35,8 @@
 /**
  *
  */
-public class PortletURLProviderImpl implements PortletURLProvider {
-
+public class PortletURLProviderImpl implements PortletURLProvider
+{
     private final PortalURL url;
     private final TYPE type;
     private final String window;
@@ -67,10 +68,17 @@
         {
             url.setActionWindow(null);
             url.setResourceWindow(window);
-            if (ResourceURL.FULL.equals(cacheLevel) || ResourceURL.PORTLET.equals(cacheLevel))
+            if (!ResourceURL.FULL.equals(cacheLevel))
             {
-                url.clearParameters(window);                
+                for (PortalURLParameter parm : url.getParameters())
+                {
+                    if (window.equals(parm.getWindowId()))
+                    {
+                        url.getPrivateRenderParameters().put(parm.getName(), parm.getValues());
+                    }                            
+                }
             }
+            url.clearParameters(window);
         }
         else
         {
@@ -78,17 +86,19 @@
             url.setActionWindow(null);
             url.clearParameters(window);
         }
-        url.setPortletMode(window, portletMode);
-        url.setWindowState(window, windowState);
+        if (portletMode != null)
+        {
+            url.setPortletMode(window, portletMode);
+        }
+        if (windowState != null)
+        {
+            url.setWindowState(window, windowState);
+        }
         if (renderParameters != null)
         {
             for (Map.Entry<String,String[]> entry : renderParameters.entrySet())
             {
-                if (PortletURLProvider.TYPE.RESOURCE == type)
-                {
-                    url.getPrivateParameters().put(entry.getKey(), entry.getValue().clone());
-                }
-                else if (publicRenderParameters != null && !publicRenderParameters.containsKey(entry.getKey()))
+                if (publicRenderParameters == null || !publicRenderParameters.containsKey(entry.getKey()))
                 {
                     url.addParameter(new PortalURLParameter(window, entry.getKey(), entry.getValue()));
                 }
@@ -98,10 +108,11 @@
         {
             for (Map.Entry<String,String[]> entry : publicRenderParameters.entrySet())
             {
-                url.addParameter(new PortalURLParameter(window, entry.getKey(), entry.getValue() != null ? entry.getValue() : new String[]{null}));
+                url.getNewPublicParameters().put(entry.getKey(),entry.getValue() != null ? entry.getValue() : new String[]{null});
             }
         }
         url.setResourceID(resourceID);
+        url.setCacheability(cacheLevel);
         return url;
     }
     
@@ -177,31 +188,23 @@
         this.resourceID = resourceID;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletURLProvider#toURL(boolean)
-     */
     public String toURL(boolean absolute)
     {
-        // TODO Auto-generated method stub
-        return null;
+        return apply().toURL(absolute);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletURLProvider#write(java.io.Writer, boolean)
-     */
-    public void write(Writer out, boolean escapeXML)
+    public void write(Writer out, boolean escapeXML) throws IOException
     {
-        // TODO Auto-generated method stub
-        
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.pluto.container.PortletURLProvider#write(java.io.Writer)
-     */
-    public void write(Writer out)
-    {
-        // TODO Auto-generated method stub
-        
+        String result = apply().toURL(false);
+        if (escapeXML)
+        {
+            result = result.replaceAll("&", "&amp;");
+            result = result.replaceAll("<", "&lt;");
+            result = result.replaceAll(">", "&gt;");
+            result = result.replaceAll("\'", "&#039;");
+            result = result.replaceAll("\"", "&#034;");
+        }
+        out.write(result);
     }
 
     public Map<String, List<String>> getProperties()

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java Sat Mar 14 03:20:18 2009
@@ -43,7 +43,6 @@
 import org.apache.pluto.container.driver.PortletContextService;
 import org.apache.pluto.container.om.portlet.EventDefinition;
 import org.apache.pluto.container.om.portlet.PortletApplicationDefinition;
-import org.apache.pluto.driver.core.PortalServletRequest;
 
 public class PortletWindowThread extends Thread {
 	
@@ -82,7 +81,6 @@
 	public void run() {
 		super.run();
 		while (events.size() > 0) {
-			HttpServletRequest req = new PortalServletRequest(this.request, this.portletWindow);
 			try {
 //				synchronized (this) {
 					Event event = events.remove(0);
@@ -130,7 +128,7 @@
 			        		throw new IllegalStateException(e);
 						}
 			        }					
-					container.doEvent(portletWindow, req, response, event);	
+					container.doEvent(portletWindow, request, response, event);	
 //				}
 			} catch (PortletException e) {
 				LOG.warn(e);

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java Sat Mar 14 03:20:18 2009
@@ -56,7 +56,7 @@
     private static final String RESOURCE_ID = "ri";
     private static final String CACHE_LEVEL = "cl";
     private static final String RENDER_PARAM = "rp";
-    private static final String PRIVATE_PARAM = "pp";
+    private static final String PRIVATE_RENDER_PARAM = "pr";
     private static final String PUBLIC_RENDER_PARAM = "sp";
     private static final String WINDOW_STATE = "ws";
     private static final String PORTLET_MODE = "pm";
@@ -184,7 +184,7 @@
 
 
         	}
-            else if (token.startsWith(PREFIX + PRIVATE_PARAM)){
+            else if (token.startsWith(PREFIX + PRIVATE_RENDER_PARAM)){
                 String value = null;
                 if (st.hasMoreTokens()) {
                     value = st.nextToken();
@@ -193,7 +193,7 @@
                 if( param != null )
                 {
                     //set private (Resource) parameter in portalURL
-                    portalURL.getPrivateParameters().put(param.getName(), param.getValues());
+                    portalURL.getPrivateRenderParameters().put(param.getName(), param.getValues());
                 }
             }
         	else if (token.startsWith(PREFIX + PUBLIC_RENDER_PARAM)){
@@ -233,7 +233,7 @@
 
         // Start the pathInfo with the path to the render URL (page).
         if (portalURL.getRenderPath() != null) {
-        	buffer.append("/").append(portalURL.getRenderPath());
+        	buffer.append(portalURL.getRenderPath());
         }
         //Append the resource window definition, if it exists.
         if (portalURL.getResourceWindow() != null){
@@ -322,14 +322,14 @@
 
         if (portalURL.getResourceWindow() != null)
         {
-            Map<String, String[]> privateParamList = portalURL.getPrivateParameters();
+            Map<String, String[]> privateParamList = portalURL.getPrivateRenderParameters();
             if (privateParamList!=null){
                 for (Iterator iter = privateParamList.keySet().iterator();iter.hasNext();){
                     String paramname = (String)iter.next();
                     String[] tmp = privateParamList.get(paramname);
                     String valueString = encodeMultiValues(tmp);
                     if (valueString.length()>0){
-                        buffer.append("/").append(encodePublicParamname(PRIVATE_PARAM, paramname));
+                        buffer.append("/").append(encodePublicParamname(PRIVATE_RENDER_PARAM, paramname));
                         buffer.append("/").append(valueString);
                     }
                 }

Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java Sat Mar 14 03:20:18 2009
@@ -54,7 +54,7 @@
     private Map<String, String[]> publicParameterCurrent = new HashMap<String, String[]>();
 
     private Map<String, String[]> publicParameterNew = new HashMap<String, String[]>();
-    private Map<String, String[]> privateParameters = new HashMap<String, String[]>();
+    private Map<String, String[]> privateRenderParameters = new HashMap<String, String[]>();
     
     /**
      * PortalURLParser used to construct the string
@@ -249,6 +249,7 @@
     	RelativePortalURLImpl portalURL = new RelativePortalURLImpl();
     	portalURL.servletPath = this.servletPath;
     	portalURL.parameters = new HashMap<String, PortalURLParameter>(parameters);
+    	portalURL.privateRenderParameters = new HashMap<String, String[]>(privateRenderParameters);
     	portalURL.portletModes = new HashMap<String, PortletMode>(portletModes);
     	portalURL.windowStates = new HashMap<String, WindowState>(windowStates);
     	portalURL.cacheLevel = cacheLevel;
@@ -320,9 +321,9 @@
         return publicParameterNew;
     }
     
-    public Map<String, String[]> getPrivateParameters()
+    public Map<String, String[]> getPrivateRenderParameters()
     {
-        return privateParameters;
+        return privateRenderParameters;
     }
 
 

Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java Sat Mar 14 03:20:18 2009
@@ -17,7 +17,6 @@
 package org.apache.pluto.driver;
 
 import java.io.IOException;
-import java.util.Enumeration;
 
 import javax.portlet.PortletException;
 import javax.servlet.RequestDispatcher;
@@ -31,9 +30,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.container.PortletContainer;
 import org.apache.pluto.container.PortletContainerException;
-import org.apache.pluto.container.driver.PlutoServices;
-import org.apache.pluto.container.om.portlet.PortletDefinition;
-import org.apache.pluto.driver.config.DriverConfiguration;
 import org.apache.pluto.driver.core.PortalRequestContext;
 import org.apache.pluto.driver.core.PortletWindowImpl;
 import org.apache.pluto.driver.services.portal.PageConfig;
@@ -55,9 +51,6 @@
     /** The Portal Driver sServlet Context */
     private ServletContext servletContext = null;
     
-    /** Is the SupportedModesService initialized? */
-    private boolean isSupportedModesServiceInitialized = false;
-        
     public static final String DEFAULT_PAGE_URI =
     		"/WEB-INF/themes/pluto-default-theme.jsp";
     
@@ -89,7 +82,6 @@
 
     }
     
-
     /**
      * Handle all requests. All POST requests are passed to this method.
      * @param request  the incoming HttpServletRequest.
@@ -154,13 +146,6 @@
         }
         //Resource request
         else if (resourceWindowConfig != null) {
-        	try {
-        		if (request.getParameterNames().hasMoreElements())
-        			setPublicRenderParameter(request, portalURL, portalURL.getResourceWindow());
-			} catch (PortletContainerException e) {
-				LOG.error(e);
-				throw new ServletException(e);
-			}
             PortletWindowImpl portletWindow = new PortletWindowImpl(container,
                                resourceWindowConfig, portalURL);
             if (LOG.isDebugEnabled()) {
@@ -208,31 +193,6 @@
         }
     }
 
-    private void setPublicRenderParameter(HttpServletRequest request, PortalURL portalURL, String portletID)throws ServletException, PortletContainerException {    		
-		String applicationId = PortletWindowConfig.parseContextPath(portletID);
-        String applicationName = applicationId;
-        if (applicationName.length() >0 )
-        {
-            applicationName = applicationName.substring(1);
-        }
-
-		String portletName = PortletWindowConfig.parsePortletName(portletID);
-		PortletDefinition portletDD = PlutoServices.getServices().getPortletRegistryService()
-								.getPortlet(applicationName, portletName);    		
-		Enumeration<String> parameterNames = request.getParameterNames();
-		if (parameterNames != null){
-			while(parameterNames.hasMoreElements()){
-				String parameterName = parameterNames.nextElement();
-				if (portletDD.getSupportedPublicRenderParameters() != null){
-					if (portletDD.getSupportedPublicRenderParameters().contains(parameterName)){
-						String value = request.getParameter(parameterName);
-						portalURL.addPublicParameterActionResourceParameter(parameterName, value);
-					}	
-				}
-			}
-		}
-    }
-    
     /**
      * Pass all POST requests to {@link #doGet(HttpServletRequest, HttpServletResponse)}.
      * @param request  the incoming servlet request.
@@ -244,32 +204,5 @@
     throws ServletException, IOException {
         doGet(request, response);
     }
-    
-    
-    // Private Methods ---------------------------------------------------------
-    
-
-    /**
-     * Returns the config of the portal page to be rendered.
-     * @param currentURL  the current portal URL.
-     * @return the config of the portal page to be rendered.
-     */
-    private PageConfig getPageConfig(PortalURL currentURL) {
-        String requestedPageId = currentURL.getRenderPath();
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Rendering Portal: Requested Page: " + requestedPageId);
-        }
-        return getDriverConfiguration().getPageConfig(requestedPageId);
-    }
-
-    /**
-     * Returns the portal driver configuration object.
-     * @return the portal driver configuration object.
-     */
-    private DriverConfiguration getDriverConfiguration() {
-        return (DriverConfiguration) getServletContext().getAttribute(
-        		AttributeKeys.DRIVER_CONFIG);
-    }    
-        
 }
 

Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java Sat Mar 14 03:20:18 2009
@@ -127,10 +127,10 @@
     }
 
     public PortalURL createPortalURL() {
-        return (PortalURL)getRequestedPortalURL().clone();
+        return getRequestedPortalURL().clone();
     }
 
-    public synchronized void setPortalURL(PortalURL portalURL, String windowId){
+    public synchronized void mergePortalURL(PortalURL portalURL, String windowId){
         if (requestedPortalURL == null)
         {
             requestedPortalURL = portalURL;
@@ -144,6 +144,4 @@
 	public ServletContext getServletContext() {
 		return servletContext;
 	}
-
-
 }

Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalServletResponse.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalServletResponse.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalServletResponse.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalServletResponse.java Sat Mar 14 03:20:18 2009
@@ -31,7 +31,6 @@
 
     private StringWriter buffer = null;
     private PrintWriter writer = null;
-    private String contentType = "text/html";
 
     public PortalServletResponse(HttpServletResponse response) {
         super(response);
@@ -39,10 +38,6 @@
         writer = new PrintWriter(buffer);
     }
 
-    public String getContentType() {
-        return contentType;
-    }
-
     public PrintWriter getWriter() {
         return writer;
     }
@@ -56,5 +51,37 @@
         return super.getWriter();
     }
 
+    @Override
+    public void flushBuffer() throws IOException
+    {
+    }
+
+    @Override
+    public int getBufferSize()
+    {
+        return Integer.MAX_VALUE;
+    }
+
+    @Override
+    public boolean isCommitted()
+    {
+        return false;
+    }
+
+    @Override
+    public void reset()
+    {
+        resetBuffer();
+    }
 
+    @Override
+    public void resetBuffer()
+    {
+        buffer.getBuffer().setLength(0);
+    }
+
+    @Override
+    public void setBufferSize(int size)
+    {
+    }
 }

Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/tags/PortletTag.java Sat Mar 14 03:20:18 2009
@@ -32,7 +32,6 @@
 import org.apache.pluto.container.PortletWindow;
 import org.apache.pluto.driver.AttributeKeys;
 import org.apache.pluto.driver.core.PortalRequestContext;
-import org.apache.pluto.driver.core.PortalServletRequest;
 import org.apache.pluto.driver.core.PortalServletResponse;
 import org.apache.pluto.driver.core.PortletWindowImpl;
 import org.apache.pluto.driver.services.portal.PortletWindowConfig;
@@ -139,16 +138,14 @@
             }
         }
         
-        // Create portal servlet request and response to wrap the original
-        // HTTP servlet request and response.
-        PortalServletRequest portalRequest = new PortalServletRequest(
-        		(HttpServletRequest) pageContext.getRequest(), window);
+        // Create portal servlet response to wrap the original
+        // HTTP servlet response.
         PortalServletResponse portalResponse = new PortalServletResponse(
                 (HttpServletResponse) pageContext.getResponse());
         
         // Render the portlet and cache the response.
         try {
-            container.doRender(window, portalRequest, portalResponse);
+            container.doRender(window, (HttpServletRequest)pageContext.getRequest(), portalResponse);
             response = portalResponse;
             status = SUCCESS;
         } catch (Throwable th) {

Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java?rev=753593&r1=753592&r2=753593&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java Sat Mar 14 03:20:18 2009
@@ -51,7 +51,7 @@
     
     Map<String, String[]> getNewPublicParameters();
     
-    Map<String, String[]> getPrivateParameters();
+    Map<String, String[]> getPrivateRenderParameters();
     
     void setActionWindow(String actionWindow);