Search in sources :

Example 16 with EventBus

use of won.bot.framework.eventbot.bus.EventBus in project webofneeds by researchstudio-sat.

the class DuplicateNeedURIFailureBot method initializeEventListeners.

@Override
protected void initializeEventListeners() {
    EventListenerContext ctx = getEventListenerContext();
    EventBus bus = getEventBus();
    // create needs every trigger execution until 2 needs are created
    bus.subscribe(ActEvent.class, new ActionOnEventListener(ctx, new CreateNeedWithFacetsAction(// use a decorator that will cause the same need URI to be used in each create message
    new ConstantNewNeedURIDecorator(ctx, "constantNeedURI" + System.currentTimeMillis()), getBotContextWrapper().getNeedCreateListName()), 2));
    // log error if we can create 2 needs
    bus.subscribe(NeedCreatedEvent.class, new ActionOnceAfterNEventsListener(ctx, 2, new MultipleActions(ctx, new LogErrorAction(ctx, "Should not have been able to create 2 needs with identical URI"), new PublishEventAction(ctx, new TestFailedEvent(this, "Should not have been able to create 2 needs with identical URI")))));
    // log success if we could create 1 need
    bus.subscribe(NeedCreatedEvent.class, new ActionOnFirstNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Good: could create one need"), new PublishEventAction(ctx, new SuccessEvent()))));
    // log success if we got an error for 2nd need
    bus.subscribe(NeedCreationFailedEvent.class, new ActionOnFirstNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Good: need creation failed for 2nd need."), new PublishEventAction(ctx, new SuccessEvent()))));
    // when we have 2 SuccessEvents, we're done. Deacivate the needs and signal we're finished
    bus.subscribe(SuccessEvent.class, new ActionOnceAfterNEventsListener(ctx, 2, new MultipleActions(ctx, new LogAction(ctx, "Test passed."), new PublishEventAction(ctx, new TestPassedEvent(this)), new DeactivateAllNeedsAction(ctx))));
    // when we have a FailureEvent, we're done, too. Deacivate the needs and signal we're finished
    bus.subscribe(TestFailedEvent.class, new ActionOnceAfterNEventsListener(ctx, 1, new MultipleActions(ctx, new LogAction(ctx, "Test failed."), new DeactivateAllNeedsAction(ctx))));
    // wait for the needDeactivated event, then say we're done.
    bus.subscribe(NeedDeactivatedEvent.class, new ActionOnceAfterNEventsListener(ctx, 1, new SignalWorkDoneAction(ctx, this)));
// TODO: fix: bot runs forever even if test fails.
// TODO: fix: need 1 is not deactivated if test fails.
}
Also used : EventListenerContext(won.bot.framework.eventbot.EventListenerContext) ActionOnceAfterNEventsListener(won.bot.framework.eventbot.listener.impl.ActionOnceAfterNEventsListener) CreateNeedWithFacetsAction(won.bot.framework.eventbot.action.impl.needlifecycle.CreateNeedWithFacetsAction) EventBus(won.bot.framework.eventbot.bus.EventBus) SignalWorkDoneAction(won.bot.framework.eventbot.action.impl.lifecycle.SignalWorkDoneAction) TestFailedEvent(won.bot.framework.eventbot.event.impl.test.TestFailedEvent) ActionOnFirstNEventsListener(won.bot.framework.eventbot.listener.impl.ActionOnFirstNEventsListener) TestPassedEvent(won.bot.framework.eventbot.event.impl.test.TestPassedEvent) ConstantNewNeedURIDecorator(won.bot.integrationtest.failsim.ConstantNewNeedURIDecorator) SuccessEvent(won.bot.framework.eventbot.event.impl.test.SuccessEvent) DeactivateAllNeedsAction(won.bot.framework.eventbot.action.impl.needlifecycle.DeactivateAllNeedsAction) ActionOnEventListener(won.bot.framework.eventbot.listener.impl.ActionOnEventListener)

Example 17 with EventBus

use of won.bot.framework.eventbot.bus.EventBus in project webofneeds by researchstudio-sat.

the class DebugBotIncomingMessageToEventMappingAction method handleTextMessageEvent.

private void handleTextMessageEvent(final ConnectionSpecificEvent messageEvent) {
    if (messageEvent instanceof MessageEvent) {
        EventListenerContext ctx = getEventListenerContext();
        EventBus bus = ctx.getEventBus();
        Connection con = ((BaseNeedAndConnectionSpecificEvent) messageEvent).getCon();
        WonMessage msg = ((MessageEvent) messageEvent).getWonMessage();
        String message = extractTextMessageFromWonMessage(msg);
        try {
            if (message == null) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Whatever you sent me there, it was not a normal text message. I'm expecting a <message> won:hasTextMessage \"Some text\" triple in that message.");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
            } else if (PATTERN_USAGE.matcher(message).matches()) {
                bus.publish(new UsageDebugCommandEvent(con));
            } else if (PATTERN_HINT.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I'll create a new need and make it send a hint to you.");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                bus.publish(new HintDebugCommandEvent(con));
            } else if (PATTERN_CONNECT.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I'll create a new need and make it send a connect to you.");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                bus.publish(new ConnectDebugCommandEvent(con));
            } else if (PATTERN_CLOSE.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I'll close this connection");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                bus.publish(new CloseCommandEvent(con));
            } else if (PATTERN_DEACTIVATE.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I'll deactivate this need. This will close the connection we are currently talking on.");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                bus.publish(new DeactivateNeedCommandEvent(con.getNeedURI()));
            } else if (PATTERN_CHATTY_ON.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I'll send you messages spontaneously from time to time.");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                bus.publish(new SetChattinessDebugCommandEvent(con, true));
            } else if (PATTERN_CHATTY_OFF.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, from now on I will be quiet and only respond to your messages.");
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                bus.publish(new SetChattinessDebugCommandEvent(con, false));
            } else if (PATTERN_CACHE_EAGER.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I'll put any message I receive or send into the RDF cache. This slows down message processing in general, but operations that require crawling connection data will be faster.");
                bus.publish(new SetCacheEagernessCommandEvent(true));
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
            } else if (PATTERN_CACHE_LAZY.matcher(message).matches()) {
                Model messageModel = WonRdfUtils.MessageUtils.textMessage("Ok, I won't put messages I receive or send into the RDF cache. This speeds up message processing in general, but operations that require crawling connection data will be slowed down.");
                bus.publish(new SetCacheEagernessCommandEvent(false));
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
            } else if (PATTERN_SEND_N.matcher(message).matches()) {
                Matcher m = PATTERN_SEND_N.matcher(message);
                m.find();
                String nStr = m.group(1);
                int n = Integer.parseInt(nStr);
                bus.publish(new SendNDebugCommandEvent(con, n));
            } else if (PATTERN_VALIDATE.matcher(message).matches()) {
                validate(ctx, bus, con);
            } else if (PATTERN_RETRACT.matcher(message).matches()) {
                Matcher m = PATTERN_RETRACT.matcher(message);
                m.matches();
                boolean useWrongSender = m.group(3) != null;
                boolean retractProposes = m.group(4) != null;
                retract(ctx, bus, con, useWrongSender, retractProposes);
            } else if (PATTERN_REJECT.matcher(message).matches()) {
                Matcher m = PATTERN_REJECT.matcher(message);
                m.matches();
                boolean useWrongSender = m.group(2) != null;
                reject(ctx, bus, con, useWrongSender);
            } else if (PATTERN_PROPOSE.matcher(message).matches()) {
                Matcher m = PATTERN_PROPOSE.matcher(message);
                m.matches();
                boolean my = m.group(3) != null;
                boolean any = m.group(4) != null;
                int count = m.group(5) == null ? 1 : Integer.parseInt(m.group(5));
                propose(ctx, bus, con, any || !my, any || my, count);
            } else if (PATTERN_ACCEPT.matcher(message).matches()) {
                accept(ctx, bus, con);
            } else if (PATTERN_CANCEL.matcher(message).matches()) {
                cancel(ctx, bus, con);
            } else {
                // default: answer with eliza.
                bus.publish(new MessageToElizaEvent(con, message));
            }
        } catch (Exception e) {
            // error: send an error message
            Model messageModel = WonRdfUtils.MessageUtils.textMessage("Did not understand your command '" + message + "': " + e.getClass().getSimpleName() + ":" + e.getMessage());
            bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
        }
    }
}
Also used : UsageDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.UsageDebugCommandEvent) EventListenerContext(won.bot.framework.eventbot.EventListenerContext) BaseNeedAndConnectionSpecificEvent(won.bot.framework.eventbot.event.BaseNeedAndConnectionSpecificEvent) Matcher(java.util.regex.Matcher) MessageEvent(won.bot.framework.eventbot.event.MessageEvent) Connection(won.protocol.model.Connection) DeactivateNeedCommandEvent(won.bot.framework.eventbot.event.impl.command.deactivate.DeactivateNeedCommandEvent) SendNDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.SendNDebugCommandEvent) EventBus(won.bot.framework.eventbot.bus.EventBus) CloseCommandEvent(won.bot.framework.eventbot.event.impl.command.close.CloseCommandEvent) ConnectDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.ConnectDebugCommandEvent) SetCacheEagernessCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.SetCacheEagernessCommandEvent) HintDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.HintDebugCommandEvent) SetChattinessDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.SetChattinessDebugCommandEvent) WonMessage(won.protocol.message.WonMessage) Model(org.apache.jena.rdf.model.Model) MessageToElizaEvent(won.bot.framework.eventbot.event.impl.debugbot.MessageToElizaEvent) ConnectionMessageCommandEvent(won.bot.framework.eventbot.event.impl.command.connectionmessage.ConnectionMessageCommandEvent)

