package xapi.source.impl;
import xapi.source.api.IsAnnotation;
import xapi.source.api.IsClass;
import xapi.source.api.IsField;
import xapi.source.api.IsGeneric;
import xapi.source.api.IsMethod;
import xapi.source.api.IsType;
public class IsClassDelegate implements IsClass{
private final IsClass cls;
private final int arrayDepth;
public IsClassDelegate(IsClass cls) {
this(cls, 0);
}
public IsClassDelegate(IsClass cls, int arrayDepth) {
this.cls = cls;
this.arrayDepth = arrayDepth;
}
@Override
public boolean isPrimitive() {
return cls.isPrimitive();
}
@Override
public IsType getEnclosingType() {
return cls.getEnclosingType();
}
@Override
public String getPackage() {
return cls.getPackage();
}
@Override
public String getSimpleName() {
return cls.getSimpleName() + arrayString();
}
private String arrayString() {
StringBuilder b = new StringBuilder();
for (int i = 0; i < arrayDepth; i++)
b.append("[]");
return b.toString();
}
@Override
public String getEnclosedName() {
return cls.getEnclosedName() + arrayString();
}
@Override
public String getQualifiedName() {
return cls.getQualifiedName() + arrayString();
}
@Override
public Iterable<IsAnnotation> getAnnotations() {
return cls.getAnnotations();
}
@Override
public IsAnnotation getAnnotation(String name) {
return cls.getAnnotation(name);
}
@Override
public String toSignature() {
return cls.toSignature()+ arrayString();
}
@Override
public boolean isArray() {
return cls.isArray();
}
@Override
public boolean isPublic() {
return cls.isPublic();
}
@Override
public boolean isPrivate() {
return cls.isPrivate();
}
@Override
public boolean isProtected() {
return cls.isProtected();
}
@Override
public boolean isPackageProtected() {
return cls.isPackageProtected();
}
@Override
public boolean hasModifier(int modifier) {
return cls.hasModifier(modifier);
}
@Override
public Iterable<IsMethod> getDeclaredMethods() {
return cls.getDeclaredMethods();
}
@Override
public int getModifier() {
return cls.getModifier();
}
@Override
public Iterable<IsMethod> getMethods() {
return cls.getMethods();
}
@Override
public IsMethod getMethod(String name, IsType... params) {
return cls.getMethod(name, params);
}
@Override
public IsMethod getMethod(String name, boolean checkErased,
Class<?>... params) {
return cls.getMethod(name, checkErased, params);
}
@Override
public Iterable<IsField> getFields() {
return cls.getFields();
}
@Override
public IsField getField(String name) {
return cls.getField(name);
}
@Override
public Iterable<IsGeneric> getGenerics() {
return cls.getGenerics();
}
@Override
public IsGeneric getGeneric(String name) {
return cls.getGeneric(name);
}
@Override
public boolean hasGenerics() {
return cls.hasGenerics();
}
@Override
public Iterable<IsClass> getInterfaces() {
return cls.getInterfaces();
}
@Override
public boolean hasInterface() {
return cls.hasInterface();
}
@Override
public boolean isAbstract() {
return cls.isAbstract();
}
@Override
public boolean isFinal() {
return cls.isFinal();
}
@Override
public boolean isStatic() {
return cls.isStatic();
}
@Override
public boolean isInterface() {
return cls.isInterface();
}
@Override
public boolean isAnnotation() {
return cls.isAnnotation();
}
@Override
public boolean isEnum() {
return cls.isEnum();
}
@Override
public IsMethod getEnclosingMethod() {
return cls.getEnclosingMethod();
}
@Override
public Iterable<IsClass> getInnerClasses() {
return cls.getInnerClasses();
}
@Override
public Class<?> toClass(ClassLoader loader) throws ClassNotFoundException {
return loader.loadClass(cls.getQualifiedName());
}
@Override
public String toString() {
return cls.toString();
}
@Override
public int hashCode() {
return cls.hashCode();
}
@Override
public boolean equals(Object obj) {
return cls.equals(obj);
}
}