01: /*
02: * Copyright (c) 2002-2006 by OpenSymphony
03: * All rights reserved.
04: */
05: package com.opensymphony.xwork;
06:
07: import java.util.Map;
08:
09: /**
10: * The ActionProxyFactory is used to create ActionProxies to be executed. It is the entry point to XWork that is used
11: * by a dispatcher to create an ActionProxy to execute for a particular namespace and action name.
12: *
13: * @author Jason Carreira
14: * Created Jun 15, 2003 5:18:30 PM
15: * @see DefaultActionProxyFactory
16: */
17: public abstract class ActionProxyFactory {
18:
19: static ActionProxyFactory factory = new DefaultActionProxyFactory();
20:
21: /**
22: * Set the ActionProxyFactory implementation to use. If no instance is set, a new DefaultActionProxyFactory is used.
23: *
24: * @param factory
25: */
26: public static void setFactory(ActionProxyFactory factory) {
27: ActionProxyFactory.factory = factory;
28: }
29:
30: public static ActionProxyFactory getFactory() {
31: return factory;
32: }
33:
34: /**
35: * Used by an ActionProxy or ActionProxyFactory to create an ActionInvocation to associate with an ActionProxy
36: * as part of creating an ActionProxy. Client code should not need to call the createActionInvocation methods.
37: *
38: * @param actionProxy
39: * @param extraContext
40: * @return ActionInvocation
41: * @throws Exception
42: */
43: public abstract ActionInvocation createActionInvocation(
44: ActionProxy actionProxy, Map extraContext) throws Exception;
45:
46: /**
47: * Used by an ActionProxy or ActionProxyFactory to create an ActionInvocation to associate with an ActionProxy
48: * as part of creating an ActionProxy. Client code should not need to call the createActionInvocation methods.
49: *
50: * @param actionProxy
51: * @return ActionInvocation
52: * @throws Exception
53: */
54: public abstract ActionInvocation createActionInvocation(
55: ActionProxy actionProxy) throws Exception;
56:
57: /**
58: * Used by an ActionProxy or ActionProxyFactory to create an ActionInvocation to associate with an ActionProxy
59: * as part of creating an ActionProxy. Client code should not need to call the createActionInvocation methods.
60: *
61: * @param actionProxy
62: * @param extraContext
63: * @param pushAction tells whether the Action should be pushed onto the ValueStack
64: * @return ActionInvocation
65: * @throws Exception
66: */
67: public abstract ActionInvocation createActionInvocation(
68: ActionProxy actionProxy, Map extraContext,
69: boolean pushAction) throws Exception;
70:
71: /**
72: * Creates an ActionProxy for the given namespace and action name by looking up the configuration. The ActionProxy
73: * should be fully initialized when it is returned, including having an ActionInvocation instance associated.
74: *
75: * @param namespace the namespace of the action
76: * @param actionName
77: * @param extraContext a Map of extra parameters to be provided to the ActionProxy
78: * @return ActionProxy
79: * @throws Exception
80: */
81: public abstract ActionProxy createActionProxy(String namespace,
82: String actionName, Map extraContext) throws Exception;
83:
84: /**
85: * Creates an ActionProxy for the given namespace and action name by looking up the configuration. The ActionProxy
86: * should be fully initialized when it is returned, including having an ActionInvocation instance associated.
87: *
88: * @param namespace the namespace of the action
89: * @param actionName
90: * @param extraContext a Map of extra parameters to be provided to the ActionProxy
91: * @param executeResult flag which tells whether the result should be executed after the action
92: * @param cleanupContext
93: * @return ActionProxy
94: * @throws Exception
95: */
96: public abstract ActionProxy createActionProxy(String namespace,
97: String actionName, Map extraContext, boolean executeResult,
98: boolean cleanupContext) throws Exception;
99: }
|