/** * Need to be careful because this converts null to an empty array. * For single arguments, new Object[] {arg} should therefore be used. */ public static Object[] asArgumentArray(Object args) { return InvokerHelper.asArray(args); }
public static Object[] asUnwrappedArray(Object arguments) { Object[] args = asArray(arguments); for (int i = 0; i < args.length; i++) { if (args[i] instanceof PojoWrapper) { args[i] = ((PojoWrapper) args[i]).unwrap(); } } return args; } }
public static Object invokeSuperMethod(Object object, String methodName, Object arguments) { if (object == null) { throw new NullPointerException("Cannot invoke method " + methodName + "() on null object"); } Class theClass = object.getClass(); MetaClass metaClass = metaRegistry.getMetaClass(theClass.getSuperclass()); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
static Object invokePojoMethod(Object object, String methodName, Object arguments) { MetaClass metaClass = InvokerHelper.getMetaClass(object); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
public static Object invokeStaticMethod(Class type, String method, Object arguments) { MetaClass metaClass = metaRegistry.getMetaClass(type); return metaClass.invokeStaticMethod(type, method, asArray(arguments)); }
public static Object invokeConstructorOf(Class type, Object arguments) { MetaClass metaClass = metaRegistry.getMetaClass(type); return metaClass.invokeConstructor(asArray(arguments)); }
static Object invokePogoMethod(Object object, String methodName, Object arguments) { GroovyObject groovy = (GroovyObject) object; boolean intercepting = groovy instanceof GroovyInterceptable; try { // if it's a pure interceptable object (even intercepting toString(), clone(), ...) if (intercepting) { return groovy.invokeMethod(methodName, asUnwrappedArray(arguments)); } //else try a statically typed method or a GDK method return groovy.getMetaClass().invokeMethod(object, methodName, asArray(arguments)); } catch (MissingMethodException e) { if (e instanceof MissingMethodExecutionFailed) { throw (MissingMethodException) e.getCause(); } else if (!intercepting && e.getMethod().equals(methodName) && object.getClass() == e.getType()) { // in case there's nothing else, invoke the object's own invokeMethod() return groovy.invokeMethod(methodName, asUnwrappedArray(arguments)); } else { throw e; } } }
/** * Invokes the given method on the object. */ public static Object invokeMethod(Object object, String methodName, Object arguments) { if (object == null) { object = NullObject.getNullObject(); //throw new NullPointerException("Cannot invoke method " + methodName + "() on null object"); } // if the object is a Class, call a static method from that class if (object instanceof Class) { Class theClass = (Class) object; MetaClass metaClass = metaRegistry.getMetaClass(theClass); return metaClass.invokeStaticMethod(object, methodName, asArray(arguments)); } // it's an instance; check if it's a Java one if (!(object instanceof GroovyObject)) { return invokePojoMethod(object, methodName, arguments); } // a groovy instance (including builder, closure, ...) return invokePogoMethod(object, methodName, arguments); }
public static Object invokeSuperMethod(Object object, String methodName, Object arguments) { if (object == null) { throw new NullPointerException("Cannot invoke method " + methodName + "() on null object"); } Class theClass = object.getClass(); MetaClass metaClass = metaRegistry.getMetaClass(theClass.getSuperclass()); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
public static Object[] asUnwrappedArray(Object arguments) { Object[] args = asArray(arguments); for (int i=0; i<args.length; i++) { if (args[i] instanceof PojoWrapper) { args[i] = ((PojoWrapper)args[i]).unwrap(); } } return args; } }
public static Object invokeSuperMethod(Object object, String methodName, Object arguments) { if (object == null) { throw new NullPointerException("Cannot invoke method " + methodName + "() on null object"); } Class theClass = object.getClass(); MetaClass metaClass = metaRegistry.getMetaClass(theClass.getSuperclass()); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
public static Object invokeSuperMethod(Object object, String methodName, Object arguments) { if (object == null) { throw new NullPointerException("Cannot invoke method " + methodName + "() on null object"); } Class theClass = object.getClass(); MetaClass metaClass = metaRegistry.getMetaClass(theClass.getSuperclass()); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
public static Object[] asUnwrappedArray(Object arguments) { Object[] args = asArray(arguments); for (int i=0; i<args.length; i++) { if (args[i] instanceof PojoWrapper) { args[i] = ((PojoWrapper)args[i]).unwrap(); } } return args; } }
public static Object invokeSuperMethod(Object object, String methodName, Object arguments) { if (object == null) { throw new NullPointerException("Cannot invoke method " + methodName + "() on null object"); } Class theClass = object.getClass(); MetaClass metaClass = metaRegistry.getMetaClass(theClass.getSuperclass()); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
public static Object[] asUnwrappedArray(Object arguments) { Object[] args = asArray(arguments); for (int i=0; i<args.length; i++) { if (args[i] instanceof PojoWrapper) { args[i] = ((PojoWrapper)args[i]).unwrap(); } } return args; } }
@Override protected Object doCall(Object arguments) { return doCall(asArray(arguments)); } }
static Object invokePojoMethod(Object object, String methodName, Object arguments) { MetaClass metaClass = InvokerHelper.getMetaClass(object); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
static Object invokePojoMethod(Object object, String methodName, Object arguments) { MetaClass metaClass = InvokerHelper.getMetaClass(object); return metaClass.invokeMethod(object, methodName, asArray(arguments)); }
public static Object invokeStaticMethod(Class type, String method, Object arguments) { MetaClass metaClass = metaRegistry.getMetaClass(type); return metaClass.invokeStaticMethod(type, method, asArray(arguments)); }
public static Object invokeStaticMethod(Class type, String method, Object arguments) { MetaClass metaClass = metaRegistry.getMetaClass(type); return metaClass.invokeStaticMethod(type, method, asArray(arguments)); }