X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjava%2Fapi%2Fgenerator%2FAbstractRangeGenerator.java;h=27c580f9af18f29306e8c8c1a6d111bb7f925863;hb=11408d627adca7eb71ac956c3ad01f75b6b91596;hp=e5c09346be472e1a2f7b610ef588130fc83d15ac;hpb=c241dcfa5322ac10810a1068ccd2eb57f6f2dbb2;p=mdsal.git diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java index e5c09346be..27c580f9af 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java @@ -7,12 +7,13 @@ */ package org.opendaylight.mdsal.binding.java.api.generator; -import com.google.common.base.Preconditions; +import static com.google.common.base.Verify.verifyNotNull; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -import java.util.Map; import java.util.function.Function; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.model.api.ConcreteType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @@ -21,32 +22,40 @@ import org.slf4j.LoggerFactory; abstract class AbstractRangeGenerator> { private static final Logger LOG = LoggerFactory.getLogger(AbstractRangeGenerator.class); - private static final Map> GENERATORS; + private static final ImmutableMap> GENERATORS; - private static void addGenerator(final Builder> b, final AbstractRangeGenerator generator) { - b.put(generator.getTypeClass().getCanonicalName(), generator); + private static void addGenerator(final Builder> builder, + final AbstractRangeGenerator generator) { + builder.put(generator.getTypeClass().getCanonicalName(), generator); } static { - final Builder> b = ImmutableMap.> builder(); + final Builder> b = ImmutableMap.builder(); addGenerator(b, new ByteRangeGenerator()); addGenerator(b, new ShortRangeGenerator()); addGenerator(b, new IntegerRangeGenerator()); addGenerator(b, new LongRangeGenerator()); - addGenerator(b, new BigDecimalRangeGenerator()); - addGenerator(b, new BigIntegerRangeGenerator()); + addGenerator(b, new Decimal64RangeGenerator()); + addGenerator(b, new Uint8RangeGenerator()); + addGenerator(b, new Uint16RangeGenerator()); + addGenerator(b, new Uint32RangeGenerator()); + addGenerator(b, new Uint64RangeGenerator()); GENERATORS = b.build(); } - private final Class type; + private final @NonNull Class type; protected AbstractRangeGenerator(final Class typeClass) { - this.type = Preconditions.checkNotNull(typeClass); + this.type = requireNonNull(typeClass); } - static AbstractRangeGenerator forType(@Nonnull final Type type) { + static @NonNull AbstractRangeGenerator forType(final @NonNull Type type) { final ConcreteType javaType = TypeUtils.getBaseYangType(type); - return GENERATORS.get(javaType.getFullyQualifiedName()); + return forName(javaType.getFullyQualifiedName()); + } + + private static @NonNull AbstractRangeGenerator forName(final String fqcn) { + return verifyNotNull(GENERATORS.get(fqcn), "Unhandled type %s", fqcn); } /** @@ -54,7 +63,7 @@ abstract class AbstractRangeGenerator> { * * @return A class object */ - @Nonnull protected final Class getTypeClass() { + protected final @NonNull Class getTypeClass() { return type; } @@ -63,7 +72,7 @@ abstract class AbstractRangeGenerator> { * * @return Fully-qualified name */ - @Nonnull protected final String getTypeName() { + protected final @NonNull String getTypeName() { return type.getName(); } @@ -73,7 +82,7 @@ abstract class AbstractRangeGenerator> { * @param value Value as a Number * @return Value in native format. */ - @Nonnull protected final T getValue(final Number value) { + protected final @NonNull T getValue(final Number value) { if (type.isInstance(value)) { return type.cast(value); } @@ -82,7 +91,7 @@ abstract class AbstractRangeGenerator> { final T ret = convert(value); // Check if the conversion lost any precision by performing conversion the other way around - final AbstractRangeGenerator gen = GENERATORS.get(value.getClass().getName()); + final AbstractRangeGenerator gen = forName(value.getClass().getName()); final Number check = gen.convert(ret); if (!value.equals(check)) { LOG.warn("Number class conversion from {} to {} truncated value {} to {}", value.getClass(), type, value, @@ -103,7 +112,7 @@ abstract class AbstractRangeGenerator> { * @param value Number value * @return Java language string representation */ - @Nonnull protected abstract String format(T value); + protected abstract @NonNull String format(T value); /** * Generate the checker method source code. @@ -111,19 +120,23 @@ abstract class AbstractRangeGenerator> { * @param constraints Restrictions which need to be applied. * @return Method source code. */ - @Nonnull protected abstract String generateRangeCheckerImplementation(@Nonnull String checkerName, - @Nonnull RangeConstraint constraints, Function, String> classImporter); + protected abstract @NonNull String generateRangeCheckerImplementation(@NonNull String checkerName, + @NonNull RangeConstraint constraints, Function, String> classImporter); - private static String rangeCheckerName(final String member) { + private static @NonNull String rangeCheckerName(final String member) { return "check" + member + "Range"; } - String generateRangeChecker(@Nonnull final String member, @Nonnull final RangeConstraint constraints, + String generateRangeChecker(final @NonNull String member, final @NonNull RangeConstraint constraints, final JavaFileTemplate template) { return generateRangeCheckerImplementation(rangeCheckerName(member), constraints, template::importedName); } - String generateRangeCheckerCall(@Nonnull final String member, @Nonnull final String valueReference) { - return rangeCheckerName(member) + '(' + valueReference + ");\n"; + String generateRangeCheckerCall(final @NonNull String member, final @NonNull String valueReference) { + return rangeCheckerName(member) + '(' + valueReference + primitiveRef() + ");\n"; + } + + String primitiveRef() { + return ""; } }