01: /*
02: * Created on 15 Jul 2007
03: */
04: package uk.org.ponder.rsf.swf.support;
05:
06: import uk.org.ponder.rsf.request.EarlyRequestParser;
07: import uk.org.ponder.rsf.swf.viewparams.SWFViewParams;
08: import uk.org.ponder.rsf.viewstate.AnyViewParameters;
09: import uk.org.ponder.rsf.viewstate.ViewParameters;
10: import uk.org.ponder.rsf.viewstate.ViewParamsInterceptor;
11: import uk.org.ponder.stringutil.StringGetter;
12:
13: /**
14: * Processing of incoming Spring Web Flow request URLs is represented for a
15: * render cycle as an RSF "ViewParamsInterceptor" which is actually in charge of
16: * *invoking* the flow.
17: *
18: * @author Antranig Basman (antranig@caret.cam.ac.uk)
19: */
20:
21: public class SWFViewParamsInterceptor implements ViewParamsInterceptor {
22: private StringGetter requestType;
23: private SWFExecutor executor;
24:
25: public void setExecutor(SWFExecutor executor) {
26: this .executor = executor;
27: }
28:
29: public void setRequestType(StringGetter requestType) {
30: this .requestType = requestType;
31: }
32:
33: public AnyViewParameters adjustViewParameters(
34: ViewParameters incomingo) {
35: boolean isget = requestType.get().equals(
36: EarlyRequestParser.RENDER_REQUEST);
37: if (incomingo instanceof SWFViewParams) {
38: final SWFViewParams incoming = (SWFViewParams) incomingo;
39: executor.execute(incoming, null);
40:
41: incoming.params = null;
42: // A chap who has managed to successfully deliver a full VP payload through
43: // decoding will know what he is doing, especially if there is no event.
44: if (incoming.event == null && incoming.target != null) {
45: return incoming.target;
46: }
47: if (isget) {
48: return executor.getOutgoingParameters();
49: }
50: }
51: return null;
52:
53: }
54: }
|