Home | History | Annotate | Download | only in declarations
      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