org.springframework.scripting.groovy

Class GroovyScriptFactory

  • java.lang.Object
    • org.springframework.scripting.groovy.GroovyScriptFactory
    • Constructor Summary

      Constructors 
      Constructor and Description
      GroovyScriptFactory(java.lang.String scriptSourceLocator)
      Create a new GroovyScriptFactory for the given script source.
      GroovyScriptFactory(java.lang.String scriptSourceLocator, org.codehaus.groovy.control.customizers.CompilationCustomizer... compilationCustomizers)
      Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can customize Groovy's compilation process within the underlying GroovyClassLoader.
      GroovyScriptFactory(java.lang.String scriptSourceLocator, org.codehaus.groovy.control.CompilerConfiguration compilerConfiguration)
      Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.
      GroovyScriptFactory(java.lang.String scriptSourceLocator, GroovyObjectCustomizer groovyObjectCustomizer)
      Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      protected groovy.lang.GroovyClassLoader buildGroovyClassLoader(java.lang.ClassLoader classLoader)
      Build a GroovyClassLoader for the given ClassLoader.
      protected java.lang.Object executeScript(ScriptSource scriptSource, java.lang.Class<?> scriptClass)
      Instantiate the given Groovy script class and run it if necessary.
      groovy.lang.GroovyClassLoader getGroovyClassLoader()
      Return the GroovyClassLoader used by this script factory.
      java.lang.Object getScriptedObject(ScriptSource scriptSource, java.lang.Class<?>... actualInterfaces)
      Loads and parses the Groovy script via the GroovyClassLoader.
      java.lang.Class<?> getScriptedObjectType(ScriptSource scriptSource)
      Determine the type of the scripted Java object.
      java.lang.Class<?>[] getScriptInterfaces()
      Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.
      java.lang.String getScriptSourceLocator()
      Return a locator that points to the source of the script.
      boolean requiresConfigInterface()
      Groovy scripts do not need a config interface, since they expose their setters as public methods.
      boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
      Determine whether a refresh is required (e.g.
      void setBeanClassLoader(java.lang.ClassLoader classLoader)
      Callback that supplies the bean class loader to a bean instance.
      void setBeanFactory(BeanFactory beanFactory)
      Callback that supplies the owning factory to a bean instance.
      java.lang.String toString() 
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • GroovyScriptFactory

        public GroovyScriptFactory(java.lang.String scriptSourceLocator)
        Create a new GroovyScriptFactory for the given script source.

        We don't need to specify script interfaces here, since a Groovy script defines its Java interfaces itself.

        Parameters:
        scriptSourceLocator - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
      • GroovyScriptFactory

        public GroovyScriptFactory(java.lang.String scriptSourceLocator,
                                   @Nullable
                                   GroovyObjectCustomizer groovyObjectCustomizer)
        Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.
        Parameters:
        scriptSourceLocator - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
        groovyObjectCustomizer - a customizer that can set a custom metaclass or make other changes to the GroovyObject created by this factory (may be null)
        See Also:
        GroovyObjectCustomizer.customize(groovy.lang.GroovyObject)
      • GroovyScriptFactory

        public GroovyScriptFactory(java.lang.String scriptSourceLocator,
                                   @Nullable
                                   org.codehaus.groovy.control.CompilerConfiguration compilerConfiguration)
        Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.
        Parameters:
        scriptSourceLocator - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
        compilerConfiguration - a custom compiler configuration to be applied to the GroovyClassLoader (may be null)
        Since:
        4.3.3
        See Also:
        GroovyClassLoader.GroovyClassLoader(ClassLoader, CompilerConfiguration)
      • GroovyScriptFactory

        public GroovyScriptFactory(java.lang.String scriptSourceLocator,
                                   org.codehaus.groovy.control.customizers.CompilationCustomizer... compilationCustomizers)
        Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can customize Groovy's compilation process within the underlying GroovyClassLoader.
        Parameters:
        scriptSourceLocator - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
        compilationCustomizers - one or more customizers to be applied to the GroovyClassLoader compiler configuration
        Since:
        4.3.3
        See Also:
        CompilerConfiguration.addCompilationCustomizers(org.codehaus.groovy.control.customizers.CompilationCustomizer...), ImportCustomizer
    • Method Detail

      • getGroovyClassLoader

        public groovy.lang.GroovyClassLoader getGroovyClassLoader()
        Return the GroovyClassLoader used by this script factory.
      • buildGroovyClassLoader

        protected groovy.lang.GroovyClassLoader buildGroovyClassLoader(@Nullable
                                                                       java.lang.ClassLoader classLoader)
        Build a GroovyClassLoader for the given ClassLoader.
        Parameters:
        classLoader - the ClassLoader to build a GroovyClassLoader for
        Since:
        4.3.3
      • getScriptInterfaces

        @Nullable
        public java.lang.Class<?>[] getScriptInterfaces()
        Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.
        Specified by:
        getScriptInterfaces in interface ScriptFactory
        Returns:
        null always
      • getScriptedObject

        @Nullable
        public java.lang.Object getScriptedObject(ScriptSource scriptSource,
                                                            @Nullable
                                                            java.lang.Class<?>... actualInterfaces)
                                                     throws java.io.IOException,
                                                            ScriptCompilationException
        Loads and parses the Groovy script via the GroovyClassLoader.
        Specified by:
        getScriptedObject in interface ScriptFactory
        Parameters:
        scriptSource - the actual ScriptSource to retrieve the script source text from (never null)
        actualInterfaces - the actual interfaces to expose, including script interfaces as well as a generated config interface (if applicable; may be null)
        Returns:
        the scripted Java object
        Throws:
        java.io.IOException - if script retrieval failed
        ScriptCompilationException - if script compilation failed
        See Also:
        GroovyClassLoader
      • getScriptedObjectType

        @Nullable
        public java.lang.Class<?> getScriptedObjectType(ScriptSource scriptSource)
                                                           throws java.io.IOException,
                                                                  ScriptCompilationException
        Description copied from interface: ScriptFactory
        Determine the type of the scripted Java object.

        Implementations are encouraged to cache script metadata such as a generated script class. Note that this method may be invoked concurrently and must be implemented in a thread-safe fashion.

        Specified by:
        getScriptedObjectType in interface ScriptFactory
        Parameters:
        scriptSource - the actual ScriptSource to retrieve the script source text from (never null)
        Returns:
        the type of the scripted Java object, or null if none could be determined
        Throws:
        java.io.IOException - if script retrieval failed
        ScriptCompilationException - if script compilation failed
      • executeScript

        @Nullable
        protected java.lang.Object executeScript(ScriptSource scriptSource,
                                                           java.lang.Class<?> scriptClass)
                                                    throws ScriptCompilationException
        Instantiate the given Groovy script class and run it if necessary.
        Parameters:
        scriptSource - the source for the underlying script
        scriptClass - the Groovy script class
        Returns:
        the result object (either an instance of the script class or the result of running the script instance)
        Throws:
        ScriptCompilationException - in case of instantiation failure
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object