package com.github.javaparser.symbolsolver.javaparsermodel.declarations; import com.github.javaparser.ast.body.AnnotationDeclaration; import com.github.javaparser.ast.body.AnnotationMemberDeclaration; import com.github.javaparser.resolution.declarations.*; import com.github.javaparser.resolution.types.ResolvedReferenceType; import com.github.javaparser.resolution.types.ResolvedType; import com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration; import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import static com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode; /** * @author Federico Tomassetti */ public class JavaParserAnnotationDeclaration extends AbstractTypeDeclaration implements ResolvedAnnotationDeclaration { private com.github.javaparser.ast.body.AnnotationDeclaration wrappedNode; private TypeSolver typeSolver; public JavaParserAnnotationDeclaration(AnnotationDeclaration wrappedNode, TypeSolver typeSolver) { this.wrappedNode = wrappedNode; this.typeSolver = typeSolver; } @Override public List getAncestors() { throw new UnsupportedOperationException(); } @Override public List getAllFields() { throw new UnsupportedOperationException(); } @Override public Set getDeclaredMethods() { throw new UnsupportedOperationException(); } @Override public boolean isAssignableBy(ResolvedType type) { throw new UnsupportedOperationException(); } @Override public boolean isAssignableBy(ResolvedReferenceTypeDeclaration other) { throw new UnsupportedOperationException(); } @Override public boolean hasDirectlyAnnotation(String qualifiedName) { throw new UnsupportedOperationException(); } @Override public String getPackageName() { return Helper.getPackageName(wrappedNode); } @Override public String getClassName() { return Helper.getClassName("", wrappedNode); } @Override public String getQualifiedName() { String containerName = Helper.containerName(wrappedNode.getParentNode().orElse(null)); if (containerName.isEmpty()) { return wrappedNode.getName().getId(); } else { return containerName + "." + wrappedNode.getName(); } } @Override public String getName() { return wrappedNode.getName().getId(); } @Override public List getTypeParameters() { throw new UnsupportedOperationException(); } @Override public Optional containerType() { throw new UnsupportedOperationException("containerType is not supported for " + this.getClass().getCanonicalName()); } @Override public List getAnnotationMembers() { return wrappedNode.getMembers().stream() .filter(m -> m instanceof AnnotationMemberDeclaration) .map(m -> new JavaParserAnnotationMemberDeclaration((AnnotationMemberDeclaration)m, typeSolver)) .collect(Collectors.toList()); } }