Author: michiel
Date: 2010-05-26 10:26:41 +0200 (Wed, 26 May 2010)
New Revision: 42269

Modified:
   
mmbase/branches/MMBase-1_9/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
Log:
added a way to set the enforce strenght of this restriction

Modified: 
mmbase/branches/MMBase-1_9/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
       2010-05-26 08:22:59 UTC (rev 42268)
+++ 
mmbase/branches/MMBase-1_9/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
       2010-05-26 08:26:41 UTC (rev 42269)
@@ -40,7 +40,7 @@
         super(name);
     }
 
-    protected Collection/*<LocalizedString>*/ 
validateCastValue(Collection/*<LocalizedString>*/ errors, Object castValue, 
Object value, Node node, Field field) {
+    protected Collection<LocalizedString> 
validateCastValue(Collection<LocalizedString> errors, Object castValue, Object 
value, Node node, Field field) {
         log.debug("Validating " + value);
         errors = super.validateCastValue(errors, castValue, value,  node, 
field);
         if (value == null) return errors;
@@ -73,7 +73,11 @@
         restriction.setLocal(Boolean.valueOf(l));
     }
 
-    class InternetAddressRestriction extends AbstractRestriction/*<Integer>*/ {
+    public void setRestrictionEnforceStrength(String ef) {
+        restriction.setEnforceStrength(DataTypes.getEnforceStrength(ef));
+    }
+
+    class InternetAddressRestriction extends AbstractRestriction<Integer> {
         protected boolean local = false;
         InternetAddressRestriction(InternetAddressRestriction source) {
             super(source);
@@ -112,10 +116,15 @@
                 if (log.isDebugEnabled()) {
                     log.debug("Found " + Arrays.asList(ia) + " this is valid 
if " + ia.length + " <= " + value);
                 }
-                if (! local) {
-                    for (InternetAddress a : ia) {
-                        if (a.getAddress().indexOf("@") == -1) { // not 
entirely sure that this is absolutely correct
-                            log.debug("Local addresses not allowed");
+                for (InternetAddress a : ia) {
+                    if (!local) {
+                        a.validate();
+                        String ad = a.getAddress();
+                        int lastAt = ad.lastIndexOf('@');
+                        String[] domain = ad.substring(lastAt + 
1).split("\\.");
+                        log.debug("Domain" + Arrays.asList(domain));
+                        if (domain.length < 2) {
+                            log.debug("Too short domain  for " + ad);
                             return false;
                         }
                     }

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

Reply via email to