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/12 15:59:17 UTC
svn commit: r752882 - 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/src/main/java/org/apache/pluto/container/driver/impl/ plut...
Author: ate
Date: Thu Mar 12 14:59:12 2009
New Revision: 752882
URL: http://svn.apache.org/viewvc?rev=752882&view=rev
Log:
Several changes for PLUTO-531, PLUTO-532 and PLUTO-537
- some minor Generics cleanup in pluto-container and pluto-container-api
- some further refinements to the new Request/Response*Context interfaces
- start of reimplementing and adjusting the portal-driver Portal/PortletURL parsing/managing
NB: I've added proper support for ResourceRequest/URL Cacheability, ResourceID, and private resource parameters
- seems I'm now finally ready to provide the last bit: the implementation of the Request/Response*Context interfaces for the portal-driver
See also:
http://issues.apache.org/jira/browse/PLUTO-531
http://issues.apache.org/jira/browse/PLUTO-532
http://issues.apache.org/jira/browse/PLUTO-537
Removed:
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLListenerImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLImpl.java
Modified:
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/PortletStateAwareResponseContext.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/PortletServlet.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/CombinedPortletResourceBundle.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DummyProfile.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/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/driver/impl/ResourceBundleFactory.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventResponseImpl.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/PortletPreferenceImpl.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletSessionImpl.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/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/util/ClasspathScanner.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/StringManager.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURLParser.java
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -30,7 +30,7 @@
public interface PortletMimeResponseContext extends PortletResponseContext
{
CacheControl getCacheControl();
- PortletURLProvider getPortletURLProvider();
+ PortletURLProvider getPortletURLProvider(PortletURLProvider.TYPE type);
Locale getLocale();
String getContentType();
void setContentType(String contentType);
Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletStateAwareResponseContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletStateAwareResponseContext.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletStateAwareResponseContext.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletStateAwareResponseContext.java Thu Mar 12 14:59:12 2009
@@ -19,7 +19,6 @@
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.portlet.Event;
import javax.portlet.PortletMode;
@@ -36,7 +35,7 @@
WindowState getWindowState();
void setWindowState(WindowState windowState);
Map<String, String[]> getRenderParameters();
- Set<String> getRemovedPublicRenderParameters();
+ Map<String, String[]> getPublicRenderParameters();
EventProvider getEventProvider();
List<Event> getEvents();
}
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -19,7 +19,6 @@
import java.io.Writer;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.portlet.PortletMode;
import javax.portlet.PortletSecurityException;
@@ -34,9 +33,9 @@
*/
public interface PortletURLProvider {
- boolean isActionURL();
- boolean isRenderURL();
- boolean isResourceURL();
+ enum TYPE { ACTION, RENDER, RESOURCE };
+
+ TYPE getType();
/**
* Sets the new portlet mode at the URL. If no mode is set at the URL the
@@ -60,8 +59,7 @@
boolean isSecure();
Map<String, String[]> getRenderParameters();
- Set<String> getRemovedPublicRenderParameters();
-
+ Map<String, String[]> getPublicRenderParameters();
String getCacheability();
void setCacheability(String cacheLevel);
@@ -71,11 +69,10 @@
/**
* Returns the URL in string format
+ * @param absolute if true an absolute URL is required, like for embedding as a query parameter value
* @return the URL
*/
- String toString();
-
- String toQueryStringValue();
+ String toURL(boolean absolute);
void write(Writer out);
void write(Writer out, boolean escapeXML);
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -63,7 +63,7 @@
{
private static final long serialVersionUID = -5096339022539360365L;
- private static class NullPortlet implements EventPortlet, ResourceServingPortlet, Portlet
+ static class NullPortlet implements EventPortlet, ResourceServingPortlet, Portlet
{
public void processEvent(EventRequest arg0, EventResponse arg1)
throws PortletException, IOException
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/CombinedPortletResourceBundle.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/CombinedPortletResourceBundle.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/CombinedPortletResourceBundle.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/CombinedPortletResourceBundle.java Thu Mar 12 14:59:12 2009
@@ -16,10 +16,10 @@
*/
package org.apache.pluto.container.driver.impl;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.ResourceBundle;
-import java.util.Vector;
import org.apache.pluto.container.util.ArgumentUtility;
@@ -30,7 +30,7 @@
*/
class CombinedPortletResourceBundle extends ResourceBundle {
- private HashMap contents = new HashMap();
+ private HashMap<String, Object> contents = new HashMap<String, Object>();
public CombinedPortletResourceBundle(InlinePortletResourceBundle inlineBundle, ResourceBundle resourceBundle) {
dump(inlineBundle);
@@ -42,12 +42,12 @@
return contents.get(key);
}
- public Enumeration getKeys() {
- return new Vector(contents.keySet()).elements();
+ public Enumeration<String> getKeys() {
+ return Collections.enumeration(contents.keySet());
}
private void dump(ResourceBundle bundle) {
- Enumeration e = bundle.getKeys();
+ Enumeration<String> e = bundle.getKeys();
while(e.hasMoreElements()) {
String value = e.nextElement().toString();
contents.put(value, bundle.getObject(value));
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DummyProfile.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DummyProfile.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DummyProfile.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/DummyProfile.java Thu Mar 12 14:59:12 2009
@@ -25,7 +25,8 @@
/* (non-Javadoc)
* @see javax.ccpp.Profile#getAttributes()
*/
- public Set getAttributes() {
+ @SuppressWarnings("unchecked")
+ public Set getAttributes() {
return null;
}
@@ -39,7 +40,8 @@
/* (non-Javadoc)
* @see javax.ccpp.Profile#getComponents()
*/
- public Set getComponents() {
+ @SuppressWarnings("unchecked")
+ public Set getComponents() {
return null;
}
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -38,7 +38,7 @@
}
public InlinePortletResourceBundle(String title, String shortTitle, String keywords) {
- ArrayList temp = new ArrayList();
+ ArrayList<Object[]> temp = new ArrayList<Object[]>();
if(title != null)
temp.add(new Object[] {Constants.TITLE_KEY, title});
@@ -48,7 +48,7 @@
if(keywords != null)
temp.add(new Object[] {Constants.KEYWORDS_KEY, keywords});
- contents = (Object[][])temp.toArray(new Object[temp.size()][]);
+ contents = temp.toArray(new Object[temp.size()][]);
}
protected Object[][] getContents() {
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -175,43 +175,39 @@
if (exactServletMappingURLPatterns.contains(path))
{
servletPath = path;
- pathInfo = null;
}
- else if ( path.charAt(0) == '/' && (index = path.lastIndexOf('/')) != -1)
+ else if (path.length() == 1 && defaultServletMapping)
{
- if (path.length() == 1 && defaultServletMapping)
- {
- servletPath = path;
- pathInfo = null;
- }
- else
+ servletPath = path;
+ }
+ else
+ {
+ String sub = path;
+ index = path.lastIndexOf('/');
+ do
{
- String sub = path;
- do
+ sub = sub.substring(0, index);
+ if (pathServletMappingURLPatterns.contains(sub))
{
- sub = sub.substring(0, index);
- if (pathServletMappingURLPatterns.contains(sub))
+ servletPath = sub;
+ if (sub.length() < path.length())
{
- servletPath = sub;
pathInfo = path.substring(sub.length()+1);
- break;
}
- index = sub.lastIndexOf('/');
+ break;
}
- while (index != -1);
+ index = sub.lastIndexOf('/');
}
+ while (index != 0);
}
if (servletPath == null)
{
- ;
- if ((index = path.lastIndexOf('/')) != -1)
+ index = path.lastIndexOf('/');
+ int ext = path.indexOf('.', index);
+ if (extServletMappingURLPatterns.contains(path.substring(ext)))
{
- int ext = path.indexOf('.', index);
- if (extServletMappingURLPatterns.contains(path.substring(index)))
- {
- servletPath = path.substring(0, index);
- pathInfo = path.substring(index);
- }
+ servletPath = index > 0 ? path.substring(0, index) : "";
+ pathInfo = path.substring(index);
}
}
if (servletPath == null)
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -314,7 +314,7 @@
static {
try {
- contextPathGetter = ServletContext.class.getMethod("getContextPath", new Class[0]);
+ contextPathGetter = ServletContext.class.getMethod("getContextPath", (Class[])null);
}
catch (NoSuchMethodException e) {
LOG.warn("Servlet 2.4 or below detected. Unable to find getContextPath on ServletContext.");
@@ -325,7 +325,7 @@
String contextPath = null;
if (contextPathGetter != null) {
try {
- contextPath = (String) contextPathGetter.invoke(context, new Class[0]);
+ contextPath = (String) contextPathGetter.invoke(context, (Object[])null);
} catch (Exception e) {
LOG.warn("Unable to directly retrieve context path from ServletContext. Computing. . . ");
}
@@ -339,6 +339,7 @@
}
+ @SuppressWarnings("unchecked")
protected static String computeContextPath(ServletContext context) {
if (APP_ID_RESOLVERS.size() < 1) {
List<Class> classes = null;
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=752882&r1=752881&r2=752882&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 Thu Mar 12 14:59:12 2009
@@ -69,7 +69,7 @@
* point I'm wondering if we really want to add another
* config requirement in the servlet xml? Hmm. . .
*/
- private Map cache = new WeakHashMap();
+ private Map<ServletContext, PortletApplicationDefinition> cache = new WeakHashMap<ServletContext, PortletApplicationDefinition>();
// Constructor -------------------------------------------------------------
@@ -93,7 +93,7 @@
throws PlutoConfigurationException {
String className = Configuration.getPortletAppDescriptorServiceImpl();
try {
- Class clazz = Class.forName(className);
+ Class<?> clazz = Class.forName(className);
portletDDService = (PortletAppDescriptorService) clazz.newInstance();
} catch (ClassNotFoundException ex) {
throw new PlutoConfigurationException(
@@ -120,7 +120,7 @@
*/
public PortletApplicationDefinition getPortletAppDD(ServletContext servletContext)
throws PortletContainerException {
- PortletApplicationDefinition portletApp = (PortletApplicationDefinition) cache.get(servletContext);
+ PortletApplicationDefinition portletApp = cache.get(servletContext);
if (portletApp == null) {
portletApp = createDefinition(servletContext);
cache.put(servletContext, portletApp);
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/ResourceBundleFactory.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/ResourceBundleFactory.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/ResourceBundleFactory.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/driver/impl/ResourceBundleFactory.java Thu Mar 12 14:59:12 2009
@@ -50,7 +50,7 @@
/**
* All of the previously loaded bundles.
*/
- private Map bundles = new HashMap();
+ private Map<Locale, ResourceBundle> bundles = new HashMap<Locale, ResourceBundle>();
/**
* The name of the bundle.
@@ -87,7 +87,7 @@
// If allready loaded for this local, return immediately!
if (bundles.containsKey(locale)) {
- return (ResourceBundle) bundles.get(locale);
+ return bundles.get(locale);
}
try {
@@ -110,6 +110,6 @@
}
bundles.put(locale, defaultBundle);
}
- return (ResourceBundle)bundles.get(locale);
+ return bundles.get(locale);
}
}
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventResponseImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventResponseImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/EventResponseImpl.java Thu Mar 12 14:59:12 2009
@@ -16,13 +16,10 @@
package org.apache.pluto.container.impl;
-import java.util.Map;
-
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import org.apache.pluto.container.PortletEventResponseContext;
-import org.apache.pluto.container.PortletStateAwareResponseContext;
import org.apache.pluto.container.util.ArgumentUtility;
/**
@@ -46,7 +43,6 @@
public void setRenderParameters(EventRequest request)
{
ArgumentUtility.validateNotNull("request", request);
- Map<String, String[]> parameters = ((PortletStateAwareResponseContext)getResponseContext()).getRenderParameters();
- parameters.putAll(request.getParameterMap());
+ setRenderParameters(request.getParameterMap());
}
}
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java Thu Mar 12 14:59:12 2009
@@ -531,8 +531,8 @@
{
String servletPath = !included ? forwardedPathInfo.getServletPath() : getServletPath();
if (servletPath != null)
- {
- path = servletPath + path;
+ {
+ path = (servletPath.equals("/") ? "/" : servletPath) + path;
}
else
{
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/MimeResponseImpl.java Thu Mar 12 14:59:12 2009
@@ -30,6 +30,7 @@
import javax.portlet.ResourceURL;
import org.apache.pluto.container.PortletMimeResponseContext;
+import org.apache.pluto.container.PortletURLProvider;
import org.apache.pluto.container.om.portlet.PortletDefinition;
import org.apache.pluto.container.om.portlet.Supports;
@@ -72,18 +73,18 @@
public PortletURL createActionURL()
{
- return new PortletURLImpl(responseContext, true, false);
+ return new PortletURLImpl(responseContext, PortletURLProvider.TYPE.ACTION);
}
public PortletURL createRenderURL()
{
- return new PortletURLImpl(responseContext, false, false);
+ return new PortletURLImpl(responseContext, PortletURLProvider.TYPE.RENDER);
}
public ResourceURL createResourceURL()
{
- return new PortletURLImpl(responseContext, false, true);
+ return new PortletURLImpl(responseContext, PortletURLProvider.TYPE.RESOURCE);
}
public void flushBuffer() throws IOException
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletPreferenceImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletPreferenceImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletPreferenceImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletPreferenceImpl.java Thu Mar 12 14:59:12 2009
@@ -93,7 +93,7 @@
PortletPreferenceImpl copy = new PortletPreferenceImpl();
copy.name = this.name;
if (this.values != null) {
- copy.values = (String[]) this.values.clone();
+ copy.values = this.values.clone();
}
copy.readOnly = this.readOnly;
return copy;
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletSessionImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletSessionImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletSessionImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletSessionImpl.java Thu Mar 12 14:59:12 2009
@@ -107,6 +107,7 @@
return getAttributeNames(DEFAULT_SCOPE);
}
+ @SuppressWarnings("unchecked")
public Enumeration<String> getAttributeNames(int scope) {
// Return all attribute names in the nested HttpSession object.
if (scope == PortletSession.APPLICATION_SCOPE) {
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletURLImpl.java Thu Mar 12 14:59:12 2009
@@ -22,6 +22,7 @@
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -53,21 +54,26 @@
private PortletMimeResponseContext responseContext;
private PortalContext portalContext;
private PortletURLProvider urlProvider;
- private String cacheLevel;
+ private String cacheLevel = ResourceURL.PAGE;
private boolean filtering;
+ private boolean renderURL;
- public PortletURLImpl(PortletMimeResponseContext responseContext, boolean actionURL, boolean resourceURL)
+ public PortletURLImpl(PortletMimeResponseContext responseContext, PortletURLProvider.TYPE type)
{
this.responseContext = responseContext;
this.portalContext = responseContext.getContainer().getRequiredContainerServices().getPortalContext();
- // TODO: actionURL/resourceURL parameters
- urlProvider = responseContext.getPortletURLProvider();
+ urlProvider = responseContext.getPortletURLProvider(type);
+ renderURL = PortletURLProvider.TYPE.RENDER == type;
}
- public PortletURLImpl(PortletMimeResponseContext responseContext, boolean actionURL, boolean resourceURL, String cacheLevel)
+ public PortletURLImpl(PortletMimeResponseContext responseContext, String cacheLevel)
{
- this(responseContext, actionURL, resourceURL);
- this.cacheLevel = cacheLevel == null ? ResourceURL.PAGE : cacheLevel;
+ this(responseContext, PortletURLProvider.TYPE.RESOURCE);
+ if (cacheLevel != null)
+ {
+ this.cacheLevel = cacheLevel;
+ }
+ urlProvider.setCacheability(this.cacheLevel);
}
private boolean isPortletModeAllowed(PortletMode mode)
@@ -122,13 +128,19 @@
}
return false;
}
+
+ private boolean isPublicRenderParameter(String name)
+ {
+ List<String> publicRenderParameterNames = responseContext.getPortletWindow().getPortletEntity().getPortletDefinition().getSupportedPublicRenderParameters();
+ return publicRenderParameterNames.isEmpty() ? false : publicRenderParameterNames.contains(name);
+ }
private static String[] cloneParameterValues(String[] values)
{
int count = 0;
for (String s : values)
{
- if (!(s == null || s.length() == 0))
+ if (s != null)
{
count++;
}
@@ -143,7 +155,7 @@
count = 0;
for (String s : values)
{
- if (!(s == null || s.length() == 0))
+ if (s != null)
{
copy[count++] = s;
}
@@ -169,11 +181,11 @@
PortletApplicationDefinition portletApp = responseContext.getPortletWindow().getPortletEntity().getPortletDefinition().getApplication();
for (PortletURLGenerationListener listener : service.getPortletURLGenerationListeners(portletApp))
{
- if (urlProvider.isActionURL())
+ if (PortletURLProvider.TYPE.ACTION == urlProvider.getType())
{
listener.filterActionURL(this);
}
- else if (urlProvider.isResourceURL())
+ else if (PortletURLProvider.TYPE.RESOURCE == urlProvider.getType())
{
listener.filterResourceURL(this);
}
@@ -229,31 +241,28 @@
public void setParameter(String name, String value)
{
ArgumentUtility.validateNotEmpty("name", name);
- Map<String, String[]> parameters = urlProvider.getRenderParameters();
- if (value == null )
+ ArgumentUtility.validateNotNull("value", value);
+ String[] values = new String[]{value};
+ urlProvider.getRenderParameters().put(name, values);
+ if (renderURL && isPublicRenderParameter(name))
{
- parameters.remove(name);
- }
- else
- {
- parameters.put(name, new String[]{value});
- urlProvider.getRemovedPublicRenderParameters().remove(name);
+ urlProvider.getPublicRenderParameters().put(name, values);
}
}
public void setParameter(String name, String[] values)
{
ArgumentUtility.validateNotEmpty("name", name);
- Map<String, String[]> parameters = urlProvider.getRenderParameters();
+ ArgumentUtility.validateNotNull("values", values);
values = cloneParameterValues(values);
if (values == null )
{
- parameters.remove(name);
+ throw new IllegalStateException("Illegal Argument: values array is empty or contains only null values");
}
- else
+ urlProvider.getRenderParameters().put(name, values);
+ if (renderURL && isPublicRenderParameter(name))
{
- parameters.put(name, values);
- urlProvider.getRemovedPublicRenderParameters().remove(name);
+ urlProvider.getPublicRenderParameters().put(name, values);
}
}
@@ -262,30 +271,53 @@
ArgumentUtility.validateNotNull("parameters", parameters);
// validate map first
+ boolean emptyValuesArray;
for (Map.Entry<? extends Object, ? extends Object> entry : parameters.entrySet())
{
if (entry.getKey() == null || entry.getValue() == null)
{
- throw new IllegalArgumentException("RenderParameters contains a null key or value entry");
+ throw new IllegalArgumentException("parameters map contains a null key or value entry");
}
if (!(entry.getKey() instanceof String))
{
- throw new IllegalArgumentException("RenderParameters contains a key which is not of type String");
+ throw new IllegalArgumentException("parameters map contains a key which is not of type String");
}
if (!(entry.getValue() instanceof String[]))
{
- throw new IllegalArgumentException("RenderParameters contains a value which is not of type String[]");
+ throw new IllegalArgumentException("parameters map contains a value which is not of type String[]");
+ }
+ emptyValuesArray = true;
+ for (String s : (String[])entry.getValue())
+ {
+ if (s != null)
+ {
+ emptyValuesArray = false;
+ break;
+ }
+ }
+ if (emptyValuesArray)
+ {
+ throw new IllegalStateException("parameters map contains a values array which is empty or contains only null values");
+ }
+ }
+ urlProvider.getRenderParameters().clear();
+ if (renderURL)
+ {
+ for (Iterator<Map.Entry<String,String[]>> iter = urlProvider.getPublicRenderParameters().entrySet().iterator(); iter.hasNext();)
+ {
+ if (iter.next().getValue() != null)
+ {
+ iter.remove();
+ }
}
}
- Map<String, String[]> map = urlProvider.getRenderParameters();
- map.clear();
for (Map.Entry<String,String[]> entry : parameters.entrySet())
{
String[] values = cloneParameterValues(entry.getValue());
- if (values != null)
+ urlProvider.getRenderParameters().put(entry.getKey(), values);
+ if (renderURL && isPublicRenderParameter(entry.getKey()))
{
- map.put(entry.getKey(), values);
- urlProvider.getRemovedPublicRenderParameters().remove(entry.getKey());
+ urlProvider.getPublicRenderParameters().put(entry.getKey(), values);
}
}
}
@@ -334,7 +366,7 @@
public String toString()
{
filterURL();
- return urlProvider.toString();
+ return urlProvider.toURL(false);
}
// PortletURL impl ------------------------------------------------------------
@@ -378,16 +410,18 @@
public void removePublicRenderParameter(String name)
{
ArgumentUtility.validateNotEmpty("name", name);
- urlProvider.getRemovedPublicRenderParameters().add(name);
- urlProvider.getRenderParameters().remove(name);
+ if (isPublicRenderParameter(name))
+ {
+ urlProvider.getPublicRenderParameters().put(name, null);
+ urlProvider.getRenderParameters().remove(name);
+ }
}
// ResourceURL impl ------------------------------------------------------------
public String getCacheability()
{
- String cacheability = urlProvider.getCacheability();
- return cacheability == null ? this.cacheLevel : cacheability;
+ return urlProvider.getCacheability();
}
public void setCacheability(String cacheLevel)
@@ -399,21 +433,21 @@
}
else if (PORTLET.equals(cacheLevel))
{
- if (FULL.equals(cacheLevel))
+ if (FULL.equals(this.cacheLevel))
{
- throw new IllegalStateException("Current Cachelevel is FULL: URLs with cacheability PORTLET not allowed");
+ throw new IllegalStateException("Current request cacheablility is FULL: URLs with cacheability PORTLET not allowed");
}
}
else if (PAGE.equals(cacheLevel))
{
- if (FULL.equals(cacheLevel))
+ if (FULL.equals(this.cacheLevel))
{
- throw new IllegalStateException("Current Cachelevel is FULL: URLs with cacheability PORTLET not allowed");
+ throw new IllegalStateException("Current request cacheablility is FULL: URLs with cacheability PORTLET not allowed");
}
- else if (PORTLET.equals(cacheLevel))
+ else if (PORTLET.equals(this.cacheLevel))
{
- throw new IllegalStateException("Current Cachelevel is PORTLET: URLs with cacheability PAGE not allowed");
+ throw new IllegalStateException("Current request cacheablility is PORTLET: URLs with cacheability PAGE not allowed");
}
}
else
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceResponseImpl.java Thu Mar 12 14:59:12 2009
@@ -23,6 +23,7 @@
import javax.portlet.ResourceURL;
import org.apache.pluto.container.PortletResourceResponseContext;
+import org.apache.pluto.container.PortletURLProvider;
public class ResourceResponseImpl extends MimeResponseImpl implements ResourceResponse
{
@@ -33,23 +34,30 @@
{
super(responseContext);
this.responseContext = responseContext;
- this.requestCacheLevel = requestCachelevel;
+ this.requestCacheLevel = requestCachelevel == null ? ResourceURL.PAGE : requestCacheLevel;
}
public PortletURL createActionURL()
{
- return new PortletURLImpl(responseContext, true, false, requestCacheLevel);
+ if (ResourceURL.PAGE.equals(requestCacheLevel))
+ {
+ return new PortletURLImpl(responseContext, PortletURLProvider.TYPE.ACTION);
+ }
+ throw new IllegalStateException("Not allowed to create an ActionURL with current request cacheability level "+requestCacheLevel);
}
public PortletURL createRenderURL()
{
- return new PortletURLImpl(responseContext, false, false, requestCacheLevel);
+ if (ResourceURL.PAGE.equals(requestCacheLevel))
+ {
+ return new PortletURLImpl(responseContext, PortletURLProvider.TYPE.RENDER);
+ }
+ throw new IllegalStateException("Not allowed to create a RenderURL with current request cacheability level "+requestCacheLevel);
}
-
public ResourceURL createResourceURL()
{
- return new PortletURLImpl(responseContext, false, true, requestCacheLevel);
+ return new PortletURLImpl(responseContext, requestCacheLevel);
}
public void setCharacterEncoding(String charset)
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/StateAwareResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/StateAwareResponseImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/StateAwareResponseImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/StateAwareResponseImpl.java Thu Mar 12 14:59:12 2009
@@ -19,6 +19,8 @@
import java.io.Serializable;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import javax.portlet.PortletMode;
@@ -47,12 +49,18 @@
this.responseContext = responseContext;
}
+ private boolean isPublicRenderParameter(String name)
+ {
+ List<String> publicRenderParameterNames = responseContext.getPortletWindow().getPortletEntity().getPortletDefinition().getSupportedPublicRenderParameters();
+ return publicRenderParameterNames.isEmpty() ? false : publicRenderParameterNames.contains(name);
+ }
+
private static String[] cloneParameterValues(String[] values)
{
int count = 0;
for (String s : values)
{
- if (!(s == null || s.length() == 0))
+ if (s != null)
{
count++;
}
@@ -67,7 +75,7 @@
count = 0;
for (String s : values)
{
- if (!(s == null || s.length() == 0))
+ if (s != null)
{
copy[count++] = s;
}
@@ -118,8 +126,11 @@
{
ArgumentUtility.validateNotEmpty("name", name);
checkSetStateChanged();
- responseContext.getRemovedPublicRenderParameters().add(name);
- responseContext.getRenderParameters().remove(name);
+ if (isPublicRenderParameter(name))
+ {
+ responseContext.getPublicRenderParameters().put(name, null);
+ responseContext.getRenderParameters().remove(name);
+ }
}
public void setEvent(QName qname, Serializable value)
@@ -170,31 +181,52 @@
ArgumentUtility.validateNotNull("parameters", parameters);
// validate map first
+ boolean emptyValuesArray;
for (Map.Entry<? extends Object, ? extends Object> entry : parameters.entrySet())
{
if (entry.getKey() == null || entry.getValue() == null)
{
- throw new IllegalArgumentException("RenderParameters contains a null key or value entry");
+ throw new IllegalArgumentException("parameters map contains a null key or value entry");
}
if (!(entry.getKey() instanceof String))
{
- throw new IllegalArgumentException("RenderParameters contains a key which is not of type String");
+ throw new IllegalArgumentException("parameters map contains a key which is not of type String");
}
if (!(entry.getValue() instanceof String[]))
{
- throw new IllegalArgumentException("RenderParameters contains a value which is not of type String[]");
+ throw new IllegalArgumentException("parameters map contains a value which is not of type String[]");
+ }
+ emptyValuesArray = true;
+ for (String s : (String[])entry.getValue())
+ {
+ if (s != null)
+ {
+ emptyValuesArray = false;
+ break;
+ }
+ }
+ if (emptyValuesArray)
+ {
+ throw new IllegalStateException("parameters map contains a values array which is empty or contains only null values");
}
}
checkSetStateChanged();
- Map<String, String[]> map = responseContext.getRenderParameters();
- map.clear();
+
+ responseContext.getRenderParameters().clear();
+ for (Iterator<Map.Entry<String,String[]>> iter = responseContext.getPublicRenderParameters().entrySet().iterator(); iter.hasNext();)
+ {
+ if (iter.next().getValue() != null)
+ {
+ iter.remove();
+ }
+ }
for (Map.Entry<String,String[]> entry : parameters.entrySet())
{
String[] values = cloneParameterValues(entry.getValue());
- if (values != null)
+ responseContext.getRenderParameters().put(entry.getKey(), values);
+ if (isPublicRenderParameter(entry.getKey()))
{
- map.put(entry.getKey(), values);
- responseContext.getRemovedPublicRenderParameters().remove(entry.getKey());
+ responseContext.getPublicRenderParameters().put(entry.getKey(), values);
}
}
}
@@ -202,16 +234,13 @@
public void setRenderParameter(String key, String value)
{
ArgumentUtility.validateNotEmpty("key", key);
-
+ ArgumentUtility.validateNotNull("value", value);
checkSetStateChanged();
- if (value == null || value.length() == 0)
+ String[] values = new String[]{value};
+ responseContext.getRenderParameters().put(key, values);
+ if (isPublicRenderParameter(key))
{
- responseContext.getRenderParameters().remove(key);
- }
- else
- {
- responseContext.getRenderParameters().put(key, new String[]{value});
- responseContext.getRemovedPublicRenderParameters().remove(key);
+ responseContext.getPublicRenderParameters().put(key, values);
}
}
@@ -219,16 +248,16 @@
{
ArgumentUtility.validateNotEmpty("key", key);
ArgumentUtility.validateNotNull("values", values);
- String[] copy = cloneParameterValues(values);
- checkSetStateChanged();
- if (copy == null)
+ values = cloneParameterValues(values);
+ if (values == null )
{
- responseContext.getRenderParameters().remove(key);
+ throw new IllegalStateException("Illegal Argument: values array is empty or contains only null values");
}
- else
+ checkSetStateChanged();
+ responseContext.getRenderParameters().put(key, values);
+ if (isPublicRenderParameter(key))
{
- responseContext.getRenderParameters().put(key, copy);
- responseContext.getRemovedPublicRenderParameters().remove(key);
+ responseContext.getPublicRenderParameters().put(key, values);
}
}
}
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/ClasspathScanner.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/ClasspathScanner.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/ClasspathScanner.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/ClasspathScanner.java Thu Mar 12 14:59:12 2009
@@ -40,8 +40,8 @@
* @return
* @throws IOException
*/
- public static List scan(String path) throws IOException {
- List list = scan(path, ClasspathScanner.class.getClassLoader());
+ public static List<URL> scan(String path) throws IOException {
+ List<URL> list = scan(path, ClasspathScanner.class.getClassLoader());
list.addAll(scan(path, Thread.currentThread().getContextClassLoader()));
list.add(ClasspathScanner.class.getResource(path));
@@ -61,13 +61,13 @@
* @return
* @throws IOException
*/
- public static List scan(String path, ClassLoader loader) throws IOException {
- ArrayList list = new ArrayList();
+ public static List<URL> scan(String path, ClassLoader loader) throws IOException {
+ ArrayList<URL> list = new ArrayList<URL>();
if (loader == null) {
return list;
}
- Enumeration enumeration = loader.getResources(path);
+ Enumeration<URL> enumeration = loader.getResources(path);
while (enumeration.hasMoreElements()) {
list.add(enumeration.nextElement());
}
@@ -86,6 +86,7 @@
* @return list of classes
* @throws java.io.IOException if an error occurs during classpath scanning.
*/
+ @SuppressWarnings("unchecked")
public static List findConfiguredImplementations(Class implemented)
throws IOException {
List classes = new ArrayList();
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/StringManager.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/StringManager.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/StringManager.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/util/StringManager.java Thu Mar 12 14:59:12 2009
@@ -102,7 +102,7 @@
* @param key The resource name
*/
public String getString(String key) {
- return MessageFormat.format(getStringInternal(key), null);
+ return MessageFormat.format(getStringInternal(key), (Object[])null);
}
@@ -156,8 +156,7 @@
for (int i = 0; i < args.length; i++) {
if (args[i] == null) {
if (nonNullArgs == args) {
- nonNullArgs =
- (Object[]) args.clone();
+ nonNullArgs = args.clone();
}
nonNullArgs[i] = "null";
}
@@ -234,7 +233,7 @@
// STATIC SUPPORT METHODS
// --------------------------------------------------------------
- private static Hashtable managers = new Hashtable();
+ private static Hashtable<String, StringManager> managers = new Hashtable<String, StringManager>();
/**
* Get the StringManager for a particular package. If a manager for a
@@ -244,7 +243,7 @@
*/
public synchronized static StringManager getManager(String packageName) {
- StringManager mgr = (StringManager) managers.get(packageName);
+ StringManager mgr = managers.get(packageName);
if (mgr == null) {
mgr = new StringManager(packageName);
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletMimeResponseContextImpl.java Thu Mar 12 14:59:12 2009
@@ -29,6 +29,7 @@
import org.apache.pluto.container.PortletMimeResponseContext;
import org.apache.pluto.container.PortletURLProvider;
import org.apache.pluto.container.PortletWindow;
+import org.apache.pluto.container.PortletURLProvider.TYPE;
/**
* @version $Id$
@@ -155,9 +156,9 @@
}
/* (non-Javadoc)
- * @see org.apache.pluto.container.PortletMimeResponseContext#getPortletURLProvider()
+ * @see org.apache.pluto.container.PortletMimeResponseContext#getPortletURLProvider(org.apache.pluto.container.PortletURLProvider.TYPE)
*/
- public PortletURLProvider getPortletURLProvider()
+ public PortletURLProvider getPortletURLProvider(TYPE type)
{
// TODO Auto-generated method stub
return null;
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceResponseContextImpl.java Thu Mar 12 14:59:12 2009
@@ -36,7 +36,7 @@
public PortletResourceResponseContextImpl(PortletContainer container, HttpServletRequest request,
HttpServletResponse response, PortletWindow window)
- {
+ {
super(container, request, response, window);
}
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletStateAwareResponseContextImpl.java Thu Mar 12 14:59:12 2009
@@ -64,9 +64,9 @@
}
/* (non-Javadoc)
- * @see org.apache.pluto.spi.optional.PortletStateAwareResponseContext#getRemovedPublicRenderParameters()
+ * @see org.apache.pluto.container.PortletStateAwareResponseContext#getPublicRenderParameters()
*/
- public Set<String> getRemovedPublicRenderParameters()
+ public Map<String, String[]> getPublicRenderParameters()
{
// TODO Auto-generated method stub
return null;
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletURLProviderImpl.java Thu Mar 12 14:59:12 2009
@@ -16,21 +16,17 @@
*/
package org.apache.pluto.driver.services.container;
-import java.util.ArrayList;
+import java.io.Writer;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.StringTokenizer;
import javax.portlet.PortletMode;
import javax.portlet.PortletSecurityException;
import javax.portlet.WindowState;
-import javax.servlet.http.HttpServletRequest;
import org.apache.pluto.container.PortletURLProvider;
import org.apache.pluto.container.PortletWindow;
-import org.apache.pluto.driver.core.PortalRequestContext;
import org.apache.pluto.driver.url.PortalURL;
import org.apache.pluto.driver.url.PortalURLParameter;
@@ -39,209 +35,176 @@
*/
public class PortletURLProviderImpl implements PortletURLProvider {
- private PortalURL url;
- private String window;
- /** The parameters including parameters appended to the dispatching URI. */
- protected Map<String, String[]> parameters = null;
-
- public PortletURLProviderImpl(HttpServletRequest request,
- PortletWindow portletWindow) {
- PortalRequestContext ctx = PortalRequestContext.getContext(request);
- url = ctx.createPortalURL();
+ private final PortalURL url;
+ private final TYPE type;
+ private final String window;
+ private PortletMode portletMode;
+ private WindowState windowState;
+ private String cacheLevel;
+ private String resourceID;
+ private Map<String, String[]> renderParameters;
+ private Map<String, String[]> publicRenderParameters;
+ private Map<String, List<String>> properties;
+ public PortletURLProviderImpl(PortalURL url, TYPE type, PortletWindow portletWindow)
+ {
+ this.url = url;
+ this.type = type;
this.window = portletWindow.getId().getStringId();
}
-
- public void setPortletMode(PortletMode mode) {
- url.setPortletMode(window, mode);
- }
-
- public void setWindowState(WindowState state) {
- url.setWindowState(window, state);
- }
-
- public void setResourceServing(boolean resourceServing) {
- if (resourceServing) {
+
+ public PortalURL apply()
+ {
+ PortalURL url = this.url.clone();
+ if (PortletURLProvider.TYPE.ACTION == type)
+ {
+ url.setActionWindow(window);
+ url.setResourceWindow(null);
+ url.clearParameters(window);
+ }
+ else if (PortletURLProvider.TYPE.RESOURCE == type)
+ {
+ url.setActionWindow(null);
url.setResourceWindow(window);
- } else {
+ }
+ else
+ {
url.setResourceWindow(null);
+ url.setActionWindow(null);
+ url.clearParameters(window);
}
+ url.setPortletMode(window, portletMode);
+ url.setWindowState(window, windowState);
+ if (renderParameters != null)
+ {
+ for (Map.Entry<String,String[]> entry : renderParameters.entrySet())
+ {
+ if (PortletURLProvider.TYPE.RESOURCE == type)
+ {
+ url.getPrivateParameters().put(entry.getKey(), entry.getValue().clone());
+ }
+ else if (publicRenderParameters != null && !publicRenderParameters.containsKey(entry.getKey()))
+ {
+ url.addParameter(new PortalURLParameter(window, entry.getKey(), entry.getValue()));
+ }
+ }
+ }
+ if (publicRenderParameters != null)
+ {
+ for (Map.Entry<String,String[]> entry : publicRenderParameters.entrySet())
+ {
+ url.addParameter(new PortalURLParameter(window, entry.getKey(), entry.getValue() != null ? entry.getValue() : new String[]{null}));
+ }
+ }
+ url.setResourceID(resourceID);
+ return url;
}
-
- public boolean isResourceServing(){
- return (url.getResourceWindow() != null);
+
+ public TYPE getType()
+ {
+ return type;
+ }
+
+ public void setPortletMode(PortletMode mode)
+ {
+ this.portletMode = mode;
+ }
+
+ public PortletMode getPortletMode()
+ {
+ return portletMode;
}
- public void setAction(boolean action) {
- if (action) {
- url.setActionWindow(window);
- } else {
- url.setActionWindow(null);
- }
+ public void setWindowState(WindowState state)
+ {
+ this.windowState = state;
}
- public void setSecure() throws PortletSecurityException {
- throw new PortletSecurityException("Secure URLs (via PortletURLProvider.setSecure()) is not supported.");
+ public WindowState getWindowState()
+ {
+ return windowState;
}
- public boolean isSecureSupported() {
+ public void setSecure(boolean secure) throws PortletSecurityException {
+ // ignore: not supported
+ }
+
+ public boolean isSecure()
+ {
return false;
}
-
- public void clearParameters() {
- url.clearParameters(window);
+
+ public Map<String,String[]> getRenderParameters()
+ {
+ if (renderParameters == null)
+ {
+ renderParameters = new HashMap<String,String[]>();
+ }
+ return renderParameters;
}
-
-
- /**
- * @see org.apache.pluto.container.PortletURLProvider#setParameters(java.util.Map)
- */
- public void setParameters(Map<String, String[]> parameters) {
- Iterator<Map.Entry<String, String[]>> it = parameters.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry<String, String[]> entry = it.next();
- PortalURLParameter param = new PortalURLParameter(
- window,
- entry.getKey(),
- entry.getValue());
- url.addParameter(param);
+
+ public Map<String,String[]> getPublicRenderParameters()
+ {
+ if (publicRenderParameters == null)
+ {
+ publicRenderParameters = new HashMap<String,String[]>();
}
+ return publicRenderParameters;
}
-
- public String[] getPrivateRenderParameters(String name){
- String[] values = null;
- for (Iterator<PortalURLParameter> it=url.getParameters().iterator();it.hasNext();){
- PortalURLParameter param = it.next();
- if (param.getName().equals(name))
- values = param.getValues();
- }
- return values;
+
+ public String getCacheability()
+ {
+ return cacheLevel;
}
- public String[] getPublicRenderParameters(String name){
- Map publicRenderParaMap = url.getPublicParameters();
- String[] values = null;
- for (Iterator it=publicRenderParaMap.keySet().iterator();it.hasNext();){
- String tmp = (String) it.next();
- if (tmp.equals(name)){
- values = (String[])publicRenderParaMap.get(tmp);
- }
- }
- return values;
+ public void setCacheability(String cacheLevel)
+ {
+ this.cacheLevel = cacheLevel;
}
- public void setPublicRenderParameters(Map parameters) {
- url.addPublicRenderParametersNew(parameters);
- }
-
- public String toString() {
- return url.toString();
+ public String getResourceID()
+ {
+ return resourceID;
}
- public void savePortalURL(HttpServletRequest request) {
- PortalRequestContext ctx = PortalRequestContext.getContext(request);
- ctx.setPortalURL(url);
- }
-
- public Map<String, String[]> getRenderParameters()
+ public void setResourceID(String resourceID)
{
- return this.parameters;
+ this.resourceID = resourceID;
}
- public Map<String, String[]> parseRenderParameters(Map<String, String[]> parentMap, String queryString)
+ /* (non-Javadoc)
+ * @see org.apache.pluto.container.PortletURLProvider#toURL(boolean)
+ */
+ public String toURL(boolean absolute)
{
- if (parentMap == null)
- {
- parameters = null;
- }
- else
- {
- // Copy all the original render parameters.
- parameters = new HashMap<String, String[]>(parentMap);
- if (queryString != null && queryString.trim().length() > 0)
- {
- // Merge the appended parameters to the render parameter map.
- // The original render parameters should not be overwritten.
- mergeQueryString(parameters, queryString);
- }
- }
- return parameters;
+ // TODO Auto-generated method stub
+ return null;
}
- /**
- * Parses the appended query string and merges the appended parameters to
- * the original parameters. Query parameters are name-value pairs separated
- * by the '<code>&</code>' character.
- *
- * @param parameters
- * the original parameters map.
- * @param queryString
- * the appended query string.
+ /* (non-Javadoc)
+ * @see org.apache.pluto.container.PortletURLProvider#write(java.io.Writer, boolean)
*/
- private void mergeQueryString(Map parameters, String queryString)
+ public void write(Writer out, boolean escapeXML)
{
-
- // Create the appended parameters map:
- // key is the parameter name as a string,
- // value is a List of parameter values (List of String).
- Map appendedParameters = new HashMap();
-
- StringTokenizer st = new StringTokenizer(queryString, "&", false);
- while (st.hasMoreTokens())
- {
- String token = st.nextToken();
- int equalIndex = token.indexOf("=");
- if (equalIndex > 0)
- {
- String key = token.substring(0, equalIndex);
- String value = null;
- if (equalIndex < token.length() - 1)
- {
- value = token.substring(equalIndex + 1);
- }
- else
- {
- value = "";
- }
- List values = (List) appendedParameters.get(key);
- if (values == null)
- {
- values = new ArrayList();
- }
- values.add(value);
- appendedParameters.put(key, values);
- }
- }
-
- // Merge the appended parameters and the original parameters.
- for (Iterator it = appendedParameters.keySet().iterator(); it.hasNext();)
- {
- String key = (String) it.next();
- List values = (List) appendedParameters.get(key);
- // If the parameter name (key) exists, merge parameter values.
- if (parameters.containsKey(key))
- {
- String[] originalValues = (String[]) parameters.get(key);
- if (originalValues != null)
- {
- for (int i = 0; i < originalValues.length; i++)
- {
- values.add(originalValues[i]);
- }
- }
- }
- parameters.put(key, values.toArray(new String[values.size()]));
- }
+ // TODO Auto-generated method stub
+
}
- public void setProperties(Map<String, List<String>> properties)
+ /* (non-Javadoc)
+ * @see org.apache.pluto.container.PortletURLProvider#write(java.io.Writer)
+ */
+ public void write(Writer out)
{
- // No vendor specific properties handling
+ // TODO Auto-generated method stub
+
}
public Map<String, List<String>> getProperties()
{
- // No vendor specific properties handling
- return null;
+ if (properties == null)
+ {
+ properties = new HashMap<String, List<String>>();
+ }
+ return properties;
}
}
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/PortalURLParserImpl.java Thu Mar 12 14:59:12 2009
@@ -53,7 +53,10 @@
private static final String PORTLET_ID = "pd";
private static final String ACTION = "ac";
private static final String RESOURCE = "rs";
+ private static final String RESOURCE_ID = "ri";
+ private static final String CACHE_LEVEL = "cl";
private static final String RENDER_PARAM = "rp";
+ private static final String PRIVATE_PARAM = "pp";
private static final String PUBLIC_RENDER_PARAM = "sp";
private static final String WINDOW_STATE = "ws";
private static final String PORTLET_MODE = "pm";
@@ -110,8 +113,9 @@
String contextPath = request.getContextPath();
String servletName = request.getServletPath();
+ String urlBase = request.getScheme()+"://" + request.getServerName() + ":" + request.getServerPort();
// Construct portal URL using info retrieved from servlet request.
- PortalURL portalURL = new RelativePortalURLImpl(contextPath, servletName, this);
+ PortalURL portalURL = new RelativePortalURLImpl(urlBase, contextPath, servletName, this);
// Support added for filter. Should we seperate into a different impl?
String pathInfo = request.getPathInfo();
@@ -120,7 +124,7 @@
int idx = servletName.indexOf(".jsp")+".jsp".length();
pathInfo = servletName.substring(idx);
servletName = servletName.substring(0, idx);
- portalURL = new RelativePortalURLImpl(contextPath, servletName, this);
+ portalURL = new RelativePortalURLImpl(urlBase, contextPath, servletName, this);
} else {
return portalURL;
}
@@ -150,6 +154,14 @@
else if (token.startsWith(PREFIX + ACTION)) {
portalURL.setActionWindow(decodeControlParameter(token)[0]);
}
+ // Cacheability definition: portalURL.setCacheability().
+ else if (token.startsWith(PREFIX + CACHE_LEVEL)) {
+ portalURL.setCacheability(decodeControlParameter(token)[0]);
+ }
+ // ResourceID definition: portalURL.setResourceID().
+ else if (token.startsWith(PREFIX + RESOURCE_ID)) {
+ portalURL.setResourceID(decodeControlParameter(token)[0]);
+ }
// Window state definition: portalURL.setWindowState().
else if (token.startsWith(PREFIX + WINDOW_STATE)) {
String[] decoded = decodeControlParameter(token);
@@ -172,7 +184,19 @@
}
- else{ // besser if PREFIX + PUBLIC_PARAM
+ else if (token.startsWith(PREFIX + PRIVATE_PARAM)){
+ String value = null;
+ if (st.hasMoreTokens()) {
+ value = st.nextToken();
+ }
+ PortalURLParameter param = decodePublicParameter(token, value);
+ if( param != null )
+ {
+ //set private (Resource) parameter in portalURL
+ portalURL.getPrivateParameters().put(param.getName(), param.getValues());
+ }
+ }
+ else if (token.startsWith(PREFIX + PUBLIC_RENDER_PARAM)){
String value = null;
if (st.hasMoreTokens()) {
value = st.nextToken();
@@ -183,8 +207,6 @@
//set public parameter in portalURL
portalURL.addPublicParameterCurrent(param.getName(), param.getValues());
}
-
-
}
}
if (renderPath.length() > 0) {
@@ -225,6 +247,20 @@
buffer.append(PREFIX).append(ACTION)
.append(encodeCharacters(portalURL.getActionWindow()));
}
+
+ if (portalURL.getResourceWindow() != null)
+ {
+ if (portalURL.getCacheability() != null)
+ {
+ buffer.append("/");
+ buffer.append(PREFIX).append(CACHE_LEVEL).append(encodeCharacters(portalURL.getCacheability()));
+ }
+ if (portalURL.getResourceID() != null)
+ {
+ buffer.append("/");
+ buffer.append(PREFIX).append(RESOURCE_ID).append(encodeCharacters(portalURL.getResourceID()));
+ }
+ }
// Append portlet mode definitions.
for (Iterator it = portalURL.getPortletModes().entrySet().iterator();
@@ -284,7 +320,22 @@
encode(buffer);
-
+ if (portalURL.getResourceWindow() != null)
+ {
+ Map<String, String[]> privateParamList = portalURL.getPrivateParameters();
+ if (privateParamList!=null){
+ for (Iterator iter = privateParamList.keySet().iterator();iter.hasNext();){
+ String paramname = (String)iter.next();
+ String[] tmp = privateParamList.get(paramname);
+ String valueString = encodeMultiValues(tmp);
+ if (valueString.length()>0){
+ buffer.append("/").append(encodePublicParamname(PRIVATE_PARAM, paramname));
+ buffer.append("/").append(valueString);
+ }
+ }
+ }
+ }
+
Map<String, String[]> publicParamList = portalURL.getPublicParameters();
if (publicParamList!=null){
for (Iterator iter = publicParamList.keySet().iterator();iter.hasNext();){
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/url/impl/RelativePortalURLImpl.java Thu Mar 12 14:59:12 2009
@@ -43,15 +43,19 @@
private static final Log LOG = LogFactory.getLog(RelativePortalURLImpl.class);
+ private String urlBase;
private String servletPath;
private String renderPath;
private String actionWindow;
private String resourceWindow;
+ private String cacheLevel;
+ private String resourceID;
private Map<String, String[]> publicParameterCurrent = new HashMap<String, String[]>();
private Map<String, String[]> publicParameterNew = new HashMap<String, String[]>();
-
+ private Map<String, String[]> privateParameters = new HashMap<String, String[]>();
+
/**
* PortalURLParser used to construct the string
* representation of this portal url.
@@ -68,11 +72,13 @@
/**
* Constructs a PortalURLImpl instance using customized port.
+ * @param urlBase the absolute (protocol://domain:port) request url base
* @param contextPath the servlet context path.
* @param servletName the servlet name.
* @param urlParser the {@link PortalURLParser} used to construct a string representation of the url.
*/
- public RelativePortalURLImpl(String contextPath, String servletName, PortalURLParser urlParser) {
+ public RelativePortalURLImpl(String urlBase, String contextPath, String servletName, PortalURLParser urlParser) {
+ this.urlBase = urlBase;
StringBuffer buffer = new StringBuffer();
buffer.append(contextPath);
buffer.append(servletName);
@@ -171,16 +177,51 @@
}
}
}
+
+ public void setCacheability(String cacheLevel)
+ {
+ this.cacheLevel = cacheLevel;
+ }
+
+ public String getCacheability()
+ {
+ return cacheLevel;
+ }
+
+ public void setResourceID(String resourceID)
+ {
+ this.resourceID = resourceID;
+ }
+
+ public String getResourceID()
+ {
+ return resourceID;
+ }
/**
* Converts to a string representing the portal URL.
+ * @deprecated use toURL(boolean absolute) instead
* @return a string representing the portal URL.
* @see PortalURLParserImpl#toString(org.apache.pluto.driver.url.PortalURL)
*/
public String toString() {
- return urlParser.toString(this);
+ return toURL(false);
+ }
+
+ /**
+ * Converts to a string representing the portal URL.
+ * @return a string representing the portal URL.
+ * @see PortalURLParserImpl#toString(org.apache.pluto.driver.url.PortalURL)
+ */
+ public String toURL(boolean absolute)
+ {
+ String result = urlParser.toString(this);
+ if (absolute)
+ {
+ return urlBase + result;
+ }
+ return result;
}
-
/**
* Returns the server URI (protocol, name, port).
@@ -204,12 +245,14 @@
* Clone a copy of itself.
* @return a copy of itself.
*/
- public Object clone() {
+ public synchronized PortalURL clone() {
RelativePortalURLImpl portalURL = new RelativePortalURLImpl();
portalURL.servletPath = this.servletPath;
portalURL.parameters = new HashMap<String, PortalURLParameter>(parameters);
portalURL.portletModes = new HashMap<String, PortletMode>(portletModes);
portalURL.windowStates = new HashMap<String, WindowState>(windowStates);
+ portalURL.cacheLevel = cacheLevel;
+ portalURL.resourceID = resourceID;
portalURL.renderPath = renderPath;
portalURL.actionWindow = actionWindow;
portalURL.urlParser = urlParser;
@@ -226,9 +269,7 @@
publicParameterNew.remove(key);
}
String[] values = parameters.get(key);
- if (values[0]!= null){
- publicParameterNew.put(key, values);
- }
+ publicParameterNew.put(key, values);
}
}
@@ -273,6 +314,16 @@
}
return tmp;
}
+
+ public Map<String, String[]> getNewPublicParameters()
+ {
+ return publicParameterNew;
+ }
+
+ public Map<String, String[]> getPrivateParameters()
+ {
+ return privateParameters;
+ }
public PageConfig getPageConfig(ServletContext servletContext) {
@@ -292,5 +343,33 @@
this.resourceWindow = resourceWindow;
}
-
+ public synchronized void merge(PortalURL url, String windowId)
+ {
+ actionWindow = url.getActionWindow();
+ resourceWindow = url.getResourceWindow();
+ setPortletMode(windowId, url.getPortletMode(windowId));
+ setWindowState(windowId, url.getWindowState(windowId));
+ setCacheability(url.getCacheability());
+ setResourceID(url.getResourceID());
+ clearParameters(windowId);
+ for (PortalURLParameter param : url.getParameters())
+ {
+ if (windowId.equals(param.getWindowId()))
+ {
+ addParameter(new PortalURLParameter(param.getWindowId(), param.getName(), param.getValues()));
+ }
+ }
+ Map<String, String[]> newPublicParameters = url.getNewPublicParameters();
+ for (Map.Entry<String, String[]> entry : newPublicParameters.entrySet())
+ {
+ if (entry.getValue()[0] == null)
+ {
+ publicParameterCurrent.remove(entry.getKey());
+ }
+ else
+ {
+ publicParameterCurrent.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
}
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/core/PortalRequestContext.java Thu Mar 12 14:59:12 2009
@@ -110,7 +110,7 @@
* Returns the requested portal URL.
* @return the requested portal URL.
*/
- public PortalURL getRequestedPortalURL() {
+ public synchronized PortalURL getRequestedPortalURL() {
if(requestedPortalURL == null) {
DriverConfiguration config = (DriverConfiguration)
servletContext.getAttribute(AttributeKeys.DRIVER_CONFIG);
@@ -130,8 +130,15 @@
return (PortalURL)getRequestedPortalURL().clone();
}
- public void setPortalURL(PortalURL portalURL){
- requestedPortalURL = portalURL;
+ public synchronized void setPortalURL(PortalURL portalURL, String windowId){
+ if (requestedPortalURL == null)
+ {
+ requestedPortalURL = portalURL;
+ }
+ else
+ {
+ requestedPortalURL.merge(portalURL, windowId);
+ }
}
public ServletContext getServletContext() {
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURL.java Thu Mar 12 14:59:12 2009
@@ -40,7 +40,7 @@
String getRenderPath();
void addParameter(PortalURLParameter param);
-
+
void addPublicRenderParametersNew(Map<String, String[]> parameters);
Collection<PortalURLParameter> getParameters();
@@ -48,7 +48,11 @@
public void addPublicParameterCurrent(String name, String[] values);
public Map<String, String[]> getPublicParameters();
-
+
+ Map<String, String[]> getNewPublicParameters();
+
+ Map<String, String[]> getPrivateParameters();
+
void setActionWindow(String actionWindow);
String getActionWindow();
@@ -67,13 +71,19 @@
void clearParameters(String windowId);
+ /**
+ *
+ * @deprecated use toURL(boolean) instead
+ */
String toString();
+
+ String toURL(boolean absolute);
String getServerURI();
String getServletPath();
- Object clone();
+ PortalURL clone();
String getResourceWindow();
@@ -82,4 +92,12 @@
PageConfig getPageConfig(ServletContext servletContext);
void addPublicParameterActionResourceParameter(String parameterName, String value);
+
+ void setCacheability(String cacheLevel);
+ String getCacheability();
+
+ void setResourceID(String resourceID);
+ String getResourceID();
+
+ void merge(PortalURL url, String windowId);
}
Modified: portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURLParser.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURLParser.java?rev=752882&r1=752881&r2=752882&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURLParser.java (original)
+++ portals/pluto/trunk/pluto-portal-driver/src/main/java/org/apache/pluto/driver/url/PortalURLParser.java Thu Mar 12 14:59:12 2009
@@ -11,8 +11,5 @@
*/
public interface PortalURLParser {
PortalURL parse(HttpServletRequest request);
-
-// String toString(PortalURL portalURL, HttpServletRequest request);
-
String toString(PortalURL portalURL);
}