001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package com.sun.midp.main;
028:
029: /** access the implementation configuration file parameters. */
030: public class Configuration {
031: /** Don't let anyone instantiate this class */
032: private Configuration() {
033: }
034:
035: /**
036: * Gets the implementation property indicated by the specified key.
037: *
038: * @param key the name of the implementation property.
039: * @return the string value of the implementation property,
040: * or <code>null</code> if there is no property with that key.
041: *
042: * @exception NullPointerException if <code>key</code> is
043: * <code>null</code>.
044: * @exception IllegalArgumentException if <code>key</code> is empty.
045: */
046: public static String getProperty(String key) {
047: // If key is null, then a NullPointerException is thrown.
048: // If key is blank, then throw a specific IllegalArgumentException
049: if (key.length() == 0) {
050: throw new IllegalArgumentException("key can't be empty");
051: }
052: return getProperty0(key);
053: }
054:
055: /**
056: * Gets the implementation property indicated by the specified key or
057: * returns the specified default value.
058: *
059: * @param key the name of the implementation property.
060: * @param def the default value for the property if not
061: * specified in the configuration files or command
062: * line over rides.
063: * @return the string value of the implementation property,
064: * or <code>def</code> if there is no property with that key.
065: *
066: * @exception NullPointerException if <code>key</code> is
067: * <code>null</code>.
068: * @exception IllegalArgumentException if <code>key</code> is empty.
069: */
070: public static String getPropertyDefault(String key, String def) {
071: String result = getProperty(key);
072:
073: return (result != null ? result : def);
074: }
075:
076: /**
077: * Gets the implementation property indicated by the specified key or
078: * returns the specified default value as an positive int.
079: *
080: * @param key the name of the implementation property.
081: * @param def the default value for the property if not
082: * specified in the configuration files or command
083: * line over rides.
084: *
085: * @return the int value of the implementation property,
086: * or <code>def</code> if there is no property with that key or
087: * the config value is not a positive int (zero is not
088: * positive).
089: *
090: * @exception NullPointerException if <code>key</code> is
091: * <code>null</code>.
092: * @exception IllegalArgumentException if <code>key</code> is empty.
093: */
094: public static int getPositiveIntProperty(String key, int def) {
095: int temp = getIntProperty(key, def);
096:
097: if (temp > 0) {
098: return temp;
099: }
100:
101: return def;
102: }
103:
104: /**
105: * Gets the implementation property indicated by the specified key or
106: * returns the specified default value as an non-zero int.
107: *
108: * @param key the name of the implementation property.
109: * @param def the default value for the property if not
110: * specified in the configuration files or command
111: * line over rides.
112: * @return the int value of the implementation property,
113: * or <code>def</code> if there is no property with that key or
114: * the config value is not an int.
115: *
116: * @exception NullPointerException if <code>key</code> is
117: * <code>null</code>.
118: * @exception IllegalArgumentException if <code>key</code> is empty.
119: */
120: public static int getNonNegativeIntProperty(String key, int def) {
121: int temp = getIntProperty(key, def);
122:
123: if (temp >= 0) {
124: return temp;
125: }
126:
127: return def;
128: }
129:
130: /**
131: * Gets the implementation property indicated by the specified key or
132: * returns the specified default value as an int.
133: *
134: * @param key the name of the implementation property.
135: * @param def the default value for the property if not
136: * specified in the configuration files or command
137: * line over rides.
138: *
139: * @return the int value of the implementation property,
140: * or <code>def</code> if there is no property with that key or
141: * the config value is not an int.
142: *
143: * @exception NullPointerException if <code>key</code> is
144: * <code>null</code>.
145: * @exception IllegalArgumentException if <code>key</code> is empty.
146: */
147: public static int getIntProperty(String key, int def) {
148: /*
149: * Get the maximum number of persistent connections
150: * from the configuration file.
151: */
152: String prop = getProperty(key);
153: if (prop == null) {
154: return def;
155: }
156:
157: try {
158: int temp = Integer.parseInt(prop);
159: return temp;
160: } catch (NumberFormatException nfe) {
161: // keep the default
162: }
163:
164: return def;
165: }
166:
167: /**
168: * native interface to the configuration parameter storage.
169: *
170: * @param key the name of the implementation property.
171: * @return the string value of the implementation property,
172: * or <code>null</code> if there is no property with that key.
173: */
174: private native static String getProperty0(String key);
175: }
|