Unify GeneratedType verification 51/109351/1
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Dec 2023 12:58:17 +0000 (13:58 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Dec 2023 12:59:47 +0000 (13:59 +0100)
We have number of places where we do verify a Type is a GeneratedType.

Introduce AbstractExplicitGenerator.verifyGeneratedType() to reduce
duplication and explicit casts.

Change-Id: Idcdc2344d59befa2c39d74893348de6627b6c39d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractCompositeGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractExplicitGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/IdentityGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OpaqueObjectGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/TypedefGenerator.java

index 938412c1d5e9ff787d1560d36d71d6bf08b26676..37918184d9472df5afb4cc504b2e9d8d13916e0a 100644 (file)
@@ -19,7 +19,6 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.model.api.Enumeration;
 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
-import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.mdsal.binding.model.ri.BindingTypes;
@@ -172,16 +171,14 @@ public abstract class AbstractCompositeGenerator<S extends EffectiveStatement<?,
 
     @Override
     final R createExternalRuntimeType(final Type type) {
-        verify(type instanceof GeneratedType, "Unexpected type %s", type);
-        return createBuilder(statement()).populate(new AugmentResolver(), this).build((GeneratedType) type);
+        return createBuilder(statement()).populate(new AugmentResolver(), this).build(verifyGeneratedType(type));
     }
 
     abstract @NonNull CompositeRuntimeTypeBuilder<S, R> createBuilder(S statement);
 
     @Override
     final R createInternalRuntimeType(final AugmentResolver resolver, final S statement, final Type type) {
-        verify(type instanceof GeneratedType, "Unexpected type %s", type);
-        return createBuilder(statement).populate(resolver, this).build((GeneratedType) type);
+        return createBuilder(statement).populate(resolver, this).build(verifyGeneratedType(type));
     }
 
     @Override
index 609bdedca704a06559f95405e6e513cec559dc7f..1ffd2928651dca6e3126aaf9d0ef35b58ddd1400 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.generator.impl.reactor.CollisionDomain.Member;
 import org.opendaylight.mdsal.binding.generator.impl.tree.StatementRepresentation;
+import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.MethodSignature.ValueMechanics;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.TypeMemberComment;
@@ -366,4 +367,11 @@ public abstract class AbstractExplicitGenerator<S extends EffectiveStatement<?,
         }
         return helper;
     }
+
+    static final @NonNull GeneratedType verifyGeneratedType(final Type type) {
+        if (type instanceof GeneratedType ret) {
+            return ret;
+        }
+        throw new VerifyException("Unexpected type " + type);
+    }
 }
index 26814de84df06e3722e4381f8b7e7ea34661a8ae..9ead95229f34c61dbdddbf954f5eb6ad0da19d65 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
-import static com.google.common.base.Verify.verify;
 import static org.opendaylight.mdsal.binding.model.ri.BindingTypes.BASE_IDENTITY;
 
 import java.util.List;
@@ -68,7 +67,7 @@ public final class IdentityGenerator
 
         narrowImplementedInterface(builder);
 
-        final ModuleGenerator module = currentModule();
+        final var module = currentModule();
         module.addQNameConstant(builder, localName());
 
         // Constant implementation
@@ -83,8 +82,7 @@ public final class IdentityGenerator
 
     @Override
     IdentityRuntimeType createExternalRuntimeType(final Type type) {
-        verify(type instanceof GeneratedType, "Unexpected type %s", type);
-        return new DefaultIdentityRuntimeType((GeneratedType) type, statement());
+        return new DefaultIdentityRuntimeType(verifyGeneratedType(type), statement());
     }
 
     @Override
index 3c2dc07662a0f8d6b00a156051b684f0bd1ca492..35f1c45f7df66cdb32cad4743e2b93e17443db98 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
-import static com.google.common.base.Verify.verify;
-
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultAnydataRuntimeType;
 import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultAnyxmlRuntimeType;
@@ -107,17 +105,15 @@ abstract class OpaqueObjectGenerator<S extends DataTreeEffectiveStatement<?>, R
     }
 
     @Override
-    final @NonNull R createExternalRuntimeType(final Type type) {
-        verify(type instanceof GeneratedType, "Unexpected type %s", type);
-        return createExternalRuntimeType((GeneratedType) type);
+    final R createExternalRuntimeType(final Type type) {
+        return createExternalRuntimeType(verifyGeneratedType(type));
     }
 
     abstract @NonNull R createExternalRuntimeType(@NonNull GeneratedType type);
 
     @Override
     final R createInternalRuntimeType(final AugmentResolver resolver, final S statement, final Type type) {
-        verify(type instanceof GeneratedType, "Unexpected type %s", type);
-        return createInternalRuntimeType(statement, (GeneratedType) type);
+        return createInternalRuntimeType(statement, verifyGeneratedType(type));
     }
 
     abstract @NonNull R createInternalRuntimeType(@NonNull S statement, @NonNull GeneratedType type);
index c77394bd63be5eef14a56f442d7be9ce8230a213..446ddfd75cf14112a306267c7934c01a875c7e8f 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
-import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
@@ -15,7 +14,6 @@ import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultTypedefRuntimeType;
 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
-import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
@@ -64,7 +62,7 @@ final class TypedefGenerator extends AbstractTypeObjectGenerator<TypedefEffectiv
     void bindDerivedGenerators(final TypeReference reference) {
         // Trigger any derived resolvers ...
         if (derivedGenerators != null) {
-            for (AbstractTypeObjectGenerator<?, ?> derived : derivedGenerators) {
+            for (var derived : derivedGenerators) {
                 derived.bindTypeDefinition(reference);
             }
         }
@@ -85,14 +83,14 @@ final class TypedefGenerator extends AbstractTypeObjectGenerator<TypedefEffectiv
     @Override
     GeneratedTransferObject createDerivedType(final TypeBuilderFactory builderFactory,
             final GeneratedTransferObject baseType) {
-        final GeneratedTOBuilder builder = builderFactory.newGeneratedTOBuilder(typeName());
+        final var builder = builderFactory.newGeneratedTOBuilder(typeName());
         builder.setTypedef(true);
         builder.setExtendsType(baseType);
         builder.setIsUnion(baseType.isUnionType());
         builder.setRestrictions(computeRestrictions());
         YangSourceDefinition.of(currentModule().statement(), statement()).ifPresent(builder::setYangSourceDefinition);
 
-        final TypeDefinition<?> typedef = statement().getTypeDefinition();
+        final var typedef = statement().getTypeDefinition();
         annotateDeprecatedIfNecessary(typedef, builder);
         addStringRegExAsConstant(builder, resolveRegExpressions(typedef));
         addUnits(builder, typedef);
@@ -130,8 +128,7 @@ final class TypedefGenerator extends AbstractTypeObjectGenerator<TypedefEffectiv
 
     @Override
     TypedefRuntimeType createExternalRuntimeType(final Type type) {
-        verify(type instanceof GeneratedType, "Unexpected type %s", type);
-        return new DefaultTypedefRuntimeType((GeneratedType) type, statement());
+        return new DefaultTypedefRuntimeType(verifyGeneratedType(type), statement());
     }
 
     @Override