Example 18 with EventBus

use of won.bot.framework.eventbot.bus.EventBus in project webofneeds by researchstudio-sat.

the class DebugBotIncomingMessageToEventMappingAction method retract.

private void retract(EventListenerContext ctx, EventBus bus, Connection con, boolean useWrongSender, boolean onlyProposes) {
    String whose = useWrongSender ? "your" : "my";
    String which = onlyProposes ? "proposal " : "";
    referToEarlierMessages(ctx, bus, con, "ok, I'll retract " + whose + " latest " + which + "message - but 'll need to crawl the connection data first, please be patient.", state -> {
        URI uri = state.getNthLatestMessage(m -> onlyProposes ? (m.isProposesMessage() || m.isProposesToCancelMessage()) && m.getEffects().stream().anyMatch(e -> e.isProposes()) : true && useWrongSender ? m.getSenderNeedURI().equals(con.getRemoteNeedURI()) : m.getSenderNeedURI().equals(con.getNeedURI()), 0);
        return uri == null ? Collections.EMPTY_LIST : Arrays.asList(uri);
    }, (messageModel, uris) -> WonRdfUtils.MessageUtils.addRetracts(messageModel, uris), (Duration queryDuration, AgreementProtocolState state, URI... uris) -> {
        if (uris == null || uris.length == 0 || uris[0] == null) {
            return "Sorry, I cannot retract any messages - I did not find any.";
        }
        Optional<String> retractedString = state.getTextMessage(uris[0]);
        String finalRetractedString = (retractedString.isPresent()) ? ", which read, '" + retractedString.get() + "'" : ", which had no text message";
        return "Ok, I am hereby retracting " + whose + " message" + finalRetractedString + " (uri: " + uris[0] + ")." + "\n The query for finding that message took " + getDurationString(queryDuration) + " seconds.";
    });
}
Also used : Arrays(java.util.Arrays) Connection(won.protocol.model.Connection) CrawlConnectionDataBehaviour(won.bot.framework.eventbot.behaviour.CrawlConnectionDataBehaviour) WonConversationUtils(won.protocol.util.WonConversationUtils) SetChattinessDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.SetChattinessDebugCommandEvent) EventBus(won.bot.framework.eventbot.bus.EventBus) StringUtils(org.apache.commons.lang3.StringUtils) ConnectionSpecificEvent(won.bot.framework.eventbot.event.ConnectionSpecificEvent) WonMessage(won.protocol.message.WonMessage) Model(org.apache.jena.rdf.model.Model) UsageDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.UsageDebugCommandEvent) Matcher(java.util.regex.Matcher) Duration(java.time.Duration) BaseNeedAndConnectionSpecificEvent(won.bot.framework.eventbot.event.BaseNeedAndConnectionSpecificEvent) URI(java.net.URI) Dataset(org.apache.jena.query.Dataset) EventListenerContext(won.bot.framework.eventbot.EventListenerContext) ConnectDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.ConnectDebugCommandEvent) WonLinkedDataUtils(won.protocol.util.linkeddata.WonLinkedDataUtils) MessageEvent(won.bot.framework.eventbot.event.MessageEvent) DecimalFormat(java.text.DecimalFormat) StopWatch(org.springframework.util.StopWatch) BaseEventBotAction(won.bot.framework.eventbot.action.BaseEventBotAction) HintDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.HintDebugCommandEvent) MessageToElizaEvent(won.bot.framework.eventbot.event.impl.debugbot.MessageToElizaEvent) WonRdfUtils(won.protocol.util.WonRdfUtils) CrawlConnectionCommandSuccessEvent(won.bot.framework.eventbot.event.impl.crawlconnection.CrawlConnectionCommandSuccessEvent) AgreementProtocolState(won.protocol.agreement.AgreementProtocolState) List(java.util.List) Event(won.bot.framework.eventbot.event.Event) ConnectionMessageCommandEvent(won.bot.framework.eventbot.event.impl.command.connectionmessage.ConnectionMessageCommandEvent) SendNDebugCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.SendNDebugCommandEvent) WonConnectionValidator(won.protocol.validation.WonConnectionValidator) Optional(java.util.Optional) CrawlConnectionCommandEvent(won.bot.framework.eventbot.event.impl.crawlconnection.CrawlConnectionCommandEvent) SetCacheEagernessCommandEvent(won.bot.framework.eventbot.event.impl.debugbot.SetCacheEagernessCommandEvent) EventListener(won.bot.framework.eventbot.listener.EventListener) Pattern(java.util.regex.Pattern) Collections(java.util.Collections) DeactivateNeedCommandEvent(won.bot.framework.eventbot.event.impl.command.deactivate.DeactivateNeedCommandEvent) CloseCommandEvent(won.bot.framework.eventbot.event.impl.command.close.CloseCommandEvent) Duration(java.time.Duration) AgreementProtocolState(won.protocol.agreement.AgreementProtocolState) URI(java.net.URI)

