summaryrefslogtreecommitdiff
path: root/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
commitb94ac97572c351bc3e317d8b3e5330ba4cd6d225 (patch)
treed5d03e9f85885ee464224f8481454107592de2ad /java
parentc2f00b035fd3c47e5365294716d919ba997ee1a6 (diff)
downloadqpid-python-b94ac97572c351bc3e317d8b3e5330ba4cd6d225.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/qpid@901002 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/common/src/main/java/org/apache/configuration/ClientProperties.java27
-rw-r--r--java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java129
2 files changed, 154 insertions, 2 deletions
diff --git a/java/common/src/main/java/org/apache/configuration/ClientProperties.java b/java/common/src/main/java/org/apache/configuration/ClientProperties.java
index d5a5aa4a1d..9dda61b03c 100644
--- a/java/common/src/main/java/org/apache/configuration/ClientProperties.java
+++ b/java/common/src/main/java/org/apache/configuration/ClientProperties.java
@@ -21,9 +21,9 @@ package org.apache.configuration;
/**
* This class centralized the Qpid client properties.
*/
-public class ClientProperties
+public class ClientProperties extends PropertyNameResolver
{
-
+
/**
* Currently with Qpid it is not possible to change the client ID.
* If one is not specified upon connection construction, an id is generated automatically.
@@ -110,4 +110,27 @@ public class ClientProperties
public static final String WRITE_BUFFER_LIMIT_DEFAULT = "262144";
public static final String AMQP_VERSION = "qpid.amqp.version";
+
+ private static ClientProperties _instance = new ClientProperties();
+
+ ClientProperties()
+ {
+ properties.put(IGNORE_SET_CLIENTID_PROP_NAME, new QpidProperty(false,
+ "qpid.ignore_set_client_id","ignore_setclientID"));
+
+ properties.put(SYNC_PERSISTENT_PROP_NAME, new QpidProperty(false,
+ "qpid.sync_persistence","sync_persistence"));
+
+
+ properties.put(MAX_PREFETCH_PROP_NAME, new QpidProperty(500,
+ "qpid.max_prefetch","max_prefetch"));
+
+ }
+
+ public ClientProperties get()
+ {
+ return _instance;
+ }
+
+
}
diff --git a/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java b/java/common/src/main/java/org/apache/configuration/PropertyNameResolver.java
new file mode 100644
index 0000000000..2c1fb0ed67
--- /dev/null
+++ b/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);
+ }
+ }
+
+}