use of org.codehaus.groovy.runtime.metaclass.NewInstanceMetaMethod in project groovy-core by groovy.
the class NewStaticMetaMethodTest method testInvokeDefaultGroovyMethod.
public void testInvokeDefaultGroovyMethod() throws Exception {
Method method = DefaultGroovyMethods.class.getMethod("plus", new Class[] { String.class, Object.class });
assertTrue("Should have found a method", method != null);
NewInstanceMetaMethod metaMethod = createNewMetaMethod(method);
Object answer = metaMethod.invoke("abc", new Object[] { "123" });
assertEquals("abc123", answer);
System.out.println("Found: " + answer);
}
use of org.codehaus.groovy.runtime.metaclass.NewInstanceMetaMethod in project groovy-core by groovy.
the class MixinInMetaClass method staticMethod.
private static void staticMethod(final MetaClass self, List<MetaMethod> arr, final CachedMethod method) {
CachedClass[] paramTypes = method.getParameterTypes();
if (paramTypes.length == 0)
return;
NewInstanceMetaMethod metaMethod;
if (paramTypes[0].isAssignableFrom(self.getTheClass())) {
if (paramTypes[0].getTheClass() == self.getTheClass())
metaMethod = new NewInstanceMetaMethod(method);
else
metaMethod = new NewInstanceMetaMethod(method) {
public CachedClass getDeclaringClass() {
return ReflectionCache.getCachedClass(self.getTheClass());
}
};
arr.add(metaMethod);
} else {
if (self.getTheClass().isAssignableFrom(paramTypes[0].getTheClass())) {
metaMethod = new NewInstanceMetaMethod(method);
arr.add(metaMethod);
}
}
}
use of org.codehaus.groovy.runtime.metaclass.NewInstanceMetaMethod in project groovy by apache.
the class NewStaticMetaMethodTest method testInvokeDefaultGroovyMethod.
public void testInvokeDefaultGroovyMethod() throws Exception {
Method method = DefaultGroovyMethods.class.getMethod("plus", new Class[] { String.class, Object.class });
assertTrue("Should have found a method", method != null);
NewInstanceMetaMethod metaMethod = createNewMetaMethod(method);
Object answer = metaMethod.invoke("abc", new Object[] { "123" });
assertEquals("abc123", answer);
}
use of org.codehaus.groovy.runtime.metaclass.NewInstanceMetaMethod in project groovy by apache.
the class NewStaticMetaMethodTest method testInvokeMetaMethod.
public void testInvokeMetaMethod() throws Exception {
Method method = getClass().getMethod("dummyMethod", new Class[] { String.class, String.class });
assertTrue("Should have found a method", method != null);
NewInstanceMetaMethod metaMethod = createNewMetaMethod(method);
Object answer = metaMethod.invoke("abc", new Object[] { "xyz" });
assertEquals("def", answer);
assertTrue("Should not appear as static method", !metaMethod.isStatic());
}
use of org.codehaus.groovy.runtime.metaclass.NewInstanceMetaMethod in project groovy by apache.
the class SimpleExtensionModule method createMetaMethods.
private static void createMetaMethods(final Class extensionClass, final List<MetaMethod> metaMethods, final boolean isStatic) {
CachedClass cachedClass = ReflectionCache.getCachedClass(extensionClass);
CachedMethod[] methods = cachedClass.getMethods();
for (CachedMethod method : methods) {
if (method.isStatic() && method.isPublic() && method.getParamsCount() > 0) {
// an extension method is found
metaMethods.add(isStatic ? new NewStaticMetaMethod(method) : new NewInstanceMetaMethod(method));
}
}
}
Aggregations