groovy.util

## Class ProxyGenerator

- java.lang.Object
- - groovy.util.ProxyGenerator

-     public class ProxyGenerator
      extends Object

  Classes to generate 'Proxy' objects which implement interfaces, maps of closures and/or extend classes/delegates.
  Author:
    Paul King, Guillaume Laforge

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static ProxyGenerator` | `INSTANCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProxyGenerator()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `getDebug()`
    `boolean` | `getEmptyMethods()`
    `ClassLoader` | `getOverride()`
    `String` | `getSimpleName(Class c)` TODO once we switch to Java 1.5 bt default, use Class#getSimpleName() directly
    `GroovyObject` | `instantiateAggregate(List<Class> interfaces)`
    `GroovyObject` | `instantiateAggregate(Map closureMap, List<Class> interfaces)`
    `GroovyObject` | `instantiateAggregate(Map closureMap, List<Class> interfaces, Class clazz)`
    `GroovyObject` | `instantiateAggregate(Map closureMap, List<Class> interfaces, Class clazz, Object[] constructorArgs)`
    `GroovyObject` | `instantiateAggregateFromBaseClass(Class clazz)`
    `GroovyObject` | `instantiateAggregateFromBaseClass(Class clazz, Object[] constructorArgs)`
    `GroovyObject` | `instantiateAggregateFromBaseClass(Closure cl, Class clazz)`
    `GroovyObject` | `instantiateAggregateFromBaseClass(Map map, Class clazz)`
    `GroovyObject` | `instantiateAggregateFromBaseClass(Map map, Class clazz, Object[] constructorArgs)`
    `GroovyObject` | `instantiateAggregateFromInterface(Class clazz)`
    `GroovyObject` | `instantiateAggregateFromInterface(Map map, Class clazz)`
    `GroovyObject` | `instantiateDelegate(List<Class> interfaces, Object delegate)`
    `GroovyObject` | `instantiateDelegate(Map closureMap, List<Class> interfaces, Object delegate)`
    `GroovyObject` | `instantiateDelegate(Object delegate)`
    `GroovyObject` | `instantiateDelegateWithBaseClass(Map closureMap, List<Class> interfaces, Object delegate)`
    `GroovyObject` | `instantiateDelegateWithBaseClass(Map closureMap, List<Class> interfaces, Object delegate, Class baseClass)`
    `GroovyObject` | `instantiateDelegateWithBaseClass(Map closureMap, List<Class> interfaces, Object delegate, Class baseClass, String name)`
    `void` | `setDebug(boolean debug)` Instructs `ProxyGenerator` to dump generated Groovy source code to standard output during construction.
    `void` | `setEmptyMethods(boolean emptyMethods)` Changes generated methods to have empty implementations.
    `void` | `setOverride(ClassLoader override)`
    `String` | `shortName(String name)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INSTANCE

          public static final ProxyGenerator INSTANCE

  - ### Constructor Detail

    - #### ProxyGenerator

          public ProxyGenerator()

  - ### Method Detail

    - #### getDebug

          public boolean getDebug()

    - #### setDebug

          public void setDebug(boolean debug)

      Instructs `ProxyGenerator` to dump generated Groovy source code to standard output during construction. This is useful for debugging purposes but should be turned off in production.
      Parameters:
        `debug` - true if you want generated source to be printed

    - #### getEmptyMethods

          public boolean getEmptyMethods()

    - #### setEmptyMethods

          public void setEmptyMethods(boolean emptyMethods)

      Changes generated methods to have empty implementations.

      Methods in generated aggregates not supplied in a closures map or base class are given 'default' implementations. The implementation will normally throw an `UnsupportedOperationException` but setting this boolean will leave it empty.
      Parameters:
        `emptyMethods` - true if you want generated methods to be empty

    - #### getOverride

          public ClassLoader getOverride()

    - #### setOverride

          public void setOverride(ClassLoader override)

    - #### instantiateAggregateFromBaseClass

          public GroovyObject instantiateAggregateFromBaseClass(Class clazz)

    - #### instantiateAggregateFromBaseClass

          public GroovyObject instantiateAggregateFromBaseClass(Map map,
                                                       Class clazz)

    - #### instantiateAggregateFromBaseClass

          public GroovyObject instantiateAggregateFromBaseClass(Closure cl,
                                                       Class clazz)

    - #### instantiateAggregateFromBaseClass

          public GroovyObject instantiateAggregateFromBaseClass(Class clazz,
                                                       Object[] constructorArgs)

    - #### instantiateAggregateFromBaseClass

          public GroovyObject instantiateAggregateFromBaseClass(Map map,
                                                       Class clazz,
                                                       Object[] constructorArgs)

    - #### instantiateAggregateFromInterface

          public GroovyObject instantiateAggregateFromInterface(Class clazz)

    - #### instantiateAggregateFromInterface

          public GroovyObject instantiateAggregateFromInterface(Map map,
                                                       Class clazz)

    - #### instantiateAggregate

          public GroovyObject instantiateAggregate(List<Class> interfaces)

    - #### instantiateAggregate

          public GroovyObject instantiateAggregate(Map closureMap,
                                          List<Class> interfaces)

    - #### instantiateAggregate

          public GroovyObject instantiateAggregate(Map closureMap,
                                          List<Class> interfaces,
                                          Class clazz)

    - #### instantiateAggregate

          public GroovyObject instantiateAggregate(Map closureMap,
                                          List<Class> interfaces,
                                          Class clazz,
                                          Object[] constructorArgs)

    - #### instantiateDelegate

          public GroovyObject instantiateDelegate(Object delegate)

    - #### instantiateDelegate

          public GroovyObject instantiateDelegate(List<Class> interfaces,
                                         Object delegate)

    - #### instantiateDelegate

          public GroovyObject instantiateDelegate(Map closureMap,
                                         List<Class> interfaces,
                                         Object delegate)

    - #### instantiateDelegateWithBaseClass

          public GroovyObject instantiateDelegateWithBaseClass(Map closureMap,
                                                      List<Class> interfaces,
                                                      Object delegate)

    - #### instantiateDelegateWithBaseClass

          public GroovyObject instantiateDelegateWithBaseClass(Map closureMap,
                                                      List<Class> interfaces,
                                                      Object delegate,
                                                      Class baseClass)

    - #### instantiateDelegateWithBaseClass

          public GroovyObject instantiateDelegateWithBaseClass(Map closureMap,
                                                      List<Class> interfaces,
                                                      Object delegate,
                                                      Class baseClass,
                                                      String name)

    - #### getSimpleName

          public String getSimpleName(Class c)

      TODO once we switch to Java 1.5 bt default, use Class#getSimpleName() directly
      Parameters:
        `c` - the class of which we want the readable simple name
      Returns:
        the readable simple name

    - #### shortName

          public String shortName(String name)