Module aeonics.core

Class Step.Action

  • Direct Known Subclasses:
    Queue, Router, Topic
    Enclosing class:
    Step

    public abstract static class Step.Action
    extends Step
    This entity represents an Action taken against data. It is an intermediate step of a data flow.

    There are two recommended ways to create your own action inline (without creating a full class). The first method allows to provide the data processing function and registers automatically the template in the factory and the instance in the registry:

     Action.Type action = new Action() { } // <-- note the '{ }' to create a new anonymous class
         
         .template() // <-- create the template and register it in the factory
         
         // add all your template documentation
         .summary("Does something")
         
         .create() // <-- create an instance of the entity and register it in the registry
         
         // set the processing function
         .processor((message, input, output) -> null); // <-- the process logic
     

    If you need more control over the behavior such as private member variables or multiple methods, then you need to declare a custom entity and register it before calling the template method:

     public static class MyEntity extends Action.Type {
         private int response = 42;
         private Message respond() { return new Message().content().put("foo", response); }
         public Message process(Message message, String input, String output) { return respond(); }
     }
     
     Action.Type action = new Action() { } // <-- note the '{ }' to create a new anonymous class
         
         // register the custom entity before calling the template
         .target(MyEntity.class)
         .creator(MyEntity::new)
         
         .template() // <-- create the template and register it in the factory
         
         // add all your template documentation
         .summary("Does something")
         
         .create(); // <-- create an instance of the entity and register it in the registry
     
    • Constructor Detail

      • Action

        public Action()
    • Method Detail

      • defaultTarget

        protected java.lang.Class<? extends Step.Action.Type> defaultTarget()
        Description copied from class: Item
        Returns the default target entity type. This method should be implemented by subclasses to specify the target entity type.
        Specified by:
        defaultTarget in class Item<Step.Type>
        Returns:
        the default target entity type
      • defaultCreator

        protected java.util.function.Supplier<? extends Step.Action.Type> defaultCreator()
        Description copied from class: Item
        Returns the default target entity creator. This method should be implemented by subclasses to specify the entity creator.
        Specified by:
        defaultCreator in class Item<Step.Type>
        Returns:
        the default target entity creator
      • template

        public Step.Template template()
        Description copied from class: Item
        Returns the template to build the target entity.

        This method should ultimately be used to provide the final entity template. Although, it may also provide a partial template that subclassed may complement.

        Overrides:
        template in class Step
        Returns:
        the matching entity template