Event Admin

Contents

    Event Publisher Example

    @Component(
        property = {
            "osgi.command.scope=fipro",
            "osgi.command.function=boss" },
        service = BossCommand.class)
    public class BossCommand {
     
        @Reference
        EventAdmin eventAdmin;
     
        @Descriptor("As a mafia boss you want something to be done")
        public void boss(
            @Descriptor("the command that should be executed. "
                + "possible values are: convince, encash, solve")
            String command,
            @Descriptor("who should be 'convinced', "
                + "'asked for protection money' or 'finally solved'")
            String target) {
     
            // create the event properties object
            Map<String, Object> properties = new HashMap<>();
            properties.put(MafiaBossConstants.PROPERTY_KEY_TARGET, target);
            Event event = null;
     
            switch (command) {
                case "convince":
                    event = new Event(MafiaBossConstants.TOPIC_CONVINCE, properties);
                    break;
                case "encash":
                    event = new Event(MafiaBossConstants.TOPIC_ENCASH, properties);
                    break;
                case "solve":
                    event = new Event(MafiaBossConstants.TOPIC_SOLVE, properties);
                    break;
                default:
                    System.out.println("Such a command is not known!");
            }
     
            if (event != null) {
                eventAdmin.postEvent(event);
            }
        }
    }
    

    Event Consumer Example

    @Component(
        property = EventConstants.EVENT_TOPIC
            + "=" + MafiaBossConstants.TOPIC_CONVINCE)
    public class Luigi implements EventHandler {
     
        @Override
        public void handleEvent(Event event) {
            System.out.println("Luigi: "
            + event.getProperty(MafiaBossConstants.PROPERTY_KEY_TARGET)
            + " was 'convinced' to support our family");
        }
    }
    

    Proudly Powered by Zim 0.75.2.

    Template by Etienne Gandrille, based on ZeroFiveEight and using JQuery Toc Plugin.