groovy.util
Class ProxyGenerator
java.lang.Object
groovy.util.ProxyGenerator
public class ProxyGenerator
- extends java.lang.Object
Classes to generate 'Proxy' objects which implement interfaces,
maps of closures and/or extend classes/delegates.
- Author:
- Paul King, Guillaume Laforge
Method Summary |
private void |
addMapOrDummyCall(java.util.Map map,
java.lang.StringBuffer buffer,
java.lang.reflect.Method method)
|
private void |
addMethodBody(java.lang.StringBuffer buffer,
java.lang.String method,
java.lang.Class[] parameterTypes)
|
private java.lang.Class[] |
addMethodPrefix(java.lang.StringBuffer buffer,
java.lang.reflect.Method method)
|
private void |
addMethodSuffix(java.lang.StringBuffer buffer)
|
private void |
addNewMapCall(java.lang.StringBuffer buffer,
java.lang.String methodName)
|
private void |
addOverridingMapCall(java.lang.StringBuffer buffer,
java.lang.reflect.Method method,
boolean closureIndicator)
|
private void |
addUnsupportedBody(java.lang.StringBuffer buffer)
|
private void |
addWrappedCall(java.lang.StringBuffer buffer,
java.lang.reflect.Method method,
java.util.Map map)
|
private void |
addWrappedMethodBody(java.lang.StringBuffer buffer,
java.lang.reflect.Method method,
java.lang.Class[] parameterTypes)
|
private boolean |
containsEquivalentMethod(java.util.Collection<java.lang.reflect.Method> publicAndProtectedMethods,
java.lang.reflect.Method candidate)
|
boolean |
getDebug()
|
boolean |
getEmptyMethods()
|
private java.util.List<java.lang.reflect.Method> |
getInheritedMethods(java.lang.Class baseClass,
java.util.List<java.lang.reflect.Method> methods)
|
java.lang.ClassLoader |
getOverride()
|
java.lang.String |
getSimpleName(java.lang.Class c)
TODO once we switch to Java 1.5 bt default, use Class#getSimpleName() directly |
private boolean |
hasMatchingParameterTypes(java.lang.reflect.Method method,
java.lang.reflect.Method candidate)
|
java.lang.Object |
instantiateAggregate(java.util.List interfaces)
|
java.lang.Object |
instantiateAggregate(java.util.Map closureMap,
java.util.List interfaces)
|
java.lang.Object |
instantiateAggregate(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Class clazz)
|
java.lang.Object |
instantiateAggregate(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Class clazz,
java.lang.Object[] constructorArgs)
|
java.lang.Object |
instantiateAggregateFromBaseClass(java.lang.Class clazz)
|
java.lang.Object |
instantiateAggregateFromBaseClass(Closure cl,
java.lang.Class clazz)
|
java.lang.Object |
instantiateAggregateFromBaseClass(java.util.Map map,
java.lang.Class clazz)
|
java.lang.Object |
instantiateAggregateFromBaseClass(java.util.Map map,
java.lang.Class clazz,
java.lang.Object[] constructorArgs)
|
java.lang.Object |
instantiateAggregateFromInterface(java.lang.Class clazz)
|
java.lang.Object |
instantiateAggregateFromInterface(java.util.Map map,
java.lang.Class clazz)
|
java.lang.Object |
instantiateDelegate(java.util.List interfaces,
java.lang.Object delegate)
|
java.lang.Object |
instantiateDelegate(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate)
|
java.lang.Object |
instantiateDelegate(java.lang.Object delegate)
|
java.lang.Object |
instantiateDelegateWithBaseClass(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate)
|
java.lang.Object |
instantiateDelegateWithBaseClass(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate,
java.lang.Class baseClass)
|
java.lang.Object |
instantiateDelegateWithBaseClass(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate,
java.lang.Class baseClass,
java.lang.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. |
private static void |
setMetaClass(MetaClass metaClass)
|
void |
setOverride(java.lang.ClassLoader override)
|
java.lang.String |
shortName(java.lang.String name)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
INSTANCE
public static final ProxyGenerator INSTANCE
override
private java.lang.ClassLoader override
debug
private boolean debug
emptyMethods
private boolean emptyMethods
objectMethods
private java.util.List objectMethods
groovyObjectMethods
private java.util.List groovyObjectMethods
ProxyGenerator
public ProxyGenerator()
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 java.lang.ClassLoader getOverride()
setOverride
public void setOverride(java.lang.ClassLoader override)
instantiateAggregateFromBaseClass
public java.lang.Object instantiateAggregateFromBaseClass(java.lang.Class clazz)
instantiateAggregateFromBaseClass
public java.lang.Object instantiateAggregateFromBaseClass(java.util.Map map,
java.lang.Class clazz)
instantiateAggregateFromBaseClass
public java.lang.Object instantiateAggregateFromBaseClass(Closure cl,
java.lang.Class clazz)
instantiateAggregateFromBaseClass
public java.lang.Object instantiateAggregateFromBaseClass(java.util.Map map,
java.lang.Class clazz,
java.lang.Object[] constructorArgs)
instantiateAggregateFromInterface
public java.lang.Object instantiateAggregateFromInterface(java.lang.Class clazz)
instantiateAggregateFromInterface
public java.lang.Object instantiateAggregateFromInterface(java.util.Map map,
java.lang.Class clazz)
instantiateAggregate
public java.lang.Object instantiateAggregate(java.util.List interfaces)
instantiateAggregate
public java.lang.Object instantiateAggregate(java.util.Map closureMap,
java.util.List interfaces)
instantiateAggregate
public java.lang.Object instantiateAggregate(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Class clazz)
instantiateAggregate
public java.lang.Object instantiateAggregate(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Class clazz,
java.lang.Object[] constructorArgs)
instantiateDelegate
public java.lang.Object instantiateDelegate(java.lang.Object delegate)
instantiateDelegate
public java.lang.Object instantiateDelegate(java.util.List interfaces,
java.lang.Object delegate)
instantiateDelegate
public java.lang.Object instantiateDelegate(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate)
instantiateDelegateWithBaseClass
public java.lang.Object instantiateDelegateWithBaseClass(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate)
instantiateDelegateWithBaseClass
public java.lang.Object instantiateDelegateWithBaseClass(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate,
java.lang.Class baseClass)
instantiateDelegateWithBaseClass
public java.lang.Object instantiateDelegateWithBaseClass(java.util.Map closureMap,
java.util.List interfaces,
java.lang.Object delegate,
java.lang.Class baseClass,
java.lang.String name)
addWrappedCall
private void addWrappedCall(java.lang.StringBuffer buffer,
java.lang.reflect.Method method,
java.util.Map map)
containsEquivalentMethod
private boolean containsEquivalentMethod(java.util.Collection<java.lang.reflect.Method> publicAndProtectedMethods,
java.lang.reflect.Method candidate)
hasMatchingParameterTypes
private boolean hasMatchingParameterTypes(java.lang.reflect.Method method,
java.lang.reflect.Method candidate)
getInheritedMethods
private java.util.List<java.lang.reflect.Method> getInheritedMethods(java.lang.Class baseClass,
java.util.List<java.lang.reflect.Method> methods)
addNewMapCall
private void addNewMapCall(java.lang.StringBuffer buffer,
java.lang.String methodName)
addOverridingMapCall
private void addOverridingMapCall(java.lang.StringBuffer buffer,
java.lang.reflect.Method method,
boolean closureIndicator)
addMapOrDummyCall
private void addMapOrDummyCall(java.util.Map map,
java.lang.StringBuffer buffer,
java.lang.reflect.Method method)
addUnsupportedBody
private void addUnsupportedBody(java.lang.StringBuffer buffer)
addMethodPrefix
private java.lang.Class[] addMethodPrefix(java.lang.StringBuffer buffer,
java.lang.reflect.Method method)
addMethodBody
private void addMethodBody(java.lang.StringBuffer buffer,
java.lang.String method,
java.lang.Class[] parameterTypes)
addWrappedMethodBody
private void addWrappedMethodBody(java.lang.StringBuffer buffer,
java.lang.reflect.Method method,
java.lang.Class[] parameterTypes)
addMethodSuffix
private void addMethodSuffix(java.lang.StringBuffer buffer)
getSimpleName
public java.lang.String getSimpleName(java.lang.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 java.lang.String shortName(java.lang.String name)
setMetaClass
private static void setMetaClass(MetaClass metaClass)
Copyright © ${year} The Codehaus. All Rights Reserved.