aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/AnonymousClassDeclarationContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/AnonymousClassDeclarationContext.java')
-rw-r--r--javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/AnonymousClassDeclarationContext.java186
1 files changed, 0 insertions, 186 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/AnonymousClassDeclarationContext.java b/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/AnonymousClassDeclarationContext.java
deleted file mode 100644
index 3eef0c9b1..000000000
--- a/javaparser-symbol-solver-testing/src/test/resources/javasymbolsolver_0_6_0/src/java-symbol-solver-core/com/github/javaparser/symbolsolver/javaparsermodel/contexts/AnonymousClassDeclarationContext.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.github.javaparser.symbolsolver.javaparsermodel.contexts;
-
-import com.github.javaparser.ast.NodeList;
-import com.github.javaparser.ast.expr.ObjectCreationExpr;
-import com.github.javaparser.ast.nodeTypes.NodeWithTypeArguments;
-import com.github.javaparser.ast.type.TypeParameter;
-import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade;
-import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory;
-import com.github.javaparser.symbolsolver.javaparsermodel.declarations
- .JavaParserAnonymousClassDeclaration;
-import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserTypeParameter;
-import com.github.javaparser.symbolsolver.model.declarations.MethodDeclaration;
-import com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration;
-import com.github.javaparser.symbolsolver.model.declarations.ValueDeclaration;
-import com.github.javaparser.symbolsolver.model.resolution.SymbolReference;
-import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
-import com.github.javaparser.symbolsolver.model.typesystem.ReferenceType;
-import com.github.javaparser.symbolsolver.model.typesystem.Type;
-import com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration;
-import com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic;
-import com.google.common.base.Preconditions;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-/**
- * A symbol resolution context for an object creation node.
- */
-public class AnonymousClassDeclarationContext extends AbstractJavaParserContext<ObjectCreationExpr> {
-
- private final JavaParserAnonymousClassDeclaration myDeclaration =
- new JavaParserAnonymousClassDeclaration(wrappedNode, typeSolver);
-
- public AnonymousClassDeclarationContext(ObjectCreationExpr node, TypeSolver typeSolver) {
- super(node, typeSolver);
- Preconditions.checkArgument(node.getAnonymousClassBody().isPresent(),
- "An anonymous class must have a body");
- }
-
- @Override
- public SymbolReference<MethodDeclaration> solveMethod(String name,
- List<Type> argumentsTypes,
- boolean staticOnly,
- TypeSolver typeSolver) {
- List<MethodDeclaration> candidateMethods =
- myDeclaration
- .getDeclaredMethods()
- .stream()
- .filter(m -> m.getName().equals(name) && (!staticOnly || m.isStatic()))
- .collect(Collectors.toList());
-
- if (!Object.class.getCanonicalName().equals(myDeclaration.getQualifiedName())) {
- for (ReferenceType ancestor : myDeclaration.getAncestors()) {
- SymbolReference<MethodDeclaration> res =
- MethodResolutionLogic.solveMethodInType(ancestor.getTypeDeclaration(),
- name,
- argumentsTypes,
- staticOnly,
- typeSolver);
- // consider methods from superclasses and only default methods from interfaces :
- // not true, we should keep abstract as a valid candidate
- // abstract are removed in MethodResolutionLogic.isApplicable is necessary
- if (res.isSolved()) {
- candidateMethods.add(res.getCorrespondingDeclaration());
- }
- }
- }
-
- // We want to avoid infinite recursion when a class is using its own method
- // see issue #75
- if (candidateMethods.isEmpty()) {
- SymbolReference<MethodDeclaration> parentSolution =
- getParent().solveMethod(name, argumentsTypes, staticOnly, typeSolver);
- if (parentSolution.isSolved()) {
- candidateMethods.add(parentSolution.getCorrespondingDeclaration());
- }
- }
-
- // if is interface and candidate method list is empty, we should check the Object Methods
- if (candidateMethods.isEmpty() && myDeclaration.getSuperTypeDeclaration().isInterface()) {
- SymbolReference<MethodDeclaration> res =
- MethodResolutionLogic.solveMethodInType(new ReflectionClassDeclaration(Object.class,
- typeSolver),
- name,
- argumentsTypes,
- false,
- typeSolver);
- if (res.isSolved()) {
- candidateMethods.add(res.getCorrespondingDeclaration());
- }
- }
-
- return MethodResolutionLogic.findMostApplicable(candidateMethods,
- name,
- argumentsTypes,
- typeSolver);
- }
-
- @Override
- public SymbolReference<TypeDeclaration> solveType(String name, TypeSolver typeSolver) {
- List<com.github.javaparser.ast.body.TypeDeclaration> typeDeclarations =
- myDeclaration
- .findMembersOfKind(com.github.javaparser.ast.body.TypeDeclaration.class);
-
- Optional<SymbolReference<TypeDeclaration>> exactMatch =
- typeDeclarations
- .stream()
- .filter(internalType -> internalType.getName().getId().equals(name))
- .findFirst()
- .map(internalType ->
- SymbolReference.solved(
- JavaParserFacade.get(typeSolver).getTypeDeclaration(internalType)));
-
- if(exactMatch.isPresent()){
- return exactMatch.get();
- }
-
- Optional<SymbolReference<TypeDeclaration>> recursiveMatch =
- typeDeclarations
- .stream()
- .filter(internalType -> name.startsWith(String.format("%s.", internalType.getName())))
- .findFirst()
- .map(internalType ->
- JavaParserFactory
- .getContext(internalType, typeSolver)
- .solveType(name.substring(internalType.getName().getId().length() + 1),
- typeSolver));
-
- if (recursiveMatch.isPresent()) {
- return recursiveMatch.get();
- }
-
- Optional<SymbolReference<TypeDeclaration>> typeArgumentsMatch =
- wrappedNode
- .getTypeArguments()
- .map(nodes ->
- ((NodeWithTypeArguments<?>) nodes).getTypeArguments()
- .orElse(new NodeList<>()))
- .orElse(new NodeList<>())
- .stream()
- .filter(type -> type.toString().equals(name))
- .findFirst()
- .map(matchingType ->
- SymbolReference.solved(
- new JavaParserTypeParameter(new TypeParameter(matchingType.toString()),
- typeSolver)));
-
- if (typeArgumentsMatch.isPresent()) {
- return typeArgumentsMatch.get();
- }
-
- // Look into extended classes and implemented interfaces
- for (ReferenceType ancestor : myDeclaration.getAncestors()) {
- // look at names of extended classes and implemented interfaces (this may not be important because they are checked in CompilationUnitContext)
- if (ancestor.getTypeDeclaration().getName().equals(name)) {
- return SymbolReference.solved(ancestor.getTypeDeclaration());
- }
- // look into internal types of extended classes and implemented interfaces
- try {
- for (TypeDeclaration internalTypeDeclaration : ancestor.getTypeDeclaration().internalTypes()) {
- if (internalTypeDeclaration.getName().equals(name)) {
- return SymbolReference.solved(internalTypeDeclaration);
- }
- }
- } catch (UnsupportedOperationException e) {
- // just continue using the next ancestor
- }
- }
-
- return getParent().solveType(name, typeSolver);
- }
-
- @Override
- public SymbolReference<? extends ValueDeclaration> solveSymbol(String name,
- TypeSolver typeSolver) {
- Preconditions.checkArgument(typeSolver != null);
-
- if (myDeclaration.hasVisibleField(name)) {
- return SymbolReference.solved(myDeclaration.getVisibleField(name));
- }
-
- return getParent().solveSymbol(name, typeSolver);
- }
-
-}