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 }