You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ji...@apache.org> on 2010/02/23 21:11:28 UTC

[jira] Commented: (TAP5-961) ComponentEventLinkEncoderMethodAdvice#rewriteIfNeeded drops parameters when rewriting links.

    [ https://issues.apache.org/jira/browse/TAP5-961?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12837423#action_12837423 ] 

Howard M. Lewis Ship commented on TAP5-961:
-------------------------------------------

Also, this is a chance to remove the gratuitous use of method advice (rather than decoration).  Advice is when the underlying interface is not known, decoration is smarter when it is known (such as in this case, when a decorator is being put specifically around the ComponentEventLinkEncoder service).

> ComponentEventLinkEncoderMethodAdvice#rewriteIfNeeded drops parameters when rewriting links.
> --------------------------------------------------------------------------------------------
>
>                 Key: TAP5-961
>                 URL: https://issues.apache.org/jira/browse/TAP5-961
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.1.0.5
>            Reporter: Richard Bolkey
>            Assignee: Howard M. Lewis Ship
>         Attachments: tap5-961.patch
>
>
> When a link is rewritten that contains parameters, the parameter information is not passed along to the newly created link.  This creates a problem, for example, when the activation context "t:ac" is specified as a parameter in event links.
>     Link rewriteIfNeeded(Link link, URLRewriteContext context)
>     {
>         Link newLink = null;
>         SimpleRequestWrapper fakeRequest = new SimpleRequestWrapper(request, link.toAbsoluteURI());
>         Request rewritten = urlRewriter.processLink(fakeRequest,context);
>         // if the original request is equal to the rewritten one, no
>         // rewriting is needed
>         if (fakeRequest != rewritten)
>         {
>             final String originalServerName = request.getServerName();
>             final String rewrittenServerName = rewritten.getServerName();
>             boolean absolute = originalServerName.equals(rewrittenServerName) == false;
>             final String newPath = rewritten.getPath();
>             String newUrl = absolute ? fullUrl(rewritten) : newPath;
>             newLink = new LinkImpl(newUrl, false, false, response, null);
>             (edit: ** newLink needs parameter information specified here)
>         }
>         return newLink;
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.