Author: michiel
Date: 2010-05-26 10:29:38 +0200 (Wed, 26 May 2010)
New Revision: 42270

Modified:
   
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
   
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
   
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
   
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
   
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
Log:
merged from 1.9 branch

Modified: 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
===================================================================
--- 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
       2010-05-26 08:26:41 UTC (rev 42269)
+++ 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
       2010-05-26 08:29:38 UTC (rev 42270)
@@ -90,7 +90,8 @@
     /**
      * init
      */
-    @Override public boolean init() {
+    @Override
+    public boolean init() {
         super.init ();
 
         String property = getInitParameter("expireTime");
@@ -143,7 +144,8 @@
         return true;
     }
 
-    @Override public void shutdown() {
+    @Override
+    public void shutdown() {
         if (expireHandler != null) {
             try {
                 expireHandler.getClass().getMethod("cancel", 
Boolean.TYPE).invoke(expireHandler, Boolean.TRUE);
@@ -188,8 +190,8 @@
     }
 
     {
-        addFunction(new NodeFunction/*<Void>*/("mail", MAIL_PARAMETERS, 
ReturnType.VOID) {
-                protected Boolean getFunctionValue(Node node, Parameters 
parameters) {
+        addFunction(new NodeFunction<Void>("mail", MAIL_PARAMETERS, 
ReturnType.VOID) {
+                protected Void getFunctionValue(Node node, Parameters 
parameters) {
                     try {
                         sendMail(node, parameters);
                     } catch (javax.mail.MessagingException me) {
@@ -199,7 +201,7 @@
                 }
             }
             );
-        addFunction(new NodeFunction/*<Void>*/("startmail", MAIL_PARAMETERS, 
ReturnType.VOID) {
+        addFunction(new NodeFunction<Void>("startmail", MAIL_PARAMETERS, 
ReturnType.VOID) {
                 protected Void getFunctionValue(final Node node, final 
Parameters parameters) {
                     org.mmbase.util.ThreadPools.jobsExecutor.execute(new 
Runnable() {
                             public void run() {
@@ -219,7 +221,7 @@
 
         // This is a silly function.
         // We could override setStringValue on 'type' itself. Perhaps that 
even already works.
-        addFunction(new NodeFunction/*<Void>*/("settype", MAIL_PARAMETERS, 
ReturnType.VOID) {
+        addFunction(new NodeFunction<Void>("settype", MAIL_PARAMETERS, 
ReturnType.VOID) {
                 protected Void getFunctionValue(final Node node, Parameters 
parameters) {
                     log.debug("We're in startmail - args: " + parameters);
                     setType(node, parameters);

Modified: 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
===================================================================
--- 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
       2010-05-26 08:26:41 UTC (rev 42269)
+++ 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
       2010-05-26 08:29:38 UTC (rev 42270)
@@ -59,6 +59,7 @@
 
         Map<String, String> headers = getHeaders(node);
 
+        boolean mailed = false;
         if (toGroup.size() > 0) {
             // bulk-mailing
             Set<NodeRecipient> toUsers = new 
LinkedHashSet<NodeRecipient>(getTo(node));
@@ -294,15 +295,18 @@
                 mailResult =  EmailBuilder.getSendMail().sendMail(from, 
to.email, body, headers);
             } else {
                 MimeMultipart mmpart = 
MimeMessageGenerator.getMimeMultipart(body, node);
-                if (mmpart == null) throw new NullPointerException();
+                if (mmpart == null) {
+                    throw new NullPointerException();
+                }
                 mailResult =  
EmailBuilder.getSendMail().sendMultiPartMail(from, to.email, headers, mmpart);
             }
         } catch (MessagingException me) {
+            mailResult = false;
             exception = me;
 
         }
         if (! mailResult) {
-            log.warn("Mail to " + to.email + " failed", exception);
+            log.warn("Mail to " + to.email + " failed",  exception);
             if (node.getNodeManager().hasField("mailstatus")) {
                 node.setValue("mailstatus", EmailBuilder.STATE_FAILED);
             }
@@ -316,7 +320,9 @@
                 node.setValue("mailstatus", EmailBuilder.STATE_DELIVERED);
             }
         }
-        if (exception != null) throw exception;
+        if (exception != null) {
+            throw exception;
+        }
 
         return true;
 

Modified: 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
===================================================================
--- 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
   2010-05-26 08:26:41 UTC (rev 42269)
+++ 
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
   2010-05-26 08:29:38 UTC (rev 42270)
@@ -258,14 +258,16 @@
 
             try {
                 MimeMessage msg = constructMessage(from, onlyTo, headers);
-                if (mmpart == null) throw new NullPointerException();
+                if (mmpart == null) {
+                    throw new NullPointerException();
+                }
                 msg.setContent(mmpart);
 
                 Transport.send(msg);
                 EventManager.getInstance().propagateEvent(new 
EmailEvent.Sent(msg));
 
                 emailSent++;
-                log.debug("JMimeSendMail done.");
+                log.debug("JMimeSendMail to " + Arrays.asList(onlyTo) + " 
done.");
                 return true;
             } catch (javax.mail.MessagingException e) {
                 emailFailed++;
@@ -474,8 +476,8 @@
                 MimeMessage msg = constructMessage(from, onlyTo, headers);
                 msg.setText(data, mailEncoding);
                 Transport.send(msg);
+                log.debug("SendMail to " + to + " done.");
                 EventManager.getInstance().propagateEvent(new 
EmailEvent.Sent(msg));
-                log.debug("SendMail done.");
                 return true;
             } else {
                 log.service("not sending mail to " + to + " because it does 
not match " + onlyToPattern);
@@ -665,12 +667,12 @@
                     log.service("JMSendMail sending mail to " + to + " cc:" + 
cc + " bcc:" + bcc + " (node " + n.getNumber() + ")" + " from " + from + " 
(mime-type " + mimeType + ") using " + session);
                 }
                 Transport.send(msg, onlyto);
+                log.debug("JMSendMail to " + onlyto + " done.");
                 EventManager.getInstance().propagateEvent(new 
EmailEvent.Sent(msg));
             } else {
-                log.debug("nothing to do");
+                log.debug("nothing to do for JSMSendMail");
             }
 
-            log.debug("JMSendMail done.");
         } catch (javax.mail.MessagingException e) {
             log.error("JMSendMail failure: " + e.getMessage(), e);
             errors.append("\nMessaging: " + e.getMessage());

Modified: 
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
===================================================================
--- 
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
     2010-05-26 08:26:41 UTC (rev 42269)
+++ 
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
     2010-05-26 08:29:38 UTC (rev 42270)
@@ -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;
                         }
                     }

Modified: 
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
===================================================================
--- 
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
        2010-05-26 08:26:41 UTC (rev 42269)
+++ 
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
        2010-05-26 08:29:38 UTC (rev 42270)
@@ -252,6 +252,19 @@
         if (log.isDebugEnabled()) {
             log.debug("Commit for " + node + " " + emailField + " " + 
node.getChanged());
         }
+        if (onlyForSelf) {
+            try {
+                int myNode = 
node.getCloud().getCloudContext().getAuthentication().getNode(node.getCloud().getUser());
+                log.debug("Comparing " + node.getNumber() + " with " + myNode);
+                if (myNode != node.getNumber()) {
+                    log.debug("Logged in as someone different. Ignoring");
+                    return;
+                }
+            } catch (UnsupportedOperationException uoe) {
+                log.debug(uoe);
+                return;
+            }
+        }
         if ((node.getChanged().contains(emailField) && ! 
node.getChanged().contains(field.getName())) || node.isNew()) {
             String email = node.getStringValue(emailField);
             if ("".equals(email)) {

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to