01: /*
02: * Created on Nov 19, 2006
03: */
04: package uk.org.ponder.rsf.request;
05:
06: import java.util.HashMap;
07: import java.util.Map;
08:
09: import uk.org.ponder.rsac.RSACLazarusList;
10: import uk.org.ponder.rsf.viewstate.ViewParameters;
11: import uk.org.ponder.rsf.viewstate.support.ViewParamsMapper;
12:
13: /** Performs an *internal* redirect to the RSF system, by registering a
14: * "Lazarus listener" which will fire a further request at end of the current
15: * RSAC cycle.
16: * @author Antranig Basman (antranig@caret.cam.ac.uk)
17: *
18: */
19:
20: public class LazarusRedirector {
21: private ViewParamsMapper viewParamsMapper;
22: private RSACLazarusList lazarusListReceiver;
23: private String environmentType;
24:
25: public void setViewParamsMapper(ViewParamsMapper viewParamsMapper) {
26: this .viewParamsMapper = viewParamsMapper;
27: }
28:
29: public void setLazarusListReceiver(
30: RSACLazarusList lazarusListReceiver) {
31: this .lazarusListReceiver = lazarusListReceiver;
32: }
33:
34: public void setEnvironmentType(String environmentType) {
35: this .environmentType = environmentType;
36: }
37:
38: public void lazarusRedirect(final ViewParameters target) {
39: Map params = viewParamsMapper.renderViewParamAttributes(target);
40: String pathinfo = viewParamsMapper.toPathInfo(target);
41: StaticEarlyRequestParser serp = new StaticEarlyRequestParser(
42: null, pathinfo, params,
43: EarlyRequestParser.RENDER_REQUEST, environmentType);
44: Map newmap = new HashMap();
45: newmap.put("earlyRequestParser", serp);
46: lazarusListReceiver.queueRunnable(lazarusListReceiver
47: .getLazarusRunnable(newmap, "rootHandlerBean"));
48: }
49:
50: }
|