package xapi.source.impl; import xapi.source.X_Modifier; import xapi.source.api.IsAnnotationValue; import xapi.util.api.ConvertsValue; import xapi.util.converters.ConvertsStringValue; public class ImmutableAnnotationValue implements IsAnnotationValue{ private final Object value; private final String type; private final int modifier; private final ConvertsValue<Object, String> toString; public ImmutableAnnotationValue(String type, Object value, int modifier) { this(type, value, new ConvertsStringValue<Object>(), modifier); } public ImmutableAnnotationValue(String type, Object value, ConvertsValue<Object, String> toString, int modifier) { this.type = type; this.value = value; this.toString = toString; this.modifier = modifier; } @Override public boolean isArray() { return type.contains("[]"); } @Override public boolean isEnum() { return modifier == X_Modifier.ENUM; } @Override public boolean isClass() { return type.contains("java.lang.Class"); } @Override public boolean isAnnotation() { return modifier == X_Modifier.ANNOTATION; } @Override public boolean isString() { return type.contains("java.lang.String"); } @Override public boolean isPrimitive() { return modifier == -1; } @Override public String getType() { return type; } @Override public Object getRawValue() { return value; } @Override public Object loadValue(ClassLoader loader) { if (isArray()) { // } throw new UnsupportedOperationException("loadValue not yet supported"); } @Override public String toString() { return toString.convert(value); } }