Skip to content

Commit e7ee37b

Browse files
committed
Refactoring
1 parent 378b616 commit e7ee37b

File tree

2 files changed

+10
-28
lines changed

2 files changed

+10
-28
lines changed

modules/jooby-apt/src/main/java/io/jooby/apt/JoobyProcessor.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,15 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
6969
return false;
7070
}
7171
/**
72-
* Do MVC handler: per each mvc method we create a Route.Handler.
72+
* Classes inheriting MVC classes whouldn't be processed so we force the inspection
73+
* of all http methods annotations on classes with Path annotation.
7374
*/
7475
if (annotations.retainAll(Annotations.PATH)) {
7576
annotations = this.httpMethodsAnnotations;
7677
}
78+
/**
79+
* Do MVC handler: per each mvc method we create a Route.Handler.
80+
*/
7781
List<HandlerCompiler> result = new ArrayList<>();
7882
JoobyProcessorRoundEnvironment joobyRoundEnv = new JoobyProcessorRoundEnvironment(roundEnv, processingEnvironment);
7983
for (TypeElement httpMethod : annotations) {

modules/jooby-apt/src/main/java/io/jooby/apt/JoobyProcessorRoundEnvironment.java

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,9 @@
77
import javax.lang.model.element.*;
88
import javax.lang.model.type.DeclaredType;
99
import javax.lang.model.type.TypeKind;
10-
import javax.lang.model.type.TypeMirror;
1110
import javax.lang.model.util.ElementScanner8;
1211
import javax.lang.model.util.Elements;
1312
import javax.lang.model.util.Types;
14-
import java.lang.reflect.Field;
15-
import java.lang.reflect.Method;
1613
import java.util.*;
1714

1815
public class JoobyProcessorRoundEnvironment {
@@ -30,27 +27,23 @@ public class JoobyProcessorRoundEnvironment {
3027
public Set<? extends Element> getElementsAnnotatedWith(TypeElement a) {
3128

3229
Set<Element> result = Collections.emptySet();
33-
ElementScanner8<Set<Element>, TypeElement> scanner = new AnnotationSetScanner(result);
30+
ElementScanner8<Set<Element>, TypeElement> scanner = new JoobyAnnotationSetScanner(result);
3431

3532
for (Element element : rootElements)
3633
result = scanner.scan(element, a);
3734

3835
return result;
3936
}
4037

41-
// Could be written as a local class inside getElementsAnnotatedWith
42-
private class AnnotationSetScanner extends
43-
ElementScanningIncludingTypeParameters<Set<Element>, TypeElement> {
44-
// Insertion-order preserving set
38+
private class JoobyAnnotationSetScanner extends ElementScanner8<Set<Element>, TypeElement> {
4539
private Set<Element> annotatedElements = new LinkedHashSet<>();
4640

47-
AnnotationSetScanner(Set<Element> defaultSet) {
41+
JoobyAnnotationSetScanner(Set<Element> defaultSet) {
4842
super(defaultSet);
4943
}
5044

5145
@Override
5246
public Set<Element> scan(Element e, TypeElement annotation) {
53-
//System.out.println("\t\t" + e);
5447
for (AnnotationMirror annotMirror : eltUtils.getAllAnnotationMirrors(e)) {
5548
if (annotation.equals(mirrorAsElement(annotMirror))) {
5649
annotatedElements.add(e);
@@ -61,33 +54,18 @@ public Set<Element> scan(Element e, TypeElement annotation) {
6154
return annotatedElements;
6255
}
6356

64-
}
65-
66-
private static abstract class ElementScanningIncludingTypeParameters<R, P>
67-
extends ElementScanner8<R, P> {
68-
69-
protected ElementScanningIncludingTypeParameters(R defaultValue) {
70-
super(defaultValue);
71-
}
72-
7357
@Override
74-
public R visitType(TypeElement e, P p) {
75-
// Type parameters are not considered to be enclosed by a type
58+
public Set<Element> visitType(TypeElement e, TypeElement p) {
7659
if (e.getSuperclass().getKind() == TypeKind.DECLARED) {
77-
//System.out.println(e + " <<<< " + e.getSuperclass());
78-
TypeElement superElement = (TypeElement) ((DeclaredType) e.getSuperclass()).asElement();
60+
javax.lang.model.element.TypeElement superElement = (javax.lang.model.element.TypeElement) ((DeclaredType) e.getSuperclass()).asElement();
7961
List<Element> clonedElements = new ArrayList<>();
8062
for(Element enclosedElement : superElement.getEnclosedElements()) {
8163
if (enclosedElement.getKind() == ElementKind.METHOD && enclosedElement.getAnnotationMirrors().size() > 0) {
8264
Symbol.MethodSymbol methodSymbol = ((Symbol.MethodSymbol)enclosedElement).clone((Symbol.ClassSymbol)e);
8365
methodSymbol.appendAttributes( ((Symbol.MethodSymbol)enclosedElement).getAnnotationMirrors() );
84-
//System.out.println("\t\tEnclosing: " + methodSymbol.getEnclosingElement() + "::" + methodSymbol + " #" + methodSymbol.getAnnotationMirrors().size());
8566
methodSymbol.params = ((Symbol.MethodSymbol)enclosedElement).params;
8667
methodSymbol.extraParams = ((Symbol.MethodSymbol)enclosedElement).extraParams;
8768
methodSymbol.capturedLocals = ((Symbol.MethodSymbol)enclosedElement).capturedLocals;
88-
//Symbol.MethodSymbol w = (Symbol.MethodSymbol)enclosedElement;
89-
//System.out.println("\t\t\tEnclosed (orig):" + w.params);
90-
//System.out.println("\t\t\tEnclosed (copy):" + methodSymbol.params);
9169
clonedElements.add(methodSymbol);
9270
}
9371
}

0 commit comments

Comments
 (0)