1 package org.apache.turbine.services;
2
3
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one
6 * or more contributor license agreements. See the NOTICE file
7 * distributed with this work for additional information
8 * regarding copyright ownership. The ASF licenses this file
9 * to you under the Apache License, Version 2.0 (the
10 * "License"); you may not use this file except in compliance
11 * with the License. You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing,
16 * software distributed under the License is distributed on an
17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18 * KIND, either express or implied. See the License for the
19 * specific language governing permissions and limitations
20 * under the License.
21 */
22
23
24 /**
25 * This class provides a generic implementation of
26 * <code>Initable</code>. This implementation, that other
27 * <code>Initables</code> are welcome to extend, contains facilities
28 * to maintain internal state.
29 *
30 * @author <a href="mailto:burton@apache.org">Kevin Burton</a>
31 * @author <a href="mailto:krzewski@e-point.pl">Rafal Krzewski</a>
32 * @version $Id: BaseInitable.java 1773378 2016-12-09 13:19:59Z tv $
33 */
34 public class BaseInitable
35 implements Initable
36 {
37 /** InitableBroker that instantiatd this class. */
38 protected InitableBroker initableBroker;
39
40 /** Initialization status of this class. */
41 protected boolean isInitialized = false;
42
43 /**
44 * Default constructor of BaseInitable.
45 *
46 * This constructor does nothing. Your own constructurs should be
47 * modest in allocating memory and other resources, leaving this
48 * to the <code>init()</code> method.
49 */
50 public BaseInitable()
51 {
52 // empty
53 }
54
55 /**
56 * Saves InitableBroker reference for later use.
57 *
58 * @param broker The InitableBroker that instantiated this object.
59 */
60 @Override
61 public void setInitableBroker(InitableBroker broker)
62 {
63 this.initableBroker = broker;
64 }
65
66 /**
67 * Returns an InitableBroker reference.
68 *
69 * @return The InitableBroker that instantiated this object.
70 */
71 public InitableBroker getInitableBroker()
72 {
73 return initableBroker;
74 }
75
76 /**
77 * Performs early initialization. Used in a manner similar to a ctor.
78 *
79 * BaseInitable doesn't need early initialization, therefore it
80 * ignores all objects passed to it and performs no initialization
81 * activities.
82 *
83 * @param data An Object to use for initialization activities.
84 * @throws InitializationException Initialization of this
85 * class was not successful.
86 */
87 @Override
88 public void init(Object data) throws InitializationException
89 {
90 // empty
91 }
92
93 /**
94 * Performs late initialization. Called when the Service is requested
95 * for the first time (if not already completely initialized by the
96 * early initializer).
97 *
98 * Late initialization of a BaseInitable is always successful.
99 *
100 * @throws InitializationException Initialization of this
101 * class was not successful.
102 */
103 @Override
104 public void init() throws InitializationException
105 {
106 // empty
107 }
108
109 /**
110 * Returns an Initable to uninitialized state.
111 *
112 * Calls setInit(false) to mark that we are no longer in initialized
113 * state.
114 */
115 @Override
116 public void shutdown()
117 {
118 setInit(false);
119 }
120
121 /**
122 * Returns initialization status.
123 *
124 * @return True if the initable is initialized.
125 */
126 @Override
127 public boolean getInit()
128 {
129 return isInitialized;
130 }
131
132 /**
133 * Sets initialization status.
134 *
135 * @param value The new initialization status.
136 */
137 protected void setInit(boolean value)
138 {
139 this.isInitialized = value;
140 }
141 }