KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > torque > avalon > TorqueComponent


1 package org.apache.torque.avalon;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements. See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership. The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License. You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied. See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */

21
22 import java.io.File JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.Map JavaDoc;
25
26 import org.apache.avalon.framework.activity.Disposable;
27 import org.apache.avalon.framework.activity.Initializable;
28 import org.apache.avalon.framework.configuration.Configurable;
29 import org.apache.avalon.framework.configuration.Configuration;
30 import org.apache.avalon.framework.configuration.ConfigurationException;
31 import org.apache.avalon.framework.context.Context;
32 import org.apache.avalon.framework.context.ContextException;
33 import org.apache.avalon.framework.context.Contextualizable;
34 import org.apache.avalon.framework.logger.LogEnabled;
35 import org.apache.avalon.framework.logger.Logger;
36 import org.apache.avalon.framework.thread.SingleThreaded;
37 import org.apache.commons.lang.StringUtils;
38 import org.apache.torque.TorqueInstance;
39
40 /**
41  * Avalon component for Torque.
42  *
43  * @author <a HREF="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
44  * @author <a HREF="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
45  * @author <a HREF="mailto:tv@apache.org">Thomas Vandahl</a>
46  * @version $Id: TorqueComponent.java 493492 2007-01-06 15:57:44Z tv $
47  */

48 public class TorqueComponent
49         extends TorqueInstance
50         implements Torque,
51                    LogEnabled,
52                    Configurable,
53                    Initializable,
54                    Contextualizable,
55                    Disposable,
56                    SingleThreaded
57 {
58     /** The Avalon Application Root */
59     private String JavaDoc appRoot = null;
60
61     /** The Avalon Logger */
62     private Logger logger = null;
63
64     /** The configuration file name. */
65     private String JavaDoc configFile = null;
66
67     /*
68      * ========================================================================
69      *
70      * Avalon Component Interfaces
71      *
72      * ========================================================================
73      */

74
75     /**
76      * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
77      */

78     public void enableLogging(Logger aLogger)
79     {
80         this.logger = aLogger;
81     }
82
83     /**
84      * Convenience method to provide the Avalon logger the way AbstractLogEnabled does.
85      */

86     public Logger getLogger()
87     {
88         return logger;
89     }
90
91     /**
92      * @see
93      * org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
94      */

95     public void configure(Configuration configuration)
96             throws ConfigurationException
97     {
98         getLogger().debug("configure(" + configuration + ")");
99
100         String JavaDoc configurationFile
101                 = configuration.getChild("configfile").getValue();
102
103         if (StringUtils.isNotEmpty(appRoot))
104         {
105             if (configurationFile.startsWith("/"))
106             {
107                 configurationFile = configurationFile.substring(1);
108                 getLogger().debug("Config File changes to "
109                         + configurationFile);
110             }
111
112             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
113             sb.append(appRoot);
114             sb.append(File.separator);
115             sb.append(configurationFile);
116
117             configurationFile = sb.toString();
118         }
119
120         getLogger().debug("Config File is " + configurationFile);
121
122         this.configFile = configurationFile;
123     }
124
125     /**
126      * @see org.apache.avalon.framework.context.Contextualizable
127      */

128     public void contextualize(Context context)
129             throws ContextException
130     {
131         // check context Merlin and YAAFI style
132
try
133         {
134             appRoot = ((File JavaDoc) context.get("urn:avalon:home")).getAbsolutePath();
135         }
136         catch (ContextException ce)
137         {
138             appRoot = null;
139         }
140
141         if (appRoot == null)
142         {
143             // check context old ECM style, let exception flow if not available
144
appRoot = (String JavaDoc) context.get("componentAppRoot");
145         }
146
147         if (StringUtils.isNotEmpty(appRoot))
148         {
149             if (appRoot.endsWith("/"))
150             {
151                 appRoot = appRoot.substring(0, appRoot.length() - 1);
152                 getLogger().debug("Application Root changed to " + appRoot);
153             }
154         }
155     }
156
157     /**
158      * @see org.apache.avalon.framework.activity.Initializable#initialize()
159      */

160     public void initialize()
161             throws Exception JavaDoc
162     {
163         getLogger().debug("initialize()");
164         
165         TorqueInstance instance = org.apache.torque.Torque.getInstance();
166         
167         // Check if another singleton is already running
168
if (instance.isInit())
169         {
170             Map JavaDoc mapBuilders = instance.getMapBuilders();
171             
172             // Copy the registered MapBuilders and take care that they will be built again
173
for (Iterator JavaDoc i = mapBuilders.keySet().iterator(); i.hasNext();)
174             {
175                 String JavaDoc className = (String JavaDoc)i.next();
176                 registerMapBuilder(className);
177             }
178         }
179         
180         // Provide the singleton instance to the static accessor
181
org.apache.torque.Torque.setInstance(this);
182
183         init(configFile);
184     }
185
186     /**
187      * @see org.apache.avalon.framework.activity.Disposable#dispose()
188      */

189     public void dispose()
190     {
191         getLogger().debug("dispose()");
192         try
193         {
194             shutdown();
195         }
196         catch (Exception JavaDoc e)
197         {
198             getLogger().error("Error while stopping Torque", e);
199         }
200     }
201 }
202
Popular Tags