Author: michiel
Date: 2009-12-01 18:57:16 +0100 (Tue, 01 Dec 2009)
New Revision: 40070

Modified:
   mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BasicDataType.java
   mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BinaryDataType.java
Log:
avoid casting the same value twice. That's bad, especially for binaries.

Modified: 
mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BasicDataType.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BasicDataType.java     
2009-12-01 17:55:39 UTC (rev 40069)
+++ mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BasicDataType.java     
2009-12-01 17:57:16 UTC (rev 40070)
@@ -555,6 +555,9 @@
             errors = typeRestriction.addError(errors, value, node, field);
             castValue = value;
         }
+        if (log.isDebugEnabled()) {
+            log.debug("Validating  cast value" + castValue);
+        }
         //System.out.println("" + value + " -> " + castValue + " (" + errors);
 
         if (errors.size() > 0) {
@@ -571,7 +574,7 @@
             return errors; // null is valid, unless required.
         }
         if (testEnum) {
-            errors = enumerationRestriction.validate(errors, value, node, 
field);
+            errors = enumerationRestriction.validate(errors, castValue, node, 
field);
         }
         errors = uniqueRestriction.validate(errors, castValue, node, field);
         errors = validateCastValue(errors, castValue, value, node, field);
@@ -1325,6 +1328,7 @@
             if(!isRequired()) return true;
             return v != null;
         }
+
     }
 
     // UNIQUE

Modified: 
mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BinaryDataType.java
===================================================================
--- mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BinaryDataType.java    
2009-12-01 17:55:39 UTC (rev 40069)
+++ mmbase/trunk/core/src/main/java/org/mmbase/datatypes/BinaryDataType.java    
2009-12-01 17:57:16 UTC (rev 40070)
@@ -12,6 +12,8 @@
 import org.mmbase.util.logging.*;
 import org.mmbase.util.SerializableInputStream;
 import org.mmbase.bridge.*;
+import org.mmbase.util.*;
+import java.util.Collection;
 import java.io.InputStream;
 import java.util.regex.Pattern;
 import org.apache.commons.fileupload.FileItem;
@@ -64,6 +66,9 @@
     @Override
     public long getLength(Object value) {
         if (value == null) return 0;
+        if (log.isDebugEnabled()) {
+            log.debug("Finding lenth for " + value);
+        }
         if (value instanceof byte[]) {
             byte[] bytes = (byte[]) value;
             if (log.isDebugEnabled()) {
@@ -89,6 +94,10 @@
         }
     }
 
+    @Override
+    protected Collection<LocalizedString> 
validateRequired(Collection<LocalizedString> errors, Object castValue, Object 
value, Node  node, Field field) {
+        return requiredRestriction.validate(errors, castValue, node, field);
+    }
 
 
     /**

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to