henning     2002/12/21 09:11:30

  Modified:    configuration/src/java/org/apache/commons/configuration
                        BaseConfiguration.java
  Log:
  If in a property is stored a multiple value field (a Container) and only
  a single property value is requested, return transparently the first value
  in the multi value property. This did work for Strings but not for all other
  property types. Suggested by Mark Orciuch <[EMAIL PROTECTED]>.
  
  Revision  Changes    Path
  1.6       +29 -15    
jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/BaseConfiguration.java
  
  Index: BaseConfiguration.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/BaseConfiguration.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BaseConfiguration.java    3 Dec 2002 14:13:55 -0000       1.5
  +++ BaseConfiguration.java    21 Dec 2002 17:11:30 -0000      1.6
  @@ -619,8 +619,7 @@
        */
       public Boolean getBoolean(String key, Boolean defaultValue)
       {
  -
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Boolean)
           {
  @@ -706,7 +705,7 @@
        */
       public Byte getByte(String key, Byte defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Byte)
           {
  @@ -791,7 +790,7 @@
        */
       public Double getDouble(String key, Double defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Double)
           {
  @@ -876,7 +875,7 @@
        */
       public Float getFloat(String key, Float defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Float)
           {
  @@ -969,7 +968,7 @@
        */
       public Integer getInteger(String key, Integer defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Integer)
           {
  @@ -1054,7 +1053,7 @@
        */
       public Long getLong(String key, Long defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Long)
           {
  @@ -1139,7 +1138,7 @@
        */
       public Short getShort(String key, Short defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof Short)
           {
  @@ -1192,7 +1191,7 @@
        */
       public String getString(String key, String defaultValue)
       {
  -        Object value = store.get(key);
  +        Object value = resolveContainerStore(key);
   
           if (value instanceof String)
           {
  @@ -1209,10 +1208,6 @@
                   return interpolate(defaultValue);
               }
           }
  -        else if (value instanceof Container)
  -        {
  -            return interpolate((String) ((Container) value).get(0));
  -        }
           else
           {
               throw new ClassCastException(
  @@ -1326,6 +1321,26 @@
       }
   
       /**
  +     * Returns an object from the store described by the key.
  +     * If the value is a Container object, replace it with the
  +     * first object in the container
  +     *
  +     * @param key The property key.
  +     *
  +     * @return value Value, transparently resolving a possible
  +     *               Container dependency.
  +     */
  +    private Object resolveContainerStore(String key)
  +    {
  +        Object value = store.get(key);
  +        if (value != null && value instanceof Container)
  +        {
  +            value = ((Container) value).get(0);
  +        }
  +        return value;
  +    }
  +
  +    /**
        * This class divides into tokens a property value.  Token
        * separator is "," but commas into the property value are escaped
        * using the backslash in front.
  @@ -1381,7 +1396,6 @@
               return buffer.toString().trim();
           }
       } // class PropertiesTokenizer
  -
   
       /**
        * Private Wrapper class for Vector, so we can distinguish between
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to