package com.hypnoticocelot.jaxrs.doclet.parser;
import com.sun.javadoc.AnnotationDesc;
import com.sun.javadoc.Parameter;
import com.sun.javadoc.ProgramElementDoc;
public class AnnotationParser {
private final AnnotationDesc[] annotations;
public AnnotationParser(ProgramElementDoc element) {
annotations = element.annotations();
}
public AnnotationParser(Parameter parameter) {
annotations = parameter.annotations();
}
public String getAnnotationValue(String qualifiedAnnotationType, String key) {
AnnotationDesc annotation = getAnnotation(qualifiedAnnotationType);
if (annotation == null) {
return null;
}
for (AnnotationDesc.ElementValuePair evp : annotation.elementValues()) {
if (evp.element().name().equals(key)) {
return evp.value().value().toString();
}
}
return null;
}
public boolean isAnnotatedBy(String qualifiedAnnotationType) {
return getAnnotation(qualifiedAnnotationType) != null;
}
private AnnotationDesc getAnnotation(String qualifiedAnnotationType) {
AnnotationDesc found = null;
for (AnnotationDesc annotation : annotations) {
try {
if (annotation.annotationType().qualifiedTypeName().equals(qualifiedAnnotationType)) {
found = annotation;
break;
}
} catch (RuntimeException e) {
System.err.println(annotation + " has invalid javadoc: " + e.getClass() + ": " + e.getMessage());
}
}
return found;
}
}