[seam-commits] Seam SVN: r8656 - trunk/src/main/org/jboss/seam.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Mon Aug 11 16:55:35 EDT 2008
Author: norman.richards at jboss.com
Date: 2008-08-11 16:55:35 -0400 (Mon, 11 Aug 2008)
New Revision: 8656
Modified:
trunk/src/main/org/jboss/seam/Component.java
Log:
JBSEAM-3163
Modified: trunk/src/main/org/jboss/seam/Component.java
===================================================================
--- trunk/src/main/org/jboss/seam/Component.java 2008-08-11 19:45:50 UTC (rev 8655)
+++ trunk/src/main/org/jboss/seam/Component.java 2008-08-11 20:55:35 UTC (rev 8656)
@@ -502,7 +502,11 @@
}
else if ( propertyValue.isMultiValued() )
{
- return new ListInitialValue(propertyValue, parameterClass, parameterType);
+ if (Set.class.isAssignableFrom(parameterClass)) {
+ return new SetInitialValue(propertyValue, parameterClass, parameterType);
+ } else {
+ return new ListInitialValue(propertyValue, parameterClass, parameterType);
+ }
}
else if ( propertyValue.isAssociativeValued() )
{
@@ -2464,6 +2468,39 @@
}
+ static class SetInitialValue implements InitialValue
+ {
+ private InitialValue[] initialValues;
+ private Class elementType;
+
+ public SetInitialValue(PropertyValue propertyValue, Class collectionClass, Type collectionType)
+ {
+ String[] expressions = propertyValue.getMultiValues();
+ initialValues = new InitialValue[expressions.length];
+ elementType = Reflections.getCollectionElementType(collectionType);
+ for ( int i=0; i<expressions.length; i++ )
+ {
+ PropertyValue elementValue = new Conversions.FlatPropertyValue( expressions[i] );
+ initialValues[i] = getInitialValue(elementValue, elementType, elementType);
+ }
+ }
+
+ public Object getValue(Class type)
+ {
+ Set set = new HashSet(initialValues.length);
+ for (InitialValue iv: initialValues) {
+ set.add( iv.getValue(elementType) );
+ }
+ return set;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "SetInitialValue(" + elementType.getSimpleName() + ")";
+ }
+ }
+
static class ListInitialValue implements InitialValue
{
private InitialValue[] initialValues;
More information about the seam-commits
mailing list