1 package com.github.javaparser.symbolsolver.javaparsermodel.declarations; 2 3 import com.github.javaparser.ast.body.AnnotationDeclaration; 4 import com.github.javaparser.ast.body.AnnotationMemberDeclaration; 5 import com.github.javaparser.resolution.declarations.*; 6 import com.github.javaparser.resolution.types.ResolvedReferenceType; 7 import com.github.javaparser.resolution.types.ResolvedType; 8 import com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration; 9 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; 10 11 import java.util.List; 12 import java.util.Optional; 13 import java.util.Set; 14 import java.util.stream.Collectors; 15 16 import static com.github.javaparser.symbolsolver.javaparser.Navigator.getParentNode; 17 18 /** 19 * @author Federico Tomassetti 20 */ 21 public class JavaParserAnnotationDeclaration extends AbstractTypeDeclaration implements ResolvedAnnotationDeclaration { 22 23 private com.github.javaparser.ast.body.AnnotationDeclaration wrappedNode; 24 private TypeSolver typeSolver; 25 26 public JavaParserAnnotationDeclaration(AnnotationDeclaration wrappedNode, TypeSolver typeSolver) { 27 this.wrappedNode = wrappedNode; 28 this.typeSolver = typeSolver; 29 } 30 31 @Override 32 public List<ResolvedReferenceType> getAncestors() { 33 throw new UnsupportedOperationException(); 34 } 35 36 @Override 37 public List<ResolvedFieldDeclaration> getAllFields() { 38 throw new UnsupportedOperationException(); 39 } 40 41 @Override 42 public Set<ResolvedMethodDeclaration> getDeclaredMethods() { 43 throw new UnsupportedOperationException(); 44 } 45 46 @Override 47 public boolean isAssignableBy(ResolvedType type) { 48 throw new UnsupportedOperationException(); 49 } 50 51 @Override 52 public boolean isAssignableBy(ResolvedReferenceTypeDeclaration other) { 53 throw new UnsupportedOperationException(); 54 } 55 56 @Override 57 public boolean hasDirectlyAnnotation(String qualifiedName) { 58 throw new UnsupportedOperationException(); 59 } 60 61 @Override 62 public String getPackageName() { 63 return Helper.getPackageName(wrappedNode); 64 } 65 66 @Override 67 public String getClassName() { 68 return Helper.getClassName("", wrappedNode); 69 } 70 71 @Override 72 public String getQualifiedName() { 73 String containerName = Helper.containerName(wrappedNode.getParentNode().orElse(null)); 74 if (containerName.isEmpty()) { 75 return wrappedNode.getName().getId(); 76 } else { 77 return containerName + "." + wrappedNode.getName(); 78 } 79 } 80 81 @Override 82 public String getName() { 83 return wrappedNode.getName().getId(); 84 } 85 86 @Override 87 public List<ResolvedTypeParameterDeclaration> getTypeParameters() { 88 throw new UnsupportedOperationException(); 89 } 90 91 @Override 92 public Optional<ResolvedReferenceTypeDeclaration> containerType() { 93 throw new UnsupportedOperationException("containerType is not supported for " + this.getClass().getCanonicalName()); 94 } 95 96 @Override 97 public List<ResolvedAnnotationMemberDeclaration> getAnnotationMembers() { 98 return wrappedNode.getMembers().stream() 99 .filter(m -> m instanceof AnnotationMemberDeclaration) 100 .map(m -> new JavaParserAnnotationMemberDeclaration((AnnotationMemberDeclaration)m, typeSolver)) 101 .collect(Collectors.toList()); 102 } 103 } 104