Class AbstractPluginContext

java.lang.Object
org.processmining.framework.plugin.impl.AbstractPluginContext
All Implemented Interfaces:
GlobalContext, ObjectConstructor, PluginContext
Direct Known Subclasses:
CLIPluginContext, UIPluginContext

public abstract class AbstractPluginContext extends Object implements PluginContext
  • Field Details

    • progress

      protected Progress progress
  • Constructor Details

    • AbstractPluginContext

      public AbstractPluginContext(GlobalContext context, String label)
      Create a new root plugin instance context.
      Parameters:
      context - the global context in which this instance context is used
    • AbstractPluginContext

      protected AbstractPluginContext(AbstractPluginContext context, String label)
  • Method Details

    • getPluginDescriptor

      public Pair<PluginDescriptor,Integer> getPluginDescriptor()
      Description copied from interface: PluginContext
      Return the plugin descriptor and method index of the plugin which is invoked in this context. This descriptor is set by the PluginDescriptor.invoke() method and will not be set yet before PluginManager.invoke() is called.
      Specified by:
      getPluginDescriptor in interface PluginContext
      Returns:
      the descriptor of the plugin which is invoked in this context If the plugin is not set yet, a pair of (null,-1) is returned
    • getGlobalContext

      public GlobalContext getGlobalContext()
    • getPluginLifeCycleEventListeners

      public PluginLifeCycleEventListener.List getPluginLifeCycleEventListeners()
      Description copied from interface: PluginContext
      Returns the list of registered plugin life cycle listeners.
      Specified by:
      getPluginLifeCycleEventListeners in interface PluginContext
      Returns:
      the list of registered plugin life cycle listeners.
    • getProgressEventListeners

      public ProgressEventListener.ListenerList getProgressEventListeners()
      Description copied from interface: PluginContext
      Returns the list of registered progress listeners
      Specified by:
      getProgressEventListeners in interface PluginContext
      Returns:
      the list of registered progress listeners
    • getProgress

      public Progress getProgress()
      Description copied from interface: PluginContext
      Returns the progress object corresponding to this context
      Specified by:
      getProgress in interface PluginContext
      Returns:
      the progress object corresponding to this context
    • getID

      public PluginContextID getID()
      Description copied from interface: PluginContext
      Each PluginContext should carry an ID. This ID is unique within this plugin context's global context.
      Specified by:
      getID in interface PluginContext
      Returns:
      the ID of this context
    • getConnectionManager

      public ConnectionManager getConnectionManager()
      Description copied from interface: GlobalContext
      Returns the connection manager. The connection manager can be used to query for connections which are registered in ProM.
      Specified by:
      getConnectionManager in interface GlobalContext
      Returns:
      the connection manager
    • getLabel

      public String getLabel()
      Description copied from interface: PluginContext
      Returns the label of this context.
      Specified by:
      getLabel in interface PluginContext
      Returns:
    • hasPluginDescriptorInPath

      public boolean hasPluginDescriptorInPath(PluginDescriptor plugin, int methodIndex)
      Specified by:
      hasPluginDescriptorInPath in interface PluginContext
    • setPluginDescriptor

      public void setPluginDescriptor(PluginDescriptor descriptor, int methodIndex) throws FieldSetException, RecursiveCallException
      Specified by:
      setPluginDescriptor in interface PluginContext
      Throws:
      FieldSetException
      RecursiveCallException
    • createChildContext

      public PluginContext createChildContext(String label)
      Description copied from interface: PluginContext
      Returns a new plugin context instance, which can be used to invoke other plugins.
      Specified by:
      createChildContext in interface PluginContext
      Returns:
      the new plugin context instance
    • getChildContexts

      public List<PluginContext> getChildContexts()
      Description copied from interface: PluginContext
      Returns a list of all child contexts which have been created with createChildContext().
      Specified by:
      getChildContexts in interface PluginContext
      Returns:
    • getParentContext

      public PluginContext getParentContext()
      Description copied from interface: PluginContext
      Returns the context which created this context or null if it has no parent.
      Specified by:
      getParentContext in interface PluginContext
      Returns:
    • createTypedChildContext

      protected abstract PluginContext createTypedChildContext(String label)
    • getResult

      public PluginExecutionResult getResult()
      This method returns the PluginExecutionResult of the plugin which is invoked in this context. This future result is set by PluginManager.invoke() and will not be available (will be null) until the invoke() method is called.
      Specified by:
      getResult in interface PluginContext
      Returns:
      The PluginExecutionResult that represents the result of this plugin invocation
      Throws:
      FieldNotSetException - If the future is not know to this context
    • getFutureResult

      public ProMFuture<?> getFutureResult(int i)
      Description copied from interface: PluginContext
      This method should only be used by a plugin, in the body of that plugin. That is the only location, where it is guaranteed that each result object in getResults() can safely be cast to a ProMFuture.
      Specified by:
      getFutureResult in interface PluginContext
      Returns:
    • setFuture

      public void setFuture(PluginExecutionResult futureToBe)
      Specified by:
      setFuture in interface PluginContext
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • isDistantChildOf

      public boolean isDistantChildOf(PluginContext context)
      Description copied from interface: PluginContext
      Returns true if this is a distant child of context, i.e. true if getParent.getID().equals(context.getID()) || getParent().isDistantChildOf(context);
      Specified by:
      isDistantChildOf in interface PluginContext
      Returns:
    • log

      public void log(String message, Logger.MessageLevel level)
      The provided String is provided to the context for information. It can for example signal a state change of a plugin. Note that some contexts can completely ignore this message.
      Specified by:
      log in interface PluginContext
      Parameters:
      message - the message to log
      level - the message level
    • log

      public void log(String message)
      Same as calling log(message, MessageLevel.NORMAL);
      Specified by:
      log in interface PluginContext
      Parameters:
      message - The message
    • log

      public void log(Throwable exception)
      The provided Exception is provided to the context. It signals the context about an error in the plugin, that specifically lead to abnormal termination. The plugin signaling the exception is no longer executing!
      Specified by:
      log in interface PluginContext
      Parameters:
      exception - the exception thrown
    • getPluginManager

      public PluginManager getPluginManager()
      Returns the plugin manager. The plugin manager can be used to query for plugins which are registered in ProM.
      Specified by:
      getPluginManager in interface GlobalContext
      Returns:
      the plugin manager
    • getProvidedObjectManager

      public ProvidedObjectManager getProvidedObjectManager()
      Returns the providedObject manager. The providedObject manager can be used to query for providedObjects which are registered in ProM. The manager should be a ProvidedObjectListener on all PluginInstanceContexts created by createRootInstanceContext.
      Specified by:
      getProvidedObjectManager in interface GlobalContext
      Returns:
      the providedObject manager
    • createNewPluginContextID

      public PluginContextID createNewPluginContextID()
      The GlobalContext implementation should create IDs for all PluginContexts instantiated for it.
      Specified by:
      createNewPluginContextID in interface GlobalContext
      Returns:
    • invokePlugin

      public void invokePlugin(PluginDescriptor plugin, int index, Object... objects)
      This method invokes the specified plugin in a context which is a child of the main plugin context maintained by this globalContext;
      Specified by:
      invokePlugin in interface GlobalContext
      Parameters:
      plugin -
      objects - The objects to serve as input. Note that all elements should implement Object, or be a ProMFuture<?>.
      index - The index of the plugin method that should be invoked.
    • invokeBinding

      public void invokeBinding(PluginParameterBinding binding, Object... objects)
      Description copied from interface: GlobalContext
      This method invokes the specified binding in a context which is a child of the main plugin context maintained by this globalContext. No results are provided to the method calling this method and the plugin is executed some time in the future, as decided by the implementing class.
      Specified by:
      invokeBinding in interface GlobalContext
      Parameters:
      binding - The binding that should be invoked by the framework
      objects - The objects to serve as input as accepted by the given binding.
    • getLoggingListeners

      public Logger.ListenerList getLoggingListeners()
      Description copied from interface: PluginContext
      Returns the list of logging listeners registered to this context.
      Specified by:
      getLoggingListeners in interface PluginContext
      Returns:
    • getRootContext

      public PluginContext getRootContext()
      Description copied from interface: PluginContext
      Returns the root plugin context. This is an instance of PluginContext of which all other contexts are distant childs.
      Specified by:
      getRootContext in interface PluginContext
      Returns:
    • deleteChild

      public boolean deleteChild(PluginContext child)
      Description copied from interface: PluginContext
      Delete this child from this context.
      Specified by:
      deleteChild in interface PluginContext
    • addConnection

      public <T extends Connection> T addConnection(T c)
      Description copied from interface: PluginContext
      Registers the given connection in the global context. The implementation is addConnection(this,c);
      Specified by:
      addConnection in interface PluginContext
    • getPluginContextType

      public Class<? extends PluginContext> getPluginContextType()
      Description copied from interface: GlobalContext
      Returns the specific type of the PluginContext. This type is used to instantiate new contexts in which to invoke plugins.
      Specified by:
      getPluginContextType in interface GlobalContext
      Returns:
      the type of PluginContext provided by this global context
    • tryToFindOrConstructAllObjects

      public <T, C extends Connection> Collection<T> tryToFindOrConstructAllObjects(Class<T> type, Class<C> connectionType, String role, Object... input) throws ConnectionCannotBeObtained
      Description copied from interface: ObjectConstructor
      Finds as many objects of the given type as can be found through the connections of the other given type. If no objects can be found, it constructs as many objects of the given type as there are plugins available to the framework to do so. These plugins should be able to execute in a child of the given context and accept, in any order, exactly the input provided. Any other objects returned by the plugin, not being the requested type are added to the provided objects of the framework. Also, listeners are notified where applicable. If no plugings exist, or if these plugins fail, a ConnectionDoesntExistException is thrown.
      Specified by:
      tryToFindOrConstructAllObjects in interface ObjectConstructor
      Type Parameters:
      T - The type of the return object required.
      Parameters:
      type - the type of the return object required.
      connectionType - the type of the connections to use when trying to find the objects.
      role - the assumed role of the object in the connection. Given a connection, the object can be retrieved through the role.
      input - the input on which the plugin should work
      Returns:
      a collection of objects as found or returned by the plugins.
      Throws:
      ConnectionCannotBeObtained
    • tryToFindOrConstructFirstObject

      public <T, C extends Connection> T tryToFindOrConstructFirstObject(Class<T> type, Class<C> connectionType, String role, Object... input) throws ConnectionCannotBeObtained
      Description copied from interface: ObjectConstructor
      Returns the first object of the given type as can be found through the connections of the other given type. If no objects can be found, it constructs as an object of the given type using a plugin available to the framework to do so. This plugins should be able to execute in a child of the given context and accept, in any order, exactly the input provided. Any other objects returned by the plugin, not being the requested type are added to the provided objects of the framework. Also, listeners are notified where applicable. If no plugins exist, or if these plugins fail, a ConnectionDoesntExistException is thrown.
      Specified by:
      tryToFindOrConstructFirstObject in interface ObjectConstructor
      Type Parameters:
      T - The type of the return object required.
      Parameters:
      type - the type of the return object required.
      connectionType - the type of the connections to use when trying to find the objects.
      role - the assumed role of the object in the connection. Given a connection, the object can be retrieved through the role.
      input - the input on which the plugin should work
      Returns:
      a collection of objects as returned by the plugins.
      Throws:
      ConnectionCannotBeObtained
    • tryToFindOrConstructFirstNamedObject

      public <T, C extends Connection> T tryToFindOrConstructFirstNamedObject(Class<T> type, String name, Class<C> connectionType, String role, Object... input) throws ConnectionCannotBeObtained
      Description copied from interface: ObjectConstructor
      Returns the first object of the given type as can be found through the connections of the other given type. If no objects can be found, it constructs as an object of the given type using a plugin available to the framework to do so. This plugins should be able to execute in a child of the given context and accept, in any order, exactly the input provided. Furthermore, the returned object should have the right label assigned to it in the plugin definition. Any other objects returned by the plugin, not being the requested type are added to the provided objects of the framework. Also, listeners are notified where applicable. If no plugins exist, or if these plugins fail, a ConnectionDoesntExistException is thrown.
      Specified by:
      tryToFindOrConstructFirstNamedObject in interface ObjectConstructor
      Type Parameters:
      T - The type of the return object required.
      Parameters:
      type - the type of the return object required.
      name - the name of the plugin to use.
      connectionType - the type of the connections to use when trying to find the objects.
      role - the assumed role of the object in the connection. Given a connection, the object can be retrieved through the role.
      input - the input on which the plugin should work
      Returns:
      a collection of objects as returned by the plugins.
      Throws:
      ConnectionCannotBeObtained
    • clear

      public void clear()
      Specified by:
      clear in interface PluginContext