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]

Reply via email to