package org.fusesource.restygwt.rebind; import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JEnumConstant; import com.google.gwt.core.ext.typeinfo.JField; import com.google.gwt.core.ext.typeinfo.JMethod; import com.google.gwt.core.ext.typeinfo.JType; class DummyJField implements JField { private final JType type; private final String name; private final JMethod getterMethod; private Map<Class<? extends Annotation>, Annotation> annotations = new HashMap<Class<? extends Annotation>, Annotation>(); DummyJField( String name, JType type, JMethod getterMethod){ this.name = name; this.type = type; this.getterMethod = getterMethod; } @SuppressWarnings("unchecked") @Override public <T extends Annotation> T getAnnotation(Class<T> annotationClass) { return (T) annotations.get(annotationClass); } @Override public Annotation[] getAnnotations() { return annotations.values().toArray(new Annotation[0]); } @Override public Annotation[] getDeclaredAnnotations() { return null; } @Override public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) { return annotations.containsKey(annotationClass); } @Override public String[][] getMetaData(String tagName) { return null; } @Override public String[] getMetaDataTags() { return null; } @Override public JClassType getEnclosingType() { return null; } @Override public String getName() { return name; } @Override public JType getType() { return type; } @Override public boolean isDefaultAccess() { return true; } @Override public JEnumConstant isEnumConstant() { return null; } @Override public boolean isFinal() { return false; } @Override public boolean isPrivate() { return false; } @Override public boolean isProtected() { return false; } @Override public boolean isPublic() { return false; } @Override public boolean isStatic() { return false; } @Override public boolean isTransient() { return false; } @Override public boolean isVolatile() { return false; } public <T extends Annotation> void setAnnotation(T annotation) { annotations.put( annotation.annotationType(), annotation ); } public JMethod getGetterMethod() { return getterMethod; } }