You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2009/04/16 09:57:09 UTC

svn commit: r765498 - in /myfaces/trinidad/trunk: trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UIXComponentELTag.java trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/expl/Coercions.java

Author: matzew
Date: Thu Apr 16 07:57:09 2009
New Revision: 765498

URL: http://svn.apache.org/viewvc?rev=765498&view=rev
Log:
TRINIDAD-1414 - Implement support for specifying List<String> attribute type as String
merging the component specific patch to trunk

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UIXComponentELTag.java
    myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/expl/Coercions.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UIXComponentELTag.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UIXComponentELTag.java?rev=765498&r1=765497&r2=765498&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UIXComponentELTag.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UIXComponentELTag.java Thu Apr 16 07:57:09 2009
@@ -25,6 +25,7 @@
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 import java.util.TimeZone;
 
 import javax.el.MethodExpression;
@@ -156,6 +157,33 @@
   }
 
   /**
+   * Set a property of type java.util.List<java.lang.String>.  If the value
+   * is an EL expression, it will be stored as a ValueExpression.
+   * Otherwise, it will parsed as a whitespace-separated series
+   * of strings.
+   * Null values are ignored.
+   */
+  protected void setStringListProperty(
+    FacesBean       bean,
+    PropertyKey     key,
+    ValueExpression expression)
+  {
+    if (expression == null)
+      return;
+
+    if (expression.isLiteralText())
+    {
+      bean.setProperty(key, 
+                       _parseNameTokensAsList(expression.getValue(null)));
+    }
+    else
+    {
+      bean.setValueExpression(key, expression);
+    }
+  }
+
+
+  /**
    * Set a property of type java.lang.Number.  If the value
    * is an EL expression, it will be stored as a ValueBinding.
    * Otherwise, it will parsed with Integer.valueOf() or Double.valueOf() .
@@ -352,6 +380,16 @@
    */
   static private final String[] _parseNameTokens(Object o)
   {
+    List<String> list = _parseNameTokensAsList (o);
+
+    if (list == null)
+      return null;
+
+    return list.toArray(new String[list.size()]);
+  }
+
+  static private final List<String> _parseNameTokensAsList (Object o)
+  {
     if (o == null)
       return null;
 
@@ -397,9 +435,10 @@
     if (list.isEmpty())
       return null;
 
-    return list.toArray(new String[list.size()]);
+    return list;
   }
 
+
   private static final TrinidadLogger _LOG = 
     TrinidadLogger.createTrinidadLogger(UIXComponentELTag.class);
 

Modified: myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/expl/Coercions.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/expl/Coercions.java?rev=765498&r1=765497&r2=765498&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/expl/Coercions.java (original)
+++ myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/expl/Coercions.java Thu Apr 16 07:57:09 2009
@@ -23,6 +23,8 @@
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -133,6 +135,10 @@
       {
         return XMLUtils.parseNameTokens(text);
       }
+      else if (type == List.class)
+      {
+        return Arrays.asList(XMLUtils.parseNameTokens(text));
+      }
       // For Dates, try to parse it as an ISO 8601 Date.
       // If that fails, simply let the string pass through;  for
       // DateFieldBean, this works, and it really should for