001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.catalina.startup;
019:
020: import java.io.File;
021: import java.io.FileInputStream;
022: import java.io.InputStream;
023: import java.net.URL;
024: import java.util.Enumeration;
025: import java.util.Properties;
026:
027: /**
028: * Utility class to read the bootstrap Catalina configuration.
029: *
030: * @author Remy Maucherat
031: * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
032: */
033:
034: public class CatalinaProperties {
035:
036: // ------------------------------------------------------- Static Variables
037:
038: private static org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory
039: .getLog(CatalinaProperties.class);
040:
041: private static Properties properties = null;
042:
043: static {
044:
045: loadProperties();
046:
047: }
048:
049: // --------------------------------------------------------- Public Methods
050:
051: /**
052: * Return specified property value.
053: */
054: public static String getProperty(String name) {
055:
056: return properties.getProperty(name);
057:
058: }
059:
060: /**
061: * Return specified property value.
062: */
063: public static String getProperty(String name, String defaultValue) {
064:
065: return properties.getProperty(name, defaultValue);
066:
067: }
068:
069: // --------------------------------------------------------- Public Methods
070:
071: /**
072: * Load properties.
073: */
074: private static void loadProperties() {
075:
076: InputStream is = null;
077: Throwable error = null;
078:
079: try {
080: String configUrl = getConfigUrl();
081: if (configUrl != null) {
082: is = (new URL(configUrl)).openStream();
083: }
084: } catch (Throwable t) {
085: // Ignore
086: }
087:
088: if (is == null) {
089: try {
090: File home = new File(getCatalinaBase());
091: File conf = new File(home, "conf");
092: File properties = new File(conf, "catalina.properties");
093: is = new FileInputStream(properties);
094: } catch (Throwable t) {
095: // Ignore
096: }
097: }
098:
099: if (is == null) {
100: try {
101: is = CatalinaProperties.class
102: .getResourceAsStream("/org/apache/catalina/startup/catalina.properties");
103: } catch (Throwable t) {
104: // Ignore
105: }
106: }
107:
108: if (is != null) {
109: try {
110: properties = new Properties();
111: properties.load(is);
112: is.close();
113: } catch (Throwable t) {
114: error = t;
115: }
116: }
117:
118: if ((is == null) || (error != null)) {
119: // Do something
120: log.warn("Failed to load catalina.properties", error);
121: // That's fine - we have reasonable defaults.
122: properties = new Properties();
123: }
124:
125: // Register the properties as system properties
126: Enumeration enumeration = properties.propertyNames();
127: while (enumeration.hasMoreElements()) {
128: String name = (String) enumeration.nextElement();
129: String value = properties.getProperty(name);
130: if (value != null) {
131: System.setProperty(name, value);
132: }
133: }
134:
135: }
136:
137: /**
138: * Get the value of the catalina.home environment variable.
139: */
140: private static String getCatalinaHome() {
141: return System.getProperty("catalina.home", System
142: .getProperty("user.dir"));
143: }
144:
145: /**
146: * Get the value of the catalina.base environment variable.
147: */
148: private static String getCatalinaBase() {
149: return System.getProperty("catalina.base", getCatalinaHome());
150: }
151:
152: /**
153: * Get the value of the configuration URL.
154: */
155: private static String getConfigUrl() {
156: return System.getProperty("catalina.config");
157: }
158:
159: }
|