Example 19 with EventBus

use of won.bot.framework.eventbot.bus.EventBus in project webofneeds by researchstudio-sat.

the class MailCommandAction method processReferenceMailCommands.

private void processReferenceMailCommands(MimeMessage message, WonURI wonUri) {
    MailBotContextWrapper botContextWrapper = ((MailBotContextWrapper) getEventListenerContext().getBotContextWrapper());
    EventBus bus = getEventListenerContext().getEventBus();
    try {
        if (wonUri == null) {
            throw new NullPointerException("No corresponding wonUri found");
        }
        URI needUri;
        URI remoteNeedUri = null;
        Dataset connectionRDF = null;
        switch(wonUri.getType()) {
            case CONNECTION:
                connectionRDF = getEventListenerContext().getLinkedDataSource().getDataForResource(wonUri.getUri());
                needUri = WonRdfUtils.ConnectionUtils.getLocalNeedURIFromConnection(connectionRDF, wonUri.getUri());
                remoteNeedUri = WonRdfUtils.ConnectionUtils.getRemoteNeedURIFromConnection(connectionRDF, wonUri.getUri());
                break;
            case NEED:
            default:
                needUri = wonUri.getUri();
                break;
        }
        MimeMessage originalMessage = botContextWrapper.getMimeMessageForURI(needUri);
        if (originalMessage == null) {
            throw new NullPointerException("no originalmessage found");
        }
        logger.debug("Validate mailorigin with originalmail:");
        logger.debug("Command Message Sender: " + message.getFrom());
        logger.debug("Original Message Sender: " + originalMessage.getFrom());
        String senderNew = ((InternetAddress) message.getFrom()[0]).getAddress();
        String senderOriginal = ((InternetAddress) originalMessage.getFrom()[0]).getAddress();
        if (!senderNew.equals(senderOriginal)) {
            throw new AccessControlException("Sender of original and command mail are not equal");
        } else {
            logger.debug("Sender of original and command mail are not equal, continue with command processing");
        }
        ActionType actionType = determineAction(getEventListenerContext(), message, wonUri);
        logger.debug("Executing " + actionType + " on uri: " + wonUri.getUri() + " of type " + wonUri.getType());
        Connection con;
        switch(actionType) {
            case CLOSE_CONNECTION:
                con = RdfUtils.findFirst(connectionRDF, x -> new ConnectionModelMapper().fromModel(x));
                bus.publish(new CloseCommandEvent(con));
                break;
            case OPEN_CONNECTION:
                bus.publish(new ConnectCommandEvent(needUri, remoteNeedUri));
                break;
            case IMPLICIT_OPEN_CONNECTION:
                bus.publish(new ConnectCommandEvent(needUri, remoteNeedUri, mailContentExtractor.getTextMessage(message)));
                break;
            case SENDMESSAGE:
                con = RdfUtils.findFirst(connectionRDF, x -> new ConnectionModelMapper().fromModel(x));
                Model messageModel = WonRdfUtils.MessageUtils.textMessage(mailContentExtractor.getTextMessage(message));
                bus.publish(new ConnectionMessageCommandEvent(con, messageModel));
                break;
            case CLOSE_NEED:
                bus.publish(new DeactivateNeedCommandEvent(needUri));
                break;
            case NO_ACTION:
            default:
                // INVALID COMMAND
                logger.error("No command was given or assumed");
                break;
        }
    } catch (AccessControlException ace) {
        logger.error("ACCESS RESTRICTION: sender of original and command mail are not equal, command will be blocked");
    } catch (Exception e) {
        logger.error("no reply mail was set or found: " + e.getMessage());
    }
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) Connection(won.protocol.model.Connection) MailBotContextWrapper(won.bot.framework.bot.context.MailBotContextWrapper) EventBus(won.bot.framework.eventbot.bus.EventBus) MailCommandEvent(won.bot.framework.eventbot.event.impl.mail.MailCommandEvent) MessagingException(javax.mail.MessagingException) Model(org.apache.jena.rdf.model.Model) InternetAddress(javax.mail.internet.InternetAddress) SubscribeUnsubscribeEvent(won.bot.framework.eventbot.event.impl.mail.SubscribeUnsubscribeEvent) WonURI(won.bot.framework.eventbot.action.impl.mail.model.WonURI) DefaultNeedModelWrapper(won.protocol.util.DefaultNeedModelWrapper) URI(java.net.URI) Dataset(org.apache.jena.query.Dataset) EventListenerContext(won.bot.framework.eventbot.EventListenerContext) ConnectionModelMapper(won.protocol.model.ConnectionModelMapper) NeedState(won.protocol.model.NeedState) SubscribeStatus(won.bot.framework.eventbot.action.impl.mail.model.SubscribeStatus) ActionType(won.bot.framework.eventbot.action.impl.mail.model.ActionType) IOException(java.io.IOException) BaseEventBotAction(won.bot.framework.eventbot.action.BaseEventBotAction) MimeMessage(javax.mail.internet.MimeMessage) WonRdfUtils(won.protocol.util.WonRdfUtils) List(java.util.List) Event(won.bot.framework.eventbot.event.Event) ConnectionMessageCommandEvent(won.bot.framework.eventbot.event.impl.command.connectionmessage.ConnectionMessageCommandEvent) RdfUtils(won.protocol.util.RdfUtils) AccessControlException(java.security.AccessControlException) EventListener(won.bot.framework.eventbot.listener.EventListener) DeactivateNeedCommandEvent(won.bot.framework.eventbot.event.impl.command.deactivate.DeactivateNeedCommandEvent) CloseCommandEvent(won.bot.framework.eventbot.event.impl.command.close.CloseCommandEvent) ConnectCommandEvent(won.bot.framework.eventbot.event.impl.command.connect.ConnectCommandEvent) InternetAddress(javax.mail.internet.InternetAddress) ActionType(won.bot.framework.eventbot.action.impl.mail.model.ActionType) MailBotContextWrapper(won.bot.framework.bot.context.MailBotContextWrapper) Dataset(org.apache.jena.query.Dataset) Connection(won.protocol.model.Connection) AccessControlException(java.security.AccessControlException) DeactivateNeedCommandEvent(won.bot.framework.eventbot.event.impl.command.deactivate.DeactivateNeedCommandEvent) EventBus(won.bot.framework.eventbot.bus.EventBus) CloseCommandEvent(won.bot.framework.eventbot.event.impl.command.close.CloseCommandEvent) WonURI(won.bot.framework.eventbot.action.impl.mail.model.WonURI) URI(java.net.URI) MessagingException(javax.mail.MessagingException) IOException(java.io.IOException) AccessControlException(java.security.AccessControlException) MimeMessage(javax.mail.internet.MimeMessage) ConnectCommandEvent(won.bot.framework.eventbot.event.impl.command.connect.ConnectCommandEvent) Model(org.apache.jena.rdf.model.Model) ConnectionModelMapper(won.protocol.model.ConnectionModelMapper) ConnectionMessageCommandEvent(won.bot.framework.eventbot.event.impl.command.connectionmessage.ConnectionMessageCommandEvent)

