r1473 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities
Author: bpoussin Date: 2012-04-20 02:58:23 +0200 (Fri, 20 Apr 2012) New Revision: 1473 Url: http://nuiton.org/repositories/revision/wikitty/1473 Log: add support to array as valide argument to set a collection attribute Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/FieldType.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/FieldType.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/FieldType.java 2012-04-06 15:17:07 UTC (rev 1472) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/FieldType.java 2012-04-20 00:58:23 UTC (rev 1473) @@ -34,6 +34,8 @@ import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.WikittyException; import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.generator.WikittyTagValue; @@ -48,6 +50,9 @@ */ public class FieldType implements WikittyTagValue, Serializable { + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(FieldType.class); + /** serialVersionUID. */ private static final long serialVersionUID = -4375308750387837026L; @@ -162,8 +167,8 @@ if (value == null) { result = null; } else if (isCollection()) { - if ( !(value instanceof Collection) ) { - throw new WikittyException( "A collection is expected for type " + if ( !(value instanceof Collection || value.getClass().isArray()) ) { + throw new WikittyException( "A collection or array is expected for type " + type.name() + "[" + lowerBound + " - " + upperBound + "]" ); } Collection<Object> col; @@ -174,8 +179,15 @@ } // copy all value in new collections - for ( Object o : (Collection<?>) value ) { - col.add( getContainedValidObject(o) ); + if (value instanceof Collection) { + for ( Object o : (Collection<?>) value ) { + col.add( getContainedValidObject(o) ); + } + } else { + // is Array + for ( Object o : (Object[]) value ) { + col.add( getContainedValidObject(o) ); + } } result = col; @@ -199,7 +211,23 @@ * @return true if value is valid */ public boolean isValidValue(Object value) { - return getValidValue(value) != null; + boolean result; + if (value == null && isNotNull()) { + result = false; + } else { + try { + getValidValue(value); + // no exception value is valid + result = true; + } catch (Exception eee) { + if (log.isDebugEnabled()) { + log.debug("Can't convert value, value is not valid, return false", eee); + } + // exception value is not valid + result = false; + } + } + return result; } public WikittyTypes getType() { Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2012-04-06 15:17:07 UTC (rev 1472) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2012-04-20 00:58:23 UTC (rev 1473) @@ -591,9 +591,17 @@ // we put it, in preload map if (value != null && fieldType.getType() == WikittyTypes.WIKITTY) { if (fieldType.isCollection()) { - for ( Object o : (Collection<?>) value ) { - Wikitty w = WikittyUtil.getWikitty(o); - addPreloaded(w); + if (value instanceof Collection) { + for ( Object o : (Collection<?>) value ) { + Wikitty w = WikittyUtil.getWikitty(o); + addPreloaded(w); + } + } else { + // Array + for ( Object o : (Object[]) value ) { + Wikitty w = WikittyUtil.getWikitty(o); + addPreloaded(w); + } } } else { Wikitty w = WikittyUtil.getWikitty(value);
participants (1)
-
bpoussin@users.nuiton.org