Skip to content

Commit f53ece7

Browse files
committed
remove unnecessary code
1 parent 9549a14 commit f53ece7

File tree

3 files changed

+14
-96
lines changed

3 files changed

+14
-96
lines changed

core/src/main/java/net/jbock/coerce/CollectorClassValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static CollectorInfo getCollectorInfo(TypeMirror returnType, TypeElement collect
3333

3434
private static TypeMirror getCollectorType(TypeElement collectorClass) throws TmpException {
3535
TypeTool tool = TypeTool.get();
36-
Resolver resolver = Resolver.resolve(tool.declared(Supplier.class), collectorClass.asType(), "T");
36+
Resolver resolver = Resolver.resolve(tool.declared(Supplier.class), collectorClass.asType());
3737
TypeMirror typeMirror = resolver.resolveTypevars().orElseThrow(() -> boom("not a Supplier"));
3838
if (tool.eql(typeMirror, tool.erasure(typeMirror))) {
3939
throw boom("the supplier must be parameterized");

core/src/main/java/net/jbock/coerce/MapperClassValidator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static TypeMirror checkReturnType(TypeElement mapperClass, TypeMirror expectedRe
3333

3434
private static TypeMirror getFunctionType(TypeElement mapperClass) throws TmpException {
3535
TypeTool tool = TypeTool.get();
36-
Resolver resolver = Resolver.resolve(tool.declared(Supplier.class), mapperClass.asType(), "T");
36+
Resolver resolver = Resolver.resolve(tool.declared(Supplier.class), mapperClass.asType());
3737
TypeMirror typeMirror = resolver.resolveTypevars().orElseThrow(() -> boom("not a Supplier"));
3838
if (tool.eql(typeMirror, tool.erasure(typeMirror))) {
3939
throw boom("the supplier must be parameterized");
@@ -50,7 +50,7 @@ private static TypeMirror getFunctionType(TypeElement mapperClass) throws TmpExc
5050

5151
private static TypeMirror resolveFunctionType(TypeMirror functionType) throws TmpException {
5252
TypeTool tool = TypeTool.get();
53-
Resolver resolver = Resolver.resolve(tool.declared(Function.class), functionType, "T", "R");
53+
Resolver resolver = Resolver.resolve(tool.declared(Function.class), functionType);
5454
return resolver.resolveTypevars().orElseThrow(() -> boom("The supplier must supply a Function"));
5555
}
5656

core/src/main/java/net/jbock/coerce/Resolver.java

Lines changed: 11 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -4,114 +4,39 @@
44

55
import javax.lang.model.element.TypeElement;
66
import javax.lang.model.element.TypeParameterElement;
7-
import javax.lang.model.type.DeclaredType;
8-
import javax.lang.model.type.TypeKind;
97
import javax.lang.model.type.TypeMirror;
108
import java.util.ArrayList;
119
import java.util.Collections;
1210
import java.util.HashMap;
13-
import java.util.LinkedHashMap;
1411
import java.util.List;
1512
import java.util.Map;
16-
import java.util.Map.Entry;
1713
import java.util.Optional;
1814

1915
import static net.jbock.compiler.HierarchyUtil.getTypeTree;
2016

2117
class Resolver {
2218

23-
private final Map<Integer, String> names;
24-
private final Map<String, TypeMirror> results = new HashMap<>();
25-
private final List<Extension> extensions = new ArrayList<>();
19+
private final List<Extension> extensions;
2620

27-
private Resolver(Map<Integer, String> names) {
28-
this.names = names;
29-
}
30-
31-
private void setResults(Map<String, TypeMirror> results) {
32-
this.results.clear();
33-
this.results.putAll(results);
34-
}
35-
36-
private void setNames(Map<Integer, String> names) {
37-
this.names.clear();
38-
this.names.putAll(names);
39-
}
40-
41-
private void clearNames() {
42-
this.names.clear();
43-
}
44-
45-
private void step(Extension extension) {
46-
TypeElement b = extension.baseClass();
47-
DeclaredType x = extension.extensionClass();
48-
Map<Integer, String> newNames = new LinkedHashMap<>();
49-
Map<String, TypeMirror> newResults = new LinkedHashMap<>(results);
50-
List<? extends TypeMirror> xParams = x.getTypeArguments();
51-
List<? extends TypeParameterElement> bParams = b.getTypeParameters();
52-
for (Entry<Integer, String> entry : names.entrySet()) {
53-
if (xParams.isEmpty()) {
54-
// failure: raw type
55-
results.clear();
56-
return;
57-
}
58-
TypeMirror xParam = xParams.get(entry.getKey());
59-
if (xParam.getKind() == TypeKind.TYPEVAR) {
60-
for (int i = 0; i < bParams.size(); i++) {
61-
TypeParameterElement bParam = bParams.get(i);
62-
if (bParam.toString().equals(xParam.toString())) {
63-
newNames.put(i, entry.getValue());
64-
break;
65-
}
66-
}
67-
} else {
68-
newResults.put(entry.getValue(), xParam);
69-
}
70-
}
71-
setResults(newResults);
72-
setNames(newNames);
73-
}
74-
75-
static Resolver resolve(TypeMirror goal, TypeMirror start, String... typevars) {
76-
Map<Integer, String> map = new HashMap<>();
77-
for (int i = 0; i < typevars.length; i++) {
78-
String typevar = typevars[i];
79-
map.put(i, typevar);
80-
}
81-
return resolve(goal, start, map);
21+
private Resolver(List<Extension> extensions) {
22+
List<Extension> reversed = new ArrayList<>(extensions);
23+
Collections.reverse(reversed);
24+
this.extensions = Collections.unmodifiableList(reversed);
8225
}
8326

84-
private static Resolver resolve(
27+
static Resolver resolve(
8528
TypeMirror goal,
86-
TypeMirror start,
87-
Map<Integer, String> names) {
29+
TypeMirror start) {
8830
List<TypeElement> family = getTypeTree(start);
89-
Resolver resolver = new Resolver(names);
9031
Extension extension;
9132
TypeTool tool = TypeTool.get();
9233
TypeMirror nextGoal = tool.erasure(goal);
34+
List<Extension> extensions = new ArrayList<>();
9335
while ((extension = findExtension(family, nextGoal)) != null) {
94-
resolver.step(extension);
95-
resolver.extensions.add(extension);
36+
extensions.add(extension);
9637
nextGoal = tool.erasure(extension.baseClass().asType());
9738
}
98-
if (resolver.names.isEmpty()) {
99-
// everything resolved
100-
return resolver;
101-
}
102-
if (tool.eql(nextGoal, tool.erasure(start))) {
103-
List<? extends TypeMirror> typeargs = tool.typeargs(start);
104-
Map<String, TypeMirror> results = new LinkedHashMap<>();
105-
for (Entry<Integer, String> entry : resolver.names.entrySet()) {
106-
if (entry.getKey() < typeargs.size()) {
107-
results.put(entry.getValue(), typeargs.get(entry.getKey()));
108-
}
109-
}
110-
results.putAll(resolver.results);
111-
resolver.clearNames();
112-
resolver.setResults(results);
113-
}
114-
return resolver;
39+
return new Resolver(extensions);
11540
}
11641

11742
private static Extension findExtension(List<TypeElement> family, TypeMirror qname) {
@@ -138,17 +63,10 @@ private static Extension findExtension(TypeElement typeElement, TypeMirror qname
13863
return null;
13964
}
14065

141-
private List<Extension> reverseExtensions() {
142-
List<Extension> reversed = new ArrayList<>(this.extensions);
143-
Collections.reverse(reversed);
144-
return reversed;
145-
}
146-
14766
Optional<TypeMirror> resolveTypevars() {
14867
if (extensions.isEmpty()) {
14968
return Optional.empty();
15069
}
151-
List<Extension> extensions = reverseExtensions();
15270
TypeMirror x = extensions.get(0).extensionClass();
15371
for (int i = 1; i < extensions.size(); i++) {
15472
Extension extension = extensions.get(i);
@@ -169,6 +87,6 @@ private static TypeMirror resolveStep(TypeMirror x, Extension ex1) {
16987

17088
@Override
17189
public String toString() {
172-
return String.format("%s %s", names, results);
90+
return extensions.toString();
17391
}
17492
}

0 commit comments

Comments
 (0)