/** * called by handle */ public static boolean isSameMetaClass(MetaClass mc, Object receiver) { //TODO: remove this method if possible by switchpoint usage return receiver instanceof GroovyObject && mc==((GroovyObject)receiver).getMetaClass(); }
protected MetaClass getDelegatedMetaClass() { return this.wrapped.getMetaClass(); } }
public final CallSite acceptGroovyObjectGetProperty(Object receiver) { if (!(receiver instanceof GroovyObject) || ((GroovyObject)receiver).getMetaClass() != metaClass) return createGroovyObjectGetPropertySite(receiver); else return this; }
private MetaClass lookupObjectMetaClass(Object object) { if (object instanceof GroovyObject) { GroovyObject go = (GroovyObject) object; return go.getMetaClass(); } Class ownerClass = object.getClass(); if (ownerClass == Class.class) ownerClass = (Class) object; MetaClass metaClass = registry.getMetaClass(ownerClass); return metaClass; }
public final CallSite acceptGetProperty(Object receiver) { if (!(receiver instanceof GroovyObject) || ((GroovyObject)receiver).getMetaClass() != metaClass) return createGetPropertySite(receiver); else return this; }
public static MetaClass getMetaClass(Object object) { if (object instanceof GroovyObject) return ((GroovyObject) object).getMetaClass(); else return ((MetaClassRegistryImpl) GroovySystem.getMetaClassRegistry()).getMetaClass(object); }
public final CallSite acceptGetProperty(Object receiver) { if (GroovyCategorySupport.hasCategoryInCurrentThread() || !(receiver instanceof GroovyObject) || ((GroovyObject)receiver).getMetaClass() != metaClass) { return createGetPropertySite(receiver); } else { return this; } }
public final CallSite acceptGroovyObjectGetProperty(Object receiver) { if (GroovyCategorySupport.hasCategoryInCurrentThread() || !(receiver instanceof GroovyObject) || ((GroovyObject)receiver).getMetaClass() != metaClass) { return createGroovyObjectGetPropertySite(receiver); } else { return this; } }
public final CallSite acceptGroovyObjectGetProperty(Object receiver) { if (GroovyCategorySupport.hasCategoryInCurrentThread() || !(receiver instanceof GroovyObject) || ((GroovyObject)receiver).getMetaClass() != metaClass) { return createGroovyObjectGetPropertySite(receiver); } else { return this; } }
public static Object getGroovyObjectField(Class senderClass, GroovyObject receiver, String messageName) throws Throwable { try { return receiver.getMetaClass().getAttribute(receiver, messageName); } catch (GroovyRuntimeException gre) { throw unwrap(gre); } }
public static void setGroovyObjectField(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable { try { receiver.getMetaClass().setAttribute(receiver, messageName, messageArgument); } catch (GroovyRuntimeException gre) { throw unwrap(gre); } }
public static void setGroovyObjectFieldSafe(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable { if (receiver == null) return; try { receiver.getMetaClass().setAttribute(receiver, messageName, messageArgument); } catch (GroovyRuntimeException gre) { throw unwrap(gre); } }
@Override public void customize(GroovyObject goo) { DelegatingMetaClass dmc = new DelegatingMetaClass(goo.getMetaClass()) { @Override public Object invokeMethod(Object arg0, String mName, Object[] arg2) { if (mName.contains("Missing")) { throw new IllegalStateException("Gotcha"); } else { return super.invokeMethod(arg0, mName, arg2); } } }; dmc.initialize(); goo.setMetaClass(dmc); } }
private static CallSite createPogoSite(CallSite callSite, Object receiver, Object[] args) { if (receiver instanceof GroovyInterceptable) return new PogoInterceptableSite(callSite); MetaClass metaClass = ((GroovyObject)receiver).getMetaClass(); if (metaClass instanceof MetaClassImpl) { return ((MetaClassImpl)metaClass).createPogoCallSite(callSite, args); } return new PogoMetaClassSite(callSite, metaClass); }
public final Object callGroovyObjectGetProperty (Object receiver) throws Throwable { if (GroovyCategorySupport.hasCategoryInCurrentThread() || ((GroovyObject) receiver).getMetaClass() != metaClass) { return createGroovyObjectGetPropertySite(receiver).getProperty(receiver); } else { return getProperty(receiver); } }
public final Object callGetProperty (Object receiver) throws Throwable { if (GroovyCategorySupport.hasCategoryInCurrentThread() || !(receiver instanceof GroovyObject) || ((GroovyObject) receiver).getMetaClass() != metaClass) { return createGetPropertySite(receiver).getProperty(receiver); } else { return getProperty(receiver); } }
public static Object getAttribute(Object object, String attribute) { if (object == null) { object = NullObject.getNullObject(); } if (object instanceof Class) { return metaRegistry.getMetaClass((Class) object).getAttribute(object, attribute); } else if (object instanceof GroovyObject) { return ((GroovyObject) object).getMetaClass().getAttribute(object, attribute); } else { return metaRegistry.getMetaClass(object.getClass()).getAttribute(object, attribute); } }
public static void setAttribute(Object object, String attribute, Object newValue) { if (object == null) { object = NullObject.getNullObject(); } if (object instanceof Class) { metaRegistry.getMetaClass((Class) object).setAttribute(object, attribute, newValue); } else if (object instanceof GroovyObject) { ((GroovyObject) object).getMetaClass().setAttribute(object, attribute, newValue); } else { metaRegistry.getMetaClass(object.getClass()).setAttribute(object, attribute, newValue); } }
public final Object callGetProperty (Object receiver) throws Throwable { if (GroovyCategorySupport.hasCategoryInCurrentThread() || !(receiver instanceof GroovyObject) || ((GroovyObject) receiver).getMetaClass() != metaClass) { return createGetPropertySite(receiver).getProperty(receiver); } else { try { return effective.getProperty(receiver); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } }
public final Object callGroovyObjectGetProperty (Object receiver) throws Throwable { if (GroovyCategorySupport.hasCategoryInCurrentThread() || !(receiver instanceof GroovyObject) || ((GroovyObject) receiver).getMetaClass() != metaClass) { return createGetPropertySite(receiver).getProperty(receiver); } else { try { return effective.getProperty(receiver); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } }