details:   https://code.openbravo.com/erp/devel/pi/rev/1d87a548b2e0
changeset: 35048:1d87a548b2e0
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Tue Nov 20 16:16:56 2018 +0100
summary:   related to issue 39649: minor code improvements

  - Make anonymous inner Runnable a lambda
  - Use stream API to retrieve the valid e-mail generators

diffstat:

 src/org/openbravo/email/EmailEventManager.java |  66 +++++++++----------------
 1 files changed, 24 insertions(+), 42 deletions(-)

diffs (104 lines):

diff -r cde51d307460 -r 1d87a548b2e0 
src/org/openbravo/email/EmailEventManager.java
--- a/src/org/openbravo/email/EmailEventManager.java    Tue Nov 20 15:46:26 
2018 +0100
+++ b/src/org/openbravo/email/EmailEventManager.java    Tue Nov 20 16:16:56 
2018 +0100
@@ -19,11 +19,11 @@
 
 package org.openbravo.email;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
+import java.util.Spliterators;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.inject.Any;
@@ -87,7 +87,7 @@
 
     try {
       boolean sent = false;
-      for (EmailEventContentGenerator gen : getEmailGenerators(event, data)) {
+      for (EmailEventContentGenerator gen : getValidEmailGenerators(event, 
data)) {
         sent = true;
         log.debug("sending email for event " + event + " with generator " + 
gen);
 
@@ -100,20 +100,16 @@
             .build();
 
         if (gen.isAsynchronous()) {
-          Thread thread = new Thread(new Runnable() {
-            @Override
-            public void run() {
-              try {
-                EmailManager.sendEmail(mailConfig, email);
-              } catch (Exception e) {
-                log.error(e.getMessage(), e);
-              }
-            }
-          });
+          Thread thread = new Thread(() -> sendEmailOrCatchError(mailConfig, 
email));
           thread.start();
         } else {
           EmailManager.sendEmail(mailConfig, email);
         }
+
+        if (gen.preventsOthersExecution()) {
+          // prevent following execution, stop chain
+          break;
+        }
       }
       if (!sent) {
         log.warn("No email generator found for event " + event);
@@ -125,35 +121,21 @@
     }
   }
 
-  private List<EmailEventContentGenerator> getEmailGenerators(String event, 
Object data) {
-    // find valid events
-    List<EmailEventContentGenerator> validGenerators = new 
ArrayList<EmailEventContentGenerator>();
-    Iterator<EmailEventContentGenerator> i = emailGenerators.iterator();
-    while (i.hasNext()) {
-      EmailEventContentGenerator gen = i.next();
-      if (gen.isValidEvent(event, data)) {
-        validGenerators.add(gen);
-      }
+  private void sendEmailOrCatchError(EmailServerConfiguration config, 
EmailInfo email) {
+    try {
+      EmailManager.sendEmail(config, email);
+    } catch (Exception e) {
+      log.error(e.getMessage(), e);
     }
-
-    // sort them by priority
-    Collections.sort(validGenerators, new 
Comparator<EmailEventContentGenerator>() {
-      @Override
-      public int compare(EmailEventContentGenerator o1, 
EmailEventContentGenerator o2) {
-        return o1.getPriority() - o2.getPriority();
-      }
-    });
-
-    // if some of them prevents following execution, stop chain
-    List<EmailEventContentGenerator> generators = new 
ArrayList<EmailEventContentGenerator>();
-    for (EmailEventContentGenerator gen : validGenerators) {
-      generators.add(gen);
-      if (gen.preventsOthersExecution()) {
-        break;
-      }
-    }
-
-    return generators;
   }
 
+  private List<EmailEventContentGenerator> getValidEmailGenerators(String 
event, Object data) {
+    return StreamSupport
+        
.stream(Spliterators.spliteratorUnknownSize(emailGenerators.iterator(), 0), 
false)
+        // find valid events
+        .filter(gen -> gen.isValidEvent(event, data))
+        // sort them by priority
+        .sorted(Comparator.comparing(EmailEventContentGenerator::getPriority))
+        .collect(Collectors.toList());
+  }
 }


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to