package org.aksw.sparqlify.core.datatypes;
import java.lang.reflect.Method;
public class InvocableMethod
implements Invocable
{
private Object object;
private Method method;
public InvocableMethod(Method method) {
this(null, method);
}
public InvocableMethod(Object object, Method method) {
this.method = method;
this.object = object;
if(!method.isAccessible()) {
method.setAccessible(true);
}
}
@Override
public Object invoke(Object... args) {
Object result;
try {
result = method.invoke(object, args);
} catch(Exception e) {
throw new RuntimeException(e);
}
return result;
}
public Object getObject() {
return object;
}
public Method getMethod() {
return method;
}
@Override
public String toString() {
return "InvocableMethod [object=" + object + ", method=" + method + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((method == null) ? 0 : method.hashCode());
result = prime * result + ((object == null) ? 0 : object.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
InvocableMethod other = (InvocableMethod) obj;
if (method == null) {
if (other.method != null)
return false;
} else if (!method.equals(other.method))
return false;
if (object == null) {
if (other.object != null)
return false;
} else if (!object.equals(other.object))
return false;
return true;
}
}