summaryrefslogtreecommitdiff
path: root/qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2010-01-19 23:37:12 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2010-01-19 23:37:12 +0000
commit0f291a5f908da73ebaea8771d03f0cf700ebc4c9 (patch)
tree86871d2cf771ba773cc76e14751723ca0ccec290 /qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java
parent10faf43196760585ea6cadf8fb3a8775e231969c (diff)
downloadqpid-python-0f291a5f908da73ebaea8771d03f0cf700ebc4c9.tar.gz
This is related to QPID-2343
I have added the basis for using a single config source for resolving property names. We could now add a set of new properties that follows the naming convention agreed on the list while providing support for old property names. Next step is to dig the code for all the properties and populate the correct tables in ClientProperties.java git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@901002 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java')
-rw-r--r--qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java129
1 files changed, 129 insertions, 0 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java b/qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java
new file mode 100644
index 0000000000..2c1fb0ed67
--- /dev/null
+++ b/qpid/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java
@@ -0,0 +1,129 @@
+/*
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+
+package org.apache.configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class PropertyNameResolver
+{
+ public static interface Accessor
+ {
+ Object get(String name);
+ }
+
+ private static Map<Class<?>,Accessor> accessors = new HashMap<Class<?>,Accessor>();
+ protected Map<String,QpidProperty> properties;
+
+ private static class BooleanAccessor implements Accessor
+ {
+ public Boolean get(String name)
+ {
+ return Boolean.getBoolean(name);
+ }
+ }
+
+ private static class IntegerAccessor implements Accessor
+ {
+ public Integer get(String name)
+ {
+ return Integer.getInteger(name);
+ }
+ }
+
+ private static class LongAccessor implements Accessor
+ {
+ public Long get(String name)
+ {
+ return Long.getLong(name);
+ }
+ }
+
+ private static class StringAccessor implements Accessor
+ {
+ public String get(String name)
+ {
+ return System.getProperty(name);
+ }
+ }
+
+ static
+ {
+ accessors.put(Boolean.class, new BooleanAccessor());
+ accessors.put(Integer.class, new IntegerAccessor());
+ accessors.put(String.class, new StringAccessor());
+ accessors.put(Long.class, new LongAccessor());
+ }
+
+ public Integer getIntegerValue(String propName)
+ {
+ return properties.get(propName).get(Integer.class);
+ }
+
+ public Long getLongValue(String propName)
+ {
+ return properties.get(propName).get(Long.class);
+ }
+
+ public String getStringValue(String propName)
+ {
+ return properties.get(propName).get(String.class);
+ }
+
+ public Boolean getBooleanValue(String propName)
+ {
+ return properties.get(propName).get(Boolean.class);
+ }
+
+ public <T> T get(String propName,Class<T> klass)
+ {
+ return properties.get(propName).get(klass);
+ }
+
+ class QpidProperty
+ {
+ private Object defValue;
+ private String[] names;
+
+ QpidProperty(Object defValue, String ... names)
+ {
+ this.defValue = defValue;
+ this.names = names;
+ }
+
+ <T> T get(Class<T> klass)
+ {
+ Accessor acc = accessors.get(klass);
+ for (String name : names)
+ {
+ Object obj = acc.get(name);
+ if (obj != null)
+ {
+ return klass.cast(obj);
+ }
+ }
+
+ return klass.cast(defValue);
+ }
+ }
+
+}