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]

Reply via email to