From 0d15b107cf64e1e0ae831ff5dfccf1de73adc819 Mon Sep 17 00:00:00 2001 From: Dusan Jakub Date: Fri, 26 Aug 2022 21:36:26 +0200 Subject: [PATCH] last minute refactoring and reformat. fabric8io/kubernetes-client#4350 --- .../crd/generator/AbstractJsonSchema.java | 60 +------------------ .../crd/generator/InternalSchemaSwaps.java | 25 ++++---- .../crd/generator/annotation/SchemaSwap.java | 2 +- 3 files changed, 17 insertions(+), 70 deletions(-) diff --git a/crd-generator/api/src/main/java/io/fabric8/crd/generator/AbstractJsonSchema.java b/crd-generator/api/src/main/java/io/fabric8/crd/generator/AbstractJsonSchema.java index 76759ca3511..8edf0032974 100644 --- a/crd-generator/api/src/main/java/io/fabric8/crd/generator/AbstractJsonSchema.java +++ b/crd-generator/api/src/main/java/io/fabric8/crd/generator/AbstractJsonSchema.java @@ -29,7 +29,6 @@ import org.slf4j.LoggerFactory; import java.util.*; -import java.util.stream.Collectors; import static io.sundr.model.utils.Types.BOOLEAN_REF; import static io.sundr.model.utils.Types.DOUBLE_REF; @@ -122,58 +121,10 @@ public static String getSchemaTypeFor(TypeRef typeRef) { protected T internalFrom(TypeDef definition, String... ignore) { InternalSchemaSwaps schemaSwaps = new InternalSchemaSwaps(); T ret = internalFromImpl(definition, new HashSet<>(), schemaSwaps, ignore); - validateRemainingSchemaSwaps(schemaSwaps); + schemaSwaps.throwIfUnmatchedSwaps(); return ret; } - private static class InternalSchemaSwap { - final ClassRef targetType; - final ClassRef originalType; - final String fieldName; - - public InternalSchemaSwap(ClassRef originalType, String fieldName, ClassRef targetType) { - this.originalType = originalType; - this.fieldName = fieldName; - this.targetType = targetType; - } - - public ClassRef getTargetType() { - return targetType; - } - - public ClassRef getOriginalType() { - return originalType; - } - - public String getFieldName() { - return fieldName; - } - - @Override - public String toString() { - return "{" + - "targetType=" + targetType + - ", originalType=" + originalType + - ", fieldName='" + fieldName + '\'' + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - InternalSchemaSwap that = (InternalSchemaSwap) o; - return targetType.equals(that.targetType) && originalType.equals(that.originalType) && fieldName.equals(that.fieldName); - } - - @Override - public int hashCode() { - return Objects.hash(targetType, originalType, fieldName); - } - } - private static ClassRef extractClassRef(Object type) { if (type != null) { if (type instanceof ClassRef) { @@ -225,15 +176,6 @@ private void extractSchemaSwap(ClassRef definitionType, Object annotation, Inter } } - private void validateRemainingSchemaSwaps(InternalSchemaSwaps schemaSwaps) { - String unmatchedSchemaSwaps = schemaSwaps.getUnusedSwaps() - .map(Object::toString) - .collect(Collectors.joining(",")); - if (!unmatchedSchemaSwaps.isEmpty()) { - throw new IllegalArgumentException("Unmatched SchemaSwaps: " + unmatchedSchemaSwaps); - } - } - private T internalFromImpl(TypeDef definition, Set visited, InternalSchemaSwaps schemaSwaps, String... ignore) { final B builder = newBuilder(); Set ignores = ignore.length > 0 ? new LinkedHashSet<>(Arrays.asList(ignore)) diff --git a/crd-generator/api/src/main/java/io/fabric8/crd/generator/InternalSchemaSwaps.java b/crd-generator/api/src/main/java/io/fabric8/crd/generator/InternalSchemaSwaps.java index ca29be29db9..2c1a030aef4 100644 --- a/crd-generator/api/src/main/java/io/fabric8/crd/generator/InternalSchemaSwaps.java +++ b/crd-generator/api/src/main/java/io/fabric8/crd/generator/InternalSchemaSwaps.java @@ -22,22 +22,18 @@ import java.util.Objects; import java.util.Optional; import java.util.StringJoiner; -import java.util.stream.Stream; +import java.util.stream.Collectors; public class InternalSchemaSwaps { - private final Map swaps = new HashMap<>(); + private final Map swaps = new HashMap<>(); public void registerSwap(ClassRef definitionType, ClassRef originalType, String fieldName, ClassRef targetType) { - InternalSchemaSwap value = new InternalSchemaSwap(definitionType, originalType, fieldName, targetType); + Value value = new Value(definitionType, originalType, fieldName, targetType); swaps.put(new Key(originalType, fieldName), value); } - public Stream getUnusedSwaps() { - return swaps.values().stream().filter(value -> !value.used); - } - public Optional lookupAndMark(ClassRef originalType, String name) { - InternalSchemaSwap value = swaps.get(new Key(originalType, name)); + Value value = swaps.get(new Key(originalType, name)); if (value != null) { value.markUsed(); return Optional.of(value.getTargetType()); @@ -46,6 +42,15 @@ public Optional lookupAndMark(ClassRef originalType, String name) { } } + public void throwIfUnmatchedSwaps() { + String unmatchedSchemaSwaps = swaps.values().stream().filter(value -> !value.used) + .map(Object::toString) + .collect(Collectors.joining(", ")); + if (!unmatchedSchemaSwaps.isEmpty()) { + throw new IllegalArgumentException("Unmatched SchemaSwaps: " + unmatchedSchemaSwaps); + } + } + private static final class Key { private final ClassRef originalType; private final String fieldName; @@ -89,14 +94,14 @@ public String toString() { } } - public static class InternalSchemaSwap { + private static class Value { private final ClassRef originalType; private final String fieldName; private final ClassRef targetType; private boolean used; private final ClassRef definitionType; - public InternalSchemaSwap(ClassRef definitionType, ClassRef originalType, String fieldName, ClassRef targetType) { + public Value(ClassRef definitionType, ClassRef originalType, String fieldName, ClassRef targetType) { this.definitionType = definitionType; this.originalType = originalType; this.fieldName = fieldName; diff --git a/crd-generator/api/src/main/java/io/fabric8/crd/generator/annotation/SchemaSwap.java b/crd-generator/api/src/main/java/io/fabric8/crd/generator/annotation/SchemaSwap.java index 86e889edaf2..4903d4e31c4 100644 --- a/crd-generator/api/src/main/java/io/fabric8/crd/generator/annotation/SchemaSwap.java +++ b/crd-generator/api/src/main/java/io/fabric8/crd/generator/annotation/SchemaSwap.java @@ -25,7 +25,7 @@ * * @see SchemaFrom */ -@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE_USE, ElementType.TYPE}) +@Target({ ElementType.ANNOTATION_TYPE, ElementType.TYPE_USE, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Repeatable(SchemaSwaps.class) public @interface SchemaSwap {