diff --git a/operator-framework/src/main/java/com/github/containersolutions/operator/ControllerUtils.java b/operator-framework/src/main/java/com/github/containersolutions/operator/ControllerUtils.java index b83e5ae325..827a27b1ad 100644 --- a/operator-framework/src/main/java/com/github/containersolutions/operator/ControllerUtils.java +++ b/operator-framework/src/main/java/com/github/containersolutions/operator/ControllerUtils.java @@ -15,6 +15,8 @@ class ControllerUtils { + private final static double JAVA_VERSION = Double.parseDouble(System.getProperty("java.specification.version")); + private final static Logger log = LoggerFactory.getLogger(Operator.class); // this is just to support testing, this way we don't try to create class multiple times in memory with same name. @@ -56,7 +58,12 @@ static String getCrdName(ResourceController controller) { CtConstructor ctConstructor = CtNewConstructor.make(argTypes, null, "super($1, $2);", customDoneable); customDoneable.addConstructor(ctConstructor); - Class> doneableClass = (Class>) customDoneable.toClass(); + Class> doneableClass; + if (JAVA_VERSION >= 9) { + doneableClass = (Class>) customDoneable.toClass(customResourceClass); + } else { + doneableClass = (Class>) customDoneable.toClass(); + } doneableClassCache.put(customResourceClass, doneableClass); return doneableClass; } catch (CannotCompileException | NotFoundException e) {