if (listeners.isEmpty()) {
log.warn("No listeners available for executing remote commands");
return;
}
final Message[] msgs = event.getMessages();
IMAPMessage msg;
for (final Message rmsg : msgs) {
if (!(rmsg instanceof IMAPMessage)) {
log.info(String.format("Expected %1$s, but received %2$s subject: %3$s",
IMAPMessage.class.getSimpleName(), rmsg.getClass().getSimpleName(), rmsg.getSubject()));
continue;
}
msg = (IMAPMessage) rmsg;
final Address[] froms = msg.getFrom();
if (hasCommandPermission(froms)) {
final StringBuffer errorMessages = new StringBuffer();
final List<Command> commands = getValidCommands(msg, errorMessages);
final Set<String> destinations = getValidCommandDestinations(msg, errorMessages);
if (errorMessages.length() > 0) {
if (log.isInfoEnabled()) {
log.info(String.format("Invalid command(s) received from: %1$s", Arrays.toString(froms)));
}
sendReply(msg, errorMessages.toString());
return;
}
if (log.isInfoEnabled()) {
log.info(String.format("Received raw commands: %1$s from: %2$s",
Arrays.toString(commands.toArray()), Arrays.toString(froms)));
}
final Thread newThread = new Thread(getThreadName(msg.getMessageID())) {
@Override
public void run() {
final EmailEvent event = new EmailEvent(EmailEvent.Type.EXECUTE_COMMAND, commands,
froms, destinations);
for (final IEmailListener listener : listeners) {