    001package 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 1773378 2016-12-09 13:19:59Z tv $
    033 */
    034public 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    @Override
    061    public void setInitableBroker(InitableBroker broker)
    062    {
    063        this.initableBroker = broker;
    064    }
    065
    066    /**
    067     * Returns an InitableBroker reference.
    068     *
    069     * @return The InitableBroker that instantiated this object.
    070     */
    071    public InitableBroker getInitableBroker()
    072    {
    073        return initableBroker;
    074    }
    075
    076    /**
    077     * Performs early initialization.  Used in a manner similar to a ctor.
    078     *
    079     * BaseInitable doesn't need early initialization, therefore it
    080     * ignores all objects passed to it and performs no initialization
    081     * activities.
    082     *
    083     * @param data An Object to use for initialization activities.
    084     * @throws InitializationException Initialization of this
    085     * class was not successful.
    086     */
    087    @Override
    088    public void init(Object data) throws InitializationException
    089    {
    090        // empty
    091    }
    092
    093    /**
    094     * Performs late initialization.  Called when the Service is requested
    095     * for the first time (if not already completely initialized by the
    096     * early initializer).
    097     *
    098     * Late initialization of a BaseInitable is always successful.
    099     *
    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}