Skip to content

Commit 6c63d08

Browse files
author
Soroosh Sarabadani
committed
initiate resolver in init method
1 parent 6295b36 commit 6c63d08

File tree

2 files changed

+22
-31
lines changed

2 files changed

+22
-31
lines changed

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/annotation/ControllerAnnotationProcessor.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616
import io.fabric8.kubernetes.client.CustomResourceDoneable;
1717
import io.javaoperatorsdk.operator.api.ResourceController;
1818
import java.io.PrintWriter;
19-
import java.util.ArrayList;
2019
import java.util.HashSet;
2120
import java.util.List;
2221
import java.util.Set;
23-
import java.util.stream.Collectors;
2422
import java.util.stream.IntStream;
2523
import javax.annotation.processing.AbstractProcessor;
2624
import javax.annotation.processing.ProcessingEnvironment;
@@ -36,7 +34,6 @@
3634
import javax.lang.model.element.TypeElement;
3735
import javax.lang.model.element.TypeParameterElement;
3836
import javax.lang.model.type.DeclaredType;
39-
import javax.lang.model.type.TypeKind;
4037
import javax.lang.model.type.TypeMirror;
4138
import javax.lang.model.type.TypeVariable;
4239
import javax.tools.Diagnostic;
@@ -49,16 +46,7 @@ public class ControllerAnnotationProcessor extends AbstractProcessor {
4946

5047
private AccumulativeMappingWriter controllersResourceWriter;
5148
private AccumulativeMappingWriter doneablesResourceWriter;
52-
final DeclaredType resourceControllerType =
53-
processingEnv
54-
.getTypeUtils()
55-
.getDeclaredType(
56-
processingEnv
57-
.getElementUtils()
58-
.getTypeElement(ResourceController.class.getCanonicalName()),
59-
processingEnv.getTypeUtils().getWildcardType(null, null));
60-
private final TypeParameterResolver typeParameterResolver = new TypeParameterResolver(
61-
resourceControllerType, 0);
49+
private TypeParameterResolver typeParameterResolver;
6250
private final Set<String> generatedDoneableClassFiles = new HashSet<>();
6351

6452
@Override
@@ -70,6 +58,16 @@ public synchronized void init(ProcessingEnvironment processingEnv) {
7058
doneablesResourceWriter =
7159
new AccumulativeMappingWriter(DONEABLES_RESOURCE_PATH, processingEnv)
7260
.loadExistingMappings();
61+
62+
final DeclaredType resourceControllerType =
63+
processingEnv
64+
.getTypeUtils()
65+
.getDeclaredType(
66+
processingEnv
67+
.getElementUtils()
68+
.getTypeElement(ResourceController.class.getCanonicalName()),
69+
processingEnv.getTypeUtils().getWildcardType(null, null));
70+
typeParameterResolver = new TypeParameterResolver(resourceControllerType, 0);
7371
}
7472

7573
@Override
@@ -157,8 +155,10 @@ private void generateDoneableClass(TypeElement controllerClassSymbol) {
157155

158156
private TypeMirror findResourceType(TypeElement controllerClassSymbol) throws Exception {
159157
try {
160-
final var chain = typeParameterResolver
161-
.findChain(processingEnv.getTypeUtils(), processingEnv.getElementUtils(),
158+
final var chain =
159+
typeParameterResolver.findChain(
160+
processingEnv.getTypeUtils(),
161+
processingEnv.getElementUtils(),
162162
(DeclaredType) controllerClassSymbol.asType());
163163
final var customResourceClass = getCustomResourceClass(chain);
164164
return customResourceClass;

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/annotation/TypeParameterResolver.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ public TypeParameterResolver(DeclaredType interestedClass, int interestedTypeArg
2020
this.interestedTypeArgumentIndex = interestedTypeArgumentIndex;
2121
}
2222

23-
24-
public List<DeclaredType> findChain(Types typeUtils, Elements elementUtils,
25-
DeclaredType declaredType) {
23+
public List<DeclaredType> findChain(
24+
Types typeUtils, Elements elementUtils, DeclaredType declaredType) {
2625

2726
final var result = new ArrayList<DeclaredType>();
2827
result.add(declaredType);
@@ -31,9 +30,7 @@ public List<DeclaredType> findChain(Types typeUtils, Elements elementUtils,
3130
boolean interfaceFound = false;
3231
final var matchingInterfaces =
3332
superElement.getInterfaces().stream()
34-
.filter(
35-
intface ->
36-
typeUtils.isAssignable(intface, interestedClass))
33+
.filter(intface -> typeUtils.isAssignable(intface, interestedClass))
3734
.map(i -> (DeclaredType) i)
3835
.collect(Collectors.toList());
3936
if (!matchingInterfaces.isEmpty()) {
@@ -47,12 +44,9 @@ public List<DeclaredType> findChain(Types typeUtils, Elements elementUtils,
4744
final var marchingInterfaces =
4845
((TypeElement) lastFoundInterface.asElement())
4946
.getInterfaces().stream()
50-
.filter(
51-
intface ->
52-
typeUtils
53-
.isAssignable(intface, interestedClass))
54-
.map(i -> (DeclaredType) i)
55-
.collect(Collectors.toList());
47+
.filter(intface -> typeUtils.isAssignable(intface, interestedClass))
48+
.map(i -> (DeclaredType) i)
49+
.collect(Collectors.toList());
5650

5751
if (marchingInterfaces.size() > 0) {
5852
result.addAll(marchingInterfaces);
@@ -69,9 +63,7 @@ public List<DeclaredType> findChain(Types typeUtils, Elements elementUtils,
6963
superElement = (TypeElement) superclass.asElement();
7064
final var matchedInterfaces =
7165
superElement.getInterfaces().stream()
72-
.filter(
73-
intface ->
74-
typeUtils.isAssignable(intface, interestedClass))
66+
.filter(intface -> typeUtils.isAssignable(intface, interestedClass))
7567
.map(i -> (DeclaredType) i)
7668
.collect(Collectors.toList());
7769
if (matchedInterfaces.size() > 0) {
@@ -88,5 +80,4 @@ public List<DeclaredType> findChain(Types typeUtils, Elements elementUtils,
8880

8981
return result;
9082
}
91-
9283
}

0 commit comments

Comments
 (0)