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 cd...@apache.org on 2008/06/02 13:22:07 UTC
svn commit: r662396 - in
/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto:
core/PortletContainerImpl.java internal/impl/BaseURLImpl.java
Author: cdoremus
Date: Mon Jun 2 04:22:06 2008
New Revision: 662396
URL: http://svn.apache.org/viewvc?rev=662396&view=rev
Log:
Manually merged in patch from PLUTO-484. Thanks Nikita!
Modified:
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/BaseURLImpl.java
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java?rev=662396&r1=662395&r2=662396&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java Mon Jun 2 04:22:06 2008
@@ -21,15 +21,17 @@
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
-import javax.portlet.Event;
import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequest;
import javax.portlet.PortletSecurityException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
+import javax.portlet.StateAwareResponse;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.portlet.Event;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -38,27 +40,34 @@
import org.apache.pluto.OptionalContainerServices;
import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
-import org.apache.pluto.PortletEntity;
import org.apache.pluto.PortletWindow;
import org.apache.pluto.RequiredContainerServices;
-import org.apache.pluto.internal.InternalActionRequest;
-import org.apache.pluto.internal.InternalActionResponse;
-import org.apache.pluto.internal.InternalPortletContext;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
+//import org.apache.pluto.driver.core.PortletWindowImpl;
+import org.apache.pluto.internal.PortletDescriptorRegistry;
import org.apache.pluto.internal.InternalPortletRequest;
import org.apache.pluto.internal.InternalPortletResponse;
+import org.apache.pluto.internal.InternalActionRequest;
+import org.apache.pluto.internal.InternalActionResponse;
+import org.apache.pluto.internal.InternalEventRequest;
+import org.apache.pluto.internal.InternalEventResponse;
+import org.apache.pluto.internal.InternalPortletWindow;
import org.apache.pluto.internal.InternalRenderRequest;
import org.apache.pluto.internal.InternalRenderResponse;
import org.apache.pluto.internal.InternalResourceRequest;
import org.apache.pluto.internal.InternalResourceResponse;
-import org.apache.pluto.internal.impl.EventRequestImpl;
-import org.apache.pluto.internal.impl.EventResponseImpl;
-import org.apache.pluto.internal.impl.PortletRequestImpl;
-import org.apache.pluto.internal.impl.PortletResponseImpl;
import org.apache.pluto.internal.impl.StateAwareResponseImpl;
import org.apache.pluto.spi.EventProvider;
import org.apache.pluto.spi.FilterManager;
import org.apache.pluto.spi.PortletURLProvider;
import org.apache.pluto.spi.optional.PortletInvokerService;
+import org.apache.pluto.internal.impl.EventRequestImpl;
+import org.apache.pluto.internal.impl.EventResponseImpl;
+import org.apache.pluto.internal.impl.InternalPortletWindowImpl;
+import org.apache.pluto.internal.impl.PortletRequestImpl;
+import org.apache.pluto.internal.impl.PortletResponseImpl;
+import org.apache.pluto.internal.impl.ResourceRequestImpl;
+import org.apache.pluto.internal.impl.ResourceResponseImpl;
import org.apache.pluto.util.StringManager;
@@ -89,6 +98,9 @@
/** The optional container services associated with this container. */
private final OptionalContainerServices optionalContainerServices;
+ /** The servlet context associated with this container. */
+ private ServletContext servletContext;
+
/** Flag indicating whether or not we've been initialized. */
private boolean initialized = false;
@@ -117,8 +129,14 @@
* Initialize the container for use within the given configuration scope.
* @param servletContext the servlet context of the portal webapp.
*/
- public void init()
+ public void init(ServletContext servletContext)
throws PortletContainerException {
+ if (servletContext == null) {
+ throw new PortletContainerException(
+ "Unable to initialize portlet container [" + name + "]: "
+ + "servlet context is null.");
+ }
+ this.servletContext = servletContext;
this.initialized = true;
infoWithName("Container initialized successfully.");
}
@@ -135,6 +153,7 @@
* Destroy this container.
*/
public void destroy() {
+ this.servletContext = null;
this.initialized = false;
infoWithName("Container destroyed.");
}
@@ -159,37 +178,39 @@
ensureInitialized();
+ InternalPortletWindow internalPortletWindow =
+ new InternalPortletWindowImpl(
+ PortletContextManager.getPortletContext(servletContext,
+ portletWindow.getContextPath()),
+ portletWindow);
debugWithName("Render request received for portlet: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
InternalRenderRequest renderRequest = getOptionalContainerServices().getPortletEnvironmentService()
- .createRenderRequest(this, request, response, portletWindow);
+ .createRenderRequest(this, request, response, internalPortletWindow);
InternalRenderResponse renderResponse = getOptionalContainerServices().getPortletEnvironmentService()
- .createRenderResponse(this, request, response, portletWindow);
+ .createRenderResponse(this, request, response, internalPortletWindow);
- String appId = portletWindow.getPortletEntity().getPortletDefinition().getApplication().getId();
- InternalPortletContext portletContext = optionalContainerServices.getPortletRegistryService().getPortletContext(appId);
-
PortletInvokerService invoker = optionalContainerServices.getPortletInvokerService();
try {
- ContainerInvocation.setInvocation(this, portletWindow);
+ ContainerInvocation.setInvocation(this, internalPortletWindow);
//Filter initialisation
- FilterManager filterManager = filterInitialisation(portletWindow,PortletRequest.RENDER_PHASE);
- invoker.render(portletContext.getServletContext(), renderRequest, renderResponse, portletWindow, filterManager);
+ FilterManager filterManager = filterInitialisation(internalPortletWindow,PortletRequest.RENDER_PHASE);
+ invoker.render(renderRequest, renderResponse, internalPortletWindow, filterManager);
} finally {
ContainerInvocation.clearInvocation();
}
debugWithName("Portlet rendered for: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
}
/**
* Indicates that a portlet resource Serving occured in the current request and calls
* the processServeResource method of this portlet.
- * @param PortletWindow the portlet Window
+ * @param internalPortletWindow the portlet Window
* @param request the servlet request
* @param response the servlet response
* @throws PortletException if one portlet has trouble fulfilling
@@ -204,30 +225,32 @@
ensureInitialized();
+ InternalPortletWindow internalPortletWindow =
+ new InternalPortletWindowImpl(
+ PortletContextManager.getPortletContext(servletContext,
+ portletWindow.getContextPath()),
+ portletWindow);
debugWithName("Resource request received for portlet: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
InternalResourceRequest resourceRequest = getOptionalContainerServices().getPortletEnvironmentService()
- .createResourceRequest(this, request, response, portletWindow);
+ .createResourceRequest(this, request, response, internalPortletWindow);
InternalResourceResponse resourceResponse = getOptionalContainerServices().getPortletEnvironmentService()
- .createResourceResponse(this, request, response, portletWindow);
+ .createResourceResponse(this, request, response, internalPortletWindow);
- String appId = portletWindow.getPortletEntity().getPortletDefinition().getApplication().getId();
- InternalPortletContext portletContext = optionalContainerServices.getPortletRegistryService().getPortletContext(appId);
-
PortletInvokerService invoker = optionalContainerServices.getPortletInvokerService();
try {
- ContainerInvocation.setInvocation(this, portletWindow);
- FilterManager filterManager = filterInitialisation(portletWindow,PortletRequest.RESOURCE_PHASE);
- invoker.serveResource(portletContext.getServletContext(), resourceRequest, resourceResponse, portletWindow, filterManager);
+ ContainerInvocation.setInvocation(this, internalPortletWindow);
+ FilterManager filterManager = filterInitialisation(internalPortletWindow,PortletRequest.RESOURCE_PHASE);
+ invoker.serveResource(resourceRequest, resourceResponse, internalPortletWindow, filterManager);
} finally {
ContainerInvocation.clearInvocation();
}
debugWithName("Portlet resource for: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
}
/**
@@ -248,33 +271,35 @@
ensureInitialized();
+ InternalPortletWindow internalPortletWindow =
+ new InternalPortletWindowImpl(
+ PortletContextManager.getPortletContext(servletContext,
+ portletWindow.getContextPath()), portletWindow);
+
debugWithName("Action request received for portlet: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
InternalActionRequest actionRequest = getOptionalContainerServices().getPortletEnvironmentService()
- .createActionRequest(this, request, response, portletWindow);
+ .createActionRequest(this, request, response, internalPortletWindow);
InternalActionResponse actionResponse = getOptionalContainerServices().getPortletEnvironmentService()
- .createActionResponse(this, request, response, portletWindow);
-
- String appId = portletWindow.getPortletEntity().getPortletDefinition().getApplication().getId();
- InternalPortletContext portletContext = optionalContainerServices.getPortletRegistryService().getPortletContext(appId);
+ .createActionResponse(this, request, response, internalPortletWindow);
PortletInvokerService invoker = optionalContainerServices.getPortletInvokerService();
try {
- ContainerInvocation.setInvocation(this, portletWindow);
- FilterManager filterManager = filterInitialisation(portletWindow,PortletRequest.ACTION_PHASE);
- invoker.action(portletContext.getServletContext(), actionRequest, actionResponse, portletWindow, filterManager);
+ ContainerInvocation.setInvocation(this, internalPortletWindow);
+ FilterManager filterManager = filterInitialisation(internalPortletWindow,PortletRequest.ACTION_PHASE);
+ invoker.action(actionRequest, actionResponse, internalPortletWindow, filterManager);
}
finally {
ContainerInvocation.clearInvocation();
}
debugWithName("Portlet action processed for: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
- PortletURLProvider portletURLProvider = requiredContainerServices.getPortalCallbackService().getPortletURLProvider(request, portletWindow);
+ PortletURLProvider portletURLProvider = requiredContainerServices.getPortalCallbackService().getPortletURLProvider(request, internalPortletWindow);
portletURLProvider.savePortalURL(request);
saveChangedParameters((PortletRequest)actionRequest, (StateAwareResponseImpl)actionResponse, portletURLProvider);
@@ -292,7 +317,7 @@
debugWithName("No redirect location specified.");
PortletURLProvider redirectURL = requiredContainerServices
.getPortalCallbackService()
- .getPortletURLProvider(request, portletWindow);
+ .getPortletURLProvider(request, internalPortletWindow);
saveChangedParameters((PortletRequest)actionRequest, (StateAwareResponseImpl)actionResponse, redirectURL);
@@ -322,31 +347,34 @@
ensureInitialized();
+ InternalPortletWindow internalPortletWindow =
+ new InternalPortletWindowImpl(
+ PortletContextManager.getPortletContext(servletContext,
+ portletWindow.getContextPath()),
+ portletWindow);
+
debugWithName("Load request received for portlet: "
- + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ + portletWindow.getPortletName());
InternalRenderRequest renderRequest =
getOptionalContainerServices().getPortletEnvironmentService()
- .createRenderRequest(this, request, response, portletWindow);
+ .createRenderRequest(this, request, response, internalPortletWindow);
InternalRenderResponse renderResponse =
getOptionalContainerServices().getPortletEnvironmentService()
- .createRenderResponse(this, request, response, portletWindow);
-
- String appId = portletWindow.getPortletEntity().getPortletDefinition().getApplication().getId();
- InternalPortletContext portletContext = optionalContainerServices.getPortletRegistryService().getPortletContext(appId);
+ .createRenderResponse(this, request, response, internalPortletWindow);
PortletInvokerService invoker = optionalContainerServices.getPortletInvokerService();
try {
- ContainerInvocation.setInvocation(this, portletWindow);
- invoker.load(portletContext.getServletContext(), renderRequest, renderResponse, portletWindow);
+ ContainerInvocation.setInvocation(this, internalPortletWindow);
+ invoker.load(renderRequest, renderResponse, internalPortletWindow);
} finally {
ContainerInvocation.clearInvocation();
}
- debugWithName("Portlet loaded for: " + portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ debugWithName("Portlet loaded for: " + portletWindow.getPortletName());
}
@@ -356,23 +384,26 @@
throws PortletException, IOException, PortletContainerException {
ensureInitialized();
+ InternalPortletWindow internalPortletWindow =
+ new InternalPortletWindowImpl(
+ PortletContextManager.getPortletContext(servletContext,
+ portletWindow.getContextPath()), portletWindow);
+
debugWithName("Admin request received for portlet: "
- +portletWindow.getPortletEntity().getPortletDefinition().getPortletName());
+ +portletWindow.getPortletName());
InternalPortletRequest internalRequest =
- new AdminRequest(this, portletWindow, servletRequest) { };
+ new AdminRequest(this, internalPortletWindow, servletRequest) { };
InternalPortletResponse internalResponse =
- new AdminResponse(this, portletWindow, servletRequest, servletResponse);
+ new AdminResponse(this, internalPortletWindow, servletRequest, servletResponse);
- String appId = portletWindow.getPortletEntity().getPortletDefinition().getApplication().getId();
- InternalPortletContext portletContext = optionalContainerServices.getPortletRegistryService().getPortletContext(appId);
-
- PortletInvokerService invoker = optionalContainerServices.getPortletInvokerService();
+ PortletInvokerService invoker =
+ optionalContainerServices.getPortletInvokerService();
try {
- ContainerInvocation.setInvocation(this, portletWindow);
- invoker.admin(portletContext.getServletContext(), internalRequest, internalResponse, portletWindow);
+ ContainerInvocation.setInvocation(this, internalPortletWindow);
+ invoker.admin(internalRequest, internalResponse, internalPortletWindow);
} finally {
ContainerInvocation.clearInvocation();
}
@@ -400,6 +431,50 @@
return optionalContainerServices;
}
+ public PortletAppDD getPortletApplicationDescriptor(String context)
+ throws PortletContainerException {
+
+ // make sure the container has initialized
+ ensureInitialized();
+
+ // sanity check
+ if (context == null || context.trim().equals("")) {
+ final String msg = "Context was null or the empty string.";
+ errorWithName(msg);
+ throw new PortletContainerException(msg);
+ }
+
+ // obtain the context of the portlet
+ ServletContext portletCtx = PortletContextManager.getPortletContext(servletContext, context);
+ if (portletCtx == null) {
+ final String msg = "Unable to obtain the servlet context for " +
+ "portlet context [" + context + "]. Ensure the portlet has " +
+ "been deployed and that cross context support is enabled.";
+ errorWithName(msg);
+ throw new PortletContainerException(msg);
+ }
+
+ // obtain the portlet application descriptor for the portlet
+ // context.
+ PortletAppDD portletAppDD = PortletDescriptorRegistry
+ .getRegistry()
+ .getPortletAppDD(portletCtx);
+
+ // we can't return null
+ if (portletAppDD == null) {
+ final String msg = "Obtained a null portlet application description for " +
+ "portlet context [" + context + "]";
+ errorWithName(msg);
+ throw new PortletContainerException(msg);
+ }
+
+ return portletAppDD;
+ }
+
+ public ServletContext getServletContext() {
+ return servletContext;
+ }
+
/**
* Fire Event for the portlet associated with the given portlet window and eventName
* @param portletWindow the portlet window.
@@ -418,31 +493,35 @@
ensureInitialized();
+ InternalPortletWindow internalPortletWindow = new InternalPortletWindowImpl(
+ PortletContextManager.getPortletContext(servletContext,
+ window.getContextPath()), window);
+// InternalPortletWindow internalPortletWindow =
+// new PortletWindowImpl(servletContext, window);
debugWithName("Event request received for portlet: "
- + window.getPortletEntity().getPortletDefinition().getPortletName());
+ + window.getPortletName());
EventRequestImpl eventRequest = new EventRequestImpl(
- this, window, request, event);
+ this, internalPortletWindow, request, event);
EventResponseImpl eventResponse = new EventResponseImpl(
- this, window, request, response);
+ this, internalPortletWindow, request, response);
- String appId = window.getPortletEntity().getPortletDefinition().getApplication().getId();
- InternalPortletContext portletContext = optionalContainerServices.getPortletRegistryService().getPortletContext(appId);
-
PortletInvokerService invoker = optionalContainerServices.getPortletInvokerService();
try {
- ContainerInvocation.setInvocation(this, window);
- FilterManager filterManager = filterInitialisation(window,PortletRequest.EVENT_PHASE);
- invoker.event(portletContext.getServletContext(), eventRequest, eventResponse, window, filterManager);
+ ContainerInvocation.setInvocation(this, internalPortletWindow);
+ FilterManager filterManager = filterInitialisation(internalPortletWindow,PortletRequest.EVENT_PHASE);
+ invoker.event(eventRequest, eventResponse, internalPortletWindow, filterManager);
}
finally {
ContainerInvocation.clearInvocation();
}
+// PortletInvoker invoker = new PortletInvoker(internalPortletWindow);
+// invoker.event(eventRequest, eventResponse);
debugWithName("Portlet event processed for: "
- + window.getPortletEntity().getPortletDefinition().getPortletName());
+ + window.getPortletName());
// After processing event, change the redirect URL for rendering.
String location = eventResponse.getRedirectLocation();
@@ -453,7 +532,7 @@
debugWithName("No redirect location specified.");
PortletURLProvider redirectURL = requiredContainerServices
.getPortalCallbackService()
- .getPortletURLProvider(request, window);
+ .getPortletURLProvider(request, internalPortletWindow);
saveChangedParameters(eventRequest, eventResponse, redirectURL);
@@ -539,7 +618,7 @@
redirectURL.setAction(false);
// Set secure of the redirect URL if necessary.
- if (request.isSecure()) {
+ if (redirectURL.isSecureSupported()) {
try {
redirectURL.setSecure();
} catch (PortletSecurityException e) {
@@ -569,22 +648,24 @@
/**
* The method initialise the FilterManager for later use in the PortletServlet
- * @param PortletWindow the PortletWindow
+ * @param internalPortletWindow the InternalPortletWindow
* @param lifeCycle like ACTION_PHASE, RENDER_PHASE,...
* @return FilterManager
* @throws PortletContainerException
*/
- private FilterManager filterInitialisation(PortletWindow portletWindow,String lifeCycle) throws PortletContainerException{
- PortletEntity pe = portletWindow.getPortletEntity();
- return requiredContainerServices.getPortalCallbackService().getFilterManager(pe.getPortletDefinition().getApplication(),pe.getPortletDefinition().getPortletName(),lifeCycle);
+ private FilterManager filterInitialisation(InternalPortletWindow internalPortletWindow,String lifeCycle) throws PortletContainerException{
+ PortletAppDD portletAppDD = getOptionalContainerServices().getPortletRegistryService().getPortletApplicationDescriptor(internalPortletWindow.getContextPath());
+ String portletName = internalPortletWindow.getPortletName();
+
+ return requiredContainerServices.getPortalCallbackService().getFilterManager(portletAppDD,portletName,lifeCycle);
}
class AdminRequest extends PortletRequestImpl {
public AdminRequest(PortletContainer container,
- PortletWindow portletWindow,
+ InternalPortletWindow internalPortletWindow,
HttpServletRequest servletRequest) {
- super(container, portletWindow, servletRequest);
+ super(container, internalPortletWindow, servletRequest);
}
public PortletPreferences getPreferences() {
@@ -595,10 +676,10 @@
class AdminResponse extends PortletResponseImpl {
public AdminResponse(PortletContainer container,
- PortletWindow portletWindow,
+ InternalPortletWindow internalPortletWindow,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse) {
- super(container, portletWindow, servletRequest, servletResponse);
+ super(container, internalPortletWindow, servletRequest, servletResponse);
}
}
}
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/BaseURLImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/BaseURLImpl.java?rev=662396&r1=662395&r2=662396&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/BaseURLImpl.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/BaseURLImpl.java Mon Jun 2 04:22:06 2008
@@ -37,10 +37,10 @@
import org.apache.commons.logging.LogFactory;
import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
-import org.apache.pluto.PortletWindow;
-import org.apache.pluto.om.portlet.Portlet;
-import org.apache.pluto.om.portlet.PortletApp;
-import org.apache.pluto.om.portlet.Supports;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
+import org.apache.pluto.descriptors.portlet.PortletDD;
+import org.apache.pluto.descriptors.portlet.SupportsDD;
+import org.apache.pluto.internal.InternalPortletWindow;
import org.apache.pluto.spi.PortletURLListener;
import org.apache.pluto.spi.PortletURLProvider;
import org.apache.pluto.util.StringManager;
@@ -62,7 +62,7 @@
protected boolean secure;
protected PortletContainer container;
protected PortletMode mode = null;
- protected PortletWindow portletWindow;
+ protected InternalPortletWindow internalPortletWindow;
protected javax.servlet.http.HttpServletRequest servletRequest;
protected javax.servlet.http.HttpServletResponse servletResponse;
protected WindowState state;
@@ -71,12 +71,12 @@
protected PortalContext context;
public BaseURLImpl(PortletContainer container,
- PortletWindow portletWindow,
+ InternalPortletWindow internalPortletWindow,
javax.servlet.http.HttpServletRequest servletRequest,
javax.servlet.http.HttpServletResponse servletResponse,
boolean isAction, boolean isResourceServing) {
this.container = container;
- this.portletWindow = portletWindow;
+ this.internalPortletWindow = internalPortletWindow;
this.servletRequest = servletRequest;
this.servletResponse = servletResponse;
secure = servletRequest.isSecure();
@@ -105,7 +105,7 @@
throw new IllegalArgumentException(
"name and value must not be null");
}
- List<String> publicRenderParameterNames = portletWindow.getPortletEntity().getPortletDefinition().getPublicRenderParameter();
+ List<String> publicRenderParameterNames = internalPortletWindow.getPortletEntity().getPortletDefinition().getPublicRenderParameter();
if (publicRenderParameterNames == null){
parameters.put(name, new String[]{value});
}
@@ -124,7 +124,7 @@
throw new IllegalArgumentException(
"name and values must not be null or values be an empty array");
}
- List<String> publicRenderParameterNames = portletWindow.getPortletEntity().getPortletDefinition().getPublicRenderParameter();
+ List<String> publicRenderParameterNames = internalPortletWindow.getPortletEntity().getPortletDefinition().getPublicRenderParameter();
if (publicRenderParameterNames == null){
parameters.put(name, StringUtils.copy(values));
@@ -160,7 +160,7 @@
this.parameters.clear();
this.publicRenderParameters.clear();
- List<String> publicPortletRenderParameterNames = portletWindow.getPortletEntity().getPortletDefinition().getPublicRenderParameter();
+ List<String> publicPortletRenderParameterNames = internalPortletWindow.getPortletEntity().getPortletDefinition().getPublicRenderParameter();
if (parameters.keySet()!= null){
for (Object key : parameters.keySet()) {
if (publicPortletRenderParameterNames == null)
@@ -182,19 +182,23 @@
PortletURLProvider urlProvider = container
.getRequiredContainerServices()
.getPortalCallbackService()
- .getPortletURLProvider(servletRequest, portletWindow);
- if(urlProvider.isSecureSupported()) {
+ .getPortletURLProvider(servletRequest, internalPortletWindow);
+ if (urlProvider.isSecureSupported()) {
+ urlProvider.setSecure();
+ } else {
throw new PortletSecurityException("Secure URLs not supported.");
}
}
public String toString(){
+ StringBuffer url = new StringBuffer(200);
+
PortletURLProvider urlProvider = container
.getRequiredContainerServices()
.getPortalCallbackService()
- .getPortletURLProvider(servletRequest, portletWindow);
+ .getPortletURLProvider(servletRequest, internalPortletWindow);
- PortletURLListener portletURLFilterListener = container
+ PortletURLListener portletURLFilterListener = portletURLFilterListener = container
.getRequiredContainerServices()
.getPortalCallbackService().getPortletURLListener();
if (mode != null) {
@@ -209,10 +213,16 @@
else if (isResourceServing){
urlProvider.setResourceServing(true);
}
- PortletApp portletAppDD = portletWindow.getPortletEntity().getPortletDefinition().getApplication();
-// container.getOptionalContainerServices().getPortletRegistryService().getRegisteredPortletApplications()
-// PortletAppDD portletAppDD = container.getPortletApplicationDescriptor( );
- portletURLFilterListener.callListener(portletAppDD,this,isAction,isResourceServing);
+ try {
+
+ PortletAppDD portletAppDD = container.getPortletApplicationDescriptor(internalPortletWindow.getContextPath());
+// container.getOptionalContainerServices().getPortletRegistryService().getRegisteredPortletApplications()
+// PortletAppDD portletAppDD = container.getPortletApplicationDescriptor( );
+ portletURLFilterListener.callListener(portletAppDD,this,isAction,isResourceServing);
+ } catch (PortletContainerException e1) {
+ e1.printStackTrace();
+ }
+
if (secure && urlProvider.isSecureSupported()) {
try {
@@ -231,7 +241,9 @@
urlProvider.setPublicRenderParameters(publicRenderParameters);
- return urlProvider.toString();
+ url.append(urlProvider.toString());
+
+ return url.toString();
}
// --------------------------------------------------------------------------------------------
@@ -274,11 +286,11 @@
return true;
}
- Portlet dd = portletWindow.getPortletEntity()
+ PortletDD dd = internalPortletWindow.getPortletEntity()
.getPortletDefinition();
Iterator supports = dd.getSupports().iterator();
while(supports.hasNext()) {
- Supports support = (Supports)supports.next();
+ SupportsDD support = (SupportsDD)supports.next();
if (support.getPortletModes() != null){
Iterator modes = support.getPortletModes().iterator();
while(modes.hasNext()) {
@@ -322,11 +334,12 @@
}
public void write(Writer out) throws IOException {
+ StringBuffer url = new StringBuffer(200);
PortletURLProvider urlProvider = container
.getRequiredContainerServices()
.getPortalCallbackService()
- .getPortletURLProvider(servletRequest, portletWindow);
+ .getPortletURLProvider(servletRequest, internalPortletWindow);
PortletURLListener portletURLFilterListener = portletURLFilterListener = container
.getRequiredContainerServices()
@@ -343,10 +356,16 @@
else if (isResourceServing){
urlProvider.setResourceServing(true);
}
- PortletApp portletAppDD = portletWindow.getPortletEntity().getPortletDefinition().getApplication();
-// container.getOptionalContainerServices().getPortletRegistryService().getRegisteredPortletApplications()
-// PortletAppDD portletAppDD = container.getPortletApplicationDescriptor( );
- portletURLFilterListener.callListener(portletAppDD,this,isAction,isResourceServing);
+ try {
+
+ PortletAppDD portletAppDD = container.getPortletApplicationDescriptor(internalPortletWindow.getContextPath());
+// container.getOptionalContainerServices().getPortletRegistryService().getRegisteredPortletApplications()
+// PortletAppDD portletAppDD = container.getPortletApplicationDescriptor( );
+ portletURLFilterListener.callListener(portletAppDD,this,isAction,isResourceServing);
+ } catch (PortletContainerException e1) {
+ e1.printStackTrace();
+ }
+
if (secure && urlProvider.isSecureSupported()) {
try {
@@ -365,7 +384,9 @@
urlProvider.setPublicRenderParameters(publicRenderParameters);
- out.write(urlProvider.toString());
+ url.append(urlProvider.toString());
+
+ out.write(url.toString());
}
public void write(Writer out, boolean escapeXML) throws IOException {
@@ -374,12 +395,12 @@
}
public void addProperty(String key, String value) {
- container.getRequiredContainerServices().getPortalCallbackService().addResponseProperty(servletRequest, portletWindow, key, value);
+ container.getRequiredContainerServices().getPortalCallbackService().addResponseProperty(servletRequest, internalPortletWindow, key, value);
}
public void setProperty(String key, String value) {
- container.getRequiredContainerServices().getPortalCallbackService().setResponseProperty(servletRequest, portletWindow, key, value);
+ container.getRequiredContainerServices().getPortalCallbackService().setResponseProperty(servletRequest, internalPortletWindow, key, value);
}
@@ -389,7 +410,7 @@
String[] tmp1 = this.servletRequest.getParameterValues(name);
if (tmp1!=null)
lenght += tmp1.length;
- PortletURLProvider urlProvider = container.getRequiredContainerServices().getPortalCallbackService().getPortletURLProvider(servletRequest, portletWindow);
+ PortletURLProvider urlProvider = container.getRequiredContainerServices().getPortalCallbackService().getPortletURLProvider(servletRequest, internalPortletWindow);
String[] tmp2 = urlProvider.getPrivateRenderParameters(name);
if (tmp2!=null)
lenght += tmp2.length;