Interface IEnvironment

All Superinterfaces:
IScriptModule
All Known Implementing Classes:
EnvironmentModule

public interface IEnvironment
extends IScriptModule
  • Field Details

  • Method Details

    • getEnvironment

      static IEnvironment getEnvironment​(IScriptEngine engine)
    • getEnvironment

      static IEnvironment getEnvironment()
    • getScriptEngine

      IScriptEngine getScriptEngine()
    • getModule

      Object getModule​(String name)
    • getModule

      <T,​ U extends Class<T>> T getModule​(U clazz)
    • getModules

      List<Object> getModules()
      Retrieve a list of loaded modules. The returned list is read only.
      Returns:
      list of modules (might be empty)
    • getModuleDefinition

      ModuleDefinition getModuleDefinition​(Object moduleInstance)
      Retrieve a definition for a given module instance.
      Parameters:
      moduleInstance - instance of module to retrieve definition for
      Returns:
      module definition
      Throws:
      IllegalArgumentException - when no definition can be found for moduleInstance
    • print

      void print​(Object text, boolean lineFeed)
      Print to standard output.
      Parameters:
      text - message to write
      lineFeed - true to add a line feed after the text
    • addModuleListener

      void addModuleListener​(IModuleListener listener)
    • removeModuleListener

      void removeModuleListener​(IModuleListener listener)
    • loadModule

      Object loadModule​(String moduleIdentifier, @ScriptParameter(defaultValue="false") boolean useCustomNamespace) throws ExecutionException
      Load a module. Loading a module generally enhances the script environment with new functions and variables. If a module was already loaded before, it gets refreshed and moved to the top of the module stack. When a module is loaded, all its dependencies are loaded too. So loading one module might change the whole module stack.

      When not using a custom namespace all variables and functions are loaded to the global namespace, possibly overriding existing functions. In such cases the Java module instance is returned. When useCustomNamespace is used a dynamic script object is created and returned.In such cases the global namespace is not changed. The namespace behavior is also used for loading dependencies.

      Parameters:
      moduleIdentifier - name of module to load
      useCustomNamespace - set to true if functions and constants should not be stored to the global namespace but to a custom object
      Returns:
      loaded module instance
      Throws:
      ExecutionException - when execution of wrapped module code fails
    • wrap

      Object wrap​(Object toBeWrapped, boolean useCustomNamespace) throws ExecutionException
      Wrap a java instance. Will create accessors in the target language for methods and constants defined by the java instance toBeWrapped. If the instance contains annotations of type WrapToScript only these will be wrapped. If no annotation can be found, all public methods/constants will be wrapped. As some target languages might not support method overloading this might result in some methods not wrapped correctly.
      Parameters:
      toBeWrapped - instance to be wrapped
      useCustomNamespace - set to true if functions and constants should not be stored to the global namespace but to the return value only
      Returns:
      wrapped object instance or java class when put to global namespace
      Throws:
      ExecutionException - when execution of wrapped code fails
    • addModuleCallback

      void addModuleCallback​(IModuleCallbackProvider callbackProvider)
      Register a callback provider for module functions.
      Parameters:
      callbackProvider - callback provider instance
    • registerMethod

      String registerMethod​(Method method)
      Register a method in the environment to allow for callbacks.
      Parameters:
      method - method to be registered
      Returns:
      unique ID identifying the method