Skip to content

Commit

Permalink
added toTypeDeclaration method to JavaParserFactory to remove code …
Browse files Browse the repository at this point in the history
…duplications.
  • Loading branch information
mlangkabel committed Jul 31, 2017
1 parent 60dc7eb commit e46b2e3
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 26 deletions.
Expand Up @@ -507,11 +507,7 @@ public MethodUsage solveMethodAsUsage(MethodCallExpr call) {
}

public ReferenceTypeDeclaration getTypeDeclaration(ClassOrInterfaceDeclaration classOrInterfaceDeclaration) {
if (classOrInterfaceDeclaration.isInterface()) {
return new JavaParserInterfaceDeclaration(classOrInterfaceDeclaration, typeSolver);
} else {
return new JavaParserClassDeclaration(classOrInterfaceDeclaration, typeSolver);
}
return JavaParserFactory.toTypeDeclaration(classOrInterfaceDeclaration, typeSolver);
}

/**
Expand All @@ -530,14 +526,6 @@ public Type getTypeOfThisIn(Node node) {
}

public ReferenceTypeDeclaration getTypeDeclaration(com.github.javaparser.ast.body.TypeDeclaration<?> typeDeclaration) {
if (typeDeclaration instanceof ClassOrInterfaceDeclaration) {
return getTypeDeclaration((ClassOrInterfaceDeclaration) typeDeclaration);
} else if (typeDeclaration instanceof EnumDeclaration) {
return new JavaParserEnumDeclaration((EnumDeclaration) typeDeclaration, typeSolver);
} else if (typeDeclaration instanceof com.github.javaparser.ast.body.AnnotationDeclaration) {
return new JavaParserAnnotationDeclaration((com.github.javaparser.ast.body.AnnotationDeclaration) typeDeclaration, typeSolver);
} else {
throw new UnsupportedOperationException(typeDeclaration.getClass().getCanonicalName());
}
return JavaParserFactory.toTypeDeclaration(typeDeclaration, typeSolver);
}
}
Expand Up @@ -21,12 +21,19 @@
import com.github.javaparser.ast.body.*;
import com.github.javaparser.ast.expr.*;
import com.github.javaparser.ast.stmt.*;
import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.symbolsolver.core.resolution.Context;
import com.github.javaparser.symbolsolver.javaparsermodel.contexts.*;
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserAnnotationDeclaration;
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration;
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserEnumDeclaration;
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserInterfaceDeclaration;
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserTypeParameter;
import com.github.javaparser.symbolsolver.javaparsermodel.declarators.FieldSymbolDeclarator;
import com.github.javaparser.symbolsolver.javaparsermodel.declarators.NoSymbolDeclarator;
import com.github.javaparser.symbolsolver.javaparsermodel.declarators.ParameterSymbolDeclarator;
import com.github.javaparser.symbolsolver.javaparsermodel.declarators.VariableSymbolDeclarator;
import com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
import com.github.javaparser.symbolsolver.resolution.SymbolDeclarator;

Expand Down Expand Up @@ -107,5 +114,22 @@ public static SymbolDeclarator getSymbolDeclarator(Node node, TypeSolver typeSol
return new NoSymbolDeclarator<Node>(node, typeSolver);
}
}


public static ReferenceTypeDeclaration toTypeDeclaration(Node node, TypeSolver typeSolver) {
if (node instanceof ClassOrInterfaceDeclaration) {
if (((ClassOrInterfaceDeclaration) node).isInterface()) {
return new JavaParserInterfaceDeclaration((ClassOrInterfaceDeclaration) node, typeSolver);
} else {
return new JavaParserClassDeclaration((ClassOrInterfaceDeclaration) node, typeSolver);
}
} else if (node instanceof TypeParameter) {
return new JavaParserTypeParameter((TypeParameter) node, typeSolver);
} else if (node instanceof EnumDeclaration) {
return new JavaParserEnumDeclaration((EnumDeclaration) node, typeSolver);
} else if (node instanceof AnnotationDeclaration) {
return new JavaParserAnnotationDeclaration((AnnotationDeclaration) node, typeSolver);
} else {
throw new IllegalArgumentException(node.getClass().getCanonicalName());
}
}
}
Expand Up @@ -57,20 +57,11 @@ public String toString() {

@Override
public ReferenceTypeDeclaration declaringType() {
if (getParentNode(wrappedNode) instanceof ClassOrInterfaceDeclaration) {
ClassOrInterfaceDeclaration parent = (ClassOrInterfaceDeclaration) getParentNode(wrappedNode);
if (parent.isInterface()) {
return new JavaParserInterfaceDeclaration(parent, typeSolver);
} else {
return new JavaParserClassDeclaration(parent, typeSolver);
}
} else if (getParentNode(wrappedNode) instanceof EnumDeclaration) {
return new JavaParserEnumDeclaration((EnumDeclaration) getParentNode(wrappedNode), typeSolver);
} else if (getParentNode(wrappedNode) instanceof ObjectCreationExpr) {
if (getParentNode(wrappedNode) instanceof ObjectCreationExpr) {
ObjectCreationExpr parentNode = (ObjectCreationExpr) getParentNode(wrappedNode);
return new JavaParserAnonymousClassDeclaration(parentNode, typeSolver);
} else {
throw new UnsupportedOperationException(getParentNode(wrappedNode).getClass().getCanonicalName());
return JavaParserFactory.toTypeDeclaration(getParentNode(wrappedNode), typeSolver);
}
}

Expand Down

0 comments on commit e46b2e3

Please sign in to comment.