Skip to content

Commit b207ba9

Browse files
author
Soroosh Sarabadani
committed
Get rid of com.sun... pacages
1 parent be8468d commit b207ba9

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

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

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,24 @@
22

33
import com.google.auto.service.AutoService;
44
import com.squareup.javapoet.*;
5-
import com.sun.tools.javac.code.Symbol;
6-
import com.sun.tools.javac.code.Type;
5+
76
import io.fabric8.kubernetes.api.builder.Function;
87
import io.fabric8.kubernetes.client.CustomResourceDoneable;
98
import io.javaoperatorsdk.operator.api.ResourceController;
109
import io.quarkus.runtime.annotations.RegisterForReflection;
1110

1211
import javax.annotation.processing.*;
1312
import javax.lang.model.SourceVersion;
14-
import javax.lang.model.element.Element;
15-
import javax.lang.model.element.Modifier;
16-
import javax.lang.model.element.TypeElement;
13+
import javax.lang.model.element.*;
14+
import javax.lang.model.type.DeclaredType;
15+
import javax.lang.model.type.TypeKind;
1716
import javax.lang.model.type.TypeMirror;
1817
import javax.tools.JavaFileObject;
19-
import java.io.IOException;
2018
import java.io.PrintWriter;
2119
import java.util.ArrayList;
2220
import java.util.List;
2321
import java.util.Set;
22+
import java.util.stream.Collectors;
2423

2524
@SupportedAnnotationTypes(
2625
"io.javaoperatorsdk.operator.api.Controller")
@@ -32,22 +31,22 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
3231
for (TypeElement annotation : annotations) {
3332
Set<? extends Element> annotatedElements
3433
= roundEnv.getElementsAnnotatedWith(annotation);
35-
annotatedElements.stream().filter(element -> element instanceof Symbol.ClassSymbol)
36-
.map(e -> (Symbol.ClassSymbol) e)
34+
annotatedElements.stream().filter(element -> element.getKind().equals(ElementKind.CLASS))
35+
.map(e -> (TypeElement) e)
3736
.forEach(this::generateDoneableClass);
3837
}
3938
return false;
4039
}
4140

42-
private void generateDoneableClass(Symbol.ClassSymbol controllerClassSymbol) {
41+
private void generateDoneableClass(TypeElement controllerClassSymbol) {
4342
try {
4443
final TypeMirror resourceType = findResourceType(controllerClassSymbol);
45-
Symbol.ClassSymbol customerResourceSymbol = (Symbol.ClassSymbol) processingEnv
44+
TypeElement customerResourceTypeElement = processingEnv
4645
.getElementUtils()
4746
.getTypeElement(resourceType.toString());
4847

4948
JavaFileObject builderFile = processingEnv.getFiler()
50-
.createSourceFile(customerResourceSymbol.className() + "Doneable");
49+
.createSourceFile(customerResourceTypeElement.getSimpleName() + "Doneable");
5150

5251
try (PrintWriter out = new PrintWriter(builderFile.openWriter())) {
5352
final MethodSpec constructor = MethodSpec.constructorBuilder()
@@ -57,46 +56,42 @@ private void generateDoneableClass(Symbol.ClassSymbol controllerClassSymbol) {
5756
.addStatement("super(resource,function)")
5857
.build();
5958

60-
final TypeSpec typeSpec = TypeSpec.classBuilder(customerResourceSymbol.name + "Doneable")
59+
final TypeSpec typeSpec = TypeSpec.classBuilder(customerResourceTypeElement.getSimpleName() + "Doneable")
6160
.addAnnotation(RegisterForReflection.class)
6261
.superclass(ParameterizedTypeName.get(ClassName.get(CustomResourceDoneable.class), TypeName.get(resourceType)))
6362
.addModifiers(Modifier.PUBLIC)
6463
.addMethod(constructor)
6564
.build();
6665

67-
JavaFile file = JavaFile.builder(customerResourceSymbol.packge().fullname.toString(), typeSpec)
66+
final PackageElement packageElement = processingEnv.getElementUtils().getPackageOf(customerResourceTypeElement);
67+
JavaFile file = JavaFile.builder(packageElement.getQualifiedName().toString(), typeSpec)
6868
.build();
6969
file.writeTo(out);
7070
}
71-
} catch (IOException ioException) {
71+
} catch (Exception ioException) {
7272
ioException.printStackTrace();
73-
} catch (Exception ex) {
74-
ex.printStackTrace();
7573
}
7674
}
7775

78-
private TypeMirror findResourceType(Symbol.ClassSymbol controllerClassSymbol) throws Exception {
79-
final Type controllerType = collectAllInterfaces(controllerClassSymbol)
76+
private TypeMirror findResourceType(TypeElement controllerClassSymbol) throws Exception {
77+
final DeclaredType controllerType = collectAllInterfaces(controllerClassSymbol)
8078
.stream()
8179
.filter(i -> i.toString()
8280
.startsWith(ResourceController.class.getCanonicalName())
8381
)
8482
.findFirst()
8583
.orElseThrow(() -> new Exception("ResourceController is not implemented by " + controllerClassSymbol.toString()));
8684

87-
final TypeMirror resourceType = controllerType.getTypeArguments().get(0);
88-
return resourceType;
85+
return controllerType.getTypeArguments().get(0);
8986
}
9087

91-
private List<Type> collectAllInterfaces(Symbol.ClassSymbol classSymbol) {
92-
List<Type> interfaces = new ArrayList<>(classSymbol.getInterfaces());
93-
Symbol.ClassSymbol superclass = (Symbol.ClassSymbol) processingEnv.getTypeUtils().asElement(classSymbol.getSuperclass());
94-
95-
while (superclass != null) {
96-
interfaces.addAll(superclass.getInterfaces());
97-
superclass = (Symbol.ClassSymbol) processingEnv.getTypeUtils().asElement(superclass.getSuperclass());
88+
private List<DeclaredType> collectAllInterfaces(TypeElement element) {
89+
List<DeclaredType> interfaces = new ArrayList<>(element.getInterfaces()).stream().map(t -> (DeclaredType) t).collect(Collectors.toList());
90+
TypeElement superclass = ((TypeElement) ((DeclaredType) element.getSuperclass()).asElement());
91+
while (superclass.getSuperclass().getKind() != TypeKind.NONE) {
92+
interfaces.addAll(superclass.getInterfaces().stream().map(t -> (DeclaredType) t).collect(Collectors.toList()));
93+
superclass = ((TypeElement) ((DeclaredType) superclass.getSuperclass()).asElement());
9894
}
99-
10095
return interfaces;
10196
}
10297
}

0 commit comments

Comments
 (0)