KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > webflow > engine > support > ExternalRedirectSelector


1 /*
2  * Copyright 2002-2006 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.springframework.webflow.engine.support;
17
18 import java.io.Serializable JavaDoc;
19
20 import org.springframework.binding.expression.Expression;
21 import org.springframework.core.style.ToStringCreator;
22 import org.springframework.webflow.engine.ViewSelector;
23 import org.springframework.webflow.execution.RequestContext;
24 import org.springframework.webflow.execution.ViewSelection;
25 import org.springframework.webflow.execution.support.ExternalRedirect;
26
27 /**
28  * Makes view selections requesting a client side redirect to an <i>external</i>
29  * URL outside of the flow.
30  * <p>
31  * This selector is usefull when you wish to request a <i>redirect after
32  * conversation completion</i> as part of entering an EndState.
33  * <p>
34  * This selector may also be used to redirect to an external URL from a
35  * ViewState of an active conversation. The external system redirected to will
36  * be provided the flow execution context necessary to allow it to communicate
37  * back to the executing flow at a later time.
38  *
39  * @see org.springframework.webflow.execution.support.ExternalRedirect
40  *
41  * @author Keith Donald
42  * @author Erwin Vervaet
43  */

44 public class ExternalRedirectSelector implements ViewSelector, Serializable JavaDoc {
45
46     /**
47      * The parsed, evaluatable redirect URL expression.
48      */

49     private Expression urlExpression;
50
51     /**
52      * Create a new redirecting view selector that takes given URL expression as
53      * input. The expression is the parsed form (expression-tokenized) of the
54      * encoded view (e.g. "/pathInfo?param0=value0&param1=value1").
55      * @param urlExpression the url expression
56      */

57     public ExternalRedirectSelector(Expression urlExpression) {
58         this.urlExpression = urlExpression;
59     }
60
61     /**
62      * Returns the expression used by this view selector.
63      */

64     public Expression getUrlExpression() {
65         return urlExpression;
66     }
67
68     public boolean isEntrySelectionRenderable(RequestContext context) {
69         return true;
70     }
71
72     public ViewSelection makeEntrySelection(RequestContext context) {
73         String JavaDoc url = (String JavaDoc)urlExpression.evaluate(context, null);
74         return new ExternalRedirect(url);
75     }
76
77     public ViewSelection makeRefreshSelection(RequestContext context) {
78         return makeEntrySelection(context);
79     }
80
81     public String JavaDoc toString() {
82         return new ToStringCreator(this).append("urlExpression", urlExpression).toString();
83     }
84 }
Popular Tags