Skip to content

Commit

Permalink
removing TypeSolver from TypeDeclaration interface
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Oct 30, 2015
1 parent adb0249 commit 9a09145
Show file tree
Hide file tree
Showing 12 changed files with 42 additions and 36 deletions.
Expand Up @@ -43,15 +43,4 @@ default List<InterfaceDeclaration> getAllInterfaces(TypeSolver typeSolver) {
return interfaces;
}

@Override
default List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
List<ReferenceTypeUsage> ancestors = new LinkedList<>();
if (getSuperClass(typeSolver) != null) {
ancestors.add(new ReferenceTypeUsage(getSuperClass(typeSolver), typeSolver));
ancestors.addAll(getSuperClass(typeSolver).getAllAncestors(typeSolver));
}
ancestors.addAll(getAllInterfaces(typeSolver).stream().map((i)->new ReferenceTypeUsage(i, typeSolver)).collect(Collectors.<ReferenceTypeUsage>toList()));
return ancestors;
}

}
Expand Up @@ -57,7 +57,7 @@ default boolean isAssignableBy(TypeDeclaration other, TypeSolver typeSolver) {
*/
SymbolReference<TypeDeclaration> solveType(String substring, TypeSolver typeSolver);

List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver);
List<ReferenceTypeUsage> getAllAncestors();

default boolean isClass() {
return false;
Expand Down
Expand Up @@ -182,8 +182,8 @@ public TypeUsage replaceParam(String name, TypeUsage replaced) {
}
}

public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
return typeDeclaration.getAllAncestors(typeSolver);
public List<ReferenceTypeUsage> getAllAncestors() {
return typeDeclaration.getAllAncestors();
}

