Wow!  Viva la Git!  Not only was I able to ressurect the deleted
files, I was able to make it as if I had never deleted them in the
first place (git rebase -i is magic).

On Wed, Jun 2, 2010 at 4:03 PM, Howard Lewis Ship <[email protected]> wrote:
> Please update TAP5-1042 w/ your use cases and  can see about changing
> the API.  I'll also be doing some refactoring.
>
> On the link transformation side, a contribution could return null but
> (as a side effect) modify the query parameters in the default Link.
>
> On the request dispatching side, you could contribute filters to the
> RequestHandler, or add a decorator to MasterDispatcher; either of
> these will give you the chance to override the Request used by the
> rest of the system ... just don't forget to update RequestGlobals,
> otherwise the many places that @Inject the Request will see the
> un-tweaked version.
>
> On Wed, Jun 2, 2010 at 2:24 PM, Josh Canfield <[email protected]> wrote:
>>>    PageRenderRequestParameters decodePageRenderRequest(Request request);
>>
>> Yikes.
>> Maybe I should wait until the first rev is committed, but this looks
>> intimidating if I just want to append /t5 to the url on the way out
>> and take it off on the way in. Tapestry does some heavy lifting in the
>>  ComponentEventLinkEncoder that I don't want to duplicate so instead
>> it looks like I'm going to provide a wrapper for Request with a
>> modified url so I can pass it to ComponentEventLinkEncoder myself...
>> This seems like its going to generate questions on the user list.
>>
>> If I return a value, is the next transformer going to get to run? If
>> so my strategy detailed above isn't going to work if the other
>> transformer also tweaked the link such that it isn't recognizable by
>> Tapestry. I guess that goes both ways, if I modify a link does the
>> next transformer get to modify the link also?
>>
>> Maybe not a requirement but it doesn't look like I'll be able to
>> add/remove request parameters to incoming requests.
>>
>> Josh
>>
>> On Wed, Jun 2, 2010 at 1:29 PM, Howard Lewis Ship <[email protected]> wrote:
>>> There are probably what you need, from interface Link:
>>>
>>>    /**
>>>     * Returns the completely unadorned base path. Other methods (such
>>> as {...@link #toURI()}), may append
>>>     * an anchor or query parameters.
>>>     *
>>>     * @since 5.2.0
>>>     */
>>>    String getBasePath();
>>>
>>>    /**
>>>     * Creates a copy of this link that has the same parameters,
>>> anchor, and other attributes, but a different
>>>     * {...@linkplain #getBasePath() base path}.
>>>     *
>>>     * @since 5.2.0
>>>     */
>>>    Link copyWithBasePath(String basePath);
>>>
>>>
>>>
>>> Also, the core of the API are a pair of these (the other being for
>>> component event requests):
>>>
>>> @UsesOrderedConfiguration(PageRenderLinkTransformer.class)
>>> public interface PageRenderLinkTransformer
>>> {
>>>    /**
>>>     * Transforms a page render link.
>>>     *
>>>     * @param defaultLink
>>>     *            default Link for this request
>>>     * @param parameters
>>>     *            that define the request
>>>     * @return replacement Link, or null
>>>     */
>>>    Link transformPageRenderLink(Link defaultLink,
>>> PageRenderRequestParameters parameters);
>>>
>>>    /**
>>>     * Attempts to decode the page render request, to perform the
>>> opposite action for
>>>     * {...@link #transformPageRenderLink(Link,
>>> PageRenderRequestParameters)}. The transformer
>>>     * is also responsible for identifying the locale in the request
>>> (as part of the path, or as a
>>>     * query parameter or cookie) and setting the locale for the request.
>>>     * <p>
>>>     * This method will be invoked from the {...@link
>>> PageRenderDispatcher} and a non-null value returned from this method
>>>     * will prevent the default {...@link
>>> ComponentEventLinkEncoder#decodePageRenderRequest(Request)} method
>>> from being
>>>     * invoked.
>>>     *
>>>     * @return decoded parameters, or null to proceed normally
>>>     * @see LocalizationSetter#setLocaleFromLocaleName(String)
>>>     */
>>>    PageRenderRequestParameters decodePageRenderRequest(Request request);
>>> }
>>>
>>> On Wed, Jun 2, 2010 at 1:20 PM, Josh Canfield <[email protected]> 
>>> wrote:
>>>>> I'm starting work on a replacement for the URLRewriter system.
>>>> Hooray! I'm curious to see what you come up with.
>>>>
>>>>> public interface ComponentEventLinkTransformer {
>>>>>  Link transformComponentEventLink(Link link,
>>>>> ComponentEventRequestParameters parameters);
>>>>> }
>>>>
>>>> I'd like to not have to re-implement the Link interface if I'm just
>>>> going to change the url or add query parameters. Currently LinkImpl is
>>>> in internal.services so if we could get that moved, or add setters to
>>>> Link or some other strategy.
>>>>
>>>> You've probably only given a piece of the interface, but to be sure:
>>>> For incoming URLs that have been rewritten, does
>>>> ComponentEventRequestParameters make sense? If I've totally remapped
>>>> the URL tapestry is going to have a hard time putting anything useful
>>>> in there.
>>>>
>>>> Josh
>>>>
>>>> On Wed, Jun 2, 2010 at 10:11 AM, Howard Lewis Ship <[email protected]> 
>>>> wrote:
>>>>> I'm starting work on a replacement for the URLRewriter system.  We've
>>>>> previously discussed this, and it will be a non-backwards compatible
>>>>> change (I'm starting by removing the existing URLRewriter and related
>>>>> code).
>>>>>
>>>>> The goals are:
>>>>>
>>>>> * Keep it simple.
>>>>> * Make it possible to easily rewrite the Links created for component
>>>>> event requests, page render requests, and asset requests.
>>>>>
>>>>> I think the basic API will be something like:
>>>>>
>>>>> public interface ComponentEventLinkTransformer {
>>>>>  Link transformComponentEventLink(Link link,
>>>>> ComponentEventRequestParameters parameters);
>>>>> }
>>>>>
>>>>> In other words, contributed code has access to the same information as
>>>>> the ComponentEventLinkEncoder service (in fact, this will be invoked
>>>>> from inside CELE). There will be an ordered configuratoin
>>>>> of transformers.  A transformer can return a non-null Link to replace
>>>>> the default Link.
>>>>>
>>>>> I have two main use cases:
>>>>>
>>>>> One client wants to easily prefix all Tapestry requests with the
>>>>> virtual folder "t5"  (i.e., "/t5/somepage") to make it easier to run
>>>>> the T4 and T5 versions of the application side-by-side.
>>>>>
>>>>> A second client wants some specific control over URLs. They want a
>>>>> certain page to have a number of URLs that would normally map to the
>>>>> Index page instead map to this alternate page, with context.
>>>>> Obfuscated example: they want "/toys", "/games", and "/equipment" to
>>>>> all point to a Search page, each with a different page activation
>>>>> context.  The short URL is important to them, but there's already an
>>>>> Index page at "/".
>>>>>
>>>>>
>>>>> --
>>>>> Howard M. Lewis Ship
>>>>>
>>>>> Creator of Apache Tapestry
>>>>>
>>>>> The source for Tapestry training, mentoring and support. Contact me to
>>>>> learn how I can get you up and productive in Tapestry fast!
>>>>>
>>>>> (971) 678-5210
>>>>> http://howardlewisship.com
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> --
>>>> http://www.bodylabgym.com - a private, by appointment only, one-on-one
>>>> health and fitness facility.
>>>> --
>>>> http://www.ectransition.com - Quality Electronic Cigarettes at a
>>>> reasonable price!
>>>> --
>>>> TheDailyTube.com. Sign up and get the best new videos on the internet
>>>> delivered fresh to your inbox.
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Howard M. Lewis Ship
>>>
>>> Creator of Apache Tapestry
>>>
>>> The source for Tapestry training, mentoring and support. Contact me to
>>> learn how I can get you up and productive in Tapestry fast!
>>>
>>> (971) 678-5210
>>> http://howardlewisship.com
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>>
>>
>> --
>> --
>> http://www.bodylabgym.com - a private, by appointment only, one-on-one
>> health and fitness facility.
>> --
>> http://www.ectransition.com - Quality Electronic Cigarettes at a
>> reasonable price!
>> --
>> TheDailyTube.com. Sign up and get the best new videos on the internet
>> delivered fresh to your inbox.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to