weaver 2003/10/21 14:52:02
Modified: portal/src/java/org/apache/jetspeed/engine/core
PortalURL.java PortalControlParameter.java
portal/src/java/org/apache/jetspeed/aggregator
BasicAggregator.java
portal/src/java/org/apache/jetspeed/engine/servlet
ServletRequestImpl.java
Added: portal/src/java/org/apache/jetspeed/engine/core
PortalURLImpl.java
Log:
PortalURL is now a interface
Revision Changes Path
1.4 +29 -414
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortalURL.java
Index: PortalURL.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortalURL.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PortalURL.java 20 Oct 2003 03:49:15 -0000 1.3
+++ PortalURL.java 21 Oct 2003 21:52:02 -0000 1.4
@@ -1,459 +1,74 @@
-/* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Apache Jetspeed" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact [EMAIL PROTECTED]
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Apache Jetspeed", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
+/**
+ * Created on Oct 21, 2003
*
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
+ *
+ * @author
*/
package org.apache.jetspeed.engine.core;
-import java.util.Iterator;
-import java.util.List;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.pluto.om.window.PortletWindow;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.jetspeed.request.RequestContext;
-import org.apache.jetspeed.request.JetspeedRequestContext;
+import org.apache.pluto.om.window.PortletWindow;
/**
- * As part of its content, a portlet may need to create URLs that reference the
portlet itself.
- * For example, when a user acts on a URL that references a portlet (i.e., by
clicking a link
- * or submitting a form) the result is a new client request to the portal targeted
to the portlet. 5
- * Those URLs are called portlet URLs.
- *
- * NOTE: parts of this code was borrowed from Pluto's portal implementation.
- *
- * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
+ * <p>
+ * PortalURL
+ * </p>
*
+ * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a>
* @version $Id$
+ *
*/
-public class PortalURL
+public interface PortalURL
{
- private static final Log log = LogFactory.getLog(PortalURL.class);
-
- private RequestContext context;
- private List startGlobalNavigation = new ArrayList();
- private List startLocalNavigation = new ArrayList();
- private HashMap startControlParameter = new HashMap();
- private HashMap startStateLessControlParameter = new HashMap();
- private boolean analyzed = false;
- private boolean secure;
-
- private String serverName;
- private String serverScheme;
- private String contextPath;
- private String basePath;
- private int serverPort;
-
/** HTTP protocol. */
public static final String HTTP = "http";
/** HTTPS protocol. */
public static final String HTTPS = "https";
- /**
- * Creates and URL pointing to the home of the portal
- *
- * @param env the portal environment
- */
- public PortalURL(RequestContext context)
- {
- this.context = context;
- init(context);
- }
-
- public void init(RequestContext context)
- {
- if (null != context.getRequest())
- {
- this.serverName = context.getRequest().getServerName();
- this.serverPort = context.getRequest().getServerPort();
- this.serverScheme = context.getRequest().getScheme();
- this.contextPath = context.getRequest().getContextPath();
- this.basePath = contextPath + context.getRequest().getServletPath();
- }
- }
-
- /**
- * Creates and URL pointing to the home of the portal
- *
- * @param request the servlet request
- */
- public PortalURL(HttpServletRequest request)
- {
- this(JetspeedRequestContext.getRequestContext(request));
- }
-
+ public abstract void init(RequestContext context);
/**
* Adds a navigational information pointing to a portal part, e.g. PageGroups
* or Pages
*
* @param nav the string pointing to a portal part
*/
- public void addGlobalNavigation(String nav)
- {
- startGlobalNavigation.add(nav);
- }
-
+ public abstract void addGlobalNavigation(String nav);
/**
* Sets the local navigation. Because the local navigation is always handled
* by the Browser, therefore the local navigation cleared.
*/
- public void setLocalNavigation()
- {
- startLocalNavigation = new ArrayList();
- }
-
+ public abstract void setLocalNavigation();
/**
* Adds a navigational information pointing to a local portal part inside
* of a global portal part, e.g. a portlet on a page
*
* @param nav the string pointing to a local portal part
*/
- public void addLocalNavigation(String nav)
- {
- startLocalNavigation.add(nav);
- }
-
+ public abstract void addLocalNavigation(String nav);
/**
* Returns true if the given string is part of the global navigation of this URL
*
* @param nav the string to check
* @return true, if the string is part of the navigation
*/
- public boolean isPartOfGlobalNavigation(String nav)
- {
- return startGlobalNavigation.contains(nav);
- }
-
+ public abstract boolean isPartOfGlobalNavigation(String nav);
/**
* Returns true if the given string is part of the local navigation of this URL
*
* @param nav the string to check
* @return true, if the string is part of the navigation
*/
- public boolean isPartOfLocalNavigation(String nav)
- {
- return startLocalNavigation.contains(nav);
- }
-
- public String getGlobalNavigationAsString()
- {
- StringBuffer result = new StringBuffer(200);
- Iterator iterator = startGlobalNavigation.iterator();
- if (iterator.hasNext())
- {
- result.append((String) iterator.next());
- while (iterator.hasNext())
- {
- result.append("/");
- result.append((String) iterator.next());
- }
- }
- return result.toString();
- }
-
- public String getLocalNavigationAsString()
- {
- StringBuffer result = new StringBuffer(30);
- Iterator iterator = startLocalNavigation.iterator();
- if (iterator.hasNext())
- {
- result.append((String) iterator.next());
- while (iterator.hasNext())
- {
- result.append(".");
- result.append((String) iterator.next());
- }
- }
- return result.toString();
- }
-
- public String getControlParameterAsString(PortalControlParameter controlParam)
- {
- Map stateFullParams = startControlParameter;
- Map stateLessParams = null;
- if (controlParam != null)
- {
- stateFullParams = controlParam.getStateFullControlParameter();
- stateLessParams = controlParam.getStateLessControlParameter();
- }
-
- StringBuffer result = new StringBuffer(100);
- Iterator iterator = stateFullParams.keySet().iterator();
- while (iterator.hasNext())
- {
- if (iterator.hasNext())
- result.append("/");
- String name = (String) iterator.next();
- result.append(PortalControlParameter.encodeParameter(name));
- result.append("/");
- result.append((String) stateFullParams.get(name));
- }
-
- return result.toString();
- }
-
- public String getRequestParameterAsString(PortalControlParameter controlParam)
- {
- if (controlParam != null)
- {
- Map requestParams = controlParam.getRequestParameter();
-
- StringBuffer result = new StringBuffer(100);
- Iterator iterator = requestParams.keySet().iterator();
- boolean hasNext = iterator.hasNext();
- if (hasNext)
- {
- result.append("?");
- }
-
- while (hasNext)
- {
-
- String name = (String) iterator.next();
- Object value = requestParams.get(name);
- String[] values = value instanceof String ? new String[] {(String)
value }
- : (String[]) value;
-
- int i;
-
- result.append(name);
- result.append("=");
- result.append(values[0]);
- for (i = 1; i < values.length; i++)
- {
- result.append("&");
- result.append(name);
- result.append("=");
- result.append(values[i]);
- };
-
- hasNext = iterator.hasNext();
- if (hasNext)
- result.append("&");
- }
-
- return result.toString();
- }
- return "";
- }
-
- public String toString()
- {
- return toString(null, null);
- }
-
- public String toString(PortalControlParameter controlParam, Boolean p_secure)
- {
- StringBuffer buffer = getBaseURLBuffer();
- buffer.append(this.basePath);
-
- String global = getGlobalNavigationAsString();
- if (global.length() > 0)
- {
- buffer.append("/");
- buffer.append(global);
- }
-
- String control = getControlParameterAsString(controlParam);
- if (control.length() > 0)
- {
- buffer.append(control);
- }
-
- String requestParam = getRequestParameterAsString(controlParam);
- if (requestParam.length() > 0)
- {
- buffer.append(requestParam);
- }
-
- String local = getLocalNavigationAsString();
- if (local.length() > 0)
- {
- buffer.append("#");
- buffer.append(local);
- }
-
- String finalUrl = buffer.toString();
- log.debug("PortalUrl before encode: " + finalUrl);
- return context.getResponse().encodeURL(finalUrl);
- }
-
- Map getClonedStateFullControlParameter()
- {
- analyzeRequestInformation();
- return (Map) startControlParameter.clone();
- }
-
- Map getClonedStateLessControlParameter()
- {
- analyzeRequestInformation();
- return (Map) startStateLessControlParameter.clone();
- }
-
- public void analyzeControlInformation(PortalControlParameter control)
- {
- startControlParameter = (HashMap) control.getStateFullControlParameter();
- startStateLessControlParameter = (HashMap)
control.getStateLessControlParameter();
- }
-
- void analyzeRequestInformation()
- {
- if (analyzed)
- return;
-
- startGlobalNavigation = new ArrayList();
- startLocalNavigation = new ArrayList();
- startControlParameter = new HashMap();
- startStateLessControlParameter = new HashMap();
-
- // check the complete pathInfo for
- // * navigational information
- // * control information
- String pathInfo = context.getRequest().getPathInfo();
-
- if (pathInfo != null)
- {
- StringTokenizer tokenizer = new StringTokenizer(pathInfo, "/.");
-
- int mode = 0; // 0=navigation, 1=control information
- String name = null;
- while (tokenizer.hasMoreTokens())
- {
- String token = tokenizer.nextToken();
- if (PortalControlParameter.isControlParameter(token))
- {
- mode = 1;
- name = token;
- }
- else if (mode == 0)
- {
- startGlobalNavigation.add(token);
- }
- else if (mode == 1)
- {
- if ((PortalControlParameter.isStateFullParameter(name)))
- {
- startControlParameter.put(
- PortalControlParameter.decodeParameterName(name),
- PortalControlParameter.decodeParameterValue(name,
token));
- }
- else
- {
- startStateLessControlParameter.put(
- PortalControlParameter.decodeParameterName(name),
- PortalControlParameter.decodeParameterValue(name,
token));
- }
- mode = 0;
- }
- }
- }
- analyzed = true;
-
- }
-
- public void setRenderParameter(PortletWindow portletWindow, String name,
String[] values)
- {
- startControlParameter.put(
- PortalControlParameter.encodeRenderParamName(portletWindow, name),
- PortalControlParameter.encodeRenderParamValues(values));
-
- }
-
- public void clearRenderParameters(PortletWindow portletWindow)
- {
- String prefix = PortalControlParameter.getRenderParamKey(portletWindow);
- Iterator keyIterator = startControlParameter.keySet().iterator();
-
- while (keyIterator.hasNext())
- {
- String name = (String) keyIterator.next();
- if (name.startsWith(prefix))
- {
- keyIterator.remove();
- }
- }
- }
-
- public String getBaseURL()
- {
- return getBaseURLBuffer().toString();
- }
-
- public String getContext()
- {
- StringBuffer result = getBaseURLBuffer();
- result.append(this.contextPath);
- return result.toString();
- }
-
- private StringBuffer getBaseURLBuffer()
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append(this.serverScheme);
- buffer.append("://");
- buffer.append(this.serverName);
- if ((this.serverScheme.equals(HTTP) && this.serverPort != 80)
- || (this.serverScheme.equals(HTTPS) && this.serverPort != 443))
- {
- buffer.append(":");
- buffer.append(this.serverPort);
- }
- return buffer;
- }
-
-}
+ public abstract boolean isPartOfLocalNavigation(String nav);
+ public abstract String getGlobalNavigationAsString();
+ public abstract String getLocalNavigationAsString();
+ public abstract String getControlParameterAsString(PortalControlParameter
controlParam);
+ public abstract String getRequestParameterAsString(PortalControlParameter
controlParam);
+ public abstract String toString();
+ public abstract String toString(PortalControlParameter controlParam, Boolean
p_secure);
+ public abstract void analyzeControlInformation(PortalControlParameter control);
+ public abstract void setRenderParameter(PortletWindow portletWindow, String
name, String[] values);
+ public abstract void clearRenderParameters(PortletWindow portletWindow);
+ public abstract String getBaseURL();
+ public abstract String getContext();
+}
\ No newline at end of file
1.6 +5 -4
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortalControlParameter.java
Index: PortalControlParameter.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortalControlParameter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PortalControlParameter.java 20 Oct 2003 03:48:36 -0000 1.5
+++ PortalControlParameter.java 21 Oct 2003 21:52:02 -0000 1.6
@@ -70,7 +70,8 @@
import org.apache.pluto.util.StringUtils;
/**
- * Encode portlet control parameters into URLs using Pluto's portal method
+ * Encode portlet control parameters into URLs using Pluto's portal method.
+ * It also can decode the same parameters.
*
* NOTE: parts of this code were borrowed from Pluto's portal implementation.
*
@@ -208,8 +209,8 @@
public PortalControlParameter(PortalURL url)
{
this.url = url;
- stateFullControlParameter = this.url.getClonedStateFullControlParameter();
- stateLessControlParameter = this.url.getClonedStateLessControlParameter();
+ stateFullControlParameter =
((PortalURLImpl)this.url).getClonedStateFullControlParameter();
+ stateLessControlParameter = ((PortalURLImpl)
this.url).getClonedStateLessControlParameter();
}
public void clearRenderParameters(PortletWindow portletWindow)
1.1
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/core/PortalURLImpl.java
Index: PortalURLImpl.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Jetspeed" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Jetspeed", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.jetspeed.engine.core;
import java.util.Iterator;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import org.apache.pluto.om.window.PortletWindow;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jetspeed.request.RequestContext;
import org.apache.jetspeed.request.JetspeedRequestContext;
/**
* As part of its content, a portlet may need to create URLs that reference the
portlet itself.
* For example, when a user acts on a URL that references a portlet (i.e., by
clicking a link
* or submitting a form) the result is a new client request to the portal targeted
to the portlet. 5
* Those URLs are called portlet URLs.
*
* NOTE: parts of this code was borrowed from Pluto's portal implementation.
*
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
*
* @version $Id: PortalURLImpl.java,v 1.1 2003/10/21 21:52:02 weaver Exp $
*/
public class PortalURLImpl implements PortalURL
{
private static final Log log = LogFactory.getLog(PortalURLImpl.class);
private RequestContext context;
private List startGlobalNavigation = new ArrayList();
private List startLocalNavigation = new ArrayList();
private HashMap startControlParameter = new HashMap();
private HashMap startStateLessControlParameter = new HashMap();
private boolean analyzed = false;
private boolean secure;
private String serverName;
private String serverScheme;
private String contextPath;
private String basePath;
private int serverPort;
/**
* Creates and URL pointing to the home of the portal
*
* @param env the portal environment
*/
public PortalURLImpl(RequestContext context)
{
this.context = context;
init(context);
}
public void init(RequestContext context)
{
if (null != context.getRequest())
{
this.serverName = context.getRequest().getServerName();
this.serverPort = context.getRequest().getServerPort();
this.serverScheme = context.getRequest().getScheme();
this.contextPath = context.getRequest().getContextPath();
this.basePath = contextPath + context.getRequest().getServletPath();
}
}
/**
* Creates and URL pointing to the home of the portal
*
* @param request the servlet request
*/
public PortalURLImpl(HttpServletRequest request)
{
this(JetspeedRequestContext.getRequestContext(request));
}
/**
* Adds a navigational information pointing to a portal part, e.g. PageGroups
* or Pages
*
* @param nav the string pointing to a portal part
*/
public void addGlobalNavigation(String nav)
{
startGlobalNavigation.add(nav);
}
/**
* Sets the local navigation. Because the local navigation is always handled
* by the Browser, therefore the local navigation cleared.
*/
public void setLocalNavigation()
{
startLocalNavigation = new ArrayList();
}
/**
* Adds a navigational information pointing to a local portal part inside
* of a global portal part, e.g. a portlet on a page
*
* @param nav the string pointing to a local portal part
*/
public void addLocalNavigation(String nav)
{
startLocalNavigation.add(nav);
}
/**
* Returns true if the given string is part of the global navigation of this URL
*
* @param nav the string to check
* @return true, if the string is part of the navigation
*/
public boolean isPartOfGlobalNavigation(String nav)
{
return startGlobalNavigation.contains(nav);
}
/**
* Returns true if the given string is part of the local navigation of this URL
*
* @param nav the string to check
* @return true, if the string is part of the navigation
*/
public boolean isPartOfLocalNavigation(String nav)
{
return startLocalNavigation.contains(nav);
}
public String getGlobalNavigationAsString()
{
StringBuffer result = new StringBuffer(200);
Iterator iterator = startGlobalNavigation.iterator();
if (iterator.hasNext())
{
result.append((String) iterator.next());
while (iterator.hasNext())
{
result.append("/");
result.append((String) iterator.next());
}
}
return result.toString();
}
public String getLocalNavigationAsString()
{
StringBuffer result = new StringBuffer(30);
Iterator iterator = startLocalNavigation.iterator();
if (iterator.hasNext())
{
result.append((String) iterator.next());
while (iterator.hasNext())
{
result.append(".");
result.append((String) iterator.next());
}
}
return result.toString();
}
public String getControlParameterAsString(PortalControlParameter controlParam)
{
Map stateFullParams = startControlParameter;
Map stateLessParams = null;
if (controlParam != null)
{
stateFullParams = controlParam.getStateFullControlParameter();
stateLessParams = controlParam.getStateLessControlParameter();
}
StringBuffer result = new StringBuffer(100);
Iterator iterator = stateFullParams.keySet().iterator();
while (iterator.hasNext())
{
if (iterator.hasNext())
result.append("/");
String name = (String) iterator.next();
result.append(PortalControlParameter.encodeParameter(name));
result.append("/");
result.append((String) stateFullParams.get(name));
}
return result.toString();
}
public String getRequestParameterAsString(PortalControlParameter controlParam)
{
if (controlParam != null)
{
Map requestParams = controlParam.getRequestParameter();
StringBuffer result = new StringBuffer(100);
Iterator iterator = requestParams.keySet().iterator();
boolean hasNext = iterator.hasNext();
if (hasNext)
{
result.append("?");
}
while (hasNext)
{
String name = (String) iterator.next();
Object value = requestParams.get(name);
String[] values = value instanceof String ? new String[] {(String)
value }
: (String[]) value;
int i;
result.append(name);
result.append("=");
result.append(values[0]);
for (i = 1; i < values.length; i++)
{
result.append("&");
result.append(name);
result.append("=");
result.append(values[i]);
};
hasNext = iterator.hasNext();
if (hasNext)
result.append("&");
}
return result.toString();
}
return "";
}
public String toString()
{
return toString(null, null);
}
public String toString(PortalControlParameter controlParam, Boolean p_secure)
{
StringBuffer buffer = getBaseURLBuffer();
buffer.append(this.basePath);
String global = getGlobalNavigationAsString();
if (global.length() > 0)
{
buffer.append("/");
buffer.append(global);
}
String control = getControlParameterAsString(controlParam);
if (control.length() > 0)
{
buffer.append(control);
}
String requestParam = getRequestParameterAsString(controlParam);
if (requestParam.length() > 0)
{
buffer.append(requestParam);
}
String local = getLocalNavigationAsString();
if (local.length() > 0)
{
buffer.append("#");
buffer.append(local);
}
String finalUrl = buffer.toString();
log.debug("PortalUrl before encode: " + finalUrl);
return context.getResponse().encodeURL(finalUrl);
}
Map getClonedStateFullControlParameter()
{
analyzeRequestInformation();
return (Map) startControlParameter.clone();
}
Map getClonedStateLessControlParameter()
{
analyzeRequestInformation();
return (Map) startStateLessControlParameter.clone();
}
public void analyzeControlInformation(PortalControlParameter control)
{
startControlParameter = (HashMap) control.getStateFullControlParameter();
startStateLessControlParameter = (HashMap)
control.getStateLessControlParameter();
}
void analyzeRequestInformation()
{
if (analyzed)
return;
startGlobalNavigation = new ArrayList();
startLocalNavigation = new ArrayList();
startControlParameter = new HashMap();
startStateLessControlParameter = new HashMap();
// check the complete pathInfo for
// * navigational information
// * control information
String pathInfo = context.getRequest().getPathInfo();
if (pathInfo != null)
{
StringTokenizer tokenizer = new StringTokenizer(pathInfo, "/.");
int mode = 0; // 0=navigation, 1=control information
String name = null;
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
if (PortalControlParameter.isControlParameter(token))
{
mode = 1;
name = token;
}
else if (mode == 0)
{
startGlobalNavigation.add(token);
}
else if (mode == 1)
{
if ((PortalControlParameter.isStateFullParameter(name)))
{
startControlParameter.put(
PortalControlParameter.decodeParameterName(name),
PortalControlParameter.decodeParameterValue(name,
token));
}
else
{
startStateLessControlParameter.put(
PortalControlParameter.decodeParameterName(name),
PortalControlParameter.decodeParameterValue(name,
token));
}
mode = 0;
}
}
}
analyzed = true;
}
public void setRenderParameter(PortletWindow portletWindow, String name,
String[] values)
{
startControlParameter.put(
PortalControlParameter.encodeRenderParamName(portletWindow, name),
PortalControlParameter.encodeRenderParamValues(values));
}
public void clearRenderParameters(PortletWindow portletWindow)
{
String prefix = PortalControlParameter.getRenderParamKey(portletWindow);
Iterator keyIterator = startControlParameter.keySet().iterator();
while (keyIterator.hasNext())
{
String name = (String) keyIterator.next();
if (name.startsWith(prefix))
{
keyIterator.remove();
}
}
}
public String getBaseURL()
{
return getBaseURLBuffer().toString();
}
public String getContext()
{
StringBuffer result = getBaseURLBuffer();
result.append(this.contextPath);
return result.toString();
}
private StringBuffer getBaseURLBuffer()
{
StringBuffer buffer = new StringBuffer();
buffer.append(this.serverScheme);
buffer.append("://");
buffer.append(this.serverName);
if ((this.serverScheme.equals(HTTP) && this.serverPort != 80)
|| (this.serverScheme.equals(HTTPS) && this.serverPort != 443))
{
buffer.append(":");
buffer.append(this.serverPort);
}
return buffer;
}
}
1.4 +6 -1
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/BasicAggregator.java
Index: BasicAggregator.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/aggregator/BasicAggregator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BasicAggregator.java 20 Oct 2003 03:45:44 -0000 1.3
+++ BasicAggregator.java 21 Oct 2003 21:52:02 -0000 1.4
@@ -55,6 +55,7 @@
import java.util.Iterator;
+import javax.portlet.WindowState;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -63,6 +64,7 @@
import org.apache.jetspeed.container.PortletContainerFactory;
import org.apache.jetspeed.cps.BaseCommonService;
import org.apache.jetspeed.cps.CPSInitializationException;
+import org.apache.jetspeed.engine.core.PortalControlParameter;
import org.apache.jetspeed.exception.JetspeedException;
import org.apache.jetspeed.om.profile.Entry;
import org.apache.jetspeed.om.profile.PSMLDocument;
@@ -198,6 +200,9 @@
HttpServletRequest servletRequest =
request.getRequestForWindow(portletWindow);
HttpServletResponse servletResponse =
request.getResponseForWindow(portletWindow);
+
+ PortalControlParameter control = new
PortalControlParameter(request.getRequestedPortalURL());
+ WindowState windowState = control.getState(portletWindow);
container.renderPortlet(portletWindow, servletRequest,
servletResponse);
}
1.4 +4 -4
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java
Index: ServletRequestImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/engine/servlet/ServletRequestImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServletRequestImpl.java 20 Oct 2003 03:51:09 -0000 1.3
+++ ServletRequestImpl.java 21 Oct 2003 21:52:02 -0000 1.4
@@ -62,10 +62,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
+import org.apache.jetspeed.Jetspeed;
import org.apache.jetspeed.engine.core.PortalControlParameter;
-import org.apache.jetspeed.engine.core.PortalURL;
import org.apache.pluto.om.window.PortletWindow;
-import org.apache.pluto.services.information.InformationProviderAccess;
/**
* This request wrappers the servlet request and is used
@@ -88,7 +87,8 @@
super(servletRequest);
this.portletWindow = window;
- control = new PortalControlParameter(new PortalURL(servletRequest));
+ // control = new PortalControlParameter(new PortalURLImpl(servletRequest));
+ control = new
PortalControlParameter(Jetspeed.getCurrentRequestContext().getRequestedPortalURL());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]