public TypeUsage replaceTypeParams(TypeUsage typeUsage){
Expand Down
Expand Up @@ -20,6 +20,7 @@

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -142,7 +143,7 @@ public String getQualifiedName() {

@Override
public boolean isAssignableBy(TypeDeclaration other) {
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors(typeSolver);
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors();
ancestorsOfOther.add(new ReferenceTypeUsage(other, typeSolver));
for (ReferenceTypeUsage ancestorOfOther : ancestorsOfOther) {
if (ancestorOfOther.getQualifiedName().equals(this.getQualifiedName())) {
Expand All @@ -154,7 +155,7 @@ public boolean isAssignableBy(TypeDeclaration other) {

@Override
public boolean isAssignableBy(TypeDeclaration other, TypeSolver typeSolver) {
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors(typeSolver);
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors();
ancestorsOfOther.add(new ReferenceTypeUsage(other, typeSolver));
for (ReferenceTypeUsage ancestorOfOther : ancestorsOfOther) {
if (ancestorOfOther.getQualifiedName().equals(this.getQualifiedName())) {
Expand Down Expand Up @@ -352,18 +353,18 @@ public SymbolReference<TypeDeclaration> solveType(String name, TypeSolver typeSo
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
public List<ReferenceTypeUsage> getAllAncestors() {
List<ReferenceTypeUsage> ancestors = new ArrayList<>();
ClassDeclaration superclass = getSuperClass(typeSolver);
if (superclass != null) {
ancestors.add(new ReferenceTypeUsage(superclass, typeSolver));
ancestors.addAll(superclass.getAllAncestors(typeSolver));
ancestors.addAll(superclass.getAllAncestors());
}
if (wrappedNode.getImplements() != null) {
for (ClassOrInterfaceType implemented : wrappedNode.getImplements()){
ReferenceTypeUsage ancestor = toTypeUsage(implemented, typeSolver);
ancestors.add(ancestor);
ancestors.addAll(ancestor.getAllAncestors(typeSolver));
ancestors.addAll(ancestor.getAllAncestors());
}
}
return ancestors;
Expand Down
Expand Up @@ -304,7 +304,7 @@ public SymbolReference<TypeDeclaration> solveType(String substring, TypeSolver t
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
public List<ReferenceTypeUsage> getAllAncestors() {
throw new UnsupportedOperationException();
}

Expand Down
Expand Up @@ -100,7 +100,7 @@ public String getQualifiedName() {

@Override
public boolean isAssignableBy(TypeDeclaration other, TypeSolver typeSolver) {
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors(typeSolver);
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors();
ancestorsOfOther.add(new ReferenceTypeUsage(other, typeSolver));
for (ReferenceTypeUsage ancestorOfOther : ancestorsOfOther) {
if (ancestorOfOther.getQualifiedName().equals(this.getQualifiedName())) {
Expand All @@ -112,7 +112,7 @@ public boolean isAssignableBy(TypeDeclaration other, TypeSolver typeSolver) {

@Override
public boolean isAssignableBy(TypeDeclaration other) {
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors(typeSolver);
List<ReferenceTypeUsage> ancestorsOfOther = other.getAllAncestors();
ancestorsOfOther.add(new ReferenceTypeUsage(other, typeSolver));
for (ReferenceTypeUsage ancestorOfOther : ancestorsOfOther) {
if (ancestorOfOther.getQualifiedName().equals(this.getQualifiedName())) {
Expand Down Expand Up @@ -299,7 +299,7 @@ public SymbolReference<TypeDeclaration> solveType(String name, TypeSolver typeSo
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
public List<ReferenceTypeUsage> getAllAncestors() {
List<ReferenceTypeUsage> ancestors = new ArrayList<>();
if (wrappedNode.getExtends() != null) {
for (ClassOrInterfaceType extended : wrappedNode.getExtends()){
Expand All @@ -308,7 +308,7 @@ public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
throw new UnsolvedSymbolException(extended.getName());
}
ancestors.add(new ReferenceTypeUsage(superclass.getCorrespondingDeclaration(), typeSolver));
ancestors.addAll(superclass.getCorrespondingDeclaration().getAllAncestors(typeSolver));
ancestors.addAll(superclass.getCorrespondingDeclaration().getAllAncestors());
}
}
if (wrappedNode.getImplements() != null) {
Expand All @@ -318,7 +318,7 @@ public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
throw new UnsolvedSymbolException(implemented.getName());
}
ancestors.add(new ReferenceTypeUsage(superclass.getCorrespondingDeclaration(), typeSolver));
ancestors.addAll(superclass.getCorrespondingDeclaration().getAllAncestors(typeSolver));
ancestors.addAll(superclass.getCorrespondingDeclaration().getAllAncestors());
}
}
return ancestors;
Expand Down
Expand Up @@ -103,7 +103,7 @@ private void determineTypeParameters(Map<String, TypeUsage> determinedTypeParame
}
if (formalParamType.isReferenceType() && actualParamType.isReferenceType()
&& !formalParamType.asReferenceTypeUsage().getQualifiedName().equals(actualParamType.asReferenceTypeUsage().getQualifiedName())){
List<ReferenceTypeUsage> ancestors = actualParamType.asReferenceTypeUsage().getAllAncestors(typeSolver);
List<ReferenceTypeUsage> ancestors = actualParamType.asReferenceTypeUsage().getAllAncestors();
final String formalParamTypeQName = formalParamType.asReferenceTypeUsage().getQualifiedName();
List<TypeUsage> correspondingFormalType = ancestors.stream().filter((a) -> a.getQualifiedName().equals(formalParamTypeQName)).collect(Collectors.toList());
if (correspondingFormalType.size() == 0) {
Expand Down
Expand Up @@ -116,7 +116,7 @@ public SymbolReference<TypeDeclaration> solveType(String substring, TypeSolver t
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
public List<ReferenceTypeUsage> getAllAncestors() {
throw new UnsupportedOperationException();
}

Expand Down
Expand Up @@ -103,7 +103,7 @@ public SymbolReference<TypeDeclaration> solveType(String substring, TypeSolver t
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
public List<ReferenceTypeUsage> getAllAncestors() {
throw new UnsupportedOperationException();
}

Expand Down
Expand Up @@ -183,10 +183,15 @@ public SymbolReference<TypeDeclaration> solveType(String substring, TypeSolver t
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
throw new UnsupportedOperationException();
public List<ReferenceTypeUsage> getAllAncestors() {
List<ReferenceTypeUsage> ancestors = new LinkedList<>();
if (getSuperClass(typeSolver) != null) {
ancestors.add(new ReferenceTypeUsage(getSuperClass(typeSolver), typeSolver));
ancestors.addAll(getSuperClass(typeSolver).getAllAncestors());
}
ancestors.addAll(getAllInterfaces(typeSolver).stream().map((i)->new ReferenceTypeUsage(i, typeSolver)).collect(Collectors.<ReferenceTypeUsage>toList()));
return ancestors;
}

@Override
public Context getContext() {
throw new UnsupportedOperationException();
Expand Down
Expand Up @@ -22,6 +22,17 @@ public class ReflectionClassDeclaration implements ClassDeclaration {
private Class<?> clazz;
private TypeSolver typeSolver;

@Override
public List<ReferenceTypeUsage> getAllAncestors() {
List<ReferenceTypeUsage> ancestors = new LinkedList<>();
if (getSuperClass(typeSolver) != null) {
ancestors.add(new ReferenceTypeUsage(getSuperClass(typeSolver), typeSolver));
ancestors.addAll(getSuperClass(typeSolver).getAllAncestors());
}
ancestors.addAll(getAllInterfaces(typeSolver).stream().map((i)->new ReferenceTypeUsage(i, typeSolver)).collect(Collectors.<ReferenceTypeUsage>toList()));
return ancestors;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down Expand Up @@ -266,7 +277,7 @@ public FieldDeclaration getField(String name, TypeSolver typeSolver) {
return new ReflectionFieldDeclaration(field);
}
}
for (ReferenceTypeUsage ancestor : getAllAncestors(typeSolver)) {
for (ReferenceTypeUsage ancestor : getAllAncestors()) {
if (ancestor.getTypeDeclaration().hasField(name, typeSolver)) {
return ancestor.getTypeDeclaration().getField(name, typeSolver);
}
Expand Down
Expand Up @@ -215,7 +215,7 @@ public FieldDeclaration getField(String name, TypeSolver typeSolver) {
return new ReflectionFieldDeclaration(field);
}
}
for (ReferenceTypeUsage ancestor : getAllAncestors(typeSolver)) {
for (ReferenceTypeUsage ancestor : getAllAncestors()) {
if (ancestor.getTypeDeclaration().hasField(name, typeSolver)) {
return ancestor.getTypeDeclaration().getField(name, typeSolver);
}
Expand Down Expand Up @@ -257,17 +257,17 @@ public SymbolReference<TypeDeclaration> solveType(String substring, TypeSolver t
}

@Override
public List<ReferenceTypeUsage> getAllAncestors(TypeSolver typeSolver) {
public List<ReferenceTypeUsage> getAllAncestors() {
List<ReferenceTypeUsage> ancestors = new LinkedList<>();
if (clazz.getSuperclass() != null) {
ReferenceTypeUsage superclass = new ReferenceTypeUsage(new ReflectionInterfaceDeclaration(clazz.getSuperclass(), typeSolver), typeSolver);
ancestors.add(superclass);
ancestors.addAll(superclass.getAllAncestors(typeSolver));
ancestors.addAll(superclass.getAllAncestors());
}
for (Class<?> interfaze : clazz.getInterfaces()) {
ReferenceTypeUsage interfazeDecl = new ReferenceTypeUsage(new ReflectionInterfaceDeclaration(interfaze, typeSolver), typeSolver);
ancestors.add(interfazeDecl);
ancestors.addAll(interfazeDecl.getAllAncestors(typeSolver));
ancestors.addAll(interfazeDecl.getAllAncestors());
}
return ancestors;
}
Expand Down

0 comments on commit 9a09145

Please sign in to comment.