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;
}