Example 20 with EventBus

use of won.bot.framework.eventbot.bus.EventBus in project webofneeds by researchstudio-sat.

the class MailParserAction method doRun.

protected void doRun(Event event, EventListener executingListener) throws Exception {
    if (event instanceof MailReceivedEvent) {
        EventBus bus = getEventListenerContext().getEventBus();
        MimeMessage message = ((MailReceivedEvent) event).getMessage();
        String senderMailAddress = MailContentExtractor.getMailSender(message);
        try {
            if (mailContentExtractor.isCreateNeedMail(message)) {
                processCreateNeedMail(message);
            } else if (mailContentExtractor.isCommandMail(message)) {
                logger.debug("received a command mail publishing the MailCommand event");
                bus.publish(new MailCommandEvent(message));
            } else {
                logger.warn("unknown mail from user '{}' with subject '{}', no further processing required", senderMailAddress, message.getSubject());
            }
        } catch (MessagingException me) {
            logger.error("Messaging exception occurred while processing MimeMessage: {}", me);
            logger.warn("mail from user '{}' with subject '{}' could not be processed", senderMailAddress, message.getSubject());
        }
    }
}
Also used : MimeMessage(javax.mail.internet.MimeMessage) MessagingException(javax.mail.MessagingException) EventBus(won.bot.framework.eventbot.bus.EventBus) MailReceivedEvent(won.bot.framework.eventbot.event.impl.mail.MailReceivedEvent) MailCommandEvent(won.bot.framework.eventbot.event.impl.mail.MailCommandEvent)

