/** * Sets the meta class for an object, by delegating to the appropriate * {@link DefaultGroovyMethods} helper method. This method was introduced as * a breaking change in 2.0 to solve rare cases of stack overflow. See GROOVY-5285. * * The method is named doSetMetaClass in order to prevent misusages. Do not use * this method directly unless you know what you do. * * @param self the object for which to set the meta class * @param mc the metaclass */ public static void doSetMetaClass(Object self, MetaClass mc) { if (self instanceof GroovyObject) { DefaultGroovyMethods.setMetaClass((GroovyObject)self, mc); } else { DefaultGroovyMethods.setMetaClass(self, mc); } }
metaClass.define(closure); if (self instanceof GroovyObject) { setMetaClass((GroovyObject)self, metaClass); } else { setMetaClass(self, metaClass);
public GroovyObject replaceDelegate() { if (object == null) { if (!(delegate instanceof ExpandoMetaClass)) { delegate = new ExpandoMetaClass(delegate.getTheClass(), true, true); delegate.initialize(); } DefaultGroovyMethods.setMetaClass(delegate.getTheClass(), delegate); } else { if (object != NONE) { final MetaClass metaClass = delegate; delegate = new ExpandoMetaClass(delegate.getTheClass(), false, true); if (metaClass instanceof ExpandoMetaClass) { ExpandoMetaClass emc = (ExpandoMetaClass) metaClass; for (MetaMethod method : emc.getExpandoMethods()) ((ExpandoMetaClass)delegate).registerInstanceMethod(method); } delegate.initialize(); MetaClassHelper.doSetMetaClass(object, delegate); object = NONE; } } return (GroovyObject)delegate; }
public void stopProxy() { DefaultGroovyMethods.setMetaClass(concreteObject, adaptee); }
public void startProxy() { DefaultGroovyMethods.setMetaClass(concreteObject, this); }
public MixedInMetaClass(Object instance, Object owner) { super(GroovySystem.getMetaClassRegistry().getMetaClass(instance.getClass())); this.owner = new WeakReference(owner); DefaultGroovyMethods.setMetaClass (instance, this); }
public MixedInMetaClass(Object instance, Object owner) { super(GroovySystem.getMetaClassRegistry().getMetaClass(instance.getClass())); this.owner = new WeakReference(owner); DefaultGroovyMethods.setMetaClass (instance, this); }
public MixedInMetaClass(Object instance, Object owner) { super(GroovySystem.getMetaClassRegistry().getMetaClass(instance.getClass())); this.owner = new WeakReference(owner); DefaultGroovyMethods.setMetaClass (instance, this); }
private void proxyPerInstanceMetaClasses(List<Reference> refs) { for (Reference ref : refs) { Object obj = ref.get(); if (obj != null) { Class theClass = obj.getClass(); if (obj instanceof GroovyObject) { GroovyObject gobj = (GroovyObject) obj; MetaClass metaClass = gobj.getMetaClass(); MetaClass proxyMetaClass = proxyMetaClass(theClass, metaClass); DefaultGroovyMethods.setMetaClass(gobj, proxyMetaClass); } else { MetaClass metaClass = DefaultGroovyMethods.getMetaClass(obj); MetaClass proxyMetaClass = proxyMetaClass(theClass, metaClass); MetaClassHelper.doSetMetaClass(obj, proxyMetaClass); } } } }
public GroovyObject replaceDelegate() { if (object == null) { if (!(delegate instanceof ExpandoMetaClass)) { delegate = new ExpandoMetaClass(delegate.getTheClass(), true, true); delegate.initialize(); } DefaultGroovyMethods.setMetaClass(delegate.getTheClass(), delegate); } else { if (object != NONE) { final MetaClass metaClass = delegate; delegate = new ExpandoMetaClass(delegate.getTheClass(), false, true); if (metaClass instanceof ExpandoMetaClass) { ExpandoMetaClass emc = (ExpandoMetaClass) metaClass; for (MetaMethod method : emc.getExpandoMethods()) ((ExpandoMetaClass)delegate).registerInstanceMethod(method); } delegate.initialize(); DefaultGroovyMethods.setMetaClass(object, delegate); object = NONE; } } return (GroovyObject)delegate; }
public GroovyObject replaceDelegate() { if (object == null) { if (!(delegate instanceof ExpandoMetaClass)) { delegate = new ExpandoMetaClass(delegate.getTheClass(), true, true); delegate.initialize(); } DefaultGroovyMethods.setMetaClass(delegate.getTheClass(), delegate); } else { if (object != NONE) { final MetaClass metaClass = delegate; delegate = new ExpandoMetaClass(delegate.getTheClass(), false, true); if (metaClass instanceof ExpandoMetaClass) { ExpandoMetaClass emc = (ExpandoMetaClass) metaClass; for (MetaMethod method : emc.getExpandoMethods()) ((ExpandoMetaClass)delegate).registerInstanceMethod(method); } delegate.initialize(); DefaultGroovyMethods.setMetaClass(object, delegate); object = NONE; } } return (GroovyObject)delegate; }
public GroovyObject replaceDelegate() { if (object == null) { if (!(delegate instanceof ExpandoMetaClass)) { delegate = new ExpandoMetaClass(delegate.getTheClass(), true, true); delegate.initialize(); } DefaultGroovyMethods.setMetaClass(delegate.getTheClass(), delegate); } else { if (object != NONE) { final MetaClass metaClass = delegate; delegate = new ExpandoMetaClass(delegate.getTheClass(), false, true); if (metaClass instanceof ExpandoMetaClass) { ExpandoMetaClass emc = (ExpandoMetaClass) metaClass; for (MetaMethod method : emc.getExpandoMethods()) ((ExpandoMetaClass)delegate).registerInstanceMethod(method); } delegate.initialize(); DefaultGroovyMethods.setMetaClass(object, delegate); object = NONE; } } return (GroovyObject)delegate; }
metaClass.initialize(); metaClass.define(closure); setMetaClass(self, metaClass); return metaClass;
metaClass.initialize(); metaClass.define(closure); setMetaClass(self, metaClass); return metaClass;
metaClass.initialize(); metaClass.define(closure); setMetaClass(self, metaClass); return metaClass;