portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ate Douma <...@douma.nu>
Subject Re: PortletURLProviderImpl.toString() ?
Date Sun, 10 Apr 2005 20:23:31 GMT

Raphaël Luta wrote:
> I was looking at J2 source code trying to figure out where to
> modify the source code to allow a portal parameter to be considered
> as a portlet parameter for all portlets found on the same page when
> I encountered the following code in
> org.apache.jetspeed.services.information.PortletURLProviderImpl
>     public String toString()
>     {
>         if ( clearParameters )
>         {
>             if (parameters != null)
>             {
>                 Iterator names = parameters.keySet().iterator();
>                 Map map = new HashMap();
>                 while (names.hasNext())
>                 {
>                     String name = (String) names.next();
>                     Object value = parameters.get(name);
>                     String[] values = value instanceof String ? new 
> String[] {(String) value } : (String[]) value;
>                     map.put(name,values);
>                 }
>             }
>             return 
> url.createPortletURL(portletWindow,parameters,mode,state,action,secure);
>         }
>         else
>         {
>             return url.createPortletURL(portletWindow,mode,state,secure);
>         }
>     }
> This seems clearly wrong to me since we create a new local HashMap (map)
> that is never atually used. If someone can clue me in what this code is
> supposed to do, I'll fix it.
You're absolutely correct Raphaël, this is wrong.
It is a long time ago I've been looking at this and I can't remember anymore
what I was thinking at the time I wrote it but indeed, this isn't good.
The whole logic behind the if (clearparameters) statement is wrong although it
more or less seems to do the job (but probably only because Pluto always calls
clearParameters() before it calls setParameters(Map)).

There is more going on here though. I've seen some reports by users complaining
that previously defined renderparameters aren't removed even if not defined on
a new PortletURL. This area in the code might be part of that problem.
Most likely, I was working on that functionality but simply forgot to complete it
when I rewrote the PortletURL encoding.
Solving this properly might require changes to the NavigationalState implementation as well!
I wouldn't want to implement a (too) quick fix for that.

Starting from Wednesday, I expect to have more time on my hands to look at this
and will try to resolve it. if you can't wait that long and/or it is blocking you
go ahead and fix this part. I'll then pick it up after that.

Regards, Ate

To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org

View raw message