Aggregations

EventBus (won.bot.framework.eventbot.bus.EventBus)31 EventListenerContext (won.bot.framework.eventbot.EventListenerContext)28 EventListener (won.bot.framework.eventbot.listener.EventListener)19 ActionOnEventListener (won.bot.framework.eventbot.listener.impl.ActionOnEventListener)19 Event (won.bot.framework.eventbot.event.Event)18 BaseEventBotAction (won.bot.framework.eventbot.action.BaseEventBotAction)16 CreateNeedWithFacetsAction (won.bot.framework.eventbot.action.impl.needlifecycle.CreateNeedWithFacetsAction)15 SignalWorkDoneAction (won.bot.framework.eventbot.action.impl.lifecycle.SignalWorkDoneAction)14 ActionOnceAfterNEventsListener (won.bot.framework.eventbot.listener.impl.ActionOnceAfterNEventsListener)14 URI (java.net.URI)12 ActEvent (won.bot.framework.eventbot.event.impl.lifecycle.ActEvent)11 BaseEventListener (won.bot.framework.eventbot.listener.BaseEventListener)11 ConnectFromListToListAction (won.bot.framework.eventbot.action.impl.wonmessage.ConnectFromListToListAction)10 NeedCreatedEvent (won.bot.framework.eventbot.event.impl.needlifecycle.NeedCreatedEvent)10 OpenConnectionAction (won.bot.framework.eventbot.action.impl.wonmessage.OpenConnectionAction)8 DeactivateAllNeedsAction (won.bot.framework.eventbot.action.impl.needlifecycle.DeactivateAllNeedsAction)6 Dataset (org.apache.jena.query.Dataset)5 DeactivateAllNeedsOfListAction (won.bot.framework.eventbot.action.impl.needlifecycle.DeactivateAllNeedsOfListAction)5 CloseConnectionAction (won.bot.framework.eventbot.action.impl.wonmessage.CloseConnectionAction)5 FinishedEventFilter (won.bot.framework.eventbot.filter.impl.FinishedEventFilter)5