Index: MetaClassRegistryImpl.java =================================================================== --- MetaClassRegistryImpl.java (revision 6102) +++ MetaClassRegistryImpl.java (working copy) @@ -49,6 +49,7 @@ import groovy.lang.MetaClass; import groovy.lang.MetaClassRegistry; +import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.security.AccessController; import java.security.PrivilegedAction; @@ -114,6 +115,7 @@ // groovy.runtime.metaclass.java.lang.ObjectMetaClass in the classpath //metaClasses.putStrong(Object.class, GroovySystem.getObjectMetaClass()); + installMetaClassCreationHandle(); } private void registerMethods(final Class theClass, final boolean useInstanceMethods) { @@ -310,4 +312,16 @@ public List getStaticMethods() { return staticMethods; } + + private void installMetaClassCreationHandle() { + try { + final Class customMetaClassHandle = Class.forName("groovy.runtime.metaclass.CustomMetaClassCreationHandle"); + final Constructor customMetaClassHandleConstructor = customMetaClassHandle.getConstructor(new Class[]{}); + this.metaClassCreationHandle = (MetaClassCreationHandle)customMetaClassHandleConstructor.newInstance(new Object[]{}); + } catch (final ClassNotFoundException e) { + this.metaClassCreationHandle = new MetaClassCreationHandle(); + } catch (final Exception e) { + throw new GroovyRuntimeException("Could not instantiate custom Metaclass creation handle: "+ e, e); + } + } }