Hi All,
Not sure if this is the correct place to post this, but I've attached a patch for the commons-configuration for some classes I've written to implement a DynaBean/DynaClass wrapper interface for a Configuration object.
Is this project still active? I can't seem to find downloads for it and the maven repository seems out of date?
Kind regards...
-- Ricardo Gladwell
Index: src/java/org/apache/commons/configuration/ConfigurationDynaBean.java
===================================================================
RCS file: src/java/org/apache/commons/configuration/ConfigurationDynaBean.java
diff -N src/java/org/apache/commons/configuration/ConfigurationDynaBean.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/java/org/apache/commons/configuration/ConfigurationDynaBean.java 1 Jan
1970 00:00:00 -0000
@@ -0,0 +1,184 @@
+package org.apache.commons.configuration;
+
+import org.apache.commons.beanutils.BasicDynaBean;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * The <tt>ConfigurationDynaBean</tt> dynamically reads and writes
+ * configurations properties from a configuration-collection
+ * [EMAIL PROTECTED] org.apache.commons.configuration.Configuration}
+ * instance. It also defines a [EMAIL PROTECTED] java.util.Map} interface
+ * so that it can be used in JSP 2.0 Expression Language
+ * expressions.
+ * @author ricardo
+ */
+public class ConfigurationDynaBean extends BasicDynaBean implements Map {
+
+ private final static Log log = LogFactory.getLog(ConfigurationDynaBean.class);
+
+ Configuration configuration;
+ ConfigurationMap map;
+
+ public ConfigurationDynaBean(Configuration configuration) {
+ super(new ConfigurationDynaClass(configuration));
+ if(log.isTraceEnabled())
log.trace("ConfigurationDynaBean("+configuration+")");
+ this.configuration = configuration;
+ map = new ConfigurationMap(configuration);
+ }
+
+ /**
+ *
+ * @param isConfigured
+ */
+ public void set(String name, Object value) {
+ if(log.isTraceEnabled()) log.trace("set("+name+","+value+")");
+ configuration.setProperty(name, value);
+ }
+
+ public Object get(String name) {
+ if(log.isTraceEnabled()) log.trace("get("+name+")");
+ try {
+ Object result = configuration.getProperty(name);
+ if(result == null) {
+ // return configuration subset
+ Configuration subset = configuration.subset(name);
+ if(subset != null)
+ result = new ConfigurationDynaBean(configuration.subset(name));
+ else {
+ // TODO do something meaningful here
+ }
+ }
+ if(log.isDebugEnabled()) log.debug(name+"=["+result+"]");
+ return result;
+ } catch (Exception e) {
+ log.warn("Error reading configuration key=["+name+"]",e);
+ return null;
+ }
+ }
+
+ /**
+ * @return Returns the map.
+ */
+ public Map getMap() {
+ return new ConfigurationMap(configuration);
+ }
+
+ /**
+ * @param map The map to set.
+ */
+ public void setMap(Map map) {
+ // read properties
+ }
+
+ /**
+ *
+ */
+ public void clear() {
+ map.clear();
+ }
+
+ /**
+ * @param key
+ * @return
+ */
+ public boolean containsKey(Object key) {
+ return map.containsKey(key);
+ }
+
+ /**
+ * @param value
+ * @return
+ */
+ public boolean containsValue(Object value) {
+ return map.containsValue(value);
+ }
+
+ /**
+ * @return
+ */
+ public Set entrySet() {
+ return map.entrySet();
+ }
+
+ /**
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals(Object obj) {
+ return map.equals(obj);
+ }
+
+ /**
+ * @param key
+ * @return
+ */
+ public Object get(Object key) {
+ return get((String) key);
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode() {
+ return map.hashCode();
+ }
+
+ /**
+ * @return
+ */
+ public boolean isEmpty() {
+ return map.isEmpty();
+ }
+
+ /**
+ * @return
+ */
+ public Set keySet() {
+ return map.keySet();
+ }
+
+ /**
+ * @param key
+ * @param value
+ * @return
+ */
+ public Object put(Object key, Object value) {
+ set((String) key, value);
+ return get(key);
+ }
+
+ /**
+ * @param t
+ */
+ public void putAll(Map t) {
+ map.putAll(t);
+ }
+
+ /**
+ * @param key
+ * @return
+ */
+ public Object remove(Object key) {
+ return map.remove(key);
+ }
+
+ /**
+ * @return
+ */
+ public int size() {
+ return map.size();
+ }
+
+ /**
+ * @return
+ */
+ public Collection values() {
+ return map.values();
+ }
+
+}
Index: src/java/org/apache/commons/configuration/ConfigurationDynaClass.java
===================================================================
RCS file: src/java/org/apache/commons/configuration/ConfigurationDynaClass.java
diff -N src/java/org/apache/commons/configuration/ConfigurationDynaClass.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/java/org/apache/commons/configuration/ConfigurationDynaClass.java 1 Jan
1970 00:00:00 -0000
@@ -0,0 +1,53 @@
+package org.apache.commons.configuration;
+
+import java.util.Iterator;
+import java.util.ArrayList;
+
+import org.apache.commons.beanutils.BasicDynaClass;
+import org.apache.commons.beanutils.DynaProperty;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author ricardo
+ */
+public class ConfigurationDynaClass extends BasicDynaClass {
+
+ private final static Log log = LogFactory.getLog(ConfigurationDynaClass.class);
+
+ Configuration configuration;
+
+ public ConfigurationDynaClass(Configuration configuration) {
+ super();
+ if(log.isTraceEnabled())
log.trace("ConfigurationDynaClass("+configuration+")");
+ this.configuration = configuration;
+ }
+
+ public DynaProperty getDynaProperty(String name) {
+ if(log.isTraceEnabled()) log.trace("getDynaProperty("+name+")");
+ Object value = configuration.getProperty(name);
+ DynaProperty property;
+ if(value != null)
+ property = new DynaProperty(name,value.getClass());
+ else property = new DynaProperty(name,String.class);
+ if(log.isDebugEnabled()) log.debug(property);
+ return property;
+ }
+
+ public DynaProperty[] getDynaProperties() {
+ if(log.isTraceEnabled()) log.trace("getDynaProperties()");
+ Iterator keys = configuration.getKeys();
+ ArrayList properties = new ArrayList();
+ while(keys.hasNext()) {
+ String key = (String) keys.next();
+ DynaProperty property = getDynaProperty(key);
+ properties.add(property);
+ }
+ DynaProperty[] propertyArray = new DynaProperty[properties.size()];
+ properties.toArray(propertyArray);
+ if(log.isDebugEnabled()) log.debug("Found "+properties.size()+" properties.");
+ return propertyArray;
+ }
+
+}
Index: src/java/org/apache/commons/configuration/ConfigurationEntrySet.java
===================================================================
RCS file: src/java/org/apache/commons/configuration/ConfigurationEntrySet.java
diff -N src/java/org/apache/commons/configuration/ConfigurationEntrySet.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/java/org/apache/commons/configuration/ConfigurationEntrySet.java 1 Jan
1970 00:00:00 -0000
@@ -0,0 +1,65 @@
+package org.apache.commons.configuration;
+
+import java.util.AbstractSet;
+import java.util.Iterator;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author ricardo
+ */
+class ConfigurationEntrySet extends AbstractSet {
+
+ private final static Log log = LogFactory.getLog(ConfigurationEntrySet.class);
+
+ class ConfigurationEntrySetIterator implements Iterator {
+
+ Iterator keys;
+
+ public ConfigurationEntrySetIterator() {
+ keys = configuration.getKeys();
+ }
+
+ public boolean hasNext() {
+ return keys.hasNext();
+ }
+
+ public Object next() {
+ return keys.next();
+ }
+
+ public void remove() {
+ keys.remove();
+ }
+
+ }
+
+ Configuration configuration;
+
+ public ConfigurationEntrySet(Configuration configuration) {
+ if(log.isTraceEnabled())
log.trace("ConfigurationEntrySet("+configuration+")");
+ this.configuration = configuration;
+ }
+
+ /**
+ * @see java.util.Collection#size()
+ */
+ public int size() {
+ if(log.isTraceEnabled()) log.trace("size()");
+ int count = 0;
+ Iterator iterator = configuration.getKeys();
+ while(iterator.hasNext()) count++;
+ return count;
+ }
+
+ /**
+ * @see java.util.Collection#iterator()
+ */
+ public Iterator iterator() {
+ if(log.isTraceEnabled()) log.trace("iterator()");
+ return new ConfigurationEntrySetIterator();
+ }
+
+}
Index: src/java/org/apache/commons/configuration/ConfigurationMap.java
===================================================================
RCS file: src/java/org/apache/commons/configuration/ConfigurationMap.java
diff -N src/java/org/apache/commons/configuration/ConfigurationMap.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/java/org/apache/commons/configuration/ConfigurationMap.java 1 Jan 1970
00:00:00 -0000
@@ -0,0 +1,26 @@
+package org.apache.commons.configuration;
+
+import java.util.AbstractMap;
+import java.util.Set;
+
+import org.apache.commons.configuration.Configuration;
+
+/**
+ * @author ricardo
+ */
+class ConfigurationMap extends AbstractMap {
+
+ Configuration configuration;
+
+ public ConfigurationMap(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ /**
+ * @see java.util.Map#entrySet()
+ */
+ public Set entrySet() {
+ return new ConfigurationEntrySet(configuration);
+ }
+
+}--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
