View Javadoc
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$
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 }