Update of /var/cvs/src/org/mmbase/datatypes
In directory james.mmbase.org:/tmp/cvs-serv1399

Modified Files:
        BasicDataType.java DataType.java 
Log Message:
  MMB-1794


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/datatypes
See also: http://www.mmbase.org/jira/browse/MMB-1794


Index: BasicDataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/BasicDataType.java,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -b -r1.103 -r1.104
--- BasicDataType.java  8 Feb 2009 21:15:13 -0000       1.103
+++ BasicDataType.java  17 Mar 2009 14:42:02 -0000      1.104
@@ -40,7 +40,7 @@
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
  * @since  MMBase-1.8
- * @version $Id: BasicDataType.java,v 1.103 2009/02/08 21:15:13 michiel Exp $
+ * @version $Id: BasicDataType.java,v 1.104 2009/03/17 14:42:02 michiel Exp $
  */
 
 public class BasicDataType<C> extends AbstractDescriptor implements 
DataType<C>, Comparable<DataType<C>>, Descriptor {
@@ -430,6 +430,7 @@
         case DataType.ENFORCE_ALWAYS:   return "always";
         case DataType.ENFORCE_ONCHANGE: return "onchange";
         case DataType.ENFORCE_ONCREATE: return "oncreate";
+        case DataType.ENFORCE_ONVALIDATE: return "onvalidate";
         case DataType.ENFORCE_NEVER:    return "never";
         default:                        return "???";
         }
@@ -515,6 +516,9 @@
      * {...@inheritdoc}
      */
     private final Collection<LocalizedString> validate(final Object value, 
final Node node, final Field field, boolean testEnum) {
+        if (log.isDebugEnabled()) {
+            log.debug("Validating " + value);
+        }
         Collection<LocalizedString> errors = VALID;
         Object castValue;
         try {
@@ -527,6 +531,7 @@
         }
 
         if (errors.size() > 0) {
+            log.debug("Invalid");
             // no need continuing, restrictions will probably not know how to 
handle this value any way.
             return errors;
         }
@@ -1060,6 +1065,7 @@
             case DataType.ENFORCE_ALWAYS:   return true;
             case DataType.ENFORCE_ONCHANGE: if (node == null || field == null 
|| node.isChanged(field.getName())) return true;
             case DataType.ENFORCE_ONCREATE: if (node == null || node.isNew()) 
return true;
+            case DataType.ENFORCE_ONVALIDATE: return true;
             case DataType.ENFORCE_NEVER:    return false;
             default:                        return true;
             }
@@ -1171,7 +1177,10 @@
         }
 
         protected boolean simpleValid(Object v, Node node, Field field) {
-            if (! isUnique()) return true;
+            if (! isUnique()) {
+                log.debug("Not unique");
+                return true;
+            }
             if (field != null && v != null && value != null ) {
 
                 if (field.isVirtual()) {
@@ -1192,6 +1201,7 @@
                     }
                 }
 
+                log.debug("Checking '" + value + "'");
                 NodeManager nodeManager = field.getNodeManager();
                 Cloud cloud = nodeManager.getCloud();
                 if (cloud.getUser().getRank().getInt() < Rank.ADMIN_INT) {


Index: DataType.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/DataType.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- DataType.java       27 Aug 2008 17:09:16 -0000      1.70
+++ DataType.java       17 Mar 2009 14:42:02 -0000      1.71
@@ -33,7 +33,7 @@
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
  * @since  MMBase-1.8
- * @version $Id: DataType.java,v 1.70 2008/08/27 17:09:16 michiel Exp $
+ * @version $Id: DataType.java,v 1.71 2009/03/17 14:42:02 michiel Exp $
  * @param <C> Class this DataType
  */
 
@@ -76,6 +76,17 @@
     static final int ENFORCE_ONCREATE = 1000;
 
     /**
+     * Return value for {...@link DataType.Restriction#getEnforceStrength}. 
This means that ta
+     * restriction on a value must be enforced only on validation of the 
value. This means that it
+     * has no influence of the validity of the <em>node</em>.
+     * @todo No difference made between always/change/create for this. We 
could also add
+     *       ENfORCE_ONVALIDATE_CHANGE, ENFORMCE_ONVALIDATE_CREATE
+     * @since MMBase-1.9.1
+     */
+
+    static final int ENFORCE_ONVALIDATE = 500;
+
+    /**
      * Return value for {...@link DataType.Restriction#getEnforceStrength}. 
This means that the
      * restriction on a value must be enforced never, so the restriction 
serves only as UI indication.
      */
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to