2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * =============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
25 package org.openecomp.appc.configuration;
27 import java.util.Properties;
29 import org.slf4j.Logger;
34 * This interface defines the common configuration support that is available to the application.
36 * Where properties are common to all CDP components (server, coordinator, and EPM), the property symbolic values are
37 * defined as part of this interface. Where they are unique to each component, they must be defined within that
41 public interface Configuration {
43 String PROPERTY_BOOTSTRAP_FILE_NAME = "org_openecomp_appc_bootstrap_file"; //
44 String DEFAULT_BOOTSTRAP_FILE_NAME = "appc.properties";
45 String PROPERTY_BOOTSTRAP_FILE_PATH = "org_openecomp_appc_bootstrap_path"; //
46 String DEFAULT_BOOTSTRAP_FILE_PATH = "/opt/openecomp/appc/data/properties,${user.home},etc,../etc";
47 String PROPERTY_RESOURCE_BUNDLES = "org.openecomp.appc.resources";
48 String DEFAULT_RESOURCE_BUNDLES = "org/openecomp/appc/i18n/MessageResources";
51 * This method is called to obtain a property expressed as a boolean value (true or false). The standard rules for
52 * {@link Boolean#valueOf(String)} are used.
56 * @return The value of the property expressed as a boolean, or false if it does not exist.
58 boolean getBooleanProperty(String key);
61 * This method is called to obtain a property expressed as a boolean value (true or false). The standard rules for
62 * {@link Boolean#valueOf(String)} are used.
67 * The default value to be returned if the property does not exist
68 * @return The value of the property expressed as a boolean, or false if it does not exist.
70 boolean getBooleanProperty(String key, boolean defaultValue);
73 * Returns the indicated property value expressed as a floating point double-precision value (double). The standard
74 * rules for {@link Double#valueOf(String)} are used.
77 * The property to retrieve
78 * @return The value of the property, or 0.0 if not found or invalid
80 double getDoubleProperty(String key);
83 * Returns the indicated property value expressed as a floating point double-precision value (double). The standard
84 * rules for {@link Double#valueOf(String)} are used.
87 * The property to retrieve
89 * The default value to be returned if the property does not exist
90 * @return The value of the property, or 0.0 if not found or invalid
92 double getDoubleProperty(String key, double defaultValue);
95 * Returns the property indicated expressed as an integer. The standard rules for
96 * {@link Integer#parseInt(String, int)} using a radix of 10 are used.
99 * The property name to retrieve.
100 * @return The value of the property, or 0 if it does not exist or is invalid.
102 int getIntegerProperty(String key);
105 * Returns the property indicated expressed as an integer. The standard rules for
106 * {@link Integer#parseInt(String, int)} using a radix of 10 are used.
109 * The property name to retrieve.
110 * @param defaultValue
111 * The default value to be returned if the property does not exist
112 * @return The value of the property, or 0 if it does not exist or is invalid.
114 int getIntegerProperty(String key, int defaultValue);
117 * Returns the specified property as a long integer value, if it exists, or zero if it does not.
120 * The key of the property desired.
121 * @return The value of the property expressed as an integer long value, or zero if the property does not exist or
122 * is not a valid integer long.
124 long getLongProperty(String key);
127 * Returns the specified property as a long integer value, if it exists, or the default value if it does not exist
131 * The key of the property desired.
132 * @param defaultValue
133 * the value to be returned if the property is not valid or does not exist.
134 * @return The value of the property expressed as an integer long value, or the default value if the property does
135 * not exist or is not a valid integer long.
137 long getLongProperty(String key, long defaultValue);
140 * This method can be called to retrieve a properties object that is immutable. Any attempt to modify the properties
141 * object returned will result in an exception. This allows a caller to view the current configuration as a set of
144 * @return An unmodifiable properties object.
146 Properties getProperties();
149 * This method is called to obtain a property as a string value
152 * The key of the property
153 * @return The string value, or null if it does not exist.
155 String getProperty(String key);
158 * This method is called to obtain a property as a string value
161 * The key of the property
162 * @param defaultValue
163 * The default value to be returned if the property does not exist
164 * @return The string value, or null if it does not exist.
166 String getProperty(String key, String defaultValue);
169 * Returns true if the named property is defined, false otherwise.
172 * The key of the property we are interested in
173 * @return True if the property exists.
175 boolean isPropertyDefined(String key);
178 * Returns an indication of the validity of the boolean property. A boolean property is considered to be valid only
179 * if it has the value "true" or "false" (ignoring case).
182 * The property to be checked
183 * @return True if the value is a boolean constant, or false if it does not exist or is not a correct string
185 boolean isValidBoolean(String key);
188 * Returns an indication if the indicated property represents a valid double-precision floating point number.
191 * The property to be examined
192 * @return True if the property is a valid representation of a double, or false if it does not exist or contains
193 * illegal characters.
195 boolean isValidDouble(String key);
198 * Returns an indication if the property is a valid integer value or not.
201 * The key of the property to check
202 * @return True if the value is a valid integer string, or false if it does not exist or contains illegal
205 boolean isValidInteger(String key);
208 * Determines is the specified property exists and is a valid representation of an integer long value.
211 * The property to be checked
212 * @return True if the property is a valid representation of an integer long value, and false if it either does not
213 * exist or is not valid.
215 boolean isValidLong(String key);
218 * This method allows the caller to set all properties from a provided properties object into the configuration
221 * The primary difference between this method and the factory method
222 * {@link ConfigurationFactory#getConfiguration(Properties)} is that this method does not clear and reload the
223 * configuration. Rather, this method merges the provided properties object contents into the existing properties,
224 * replacing any same-named keys with the values from this object.
228 * The properties object to copy all properties from
230 void setProperties(Properties properties);
233 * This method allows a caller to insert a new property definition into the configuration object. This allows the
234 * application to adjust or add to the current configuration. If the property already exists, it is replaced with
238 * The key of the property to be defined
240 * The value of the property to be defined
242 void setProperty(String key, String value);