/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.parser.java.classinfo;
import gw.lang.reflect.IAnnotationInfo;
import gw.lang.reflect.IType;
import gw.lang.reflect.TypeSystem;
import gw.lang.reflect.gs.IGenericTypeVariable;
import gw.lang.reflect.java.IJavaClassInfo;
import gw.lang.reflect.java.IJavaClassMethod;
import gw.lang.reflect.java.IJavaClassType;
import gw.lang.reflect.java.IJavaMethodInfo;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
public class SyntheticJavaMethod implements IJavaClassMethod {
private IJavaClassInfo _enclosingClass;
private IJavaClassInfo _returnClassInfo;
private IJavaClassType _returnType;
private String _name;
private int _modifiers;
private IJavaClassInfo[] _params = new IJavaClassInfo[0];
private IJavaClassInfo[] _exceptions = _params;
public SyntheticJavaMethod(IJavaClassInfo enclosingclass,
IJavaClassInfo returnclassinfo,
IJavaClassType returntype,
String name,
int modifiers,
IJavaClassInfo[] params,
IJavaClassInfo[] exceptions) {
_enclosingClass = enclosingclass;
_returnClassInfo = returnclassinfo;
_returnType = returntype;
_name = name;
_modifiers = modifiers;
_params = params;
_exceptions = exceptions;
}
@Override
public IJavaClassInfo getReturnClassInfo() {
return _returnClassInfo;
}
@Override
public IJavaClassType getGenericReturnType() {
return _returnType;
}
@Override
public String getReturnTypeName() {
return _returnType.getName();
}
@Override
public IType getReturnType() {
return TypeSystem.getByFullName(_returnType.getName());
}
@Override
public IJavaClassType[] getGenericParameterTypes() {
return _params;
}
@Override
public IJavaClassInfo[] getParameterTypes() {
return _params;
}
@Override
public String getName() {
return _name;
}
@Override
public int getModifiers() {
return _modifiers;
}
@Override
public IJavaClassInfo[] getExceptionTypes() {
return _exceptions;
}
@Override
public Object getDefaultValue() {
return null;
}
@Override
public Object invoke(Object ctx, Object[] args) throws InvocationTargetException, IllegalAccessException {
throw new UnsupportedOperationException("Method not implemented");
}
@Override
public IGenericTypeVariable[] getTypeVariables(IJavaMethodInfo javaMethodInfo) {
return new IGenericTypeVariable[0];
}
@Override
public boolean isSynthetic() {
return true;
}
@Override
public boolean isBridge() {
return false;
}
@Override
public int compareTo(IJavaClassMethod o) {
return getName().compareTo(o.getName());
}
@Override
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) {
return false;
}
@Override
public IAnnotationInfo getAnnotation(Class<? extends Annotation> annotationClass) {
return null;
}
@Override
public IAnnotationInfo[] getDeclaredAnnotations() {
return new IAnnotationInfo[0];
}
@Override
public IJavaClassInfo getEnclosingClass() {
return _enclosingClass;
}
}