You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/06/03 01:37:00 UTC
svn commit: r950823 - in
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5:
internal/services/linktransform/ services/ services/linktransform/
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 of{@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