Also, these discussions REALLY need to happen on dev@.  user@ is not
the right place.

On Thu, Jul 28, 2011 at 10:20 AM, Nathan Bubna <nbu...@gmail.com> wrote:
> Wow.  Slow down.  I already fixed VELTOOLS-146.  You need to svn
> update your code.
>
> On Thu, Jul 28, 2011 at 10:00 AM, Christopher Schultz
> <ch...@christopherschultz.net> wrote:
>> All,
>>
>> On 7/28/2011 12:48 PM, Christopher Schultz wrote:
>>> I think the solution is to modify this so that
>>> generic.LinkTool.absolute() /does/ use the URI class to parse the URI
>>> and separate-out the query string, etc. and then set them on the copied
>>> LinkTool's instance.
>>
>> Okay, this works, but I'm not sure if it's the best solution, or if it's
>> even a complete solution. StrutsLinkTool calls LinkTool.absolute(), but
>> the path is actually a relative path, so maybe calling
>> LinkTool.relative() is a better thing to do. In that case, the fix
>> should probably be different.
>>
>> Quick diff for generic.LinkTool:
>>
>>
>> Index: src/main/java/org/apache/velocity/tools/generic/LinkTool.java
>> ===================================================================
>> --- src/main/java/org/apache/velocity/tools/generic/LinkTool.java
>> (revision 1151249)
>> +++ src/main/java/org/apache/velocity/tools/generic/LinkTool.java
>> (working copy)
>> @@ -1357,6 +1357,7 @@
>>                 {
>>                     return null;
>>                 }
>> +
>>                 copy.setScheme(uri.getScheme());
>>                 copy.setUserInfo(uri.getUserInfo());
>>                 copy.setHost(uri.getHost());
>> @@ -1378,8 +1379,30 @@
>>                 }
>>                 return copy;
>>             }
>> -            else if (!pth.startsWith("/"))
>> +            else if (pth.startsWith("/"))
>>             {
>> +                // This is a relative path, not absolute.
>> +                // That's okay -- parse the URI anyway but don't process
>> +                // the host, scheme, port, user, etc.
>> +                URI uri = toURI(pth);
>> +
>> +                pth = uri.getPath();
>> +                if (pth.equals("/") || pth.length() == 0)
>> +                {
>> +                    pth = null;
>> +                }
>> +                copy.setPath(pth);
>> +                if (uri.getQuery() != null)
>> +                {
>> +                    copy.setQuery(uri.getQuery());
>> +                }
>> +                if (uri.getFragment() != null)
>> +                {
>> +                    copy.setFragment(uri.getFragment());
>> +                }
>> +            }
>> +            else
>> +            {
>>                 // paths that don't start with '/'
>>                 // are considered relative to the current directory
>>                 pth = combinePath(getDirectory(), pth);
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org
For additional commands, e-mail: user-h...@velocity.apache.org

Reply via email to