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