Skip to content

Commit b239704

Browse files
committed
apt: document options
1 parent c1a2640 commit b239704

File tree

3 files changed

+114
-29
lines changed

3 files changed

+114
-29
lines changed

docs/asciidoc/mvc-api.adoc

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -884,3 +884,87 @@ JAX-RS specification and there is no immediate plan to do it.
884884

885885
The main reason to support JAX-RS annotations is to let you plug-in third-party tools that rely
886886
on them (mostly annotations processors).
887+
888+
=== Annotation Processor Options
889+
890+
[cols="1,1,1,1"]
891+
|===
892+
| Option | Value | Default Value| Description
893+
894+
|jooby.debug
895+
|boolean
896+
|true
897+
|Run processor in debug mode
898+
899+
|jooby.incremental
900+
|boolean
901+
|true
902+
|Hints maven/gradle to do incremental compilation. Useful for development.
903+
904+
|jooby.services
905+
|boolean
906+
|true
907+
|Generates META-INF/services metadata
908+
909+
|jooby.skipAttributeAnnotations
910+
|array
911+
|[]
912+
|Skip annotation during byte code generation (i.e. don't generate them as route attributes)
913+
914+
|jooby.extendedLookupOfSuperTypes
915+
|boolean
916+
|false
917+
|Extended lookup of super/base types. Useful when base route/controller isn't part of current project (no sources code)
918+
919+
|===
920+
921+
==== Setting options
922+
923+
.Maven
924+
[source, xml, role="primary", subs="verbatim,attributes"]
925+
----
926+
<plugin>
927+
<artifactId>maven-compiler-plugin</artifactId>
928+
<configuration>
929+
<annotationProcessorPaths>
930+
<path>
931+
<groupId>io.jooby</groupId>
932+
<artifactId>jooby-apt</artifactId>
933+
<version>${jooby.version}</version>
934+
</path>
935+
</annotationProcessorPaths>
936+
<compilerArgs>
937+
<compilerArg>
938+
-Ajooby.debug=false
939+
</compilerArg>
940+
<compilerArg>
941+
-Ajooby.incremental=true
942+
</compilerArg>
943+
<compilerArg>
944+
-Ajooby.services=true
945+
</compilerArg>
946+
<compilerArg>
947+
-Ajooby.skipAttributeAnnotations=FooAnnotation,BarAnnotation
948+
</compilerArg>
949+
<compilerArg>
950+
-Ajooby.extendedLookupOfSuperTypes=false
951+
</compilerArg>
952+
</compilerArgs>
953+
</configuration>
954+
</plugin>
955+
----
956+
957+
.Gradle
958+
[source, groovy, role="secondary", subs="verbatim,attributes"]
959+
----
960+
tasks.withType(JavaCompile) {
961+
options.compilerArgs += [
962+
'-parameters',
963+
'-Ajooby.debug=false',
964+
'-Ajooby.incremental=true',
965+
'-Ajooby.services=true',
966+
'-Ajooby.skipAttributeAnnotations=FooAnnotation,BarAnnotation',
967+
'-Ajooby.extendedLookupOfSuperTypes=false'
968+
]
969+
}
970+
----

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

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,19 @@
55
*/
66
package io.jooby.apt;
77

8-
import io.jooby.MvcFactory;
9-
import io.jooby.SneakyThrows;
10-
import io.jooby.internal.apt.HandlerCompiler;
11-
import io.jooby.internal.apt.ModuleCompiler;
12-
import io.jooby.internal.apt.Opts;
8+
import java.io.IOException;
9+
import java.io.OutputStream;
10+
import java.io.PrintWriter;
11+
import java.util.ArrayList;
12+
import java.util.Collections;
13+
import java.util.HashSet;
14+
import java.util.LinkedHashMap;
15+
import java.util.LinkedHashSet;
16+
import java.util.List;
17+
import java.util.Map;
18+
import java.util.Set;
19+
import java.util.stream.Collectors;
20+
import java.util.stream.Stream;
1321

1422
import javax.annotation.processing.AbstractProcessor;
1523
import javax.annotation.processing.Filer;
@@ -29,19 +37,12 @@
2937
import javax.tools.FileObject;
3038
import javax.tools.JavaFileObject;
3139
import javax.tools.StandardLocation;
32-
import java.io.IOException;
33-
import java.io.OutputStream;
34-
import java.io.PrintWriter;
35-
import java.util.ArrayList;
36-
import java.util.Collections;
37-
import java.util.HashSet;
38-
import java.util.LinkedHashMap;
39-
import java.util.LinkedHashSet;
40-
import java.util.List;
41-
import java.util.Map;
42-
import java.util.Set;
43-
import java.util.stream.Collectors;
44-
import java.util.stream.Stream;
40+
41+
import io.jooby.MvcFactory;
42+
import io.jooby.SneakyThrows;
43+
import io.jooby.internal.apt.HandlerCompiler;
44+
import io.jooby.internal.apt.ModuleCompiler;
45+
import io.jooby.internal.apt.Opts;
4546

4647
/**
4748
* Jooby Annotation Processing Tool. It generates byte code for MVC routes.
@@ -53,7 +54,7 @@
5354
Opts.OPT_INCREMENTAL,
5455
Opts.OPT_SERVICES,
5556
Opts.OPT_SKIP_ATTRIBUTE_ANNOTATIONS,
56-
Opts.OPT_INSPECT_SUB_CLASSES})
57+
Opts.OPT_EXTENDED_LOOKUP_OF_SUPERTYPES})
5758
public class JoobyProcessor extends AbstractProcessor {
5859

5960
private ProcessingEnvironment processingEnv;
@@ -69,7 +70,7 @@ public class JoobyProcessor extends AbstractProcessor {
6970
private boolean debug;
7071
private boolean incremental;
7172
private boolean services;
72-
private boolean inspectSubClasses;
73+
private boolean extendedLooupOfSuperTypes;
7374

7475
private int round;
7576

@@ -109,11 +110,11 @@ public synchronized void init(ProcessingEnvironment processingEnvironment) {
109110
debug = Opts.boolOpt(processingEnv, Opts.OPT_DEBUG, false);
110111
incremental = Opts.boolOpt(processingEnv, Opts.OPT_INCREMENTAL, true);
111112
services = Opts.boolOpt(processingEnv, Opts.OPT_SERVICES, true);
112-
inspectSubClasses = Opts.boolOpt(processingEnv, Opts.OPT_INSPECT_SUB_CLASSES, false);
113+
extendedLooupOfSuperTypes = Opts.boolOpt(processingEnv, Opts.OPT_EXTENDED_LOOKUP_OF_SUPERTYPES, false);
113114

114115
debug("Incremental annotation processing is turned %s.", incremental ? "ON" : "OFF");
115116
debug("Generation of service provider configuration is turned %s.", services ? "ON" : "OFF");
116-
debug("Inspection of superTypes %s.", inspectSubClasses ? "ON" : "OFF");
117+
debug("Extended lookup of superTypes %s.", extendedLooupOfSuperTypes ? "ON" : "OFF");
117118
}
118119

119120
@Override
@@ -156,11 +157,11 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
156157
mapping.computeIfAbsent(annotation, k -> new ArrayList<>()).add(method);
157158
}
158159
} else {
159-
if (inspectSubClasses) {
160-
elements.stream().filter(TypeElement.class::isInstance).map(TypeElement.class::cast).forEach(parentTypeElement -> {
161-
inspectSubClasses(parentTypeElement);
162-
});
163-
160+
if (extendedLooupOfSuperTypes) {
161+
elements.stream()
162+
.filter(TypeElement.class::isInstance)
163+
.map(TypeElement.class::cast)
164+
.forEach(parentTypeElement -> extendedLookupOfSuperTypes(parentTypeElement));
164165
}
165166
}
166167
}
@@ -175,7 +176,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
175176
*
176177
* @param parentTypeElement
177178
*/
178-
private void inspectSubClasses(TypeElement parentTypeElement) {
179+
private void extendedLookupOfSuperTypes(TypeElement parentTypeElement) {
179180
for (TypeElement superType : superTypes(parentTypeElement)) {
180181
//collect all declared methods
181182
Set<ExecutableElement> methods = superType.getEnclosedElements().stream()

modules/jooby-apt/src/main/java/io/jooby/internal/apt/Opts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public interface Opts {
1313
String OPT_INCREMENTAL = "jooby.incremental";
1414
String OPT_SERVICES = "jooby.services";
1515
String OPT_SKIP_ATTRIBUTE_ANNOTATIONS = "jooby.skipAttributeAnnotations";
16-
String OPT_INSPECT_SUB_CLASSES = "jooby.inspectSubClasses";
16+
String OPT_EXTENDED_LOOKUP_OF_SUPERTYPES = "jooby.extendedLookupOfSuperTypes";
1717

1818
static boolean boolOpt(ProcessingEnvironment processingEnvironment, String option, boolean defaultValue) {
1919
return Boolean.parseBoolean(processingEnvironment

0 commit comments

Comments
 (0)