Author: hlship
Date: Wed Jun  2 23:36:59 2010
New Revision: 950823

URL: http://svn.apache.org/viewvc?rev=950823&view=rev
Log:
TAP5-1042: Put basic LinkTransformer logic in place for component event and 
page render requests

Added:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
   (with props)
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
   (with props)
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/AssetLinkTransformer.java
   (with props)
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
   (with props)
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
   (with props)
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
   (with props)
Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java?rev=950823&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
 Wed Jun  2 23:36:59 2010
@@ -0,0 +1,65 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.internal.services.linktransform;
+
+import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.ioc.annotations.Primary;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.linktransform.AssetLinkTransformer;
+import 
org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
+import org.apache.tapestry5.services.linktransform.LinkTransformer;
+import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
+
+public class LinkTransformerImpl implements LinkTransformer
+{
+    private final AssetLinkTransformer assetLinkTransformer;
+
+    private final ComponentEventLinkTransformer componentEventLinkTransformer;
+
+    private final PageRenderLinkTransformer pageRenderLinkTransformer;
+
+    public LinkTransformerImpl(@Primary
+    AssetLinkTransformer assetLinkTransformer, @Primary
+    ComponentEventLinkTransformer componentEventLinkTransformer, @Primary
+    PageRenderLinkTransformer pageRenderLinkTransformer)
+    {
+        this.assetLinkTransformer = assetLinkTransformer;
+        this.componentEventLinkTransformer = componentEventLinkTransformer;
+        this.pageRenderLinkTransformer = pageRenderLinkTransformer;
+    }
+
+    public Link transformAssetLink(Link defaultLink, Asset asset, String 
assetPath)
+    {
+        return or(assetLinkTransformer.transformAssetLink(defaultLink, asset, 
assetPath), defaultLink);
+    }
+
+    public Link transformComponentEventLink(Link defaultLink, 
ComponentEventRequestParameters parameters)
+    {
+        return 
or(componentEventLinkTransformer.transformComponentEventLink(defaultLink, 
parameters), defaultLink);
+    }
+
+    public Link tranformPageRenderLink(Link defaultLink, 
PageRenderRequestParameters parameters)
+    {
+        return 
or(pageRenderLinkTransformer.tranformPageRenderLink(defaultLink, parameters), 
defaultLink);
+    }
+
+    private Link or(Link left, Link right)
+    {
+        return left != null ? left : right;
+    }
+
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java?rev=950823&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
 Wed Jun  2 23:36:59 2010
@@ -0,0 +1,63 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.internal.services.linktransform;
+
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.linktransform.LinkTransformer;
+
+/**
+ * Intercepts some methods of {...@link ComponentEventLinkEncoder}, passing 
the returned {...@link Link}s
+ * through methods o...@link LinkTransformer}.
+ * 
+ * @since 5.2.0
+ */
+public class LinkTransformerInterceptor implements ComponentEventLinkEncoder
+{
+    private final LinkTransformer linkTransformer;
+
+    private final ComponentEventLinkEncoder delegate;
+
+    public LinkTransformerInterceptor(LinkTransformer linkTransformer, 
ComponentEventLinkEncoder delegate)
+    {
+        this.linkTransformer = linkTransformer;
+        this.delegate = delegate;
+    }
+
+    public Link createComponentEventLink(ComponentEventRequestParameters 
parameters, boolean forForm)
+    {
+        return 
linkTransformer.transformComponentEventLink(delegate.createComponentEventLink(parameters,
 forForm),
+                parameters);
+    }
+
+    public Link createPageRenderLink(PageRenderRequestParameters parameters)
+    {
+        return 
linkTransformer.tranformPageRenderLink(delegate.createPageRenderLink(parameters),
 parameters);
+    }
+
+    public ComponentEventRequestParameters decodeComponentEventRequest(Request 
request)
+    {
+        return delegate.decodeComponentEventRequest(request);
+    }
+
+    public PageRenderRequestParameters decodePageRenderRequest(Request request)
+    {
+        return delegate.decodePageRenderRequest(request);
+    }
+
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java?rev=950823&r1=950822&r2=950823&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java
 Wed Jun  2 23:36:59 2010
@@ -1,10 +1,10 @@
-// Copyright 2009 The Apache Software Foundation
+// Copyright 2009, 2010 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+// http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,12 +15,14 @@
 package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Link;
+import 
org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
+import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
 
 /**
  * Responsible for creating {...@link org.apache.tapestry5.Link}s for page 
render requests and for component event
  * requests, and for parsing incoming paths to identify requests that are 
component event or page render requests. This
  * centralizes some logic that was scattered about in Tapestry 5.0.
- *
+ * 
  * @since 5.1.0.1
  */
 public interface ComponentEventLinkEncoder
@@ -28,8 +30,11 @@ public interface ComponentEventLinkEncod
     /**
      * Creates a Link that encapsulates a page render request, including 
activation context <em>and {...@link
      * org.apache.tapestry5.services.PersistentLocale} (if set)</em>.
-     *
-     * @param parameters defining page to render and context
+     * Passes the resulting Link through the {...@link 
PageRenderLinkTransformer} chain of command, returning
+     * the result.
+     * 
+     * @param parameters
+     *            defining page to render and context
      * @return link for the page render
      */
     Link createPageRenderLink(PageRenderRequestParameters parameters);
@@ -37,26 +42,33 @@ public interface ComponentEventLinkEncod
     /**
      * Creates a link that encapsulates a component event request, including 
<em>{...@link
      * org.apache.tapestry5.services.PersistentLocale} (if set)</em>.
-     * <p/>
-     * <p> Forms: <ul> <li>/context/pagename:eventname -- event on the page, 
no action context</li>
+     * <p>
+     * Forms:
+     * <ul>
+     * <li>/context/pagename:eventname -- event on the page, no action 
context</li>
      * <li>/context/pagename:eventname/foo/bar -- event on the page with 
action context "foo", "bar"</li>
-     * <li>/context/pagename.foo.bar -- event on component foo.bar within the 
page, default event, no action
-     * context</li> <li>/context/pagename.foo.bar/baz.gnu -- event on 
component foo.bar within the page, default event,
-     * with action context "baz", "gnu"</li> 
<li>/context/pagename.bar.baz:eventname/foo/gnu -- event on component
-     * bar.baz within the page with action context "foo" , "gnu"</li> </ul>
+     * <li>/context/pagename.foo.bar -- event on component foo.bar within the 
page, default event, no action context</li>
+     * <li>/context/pagename.foo.bar/baz.gnu -- event on component foo.bar 
within the page, default event, with action
+     * context "baz", "gnu"</li>
+     * <li>/context/pagename.bar.baz:eventname/foo/gnu -- event on component 
bar.baz within the page with action context
+     * "foo" , "gnu"</li>
+     * </ul>
      * <p/>
      * The persistent locale may be placed in between the context name and the 
page name, i.e., "/context/fr/SomePage".
      * <p/>
      * In many cases the context name is blank, so the path begins with a "/" 
and then the locale name or page name.
      * <p/>
-     * The page name portion may itself consist of a series of folder names, 
i.e., "admin/user/create".  The context
+     * The page name portion may itself consist of a series of folder names, 
i.e., "admin/user/create". The context
      * portion isn't the concern of this code, since {...@link 
org.apache.tapestry5.services.Request#getPath()} will
-     * already have stripped that off.  We can act as if the context is always 
"/" (the path always starts with a
-     * slash).
+     * already have stripped that off. We can act as if the context is always 
"/" (the path always starts with a slash).
      * <p/>
-     *
-     * @param parameters defining page, component, activation context and 
other details
-     * @param forForm    true if the event link will trigger a form submission
+     * Passes the resulting Link through the {...@link 
ComponentEventLinkTransformer} chain of command, returning the
+     * result.
+     * 
+     * @param parameters
+     *            defining page, component, activation context and other 
details
+     * @param forForm
+     *            true if the event link will trigger a form submission
      * @return link for the component event
      */
     Link createComponentEventLink(ComponentEventRequestParameters parameters, 
boolean forForm);
@@ -65,9 +77,10 @@ public interface ComponentEventLinkEncod
      * Checks the request, primarily the {...@linkplain 
org.apache.tapestry5.services.Request#getPath() path}, to determine
      * the if the request is a component event request. As a side-effect 
(necessary for historical reasons), responsible
      * for setting the locale for the thread, including the {...@link 
org.apache.tapestry5.services.PersistentLocale} ...
-     * but only if the reuqest is a component event.
-     *
-     * @param request incoming request
+     * but only if the locale is a component event.
+     * 
+     * @param request
+     *            incoming request
      * @return component event request details, if a component event request
      */
     ComponentEventRequestParameters decodeComponentEventRequest(Request 
request);
@@ -76,9 +89,10 @@ public interface ComponentEventLinkEncod
      * Checks the request, primarily the {...@linkplain 
org.apache.tapestry5.services.Request#getPath() path}, to determine
      * the if the request is a page render request. As a side-effect 
(necessary for historical reasons), responsible for
      * setting the locale for the thread, including the {...@link 
org.apache.tapestry5.services.PersistentLocale} ... but
-     * only if the reuqest is a component event.
-     *
-     * @param request incoming request
+     * only if the request is a page render.
+     * 
+     * @param request
+     *            incoming request
      * @return page render request details, if a page render request
      */
     PageRenderRequestParameters decodePageRenderRequest(Request request);

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=950823&r1=950822&r2=950823&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
 Wed Jun  2 23:36:59 2010
@@ -80,6 +80,8 @@ import org.apache.tapestry5.internal.ser
 import org.apache.tapestry5.internal.services.javascript.DateFieldStack;
 import 
org.apache.tapestry5.internal.services.javascript.JavascriptStackPathConstructor;
 import 
org.apache.tapestry5.internal.services.javascript.JavascriptStackSourceImpl;
+import 
org.apache.tapestry5.internal.services.linktransform.LinkTransformerImpl;
+import 
org.apache.tapestry5.internal.services.linktransform.LinkTransformerInterceptor;
 import 
org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
 import org.apache.tapestry5.internal.services.meta.ContentTypeExtractor;
 import org.apache.tapestry5.internal.services.meta.MetaAnnotationExtractor;
@@ -115,6 +117,10 @@ import org.apache.tapestry5.services.jav
 import org.apache.tapestry5.services.javascript.JavascriptStackSource;
 import org.apache.tapestry5.services.javascript.JavascriptSupport;
 import org.apache.tapestry5.services.javascript.StylesheetLink;
+import org.apache.tapestry5.services.linktransform.AssetLinkTransformer;
+import 
org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
+import org.apache.tapestry5.services.linktransform.LinkTransformer;
+import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
 import org.apache.tapestry5.services.messages.PropertiesFileParser;
 import org.apache.tapestry5.services.meta.FixedExtractor;
@@ -381,6 +387,7 @@ public final class TapestryModule
         binder.bind(JavascriptStackSource.class, 
JavascriptStackSourceImpl.class);
         binder.bind(TranslatorAlternatesSource.class, 
TranslatorAlternatesSourceImpl.class);
         binder.bind(MetaWorker.class, MetaWorkerImpl.class);
+        binder.bind(LinkTransformer.class, LinkTransformerImpl.class);
     }
 
     // ========================================================================
@@ -2941,4 +2948,51 @@ public final class TapestryModule
                 .add("Page", new 
PageTemplateLocator(contextAssetFactory.getRootResource(), 
componentClassResolver),
                         "after:Default");
     }
+
+    /**
+     * Builds {...@link AssetLinkTransformer} service as a chain of command.
+     * 
+     * @since 5.2.0
+     */
+    @Marker(Primary.class)
+    public AssetLinkTransformer 
buildAssetLinkTransformer(List<AssetLinkTransformer> configuration)
+    {
+        return chainBuilder.build(AssetLinkTransformer.class, configuration);
+    }
+
+    /**
+     * Builds {...@link ComponentEventLinkTransformer} service as a chain of 
command.
+     * 
+     * @since 5.2.0
+     */
+    @Marker(Primary.class)
+    public ComponentEventLinkTransformer buildComponentEventLinkTransformer(
+            List<ComponentEventLinkTransformer> configuration)
+    {
+        return chainBuilder.build(ComponentEventLinkTransformer.class, 
configuration);
+    }
+
+    /**
+     * Builds {...@link PageRenderLinkTransformer} service as a chain of 
command.
+     * 
+     * @since 5.2.0
+     */
+    @Marker(Primary.class)
+    public PageRenderLinkTransformer 
buildPageRenderLinkTransformer(List<PageRenderLinkTransformer> configuration)
+    {
+        return chainBuilder.build(PageRenderLinkTransformer.class, 
configuration);
+    }
+
+    /**
+     * Provides the "LinkTransformer" interceptor for the {...@link 
ComponentEventLinkEncoder} service. Other decorations
+     * should come after LinkTransformer.
+     * 
+     * @since 5.2.0
+     */
+    @Match("ComponentEventLinkEncoder")
+    public ComponentEventLinkEncoder decorateLinkTransformer(LinkTransformer 
linkTransformer,
+            ComponentEventLinkEncoder delegate)
+    {
+        return new LinkTransformerInterceptor(linkTransformer, delegate);
+    }
 }

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/AssetLinkTransformer.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/AssetLinkTransformer.java?rev=950823&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/AssetLinkTransformer.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/AssetLinkTransformer.java
 Wed Jun  2 23:36:59 2010
@@ -0,0 +1,41 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.services.linktransform;
+
+import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
+
+/**
+ * Interface that allows the {...@link Link} for downloading an Asset to be 
transformed (or replaced).
+ * AssetLinkTransformer is a service but also a contribution to the service, 
as a chain of command.
+ */
+...@usesorderedconfiguration(AssetLinkTransformer.class)
+public interface AssetLinkTransformer
+{
+    /**
+     * Transform the Asset link.
+     * 
+     * @param defaultLink
+     *            the normally constructed Link for this asset
+     * @param asset
+     *            the asset for which the link was constructed (this may be 
null for virtual assets)
+     * @param assetPath
+     *            the normal path for the asset (the portion below "/assets" 
in the
+     *            default asset URL)
+     * @return a replacement Link to access the Asset, or null
+     */
+    Link transformAssetLink(Link defaultLink, Asset asset, String assetPath);
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/AssetLinkTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java?rev=950823&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
 Wed Jun  2 23:36:59 2010
@@ -0,0 +1,40 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.services.linktransform;
+
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+
+/**
+ * Allows for selective replacement of the default {...@link Link} used to 
represent a component event request.
+ * This is a service, but also the contribution to the service, as a chain of 
command.
+ * 
+ * @since 5.2.0
+ */
+...@usesorderedconfiguration(ComponentEventLinkTransformer.class)
+public interface ComponentEventLinkTransformer
+{
+    /**
+     * Allows the default Link created for the component event request to be 
replaced.
+     * 
+     * @param defaultLink
+     *            the default Link generated for a component event request
+     * @param parameters
+     *            used to create the default Link
+     * @return a replacement Link, or null
+     */
+    Link transformComponentEventLink(Link defaultLink, 
ComponentEventRequestParameters parameters);
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java?rev=950823&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
 Wed Jun  2 23:36:59 2010
@@ -0,0 +1,26 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.services.linktransform;
+
+/**
+ * A facade around {...@link AssetLinkTransformer}, {...@link 
ComponentEventLinkTransformer} and
+ * {...@link PageRenderLinkTransformer}.
+ * 
+ * @since 5.2.0
+ */
+public interface LinkTransformer extends AssetLinkTransformer, 
ComponentEventLinkTransformer, PageRenderLinkTransformer
+{
+
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java?rev=950823&view=auto
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
 (added)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
 Wed Jun  2 23:36:59 2010
@@ -0,0 +1,40 @@
+// Copyright 2010 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.services.linktransform;
+
+import org.apache.tapestry5.Link;
+import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+
+/**
+ * Allows the default {...@link Link} for a page render request to be replaced.
+ * This is a service, but also the contribution to the service, as a chain of 
command.
+ * 
+ * @since 5.2.0
+ */
+...@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 tranformPageRenderLink(Link defaultLink, PageRenderRequestParameters 
parameters);
+}

Propchange: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to