public PojoMetaClassSite(CallSite site, MetaClass metaClass) { super(site, metaClass); classInfo = ClassInfo.getClassInfo(metaClass.getTheClass()); version = classInfo.getVersion(); }
protected final boolean checkCall(Object receiver) { return receiver!=null && receiver.getClass() == metaClass.getTheClass() && version == classInfo.getVersion(); // metaClass is still valid } }
public StaticMetaClassSite(CallSite site, MetaClass metaClass) { super(site, metaClass); classInfo = ClassInfo.getClassInfo(metaClass.getTheClass()); version = classInfo.getVersion(); }
public void remove() { ensureNext(); setMetaClass(currentMeta.getTheClass(), currentMeta, null); currentMeta = null; } };
public boolean isGroovyObject() { final Object owner = getOwner(); final MetaClass ownerMetaClass = getOwnerMetaClass(owner); return GroovyObject.class.isAssignableFrom(ownerMetaClass.getTheClass()); }
protected final boolean checkCall(Object receiver, Object arg1) { return receiver == metaClass.getTheClass() // meta class match receiver && ((MetaClassImpl)metaClass).getVersion() == version // metaClass still be valid && MetaClassHelper.sameClasses(params, arg1); }
protected final boolean checkCall(Object receiver, Object[] args) { return receiver == metaClass.getTheClass() // meta class match receiver && ((MetaClassImpl)metaClass).getVersion() == version // metaClass still be valid && MetaClassHelper.sameClasses(params, args); }
protected final boolean checkCall(Object receiver) { return receiver == metaClass.getTheClass() // meta class match receiver && ((MetaClassImpl)metaClass).getVersion() == version // metaClass still be valid && MetaClassHelper.sameClasses(params); }
protected static MetaMethod findOwnMethod(Class instanceKlazz, String methodName, Class[] arguments, MetaClass metaClass, MetaMethod method) { // we trick ourselves here if (instanceKlazz == metaClass.getTheClass()) return method; MetaMethod ownMethod = metaClass.pickMethod(methodName, arguments); if (ownMethod != null) { if (method == null) method = ownMethod; else method = mostSpecific(method, ownMethod, instanceKlazz); } return method; }
protected final boolean checkCall(Object receiver, Object arg1, Object arg2) { return receiver == metaClass.getTheClass() // meta class match receiver && ((MetaClassImpl)metaClass).getVersion() == version // metaClass still be valid && MetaClassHelper.sameClasses(params, arg1, arg2); }
protected final boolean checkCall(Object receiver, Object arg1, Object arg2, Object arg3) { return receiver == metaClass.getTheClass() // meta class match receiver && ((MetaClassImpl)metaClass).getVersion() == version // metaClass still be valid && MetaClassHelper.sameClasses(params, arg1, arg2, arg3); }
public Class getTheClass() { final Object owner = getOwner(); final MetaClass ownerMetaClass = getOwnerMetaClass(owner); return ownerMetaClass.getTheClass(); }
protected final boolean checkCall(Object receiver, Object[] args) { return receiver == metaClass.getTheClass() // meta class match receiver && ((MetaClassImpl) metaClass).getVersion() == version // metaClass still be valid && MetaClassHelper.sameClasses(params, args); }
protected final boolean checkCall(Object receiver) { try { return receiver.getClass() == metaClass.getTheClass() // meta class match receiver && checkPojoMetaClass() && MetaClassHelper.sameClasses(params); } catch (NullPointerException e) { if (receiver == null) return checkCall(NullObject.getNullObject()); throw e; } }
protected final boolean checkCall(Object receiver, Object arg1, Object arg2, Object arg3, Object arg4) { try { return receiver.getClass() == metaClass.getTheClass() // meta class match receiver && checkPojoMetaClass() && MetaClassHelper.sameClasses(params, arg1, arg2, arg3, arg4); } catch (NullPointerException e) { if (receiver == null) return checkCall(NullObject.getNullObject(), arg1, arg2, arg3, arg4); throw e; } }
public Object callConstructor(Object receiver, Object[] args) throws Throwable { if (receiver == metaClass.getTheClass()) { try { return metaClass.invokeConstructor(args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } else { return CallSiteArray.defaultCallConstructor(this, (Class)receiver, args); } } }
protected final boolean checkCall(Object receiver, Object arg1) { try { return receiver.getClass() == metaClass.getTheClass() // meta class match receiver && checkPojoMetaClass() && MetaClassHelper.sameClasses(params, arg1); } catch (NullPointerException e) { if (receiver == null) return checkCall(NullObject.getNullObject(), arg1); throw e; } }
protected final boolean checkCall(Object receiver, Object[] args) { try { return receiver.getClass() == metaClass.getTheClass() // meta class match receiver && checkPojoMetaClass() && MetaClassHelper.sameClasses(params, args); } catch (NullPointerException e) { if (receiver == null) return checkCall(NullObject.getNullObject(), args); throw e; } }
public final Object invoke(Object receiver, Object [] args) throws Throwable{ MetaClassHelper.unwrap(args); try { return metaMethod.doMethodInvoke(metaClass.getTheClass(), args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } }
public Object callConstructor(Object receiver, Object[] args) throws Throwable { try { if (receiver == metaClass.getTheClass() && version == classInfo.getVersion()) // metaClass still be valid return metaClass.invokeConstructor(args); else return CallSiteArray.defaultCallConstructor(this, receiver, args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } }