in flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/validation/CrdCompatibilityChecker.java [113:144]
protected static void checkTypeCompatibility(String path, JsonNode oldNode, JsonNode newNode) {
if (!oldNode.has("type") && oldNode.has("anyOf")) {
if (!oldNode.equals(newNode)) {
err("AnyOf type mismatch for" + path);
} else {
return;
}
}
String oldType = oldNode.get("type").asText();
if (!oldType.equals(newNode.get("type").asText())) {
err("Type mismatch for " + path);
}
verifyOtherPropsMatch(path, oldNode, newNode);
if (oldType.equals("string")) {
checkStringTypeCompatibility(path, oldNode, newNode);
}
if (oldType.equals("object") && oldNode.has("additionalProperties")) {
checkTypeCompatibility(
path + ".additionalProperties",
oldNode.get("additionalProperties"),
newNode.get("additionalProperties"));
}
if (oldType.equals("array")) {
checkObjectCompatibility(path + ".items", oldNode.get("items"), newNode.get("items"));
}
}