taylor 2004/04/06 17:49:29
Modified: portal/src/java/org/apache/jetspeed/container/url/impl
PortalControlParameter.java SessionPortalURL.java
PathPortalURL.java AbstractPortalURL.java
portal/src/java/org/apache/jetspeed/container/url
PortalURL.java
portal/src/java/org/apache/jetspeed/container/session/impl
SessionNavigationalState.java
Log:
switched over to sessions-based NavState and URL management
PR:
Obtained from:
Submitted by:
Reviewed by:
CVS: ----------------------------------------------------------------------
CVS: PR:
CVS: If this change addresses a PR in the problem report tracking
CVS: database, then enter the PR number(s) here.
CVS: Obtained from:
CVS: If this change has been taken from another system, such as NCSA,
CVS: then name the system in this line, otherwise delete it.
CVS: Submitted by:
CVS: If this code has been contributed to Apache by someone else; i.e.,
CVS: they sent us a patch or a new module, then include their name/email
CVS: address here. If this is your work then delete this line.
CVS: Reviewed by:
CVS: If we are doing pre-commit code reviews and someone else has
CVS: reviewed your changes, include their name(s) here.
CVS: If you have not had it reviewed then delete this line.
Revision Changes Path
1.5 +14 -106
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/PortalControlParameter.java
Index: PortalControlParameter.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/PortalControlParameter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PortalControlParameter.java 6 Apr 2004 19:45:56 -0000 1.4
+++ PortalControlParameter.java 7 Apr 2004 00:49:29 -0000 1.5
@@ -16,7 +16,6 @@
package org.apache.jetspeed.container.url.impl;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -27,6 +26,7 @@
import org.apache.jetspeed.Jetspeed;
import org.apache.jetspeed.container.session.NavigationalStateComponent;
+import org.apache.jetspeed.container.url.PortalURL;
import org.apache.jetspeed.container.window.PortletWindowAccessor;
import org.apache.pluto.om.window.PortletWindow;
import org.apache.pluto.util.StringUtils;
@@ -42,14 +42,12 @@
*/
public class PortalControlParameter
{
-
- private Map requestParameter = new HashMap();
private Map stateFullControlParameter = null;
private Map stateLessControlParameter = null;
private NavigationalStateComponent nav;
- private PathPortalURL url;
+ private PortalURL url;
- public PortalControlParameter(PathPortalURL url, NavigationalStateComponent nav)
+ public PortalControlParameter(PortalURL url, NavigationalStateComponent nav)
{
this.nav = nav;
this.url = url;
@@ -57,13 +55,13 @@
public void init()
{
- stateFullControlParameter =
((PathPortalURL)this.url).getClonedStateFullControlParameter();
- stateLessControlParameter = ((PathPortalURL)
this.url).getClonedStateLessControlParameter();
+ stateFullControlParameter =
((AbstractPortalURL)this.url).getClonedStateFullControlParameter();
+ stateLessControlParameter = ((AbstractPortalURL)
this.url).getClonedStateLessControlParameter();
}
public void clearRenderParameters(PortletWindow portletWindow)
{
- String prefix = getRenderParamKey(portletWindow);
+ String prefix = url.getRenderParamKey(portletWindow);
Iterator keyIterator = stateFullControlParameter.keySet().iterator();
while (keyIterator.hasNext())
@@ -76,11 +74,6 @@
}
}
- private String getActionKey(PortletWindow window)
- {
- return nav.getNavigationKey(NavigationalStateComponent.ACTION) + "_" +
window.getId().toString();
- }
-
public PortletMode getMode(PortletWindow window)
{
String mode = (String)
stateFullControlParameter.get(url.getModeKey(window));
@@ -100,45 +93,10 @@
if
(name.startsWith(nav.getNavigationKey(NavigationalStateComponent.ACTION)))
{
String id =
name.substring(nav.getNavigationKey(NavigationalStateComponent.ACTION).length() + 1);
- /*
-
- TODO: BROKEN: need to go the profiler to get the profile, psml, and
then window for an entity
- this is normally done in the aggregator valve, need to sort out the
sequence
-
- Fragment fragment =
org.apache.pluto.portalImpl.services.pageregistry.PageRegistry.getFragment(id);
- if(fragment instanceof PortletFragment) {
- return ((PortletFragment)fragment).getPortletWindow();
- }
-
- StringTokenizer idTokenizer = new StringTokenizer(id,
KEY_DELIMITER);
- String portletName = idTokenizer.nextToken();
- String sequence = idTokenizer.nextToken();
- String entityName = idTokenizer.nextToken();
- PortletRegistryComponent registry =
- (PortletRegistryComponent)
Jetspeed.getComponentManager().getComponent(PortletRegistryComponent.class);
- PortletDefinition portletDefinition =
registry.getPortletDefinitionByUniqueName(entityName + "::" + portletName);
-
- if (portletDefinition == null)
- {
- throw new JetspeedException("Failed to load: " + portletName +
" from registry");
- }
- */
-
- // TODO: deprecate this class and reimplment as a NavigationalState
component
PortletWindowAccessor windowAccessor =
(PortletWindowAccessor)
Jetspeed.getComponentManager().getComponent(PortletWindowAccessor.class);
portletWindow = windowAccessor.getPortletWindow(id);
- /*
- PortletEntityAccessComponent entityAccess =
- (PortletEntityAccessComponent)
Jetspeed.getComponentManager().getComponent(PortletEntityAccessComponent.class);
- ObjectID entityId = JetspeedObjectID.createFromString(id);
-
- PortletEntity entity = entityAccess.getPortletEntity(entityId);
- portletWindow = entityAccess.getPortletWindow(entity);
-
- portletWindow = PortletWindowFactory.getWindow(portletDefinition,
entityName);
- */
}
}
@@ -147,34 +105,26 @@
public PortletMode getPrevMode(PortletWindow window)
{
- String mode = (String)
stateFullControlParameter.get(getPrevModeKey(window));
+ String mode = (String)
stateFullControlParameter.get(url.getPrevModeKey(window));
if (mode != null)
return new PortletMode(mode);
else
return null;
}
- private String getPrevModeKey(PortletWindow window)
- {
- return nav.getNavigationKey(NavigationalStateComponent.PREV_MODE) + "_" +
window.getId().toString();
- }
public WindowState getPrevState(PortletWindow window)
{
- String state = (String)
stateFullControlParameter.get(getPrevStateKey(window));
+ String state = (String)
stateFullControlParameter.get(url.getPrevStateKey(window));
if (state != null)
return new WindowState(state);
else
return null;
}
- private String getPrevStateKey(PortletWindow window)
- {
- return nav.getNavigationKey(NavigationalStateComponent.PREV_STATE) + "_" +
window.getId().toString();
- }
-
+
public Iterator getRenderParamNames(PortletWindow window)
{
List returnvalue = new ArrayList();
- String prefix = getRenderParamKey(window);
+ String prefix = url.getRenderParamKey(window);
Iterator keyIterator = stateFullControlParameter.keySet().iterator();
while (keyIterator.hasNext())
@@ -196,11 +146,6 @@
return values;
}
- public Map getRequestParameter()
- {
- return requestParameter;
- }
-
public WindowState getState(PortletWindow window)
{
String state = (String)
stateFullControlParameter.get(url.getStateKey(window));
@@ -239,14 +184,14 @@
public void setAction(PortletWindow window)
{
- getStateFullControlParameter().put(getActionKey(window),
nav.getNavigationKey(NavigationalStateComponent.ACTION).toUpperCase());
+ getStateFullControlParameter().put(url.getActionKey(window),
nav.getNavigationKey(NavigationalStateComponent.ACTION).toUpperCase());
}
public void setMode(PortletWindow window, PortletMode mode)
{
Object prevMode = stateFullControlParameter.get(url.getModeKey(window));
if (prevMode != null)
- stateFullControlParameter.put(getPrevModeKey(window), prevMode);
+ stateFullControlParameter.put(url.getPrevModeKey(window), prevMode);
// set current mode
stateFullControlParameter.put(url.getModeKey(window), mode.toString());
}
@@ -259,22 +204,11 @@
// setRequestParam(encodedKey, values);
}
- /*
- public void setRequestParam(String name, String value)
- {
- requestParameter.put(name, value );
- }
- */
- public void setRequestParam(String name, String[] values)
- {
- requestParameter.put(name, values);
- }
-
public void setState(PortletWindow window, WindowState state)
{
Object prevState = stateFullControlParameter.get(url.getStateKey(window));
if (prevState != null)
- stateFullControlParameter.put(getPrevStateKey(window), prevState);
+ stateFullControlParameter.put(url.getPrevStateKey(window), prevState);
stateFullControlParameter.put(url.getStateKey(window), state.toString());
}
@@ -311,11 +245,6 @@
return returnvalue.toString();
}
- public String getRenderParamKey(PortletWindow window)
- {
- return nav.getNavigationKey(NavigationalStateComponent.RENDER_PARAM) + "_"
+ window.getId().toString();
- }
-
public String encodeRenderParamValues(String[] paramValues)
{
StringBuffer returnvalue = new StringBuffer(100);
@@ -378,27 +307,6 @@
value = StringUtils.replace(value, ".", "0x2");
return value;
}
-
- public boolean isNavigationalParameter(String token)
- {
- return
token.startsWith(nav.getNavigationKey(NavigationalStateComponent.PREFIX));
- }
- public boolean isStateFullParameter(String param)
- {
- if (isNavigationalParameter(param))
- {
- String prefix =
nav.getNavigationKey(NavigationalStateComponent.PREFIX);
- if ((param.startsWith(prefix +
nav.getNavigationKey(NavigationalStateComponent.MODE)))
- || (param.startsWith(prefix +
nav.getNavigationKey(NavigationalStateComponent.PREV_MODE)))
- || (param.startsWith(prefix +
nav.getNavigationKey(NavigationalStateComponent.STATE)))
- || (param.startsWith(prefix +
nav.getNavigationKey(NavigationalStateComponent.PREV_STATE)))
- || (param.startsWith(prefix +
nav.getNavigationKey(NavigationalStateComponent.RENDER_PARAM))))
- {
- return true;
- }
- }
- return false;
- }
}
1.2 +9 -121
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/SessionPortalURL.java
Index: SessionPortalURL.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/SessionPortalURL.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SessionPortalURL.java 6 Apr 2004 19:45:56 -0000 1.1
+++ SessionPortalURL.java 7 Apr 2004 00:49:29 -0000 1.2
@@ -35,7 +35,11 @@
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @version $Id$
*/
-public class SessionPortalURL extends AbstractPortalURL implements PortalURL
+public class SessionPortalURL
+ extends
+ AbstractPortalURL
+ implements
+ PortalURL
{
private String stateKey = null;
private WindowState state = null;
@@ -45,128 +49,12 @@
public SessionPortalURL(RequestContext context, NavigationalStateComponent nsc)
{
super(context, nsc);
- // analyze();
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#setState(org.apache.pluto.om.window.PortletWindow,
javax.portlet.WindowState)
- */
- public void setState(PortletWindow window, WindowState state)
- {
- stateKey = getStateKey(window);
- this.state = state;
+ //analyze();
}
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#setMode(org.apache.pluto.om.window.PortletWindow,
javax.portlet.PortletMode)
- */
- public void setMode(PortletWindow window, PortletMode mode)
- {
- modeKey = getModeKey(window);
- this.mode = mode;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#getState(org.apache.pluto.om.window.PortletWindow)
- */
- public WindowState getState(PortletWindow window)
- {
- return this.state;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#getMode(org.apache.pluto.om.window.PortletWindow)
- */
- public PortletMode getMode(PortletWindow window)
- {
- return this.mode;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#getPreviousMode(org.apache.pluto.om.window.PortletWindow)
- */
- public PortletMode getPreviousMode(PortletWindow window)
- {
- return null;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#getPreviousState(org.apache.pluto.om.window.PortletWindow)
- */
- public WindowState getPreviousState(PortletWindow window)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#getRenderParamNames(org.apache.pluto.om.window.PortletWindow)
- */
- public Iterator getRenderParamNames(PortletWindow window)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#getRenderParamValues(org.apache.pluto.om.window.PortletWindow,
java.lang.String)
- */
- public String[] getRenderParamValues(PortletWindow window, String paramName)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.container.url.PortalURL#getPortletWindowOfAction()
- */
- public PortletWindow getPortletWindowOfAction()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#clearRenderParameters(org.apache.pluto.om.window.PortletWindow)
- */
- public void clearRenderParameters(PortletWindow portletWindow)
- {
- // TODO Auto-generated method stub
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#setAction(org.apache.pluto.om.window.PortletWindow)
- */
- public void setAction(PortletWindow window)
+ public boolean isStateFullParameter(String param)
{
- // TODO Auto-generated method stub
+ return false;
}
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#setRequestParam(java.lang.String,
java.lang.String[])
- */
- public void setRequestParam(String name, String[] values)
- {
- // TODO Auto-generated method stub
- }
-
- /* (non-Javadoc)
- * @see
org.apache.jetspeed.container.url.PortalURL#setRenderParam(org.apache.pluto.om.window.PortletWindow,
java.lang.String, java.lang.String[])
- */
- public void setRenderParam(PortletWindow window, String name,
- String[] values)
- {
- // TODO Auto-generated method stub
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.container.url.PortalURL#toString(boolean)
- */
- public String toString(boolean secure)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
}
1.2 +11 -368
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/PathPortalURL.java
Index: PathPortalURL.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/PathPortalURL.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PathPortalURL.java 6 Apr 2004 19:45:56 -0000 1.1
+++ PathPortalURL.java 7 Apr 2004 00:49:29 -0000 1.2
@@ -50,386 +50,29 @@
{
private static final Log log = LogFactory.getLog(PathPortalURL.class);
- 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 PortalControlParameter pcp;
-
public PathPortalURL(RequestContext context, NavigationalStateComponent nsc)
{
super(context, nsc);
- pcp = new PortalControlParameter(this, nsc);
- pcp.init();
- }
-
- public PortalControlParameter getControlParameter()
- {
- return this.pcp;
}
- /**
- * 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(pcp.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(false);
- }
-
- public String toString(boolean secure)
- {
- return toString(pcp, new Boolean(secure));
- }
-
- 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()
+ public boolean isStateFullParameter(String param)
{
- 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)
+ if (isNavigationalParameter(param))
{
- StringTokenizer tokenizer = new StringTokenizer(pathInfo, "/.");
-
- int mode = 0; // 0=navigation, 1=control information
- String name = null;
- while (tokenizer.hasMoreTokens())
+ String prefix =
nsc.getNavigationKey(NavigationalStateComponent.PREFIX);
+ if ((param.startsWith(prefix +
nsc.getNavigationKey(NavigationalStateComponent.MODE)))
+ || (param.startsWith(prefix +
nsc.getNavigationKey(NavigationalStateComponent.PREV_MODE)))
+ || (param.startsWith(prefix +
nsc.getNavigationKey(NavigationalStateComponent.STATE)))
+ || (param.startsWith(prefix +
nsc.getNavigationKey(NavigationalStateComponent.PREV_STATE)))
+ || (param.startsWith(prefix +
nsc.getNavigationKey(NavigationalStateComponent.RENDER_PARAM))))
{
- String token = tokenizer.nextToken();
-
- if (pcp.isNavigationalParameter(token))
- {
- mode = 1;
- name = token;
- }
- else if (mode == 0)
- {
- startGlobalNavigation.add(token);
- }
- else if (mode == 1)
- {
- if ((pcp.isStateFullParameter(name)))
- {
- startControlParameter.put(
- pcp.decodeParameterName(name),
- pcp.decodeParameterValue(name, token));
- }
- else
- {
- startStateLessControlParameter.put(
- pcp.decodeParameterName(name),
- pcp.decodeParameterValue(name, token));
- }
- mode = 0;
- }
+ return true;
}
}
- analyzed = true;
-
- }
-
- public void setRenderParameter(PortletWindow portletWindow, String name,
String[] values)
- {
- startControlParameter.put(
- pcp.encodeRenderParamName(portletWindow, name),
- pcp.encodeRenderParamValues(values));
-
+ return false;
}
- public String getContext()
- {
- StringBuffer result = getBaseURLBuffer();
- result.append(this.contextPath);
- return result.toString();
- }
-
- public Iterator getRenderParamNames(PortletWindow window)
- {
- return pcp.getRenderParamNames(window);
- }
-
- public String[] getRenderParamValues(PortletWindow window, String paramName)
- {
- return pcp.getRenderParamValues(window, paramName);
- }
-
- public PortletWindow getPortletWindowOfAction()
- {
- return pcp.getPortletWindowOfAction();
- }
-
- public void clearRenderParameters(PortletWindow portletWindow)
- {
- pcp.clearRenderParameters(portletWindow);
- }
-
- public void setAction(PortletWindow window)
- {
- pcp.setAction(window);
- }
-
- public void setRequestParam(String name, String[] values)
- {
- pcp.setRequestParam(name, values);
- }
-
- public void setRenderParam(PortletWindow window, String name, String[] values)
- {
- pcp.setRenderParam(window, name, values);
- }
-
- public void setMode(PortletWindow window, PortletMode mode)
- {
- pcp.setMode(window, mode);
- }
-
- public void setState(PortletWindow window, WindowState state)
- {
- pcp.setState(window, state);
- }
-
- public PortletMode getPortletMode(PortletWindow window)
- {
- return pcp.getMode(window);
- }
-
- public WindowState getState(PortletWindow window)
- {
- return pcp.getState(window);
- }
-
- public PortletMode getMode(PortletWindow window)
- {
- return pcp.getMode(window);
- }
-
- public PortletMode getPreviousMode(PortletWindow window)
- {
- return pcp.getPrevMode(window);
- }
-
- public WindowState getPreviousState(PortletWindow window)
- {
- return pcp.getPrevState(window);
- }
}
1.2 +434 -5
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java
Index: AbstractPortalURL.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/impl/AbstractPortalURL.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractPortalURL.java 6 Apr 2004 19:45:56 -0000 1.1
+++ AbstractPortalURL.java 7 Apr 2004 00:49:29 -0000 1.2
@@ -15,6 +15,16 @@
*/
package org.apache.jetspeed.container.url.impl;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.portlet.PortletMode;
+import javax.portlet.WindowState;
+
import org.apache.jetspeed.container.session.NavigationalStateComponent;
import org.apache.jetspeed.container.url.PortalURL;
import org.apache.jetspeed.request.RequestContext;
@@ -29,7 +39,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @version $Id$
*/
-public abstract class AbstractPortalURL
+public abstract class AbstractPortalURL implements PortalURL
{
protected String serverName;
protected String serverScheme;
@@ -38,12 +48,23 @@
protected int serverPort;
protected NavigationalStateComponent nsc;
protected RequestContext context;
+ protected Map requestParameters = new HashMap();
+ protected boolean analyzed = false;
+ protected boolean secure;
+ protected List startGlobalNavigation = new ArrayList();
+ protected List startLocalNavigation = new ArrayList();
+ protected HashMap startControlParameter = new HashMap();
+ protected HashMap startStateLessControlParameter = new HashMap();
+ protected PortalControlParameter pcp;
+
public AbstractPortalURL(RequestContext context, NavigationalStateComponent nsc)
{
this.context = context;
this.nsc = nsc;
init(context);
+ pcp = new PortalControlParameter(this, nsc);
+ pcp.init();
}
public void init(RequestContext context)
@@ -54,7 +75,22 @@
this.serverPort = context.getRequest().getServerPort();
this.serverScheme = context.getRequest().getScheme();
this.contextPath = context.getRequest().getContextPath();
- this.basePath = contextPath + context.getRequest().getServletPath();
+ if (contextPath == null)
+ {
+ contextPath = "";
+ }
+ String servletPath = context.getRequest().getServletPath();
+ if (servletPath == null)
+ {
+ servletPath = "";
+ }
+ this.basePath = contextPath + servletPath;
+
+ if (basePath == null)
+ {
+ basePath = "";
+ }
+
}
}
@@ -81,16 +117,409 @@
public boolean isNavigationalParameter(String token)
{
return
token.startsWith(nsc.getNavigationKey(NavigationalStateComponent.PREFIX));
+ }
+
+ public String getRenderParamKey(PortletWindow window)
+ {
+ return nsc.getNavigationKey(NavigationalStateComponent.RENDER_PARAM) + "_"
+ window.getId().toString();
}
- String getStateKey(PortletWindow window)
+ public void setRequestParam(String name, String[] values)
+ {
+ requestParameters.put(name, values);
+ }
+
+ public Map getRequestParameters()
+ {
+ return requestParameters;
+ }
+
+ public String getRequestParametersAsString()
+ {
+ if (requestParameters != null)
+ {
+ StringBuffer result = new StringBuffer(100);
+ Iterator iterator = requestParameters.keySet().iterator();
+ boolean hasNext = iterator.hasNext();
+ if (hasNext)
+ {
+ result.append("?");
+ }
+
+ while (hasNext)
+ {
+
+ String name = (String) iterator.next();
+ Object value = requestParameters.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 getStateKey(PortletWindow window)
{
return nsc.getNavigationKey(NavigationalStateComponent.STATE) + "_" +
window.getId().toString();
}
- String getModeKey(PortletWindow window)
+ public String getModeKey(PortletWindow window)
{
return nsc.getNavigationKey(NavigationalStateComponent.MODE) + "_" +
window.getId().toString();
+ }
+
+ public String getActionKey(PortletWindow window)
+ {
+ return nsc.getNavigationKey(NavigationalStateComponent.ACTION) + "_" +
window.getId().toString();
+ }
+
+ public String getPrevModeKey(PortletWindow window)
+ {
+ return nsc.getNavigationKey(NavigationalStateComponent.PREV_MODE) + "_" +
window.getId().toString();
+ }
+
+ public String getPrevStateKey(PortletWindow window)
+ {
+ return nsc.getNavigationKey(NavigationalStateComponent.PREV_STATE) + "_" +
window.getId().toString();
+ }
+
+ 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 (isNavigationalParameter(token))
+ {
+ mode = 1;
+ name = token;
+ }
+ else if (mode == 0)
+ {
+ startGlobalNavigation.add(token);
+ }
+ else if (mode == 1)
+ {
+ if ((isStateFullParameter(name)))
+ {
+ startControlParameter.put(
+ pcp.decodeParameterName(name),
+ pcp.decodeParameterValue(name, token));
+ }
+ else
+ {
+ startStateLessControlParameter.put(
+ pcp.decodeParameterName(name),
+ pcp.decodeParameterValue(name, token));
+ }
+ mode = 0;
+ }
+ }
+ }
+ analyzed = true;
+
+ }
+
+ /**
+ * 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(pcp.encodeParameter(name));
+ result.append("/");
+ result.append((String) stateFullParams.get(name));
+ }
+
+ return result.toString();
+ }
+
+
+
+ public String toString()
+ {
+ return toString(false);
+ }
+
+ public String toString(boolean secure)
+ {
+ return toString(pcp, new Boolean(secure));
+ }
+
+ 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 params = getRequestParametersAsString();
+ if (params.length() > 0)
+ {
+ buffer.append(params);
+ }
+
+ String local = getLocalNavigationAsString();
+ if (local.length() > 0)
+ {
+ buffer.append("#");
+ buffer.append(local);
+ }
+
+ String finalUrl = buffer.toString();
+ 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();
+ }
+
+ public void setRenderParameter(PortletWindow portletWindow, String name,
String[] values)
+ {
+ startControlParameter.put(
+ pcp.encodeRenderParamName(portletWindow, name),
+ pcp.encodeRenderParamValues(values));
+
+ }
+
+ public String getContext()
+ {
+ StringBuffer result = getBaseURLBuffer();
+ result.append(this.contextPath);
+ return result.toString();
+ }
+
+ public Iterator getRenderParamNames(PortletWindow window)
+ {
+ return pcp.getRenderParamNames(window);
+ }
+
+ public String[] getRenderParamValues(PortletWindow window, String paramName)
+ {
+ return pcp.getRenderParamValues(window, paramName);
+ }
+
+ public PortletWindow getPortletWindowOfAction()
+ {
+ return pcp.getPortletWindowOfAction();
+ }
+
+ public void clearRenderParameters(PortletWindow portletWindow)
+ {
+ pcp.clearRenderParameters(portletWindow);
+ }
+
+ public void setAction(PortletWindow window)
+ {
+ pcp.setAction(window);
+ }
+
+ public void setRenderParam(PortletWindow window, String name, String[] values)
+ {
+ pcp.setRenderParam(window, name, values);
+ }
+
+ public void setMode(PortletWindow window, PortletMode mode)
+ {
+ pcp.setMode(window, mode);
+ }
+
+ public void setState(PortletWindow window, WindowState state)
+ {
+ pcp.setState(window, state);
+ }
+
+ public PortletMode getPortletMode(PortletWindow window)
+ {
+ return pcp.getMode(window);
+ }
+
+ public WindowState getState(PortletWindow window)
+ {
+ return pcp.getState(window);
+ }
+
+ public PortletMode getMode(PortletWindow window)
+ {
+ return pcp.getMode(window);
+ }
+
+ public PortletMode getPreviousMode(PortletWindow window)
+ {
+ return pcp.getPrevMode(window);
+ }
+
+ public WindowState getPreviousState(PortletWindow window)
+ {
+ return pcp.getPrevState(window);
+ }
+
+ public abstract boolean isStateFullParameter(String tag);
+
+ public PortalControlParameter getControlParameter()
+ {
+ return this.pcp;
}
}
1.4 +11 -1
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/PortalURL.java
Index: PortalURL.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/url/PortalURL.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PortalURL.java 6 Apr 2004 19:45:56 -0000 1.3
+++ PortalURL.java 7 Apr 2004 00:49:29 -0000 1.4
@@ -86,5 +86,15 @@
String toString(boolean secure);
+ boolean isStateFullParameter(String param);
+
+ String getStateKey(PortletWindow window);
+ String getModeKey(PortletWindow window);
+ String getActionKey(PortletWindow window);
+ String getPrevModeKey(PortletWindow window);
+ String getPrevStateKey(PortletWindow window);
+ String getRenderParamKey(PortletWindow window);
+
+
}
1.9 +2 -2
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/SessionNavigationalState.java
Index: SessionNavigationalState.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/container/session/impl/SessionNavigationalState.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SessionNavigationalState.java 6 Apr 2004 19:45:56 -0000 1.8
+++ SessionNavigationalState.java 7 Apr 2004 00:49:29 -0000 1.9
@@ -109,5 +109,5 @@
}
return state;
}
-
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]