22
22
import java .util .stream .Collectors ;
23
23
24
24
import static io .javaoperatorsdk .operator .ControllerUtils .CONTROLLERS_RESOURCE_PATH ;
25
+ import static io .javaoperatorsdk .operator .ControllerUtils .DONEABLES_RESOURCE_PATH ;
25
26
26
27
@ SupportedAnnotationTypes (
27
28
"io.javaoperatorsdk.operator.api.Controller" )
28
29
@ SupportedSourceVersion (SourceVersion .RELEASE_8 )
29
30
@ AutoService (Processor .class )
30
31
public class ControllerAnnotationProcessor extends AbstractProcessor {
31
- private ControllersResourceWriter controllersResourceWriter ;
32
+ private AccumulativeMappingWriter controllersResourceWriter ;
33
+ private AccumulativeMappingWriter doneablesResourceWriter ;
32
34
private Set <String > generatedDoneableClassFiles = new HashSet <>();
33
35
34
36
@ Override
35
37
public synchronized void init (ProcessingEnvironment processingEnv ) {
36
38
super .init (processingEnv );
37
- controllersResourceWriter = new ControllersResourceWriter (processingEnv );
38
- controllersResourceWriter .loadExistingMappings ();
39
+ controllersResourceWriter = new AccumulativeMappingWriter (CONTROLLERS_RESOURCE_PATH , processingEnv )
40
+ .loadExistingMappings ();
41
+ doneablesResourceWriter = new AccumulativeMappingWriter (DONEABLES_RESOURCE_PATH , processingEnv )
42
+ .loadExistingMappings ();
39
43
}
40
44
41
45
@ Override
@@ -51,6 +55,7 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
51
55
} finally {
52
56
if (roundEnv .processingOver ()) {
53
57
controllersResourceWriter .flush ();
58
+ doneablesResourceWriter .flush ();
54
59
}
55
60
}
56
61
return true ;
@@ -71,7 +76,7 @@ private void generateDoneableClass(TypeElement controllerClassSymbol) {
71
76
if (!generatedDoneableClassFiles .add (destinationClassFileName )) {
72
77
processingEnv .getMessager ().printMessage (Diagnostic .Kind .NOTE ,
73
78
String .format (
74
- "%s already exist ! adding the mapping to the %s" ,
79
+ "%s already exists ! adding the mapping to the %s" ,
75
80
destinationClassFileName ,
76
81
CONTROLLERS_RESOURCE_PATH )
77
82
);
@@ -98,9 +103,11 @@ private void generateDoneableClass(TypeElement controllerClassSymbol) {
98
103
.build ();
99
104
100
105
final PackageElement packageElement = processingEnv .getElementUtils ().getPackageOf (customerResourceTypeElement );
101
- JavaFile file = JavaFile .builder (packageElement .getQualifiedName ().toString (), typeSpec )
106
+ final var packageQualifiedName = packageElement .getQualifiedName ().toString ();
107
+ JavaFile file = JavaFile .builder (packageQualifiedName , typeSpec )
102
108
.build ();
103
109
file .writeTo (out );
110
+ doneablesResourceWriter .add (customResourceType .toString (), makeQualifiedClassName (packageQualifiedName , doneableClassName ));
104
111
}
105
112
} catch (Exception ioException ) {
106
113
ioException .printStackTrace ();
@@ -137,4 +144,11 @@ private List<DeclaredType> collectAllInterfaces(TypeElement element) {
137
144
return null ;
138
145
}
139
146
}
147
+
148
+ private String makeQualifiedClassName (String packageName , String className ) {
149
+ if (packageName .equals ("" )) {
150
+ return className ;
151
+ }
152
+ return packageName + "." + className ;
153
+ }
140
154
}
0 commit comments