001: package org.apache.turbine.services;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: /**
023: * This class provides a generic implementation of
024: * <code>Initable</code>. This implementation, that other
025: * <code>Initables</code> are welcome to extend, contains facilities
026: * to maintain internal state.
027: *
028: * @author <a href="mailto:burton@apache.org">Kevin Burton</a>
029: * @author <a href="mailto:krzewski@e-point.pl">Rafal Krzewski</a>
030: * @version $Id: BaseInitable.java 534527 2007-05-02 16:10:59Z tv $
031: */
032: public class BaseInitable implements Initable {
033: /** InitableBroker that instantiatd this class. */
034: protected InitableBroker initableBroker;
035:
036: /** Initialization status of this class. */
037: protected boolean isInitialized = false;
038:
039: /**
040: * Default constructor of BaseInitable.
041: *
042: * This constructor does nothing. Your own constructurs should be
043: * modest in allocating memory and other resources, leaving this
044: * to the <code>init()</code> method.
045: */
046: public BaseInitable() {
047: }
048:
049: /**
050: * Saves InitableBroker reference for later use.
051: *
052: * @param broker The InitableBroker that instantiated this object.
053: */
054: public void setInitableBroker(InitableBroker broker) {
055: this .initableBroker = broker;
056: }
057:
058: /**
059: * Returns an InitableBroker reference.
060: *
061: * @return The InitableBroker that instantiated this object.
062: */
063: public InitableBroker getInitableBroker() {
064: return initableBroker;
065: }
066:
067: /**
068: * Performs early initialization. Used in a manner similar to a ctor.
069: *
070: * BaseInitable doesn't need early initialization, therefore it
071: * ignores all objects passed to it and performs no initialization
072: * activities.
073: *
074: * @param data An Object to use for initialization activities.
075: * @exception InitializationException Initialization of this
076: * class was not successful.
077: */
078: public void init(Object data) throws InitializationException {
079: }
080:
081: /**
082: * Performs late initializtion. Called when the Service is requested
083: * for the first time (if not already completely initialized by the
084: * early initializer).
085: *
086: * Late intialization of a BaseInitable is alwas successful.
087: *
088: * @exception InitializationException Initialization of this
089: * class was not successful.
090: */
091: public void init() throws InitializationException {
092: }
093:
094: /**
095: * Returns an Initable to uninitialized state.
096: *
097: * Calls setInit(false) to mark that we are no longer in initialized
098: * state.
099: */
100: public void shutdown() {
101: setInit(false);
102: }
103:
104: /**
105: * Returns initialization status.
106: *
107: * @return True if the initable is initialized.
108: */
109: public boolean getInit() {
110: return isInitialized;
111: }
112:
113: /**
114: * Sets initailization status.
115: *
116: * @param value The new initialization status.
117: */
118: protected void setInit(boolean value) {
119: this.isInitialized = value;
120: }
121: }
|