You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2009/08/06 22:21:08 UTC

svn commit: r801810 - in /commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base: AbstractHierarchicalConfigurationSource.java ConfigurationSource.java

Author: oheger
Date: Thu Aug  6 20:21:08 2009
New Revision: 801810

URL: http://svn.apache.org/viewvc?rev=801810&view=rev
Log:
Added methods for registering event listeners to ConfigurationSource. Removed the method for setting a collection property.

Modified:
    commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/AbstractHierarchicalConfigurationSource.java
    commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSource.java

Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/AbstractHierarchicalConfigurationSource.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/AbstractHierarchicalConfigurationSource.java?rev=801810&r1=801809&r2=801810&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/AbstractHierarchicalConfigurationSource.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/AbstractHierarchicalConfigurationSource.java Thu Aug  6 20:21:08 2009
@@ -276,7 +276,7 @@
                 Object value = nodes.getValue(i, getNodeHandler());
                 if (value != null)
                 {
-                    if (nodes.isAttribute(i) && value instanceof Collection)
+                    if (nodes.isAttribute(i) && value instanceof Collection<?>)
                     {
                         // there may be multiple values
                         list.addAll((Collection<?>) value);
@@ -413,7 +413,7 @@
         for (int index = 0; index < nodes.size(); index++)
         {
             Object value = nodes.getValue(index, getNodeHandler());
-            if (value instanceof Collection)
+            if (value instanceof Collection<?>)
             {
                 // if there are multiple values, count them all
                 cnt += ((Collection<?>) value).size();
@@ -450,6 +450,34 @@
     }
 
     /**
+     * Adds a listener to this configuration source. This implementation does
+     * not support event notifications, so an exception is thrown.
+     *
+     * @param l the listener to be added
+     * @throws UnsupportedOperationException because this operation is not
+     *         supported
+     */
+    public void addConfigurationSourceListener(ConfigurationSourceListener l)
+    {
+        throw new UnsupportedOperationException("Not implemented!");
+    }
+
+    /**
+     * Removes a listener from this configuration source. This implementation
+     * does not support event notifications, so an exception is thrown.
+     *
+     * @param l the listener to be removed
+     * @return a flag whether the listener could be removed
+     * @throws UnsupportedOperationException because this operation is not
+     *         supported
+     */
+    public boolean removeConfigurationSourceListener(
+            ConfigurationSourceListener l)
+    {
+        throw new UnsupportedOperationException("Not implemented!");
+    }
+
+    /**
      * The actual implementation of the traversal of all nodes. This method is
      * called by {@link #visit(Object, NodeVisitor)}.
      *
@@ -683,7 +711,7 @@
             for (String attr : handler.getAttributes(node))
             {
                 Object value = handler.getAttributeValue(node, attr);
-                if (value instanceof Collection)
+                if (value instanceof Collection<?>)
                 {
                     count += ((Collection<?>) value).size();
                 }

Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSource.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSource.java?rev=801810&r1=801809&r2=801810&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSource.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSource.java Thu Aug  6 20:21:08 2009
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.configuration2.base;
 
-import java.util.Collection;
 import java.util.Iterator;
 
 /**
@@ -120,16 +119,6 @@
     void setProperty(String key, Object value);
 
     /**
-     * Sets multiple values for a property. Any previously set values will be
-     * replaced. The new value of this property will be constructed from all
-     * values stored in the given collection.
-     *
-     * @param key the key of the property to change
-     * @param values a collection with the new values of this property
-     */
-    void setProperty(String key, Collection<?> values);
-
-    /**
      * Removes a property from the configuration.
      *
      * @param key the key to remove along with corresponding value.
@@ -220,4 +209,34 @@
      * @see #getProperty(String)
      */
     int valueCount(String key);
+
+    /**
+     * Adds a {@code ConfigurationSourceListener} for this {@code
+     * ConfigurationSource}. This listener will be notified about manipulations
+     * on this source. Support for event listeners is optional. An
+     * implementation can throw an {@code UnsupportedOperationException}
+     * exception. By using a wrapper that supports event notifications it is
+     * possible to monitor such a {@code ConfigurationSource}.
+     *
+     * @param l the listener to be added (must not be <b>null</b>)
+     * @throws IllegalArgumentException if the listener is <b>null</b>
+     * @throws UnsupportedOperationException if this operation is not
+     *         implemented
+     */
+    void addConfigurationSourceListener(ConfigurationSourceListener l);
+
+    /**
+     * Removes the specified {@code ConfigurationSourceListener} from this
+     * {@code ConfigurationSource}. It will not receive notifications about
+     * changes on this source any more. The return value indicates whether the
+     * listener existed and could be removed. As was pointed out for
+     * {@link #addConfigurationSourceListener(ConfigurationSourceListener)},
+     * this is an optional operation.
+     *
+     * @param l the listener to be removed
+     * @return a flag whether the listener could be removed
+     * @throws UnsupportedOperationException if this operation is not
+     *         implemented
+     */
+    boolean removeConfigurationSourceListener(ConfigurationSourceListener l);
 }