1 package org.apache.turbine.services;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 import javax.servlet.ServletConfig;
58
59 import org.apache.turbine.util.RunData;
60
61 /***
62 * <p>This class provides a <code>Service</code> implementation that
63 * Services used in Turbine are required to extend. The
64 * functionality provided in addition to <code>BaseService</code>
65 * functionality is recognizing objects used in early initialization
66 * of <code>Services</code> in Turbine, and passing them to
67 * appropriate convenience methods. These methods should be overriden
68 * to provide desired initialization functionality.</p>
69 *
70 * <p><strong>Note!</strong><br>Remember to call
71 * <code>setInit(true)</code> after successful initialization.</p>
72 *
73 * <p><strong>Note!</strong><br>If you need to use another
74 * <code>Service</code> inside your early initialization, remember to
75 * request initialization of that <code>Service</code> before using
76 * it:</p>
77 *
78 * <pre><code>
79 * getServiceBroker().initClass("OtherService",data);
80 * OtherService service =
81 * (OtherService)getServiceBroker().getService("OtherService");
82 * </code></pre>
83 *
84 * @author <a href="mailto:greg@shwoop.com">Greg Ritter</a>
85 * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
86 * @author <a href="mailto:burton@apache.org">Kevin Burton</a>
87 * @author <a href="mailto:krzewski@e-point.pl">Rafal Krzewski</a>
88 * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
89 * @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
90 * @version $Id: TurbineBaseService.java,v 1.6 2003/03/25 17:13:12 quintonm Exp $
91 */
92 public abstract class TurbineBaseService
93 extends BaseService
94 {
95 /***
96 * Performs early initialization. Overrides init() method in
97 * BaseService to detect objects used in Turbine's Service
98 * initialization and pass them to apropriate init() methods.
99 *
100 * @param data An Object to use for initialization activities.
101 * @exception InitializationException if initialization of this
102 * class was not successful.
103 */
104 public void init(Object data)
105 throws InitializationException
106 {
107 if (data instanceof ServletConfig)
108 {
109 init((ServletConfig) data);
110 }
111 else if (data instanceof RunData)
112 {
113 init((RunData) data);
114 }
115 }
116
117 /***
118 * Performs early initialization.
119 *
120 * @param config A ServletConfing to use for initialization
121 * activities.
122 * @exception InitializationException if initialization of this
123 * class was not successful.
124 * @deprecated Use init() instead
125 */
126 public void init(ServletConfig config) throws InitializationException
127 {
128 }
129
130 /***
131 * Performs early initialization.
132 *
133 * @param data An RunData to use for initialization activities.
134 * @exception InitializationException if initialization of this
135 * class was not successful.
136 */
137 public void init(RunData data) throws InitializationException
138 {
139 }
140
141 /***
142 * Performs late initialization.
143 *
144 * If your class relies on early initialization, and the object it
145 * expects was not received, you can use late initialization to
146 * throw an exception and complain.
147 *
148 * @exception InitializationException, if initialization of this
149 * class was not successful.
150 */
151 public void init() throws InitializationException
152 {
153 setInit(true);
154 }
155
156 /***
157 * Returns to uninitialized state.
158 *
159 * You can use this method to release resources thet your Service
160 * allocated when Turbine shuts down.
161 */
162 public void shutdown()
163 {
164 setInit(false);
165 }
166 }