Hey Geir,

Where is this file now WRT to the commons? We are now starting
to make changes to a class that lives in the commons. I don't
think any changes have been made to the file in the commons
so the Configuration class here can just be moved to the
commons again. I haven't moved on this either, just wanted
to bring it up.


Daniel Rall wrote:
> 
> I've noticed that it's often the case that getString(String key) gets
> called on a key whose associated value is a list (usually due to a
> misconfigured properties file).  I was thinking that in such a case
> behavior other than a ClassCastException may be desirable.  In ideal
> code, such a situation might be caught and handled gracefully.
> Unfortunately, ClassCastException is one of those Exceptions that can
> be thrown almost anywhere, so it often is dealt with as well as it
> could be.
> 
> Two reasonable behaviors that come to mind include either returning
> the first item in the list, or returning the entire list as it was
> originally specified in the properties file.  I've implemented the
> second possiblity, but want feedback on this change from others.
> 
> Index: StringUtils.java
> ===================================================================
> RCS file: 
>/home/cvs/jakarta-velocity/src/java/org/apache/velocity/util/StringUtils.java,v
> retrieving revision 1.9
> diff -u -u -r1.9 StringUtils.java
> --- StringUtils.java    2001/03/05 11:48:39     1.9
> +++ StringUtils.java    2001/05/01 06:58:09
> @@ -63,6 +63,7 @@
> 
>  import java.util.ArrayList;
>  import java.util.Hashtable;
> +import java.util.List;
>  import java.util.StringTokenizer;
>  import java.util.Vector;
> 
> @@ -171,6 +172,29 @@
>              s[i] = (String) v.elementAt(i);
> 
>          return s;
> +    }
> +
> +    /**
> +     * Bridges the elements in the specified list into a single piece
> +     * of text using the provided delimeter.
> +     *
> +     * @param list  The elements to remold.
> +     * @param delim The glue.
> +     * @return      The reformed bits.
> +     */
> +    public static String join(List list, String delim)
> +    {
> +        StringBuffer buf = new StringBuffer();
> +        int size = list.size();
> +        for (int i = 0; i < size; i++)
> +        {
> +            if (i > 0)
> +            {
> +                buf.append(delim);
> +            }
> +            buf.append(list.get(i));
> +        }
> +        return buf.toString();
>      }
> 
>      /**
> Index: Configuration.java
> ===================================================================
> RCS file: 
>/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/configuration/Configuration.java,v
> retrieving revision 1.28
> diff -u -u -r1.28 Configuration.java
> --- Configuration.java  2001/05/01 07:05:39     1.28
> +++ Configuration.java  2001/05/01 07:06:27
> @@ -75,6 +75,8 @@
>  import java.util.StringTokenizer;
>  import java.util.Vector;
> 
> +import org.apache.velocity.util.StringUtils;
> +
>  /**
>   * This class extends normal Java properties by adding the possibility
>   * to use the same key many times concatenating the value strings
> @@ -951,6 +953,11 @@
>          if (value instanceof String)
>          {
>              return (String) value;
> +        }
> +        else if (value instanceof Vector)
> +        {
> +            return StringUtils.join((Vector) value,
> +                                    PropertiesTokenizer.DELIMETER);
>          }
>          else if (value == null)
>          {

-- 
jvz.

Jason van Zyl
[EMAIL PROTECTED]

http://jakarta.apache.org/velocity
http://jakarta.apache.org/turbine
http://jakarta.apache.org/commons
http://tambora.zenplex.org

Reply via email to