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