import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
private final RangeSet<N> rangeConstraints;
- AbstractIntegerStringCodec(final Optional<T> typeDefinition, final Optional<RangeConstraint<?>> constraint,
+ AbstractIntegerStringCodec(final Optional<T> typeDefinition, final Optional<RangeConstraint<N>> constraint,
final Class<N> outputClass) {
super(typeDefinition, outputClass);
- rangeConstraints = (RangeSet<N>) constraint.map(RangeConstraint::getAllowedRanges).orElse(null);
+ rangeConstraints = constraint.map(RangeConstraint::getAllowedRanges).orElse(null);
}
public static AbstractIntegerStringCodec<?, ? extends IntegerTypeDefinition<?, ?>> from(
}
}
- protected static Optional<RangeConstraint<?>> extractRange(final IntegerTypeDefinition<?, ?> type) {
- return type == null ? Optional.empty() : type.getRangeConstraint();
- }
-
- protected static Optional<RangeConstraint<?>> extractRange(final UnsignedIntegerTypeDefinition<?, ?> type) {
+ protected static <N extends Number & Comparable<N>> Optional<RangeConstraint<N>> extractRange(
+ final RangeRestrictedTypeDefinition<?, N> type) {
return type == null ? Optional.empty() : type.getRangeConstraint();
}
import com.google.common.annotations.Beta;
import com.google.common.collect.Range;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.concepts.Immutable;
@Beta
return number;
}
- public abstract <T extends Number & Comparable<T>> T resolveLength(Range<? extends T> span);
+ public abstract <T extends Number & Comparable<T>> @NonNull T resolveLength(Range<? extends T> span);
- public abstract <T extends Number & Comparable<T>> T resolveRange(Range<? extends T> span);
+ public abstract <T extends Number & Comparable<T>> @NonNull T resolveRange(Range<? extends T> span);
@Override
public abstract String toString();
*/
package org.opendaylight.yangtools.yang.model.api.type;
+import java.math.BigDecimal;
+
/**
* Contains methods for getting data from the YANG <code>type</code> substatement for <code>decimal64</code> built-in
* type.
*/
-public interface DecimalTypeDefinition extends RangeRestrictedTypeDefinition<DecimalTypeDefinition> {
+public interface DecimalTypeDefinition extends RangeRestrictedTypeDefinition<DecimalTypeDefinition, BigDecimal> {
/**
* Returns integer between 1 and 18 inclusively.
*
* @param <T> concrete type definition
*/
public interface IntegerTypeDefinition<N extends Number & Comparable<N>, T extends IntegerTypeDefinition<N, T>>
- extends RangeRestrictedTypeDefinition<T> {
+ extends RangeRestrictedTypeDefinition<T, N> {
}
*
* @return Set of allowed lengths.
*/
- RangeSet<? extends T> getAllowedRanges();
+ RangeSet<T> getAllowedRanges();
}
* Interface for {@link TypeDefinition}s which can have their values restricted to a set of allowed values.
*
* @param <T> Concrete {@link TypeDefinition} subinterface
+ * @param <N> Native data type
*/
-public interface RangeRestrictedTypeDefinition<T extends TypeDefinition<T>> extends TypeDefinition<T> {
+public interface RangeRestrictedTypeDefinition<T extends TypeDefinition<T>, N extends Number & Comparable<N>>
+ extends TypeDefinition<T> {
/**
* Returns range constraint of this type, if applicable. This is the effective constraint, e.g. it includes any
* range constraints implied by base type hierarchy.
* @return range constraint which are specified in the <code>range</code> substatement of the <code>type</code>
* statement.
*/
- Optional<RangeConstraint<?>> getRangeConstraint();
+ Optional<RangeConstraint<N>> getRangeConstraint();
}
* @param <T> concrete type definition
*/
public interface UnsignedIntegerTypeDefinition<N extends Number & Comparable<N>,
- T extends UnsignedIntegerTypeDefinition<N, T>> extends RangeRestrictedTypeDefinition<T> {
+ T extends UnsignedIntegerTypeDefinition<N, T>> extends RangeRestrictedTypeDefinition<T, N> {
}
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
-abstract class AbstractRangeRestrictedBaseType<T extends RangeRestrictedTypeDefinition<T>,
- C extends Number & Comparable<C>> extends AbstractBaseType<T> implements RangeRestrictedTypeDefinition<T> {
+abstract class AbstractRangeRestrictedBaseType<T extends RangeRestrictedTypeDefinition<T, N>,
+ N extends Number & Comparable<N>> extends AbstractBaseType<T> implements RangeRestrictedTypeDefinition<T, N> {
private static final ConstraintMetaDefinition BUILTIN_CONSTRAINT = new ConstraintMetaDefinition() {
@Override
}
};
- private final RangeConstraint<?> rangeConstraint;
+ private final RangeConstraint<N> rangeConstraint;
- AbstractRangeRestrictedBaseType(final QName qname, final C minValue, final C maxValue) {
+ AbstractRangeRestrictedBaseType(final QName qname, final N minValue, final N maxValue) {
super(qname);
this.rangeConstraint = new ResolvedRangeConstraint<>(BUILTIN_CONSTRAINT, ImmutableRangeSet.of(
Range.closed(minValue, maxValue)));
}
AbstractRangeRestrictedBaseType(final SchemaPath path, final List<UnknownSchemaNode> unknownSchemaNodes,
- final RangeConstraint<?> rangeConstraint) {
+ final RangeConstraint<N> rangeConstraint) {
super(path, unknownSchemaNodes);
this.rangeConstraint = requireNonNull(rangeConstraint);
}
@Override
@Nonnull
- public final Optional<RangeConstraint<?>> getRangeConstraint() {
+ public final Optional<RangeConstraint<N>> getRangeConstraint() {
return Optional.of(rangeConstraint);
}
}
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
-abstract class AbstractRangeRestrictedDerivedType<T extends RangeRestrictedTypeDefinition<T>>
- extends AbstractDerivedType<T> implements RangeRestrictedTypeDefinition<T> {
+abstract class AbstractRangeRestrictedDerivedType<T extends RangeRestrictedTypeDefinition<T, N>,
+ N extends Number & Comparable<N>> extends AbstractDerivedType<T>
+ implements RangeRestrictedTypeDefinition<T, N> {
AbstractRangeRestrictedDerivedType(final T baseType, final SchemaPath path,
final Object defaultValue, final String description, final String reference, final Status status,
@Nonnull
@Override
- public final Optional<RangeConstraint<?>> getRangeConstraint() {
+ public final Optional<RangeConstraint<N>> getRangeConstraint() {
return baseType().getRangeConstraint();
}
}
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
-abstract class AbstractRangeRestrictedType<T extends RangeRestrictedTypeDefinition<T>>
- extends AbstractRestrictedType<T> implements RangeRestrictedTypeDefinition<T> {
- private final @Nullable RangeConstraint<?> rangeConstraint;
+abstract class AbstractRangeRestrictedType<T extends RangeRestrictedTypeDefinition<T, N>,
+ N extends Number & Comparable<N>> extends AbstractRestrictedType<T>
+ implements RangeRestrictedTypeDefinition<T, N> {
+ private final @Nullable RangeConstraint<N> rangeConstraint;
AbstractRangeRestrictedType(final T baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<N> rangeConstraint) {
super(baseType, path, unknownSchemaNodes);
this.rangeConstraint = rangeConstraint;
}
@Override
@Nonnull
- public final Optional<RangeConstraint<?>> getRangeConstraint() {
+ public final Optional<RangeConstraint<N>> getRangeConstraint() {
return Optional.ofNullable(rangeConstraint);
}
}
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.LengthRestrictedTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
-import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
return type;
}
- private static <T extends RangeRestrictedTypeDefinition<T>> T baseTypeIfNotConstrained(final T type) {
+ private static <T extends RangeRestrictedTypeDefinition<T, ?>> T baseTypeIfNotConstrained(final T type) {
return baseTypeIfNotConstrained(type, type.getBaseType());
}
- private static <T extends RangeRestrictedTypeDefinition<T>> T baseTypeIfNotConstrained(final T type,
+ private static <T extends RangeRestrictedTypeDefinition<T, ?>> T baseTypeIfNotConstrained(final T type,
final T base) {
- final Optional<RangeConstraint<?>> optConstraint = type.getRangeConstraint();
+ final Optional<?> optConstraint = type.getRangeConstraint();
if (!optConstraint.isPresent()) {
return base;
}
package org.opendaylight.yangtools.yang.model.util.type;
import com.google.common.base.Preconditions;
+import java.math.BigDecimal;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
-public final class DecimalTypeBuilder extends RangeRestrictedTypeBuilder<DecimalTypeDefinition> {
+public final class DecimalTypeBuilder extends RangeRestrictedTypeBuilder<DecimalTypeDefinition, BigDecimal> {
private Integer fractionDigits;
DecimalTypeBuilder(final SchemaPath path) {
*/
package org.opendaylight.yangtools.yang.model.util.type;
+import java.math.BigDecimal;
import java.util.Collection;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
-final class DerivedDecimalType extends AbstractRangeRestrictedDerivedType<DecimalTypeDefinition>
+final class DerivedDecimalType extends AbstractRangeRestrictedDerivedType<DecimalTypeDefinition, BigDecimal>
implements DecimalTypeDefinition {
DerivedDecimalType(final DecimalTypeDefinition baseType, final SchemaPath path, final Object defaultValue,
final String description, final String reference, final Status status, final String units,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
-final class DerivedInt16Type extends AbstractRangeRestrictedDerivedType<Int16TypeDefinition>
+final class DerivedInt16Type extends AbstractRangeRestrictedDerivedType<Int16TypeDefinition, Short>
implements Int16TypeDefinition {
DerivedInt16Type(final Int16TypeDefinition baseType, final SchemaPath path, final Object defaultValue,
final String description, final String reference, final Status status, final String units,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
-final class DerivedInt32Type extends AbstractRangeRestrictedDerivedType<Int32TypeDefinition>
+final class DerivedInt32Type extends AbstractRangeRestrictedDerivedType<Int32TypeDefinition, Integer>
implements Int32TypeDefinition {
DerivedInt32Type(final Int32TypeDefinition baseType, final SchemaPath path, final Object defaultValue,
final String description, final String reference, final Status status, final String units,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
-final class DerivedInt64Type extends AbstractRangeRestrictedDerivedType<Int64TypeDefinition>
+final class DerivedInt64Type extends AbstractRangeRestrictedDerivedType<Int64TypeDefinition, Long>
implements Int64TypeDefinition {
DerivedInt64Type(final Int64TypeDefinition baseType, final SchemaPath path, final Object defaultValue,
final String description, final String reference, final Status status, final String units,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
-final class DerivedInt8Type extends AbstractRangeRestrictedDerivedType<Int8TypeDefinition>
+final class DerivedInt8Type extends AbstractRangeRestrictedDerivedType<Int8TypeDefinition, Byte>
implements Int8TypeDefinition {
DerivedInt8Type(final Int8TypeDefinition baseType, final SchemaPath path, final Object defaultValue,
final String description, final String reference, final Status status, final String units,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
-final class DerivedUint16Type extends AbstractRangeRestrictedDerivedType<Uint16TypeDefinition>
+final class DerivedUint16Type extends AbstractRangeRestrictedDerivedType<Uint16TypeDefinition, Integer>
implements Uint16TypeDefinition {
DerivedUint16Type(final Uint16TypeDefinition baseType, final SchemaPath path,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
-final class DerivedUint32Type extends AbstractRangeRestrictedDerivedType<Uint32TypeDefinition>
+final class DerivedUint32Type extends AbstractRangeRestrictedDerivedType<Uint32TypeDefinition, Long>
implements Uint32TypeDefinition {
DerivedUint32Type(final Uint32TypeDefinition baseType, final SchemaPath path,
*/
package org.opendaylight.yangtools.yang.model.util.type;
+import java.math.BigInteger;
import java.util.Collection;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
-final class DerivedUint64Type extends AbstractRangeRestrictedDerivedType<Uint64TypeDefinition>
+final class DerivedUint64Type extends AbstractRangeRestrictedDerivedType<Uint64TypeDefinition, BigInteger>
implements Uint64TypeDefinition {
DerivedUint64Type(final Uint64TypeDefinition baseType, final SchemaPath path,
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
-final class DerivedUint8Type extends AbstractRangeRestrictedDerivedType<Uint8TypeDefinition>
+final class DerivedUint8Type extends AbstractRangeRestrictedDerivedType<Uint8TypeDefinition, Short>
implements Uint8TypeDefinition {
DerivedUint8Type(final Uint8TypeDefinition baseType, final SchemaPath path,
import com.google.common.collect.RangeSet;
import java.util.ArrayList;
import java.util.List;
-import java.util.Optional;
import java.util.function.Function;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
-public abstract class RangeRestrictedTypeBuilder<T extends RangeRestrictedTypeDefinition<T>>
- extends AbstractRestrictedTypeBuilder<T> {
+public abstract class RangeRestrictedTypeBuilder<T extends RangeRestrictedTypeDefinition<T, N>,
+ N extends Number & Comparable<N>> extends AbstractRestrictedTypeBuilder<T> {
private ConstraintMetaDefinition constraint;
private List<ValueRange> ranges;
touch();
}
- final <C extends Number & Comparable<C>> RangeConstraint<C> calculateRangeConstraint(
- final RangeConstraint<C> baseRangeConstraint) {
+ final RangeConstraint<N> calculateRangeConstraint(final RangeConstraint<N> baseRangeConstraint) {
if (ranges == null) {
return baseRangeConstraint;
}
// Run through alternatives and resolve them against the base type
- final RangeSet<C> baseRangeSet = (RangeSet<C>) baseRangeConstraint.getAllowedRanges();
+ final RangeSet<N> baseRangeSet = baseRangeConstraint.getAllowedRanges();
Verify.verify(!baseRangeSet.isEmpty(), "Base type %s does not define constraints", getBaseType());
- final Range<? extends C> baseRange = baseRangeSet.span();
+ final Range<N> baseRange = baseRangeSet.span();
final List<ValueRange> resolvedRanges = ensureResolvedRanges(ranges, baseRange);
// Next up, ensure the of boundaries match base constraints
- final RangeSet<C> typedRanges = ensureTypedRanges(resolvedRanges, baseRange.lowerEndpoint().getClass());
+ final RangeSet<N> typedRanges = ensureTypedRanges(resolvedRanges, baseRange.lowerEndpoint().getClass());
// Now verify if new ranges are strict subset of base ranges
if (!baseRangeSet.enclosesAll(typedRanges)) {
throw new InvalidRangeConstraintException(typedRanges,
- "Range constraints %s is not a subset of parent constraints %s", typedRanges, baseRangeSet);
+ "Range constraint %s is not a subset of parent constraint %s", typedRanges, baseRangeSet);
}
- return new RangeConstraint<C>() {
- @Override
- public Optional<String> getErrorAppTag() {
- return constraint.getErrorAppTag();
- }
-
- @Override
- public Optional<String> getErrorMessage() {
- return constraint.getErrorMessage();
- }
-
- @Override
- public Optional<String> getDescription() {
- return constraint.getDescription();
- }
-
- @Override
- public Optional<String> getReference() {
- return constraint.getReference();
- }
-
- @Override
- public RangeSet<? extends C> getAllowedRanges() {
- return typedRanges;
- }
- };
+ return new ResolvedRangeConstraint<>(constraint, typedRanges);
}
private static <C extends Number & Comparable<C>> List<ValueRange> ensureResolvedRanges(
- final List<ValueRange> unresolved, final Range<? extends C> baseRange) {
+ final List<ValueRange> unresolved, final Range<C> baseRange) {
// First check if we need to resolve anything at all
for (ValueRange c : unresolved) {
if (c.lowerBound() instanceof UnresolvedNumber || c.upperBound() instanceof UnresolvedNumber) {
}
private static <T extends Number & Comparable<T>> List<ValueRange> resolveRanges(final List<ValueRange> unresolved,
- final Range<? extends T> baseRange) {
+ final Range<T> baseRange) {
final List<ValueRange> ret = new ArrayList<>(unresolved.size());
for (ValueRange range : unresolved) {
final Number min = range.lowerBound();
final Number max = range.upperBound();
if (max instanceof UnresolvedNumber || min instanceof UnresolvedNumber) {
- final Number rMin = min instanceof UnresolvedNumber
+ final @NonNull Number rMin = min instanceof UnresolvedNumber
? ((UnresolvedNumber)min).resolveRange(baseRange) : min;
- final Number rMax = max instanceof UnresolvedNumber
+ final @NonNull Number rMax = max instanceof UnresolvedNumber
? ((UnresolvedNumber)max).resolveRange(baseRange) : max;
- ret.add(ValueRange.of((@NonNull Number)rMin, (@NonNull Number)rMax));
+ ret.add(ValueRange.of(rMin, rMax));
} else {
ret.add(range);
}
return ret;
}
+ @SuppressWarnings("unchecked")
private static <T extends Number & Comparable<T>> RangeSet<T> ensureTypedRanges(final List<ValueRange> ranges,
final Class<? extends Number> clazz) {
final Builder<T> builder = ImmutableRangeSet.builder();
return builder.build();
}
+ @SuppressWarnings("unchecked")
private static <T extends Number & Comparable<T>> RangeSet<T> typedRanges(final List<ValueRange> ranges,
final Class<? extends Number> clazz) {
final Function<Number, ? extends Number> function = NumberUtil.converterTo(clazz);
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition;
-abstract class RangeRestrictedTypeBuilderWithBase<T extends RangeRestrictedTypeDefinition<T>>
- extends RangeRestrictedTypeBuilder<T> {
+abstract class RangeRestrictedTypeBuilderWithBase<T extends RangeRestrictedTypeDefinition<T, N>,
+ N extends Number & Comparable<N>> extends RangeRestrictedTypeBuilder<T, N> {
RangeRestrictedTypeBuilderWithBase(final T baseType, final SchemaPath path) {
super(requireNonNull(baseType), path);
return buildType(calculateRangeConstraint(getBaseType().getRangeConstraint().get()));
}
- abstract T buildType(RangeConstraint<?> rangeConstraints);
+ abstract T buildType(RangeConstraint<N> rangeConstraints);
}
}
@Override
- public RangeSet<? extends T> getAllowedRanges() {
+ public RangeSet<T> getAllowedRanges() {
return ranges;
}
}
*/
package org.opendaylight.yangtools.yang.model.util.type;
+import java.math.BigDecimal;
import java.util.Collection;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-final class RestrictedDecimalType extends AbstractRangeRestrictedType<DecimalTypeDefinition>
+final class RestrictedDecimalType extends AbstractRangeRestrictedType<DecimalTypeDefinition, BigDecimal>
implements DecimalTypeDefinition {
RestrictedDecimalType(final DecimalTypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<BigDecimal> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-final class RestrictedInt16Type extends AbstractRangeRestrictedType<Int16TypeDefinition>
+final class RestrictedInt16Type extends AbstractRangeRestrictedType<Int16TypeDefinition, Short>
implements Int16TypeDefinition {
RestrictedInt16Type(final Int16TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<Short> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-final class RestrictedInt32Type extends AbstractRangeRestrictedType<Int32TypeDefinition>
+final class RestrictedInt32Type extends AbstractRangeRestrictedType<Int32TypeDefinition, Integer>
implements Int32TypeDefinition {
RestrictedInt32Type(final Int32TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<Integer> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-final class RestrictedInt64Type extends AbstractRangeRestrictedType<Int64TypeDefinition>
+final class RestrictedInt64Type extends AbstractRangeRestrictedType<Int64TypeDefinition, Long>
implements Int64TypeDefinition {
RestrictedInt64Type(final Int64TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<Long> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-final class RestrictedInt8Type extends AbstractRangeRestrictedType<Int8TypeDefinition> implements Int8TypeDefinition {
+final class RestrictedInt8Type extends AbstractRangeRestrictedType<Int8TypeDefinition, Byte>
+ implements Int8TypeDefinition {
RestrictedInt8Type(final Int8TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<Byte> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
package org.opendaylight.yangtools.yang.model.util.type;
import com.google.common.annotations.Beta;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import javax.annotation.Nonnull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
};
}
- public static RangeRestrictedTypeBuilder<DecimalTypeDefinition> newDecima64Builder(
+ public static RangeRestrictedTypeBuilder<DecimalTypeDefinition, BigDecimal> newDecima64Builder(
final DecimalTypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<DecimalTypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<DecimalTypeDefinition, BigDecimal>(baseType, path) {
@Override
- DecimalTypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ DecimalTypeDefinition buildType(final RangeConstraint<BigDecimal> rangeConstraint) {
return new RestrictedDecimalType(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
};
}
- public static RangeRestrictedTypeBuilder<Int8TypeDefinition> newInt8Builder(
+ public static RangeRestrictedTypeBuilder<Int8TypeDefinition, Byte> newInt8Builder(
final Int8TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Int8TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Int8TypeDefinition, Byte>(baseType, path) {
@Override
- Int8TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Int8TypeDefinition buildType(final RangeConstraint<Byte> rangeConstraint) {
return new RestrictedInt8Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
}
- public static RangeRestrictedTypeBuilder<Int16TypeDefinition> newInt16Builder(
+ public static RangeRestrictedTypeBuilder<Int16TypeDefinition, Short> newInt16Builder(
final Int16TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Int16TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Int16TypeDefinition, Short>(baseType, path) {
@Override
- Int16TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Int16TypeDefinition buildType(final RangeConstraint<Short> rangeConstraint) {
return new RestrictedInt16Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
}
- public static RangeRestrictedTypeBuilder<Int32TypeDefinition> newInt32Builder(
+ public static RangeRestrictedTypeBuilder<Int32TypeDefinition, Integer> newInt32Builder(
final Int32TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Int32TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Int32TypeDefinition, Integer>(baseType, path) {
@Override
- Int32TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Int32TypeDefinition buildType(final RangeConstraint<Integer> rangeConstraint) {
return new RestrictedInt32Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
}
- public static RangeRestrictedTypeBuilder<Int64TypeDefinition> newInt64Builder(
+ public static RangeRestrictedTypeBuilder<Int64TypeDefinition, Long> newInt64Builder(
final Int64TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Int64TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Int64TypeDefinition, Long>(baseType, path) {
@Override
- Int64TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Int64TypeDefinition buildType(final RangeConstraint<Long> rangeConstraint) {
return new RestrictedInt64Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
};
}
- public static RangeRestrictedTypeBuilder<Uint8TypeDefinition> newUint8Builder(
+ public static RangeRestrictedTypeBuilder<Uint8TypeDefinition, Short> newUint8Builder(
final Uint8TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Uint8TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Uint8TypeDefinition, Short>(baseType, path) {
@Override
- Uint8TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Uint8TypeDefinition buildType(final RangeConstraint<Short> rangeConstraint) {
return new RestrictedUint8Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
}
- public static RangeRestrictedTypeBuilder<Uint16TypeDefinition> newUint16Builder(
+ public static RangeRestrictedTypeBuilder<Uint16TypeDefinition, Integer> newUint16Builder(
final Uint16TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Uint16TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Uint16TypeDefinition, Integer>(baseType, path) {
@Override
- Uint16TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Uint16TypeDefinition buildType(final RangeConstraint<Integer> rangeConstraint) {
return new RestrictedUint16Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
}
- public static RangeRestrictedTypeBuilder<Uint32TypeDefinition> newUint32Builder(
+ public static RangeRestrictedTypeBuilder<Uint32TypeDefinition, Long> newUint32Builder(
final Uint32TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Uint32TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Uint32TypeDefinition, Long>(baseType, path) {
@Override
- Uint32TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Uint32TypeDefinition buildType(final RangeConstraint<Long> rangeConstraint) {
return new RestrictedUint32Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
}
- public static RangeRestrictedTypeBuilder<Uint64TypeDefinition> newUint64Builder(
+ public static RangeRestrictedTypeBuilder<Uint64TypeDefinition, BigInteger> newUint64Builder(
final Uint64TypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilderWithBase<Uint64TypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilderWithBase<Uint64TypeDefinition, BigInteger>(baseType, path) {
@Override
- Uint64TypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+ Uint64TypeDefinition buildType(final RangeConstraint<BigInteger> rangeConstraint) {
return new RestrictedUint64Type(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
}
};
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
-final class RestrictedUint16Type extends AbstractRangeRestrictedType<Uint16TypeDefinition>
+final class RestrictedUint16Type extends AbstractRangeRestrictedType<Uint16TypeDefinition, Integer>
implements Uint16TypeDefinition {
RestrictedUint16Type(final Uint16TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<Integer> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
-final class RestrictedUint32Type extends AbstractRangeRestrictedType<Uint32TypeDefinition>
+final class RestrictedUint32Type extends AbstractRangeRestrictedType<Uint32TypeDefinition, Long>
implements Uint32TypeDefinition {
RestrictedUint32Type(final Uint32TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<Long> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
*/
package org.opendaylight.yangtools.yang.model.util.type;
+import java.math.BigInteger;
import java.util.Collection;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
-final class RestrictedUint64Type extends AbstractRangeRestrictedType<Uint64TypeDefinition>
+final class RestrictedUint64Type extends AbstractRangeRestrictedType<Uint64TypeDefinition, BigInteger>
implements Uint64TypeDefinition {
RestrictedUint64Type(final Uint64TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<BigInteger> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
-final class RestrictedUint8Type extends AbstractRangeRestrictedType<Uint8TypeDefinition>
+final class RestrictedUint8Type extends AbstractRangeRestrictedType<Uint8TypeDefinition, Short>
implements Uint8TypeDefinition {
RestrictedUint8Type(final Uint8TypeDefinition baseType, final SchemaPath path,
- final Collection<UnknownSchemaNode> unknownSchemaNodes, final @Nullable RangeConstraint<?> rangeConstraint) {
+ final Collection<UnknownSchemaNode> unknownSchemaNodes,
+ final @Nullable RangeConstraint<Short> rangeConstraint) {
super(baseType, path, unknownSchemaNodes, rangeConstraint);
}
assertNotNull(typeDefinition);
final Int8TypeDefinition integerTypeDefinition8 = BaseTypes.int8Type();
- final RangeRestrictedTypeBuilder<?> rangeRestrictedTypeBuilder = RestrictedTypes.newInt8Builder(
+ final RangeRestrictedTypeBuilder<?, ?> rangeRestrictedTypeBuilder = RestrictedTypes.newInt8Builder(
integerTypeDefinition8, SCHEMA_PATH);
rangeRestrictedTypeBuilder.setRangeConstraint(mock(ConstraintMetaDefinition.class), lengthArrayList);
final TypeDefinition<?> typeDefinition1 = rangeRestrictedTypeBuilder.buildType();
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type;
+import java.math.BigDecimal;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
final DecimalTypeDefinition baseType) {
super(ctx);
- final RangeRestrictedTypeBuilder<DecimalTypeDefinition> builder =
+ final RangeRestrictedTypeBuilder<DecimalTypeDefinition, BigDecimal> builder =
RestrictedTypes.newDecima64Builder(baseType, TypeUtils.typeEffectiveSchemaPath(ctx));
for (EffectiveStatement<?, ?> stmt : effectiveSubstatements()) {
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeclaredEffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UnknownEffectiveStatementImpl;
-public final class IntegerTypeEffectiveStatementImpl<T extends IntegerTypeDefinition<?, T>> extends
- DeclaredEffectiveStatementBase<String, TypeStatement> implements TypeEffectiveStatement<TypeStatement> {
+public final class IntegerTypeEffectiveStatementImpl<T extends IntegerTypeDefinition<N, T>,
+ N extends Number & Comparable<N>> extends DeclaredEffectiveStatementBase<String, TypeStatement>
+ implements TypeEffectiveStatement<TypeStatement> {
private final T typeDefinition;
private IntegerTypeEffectiveStatementImpl(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
- final RangeRestrictedTypeBuilder<T> builder) {
+ final RangeRestrictedTypeBuilder<T, N> builder) {
super(ctx);
for (EffectiveStatement<?, ?> stmt : effectiveSubstatements()) {
}
}
- public static IntegerTypeEffectiveStatementImpl<Int8TypeDefinition> create(
+ public static IntegerTypeEffectiveStatementImpl<Int8TypeDefinition, Byte> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Int8TypeDefinition baseType) {
return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt8Builder(baseType,
TypeUtils.typeEffectiveSchemaPath(ctx)));
}
- public static IntegerTypeEffectiveStatementImpl<Int16TypeDefinition> create(
+ public static IntegerTypeEffectiveStatementImpl<Int16TypeDefinition, Short> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Int16TypeDefinition baseType) {
return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt16Builder(baseType,
TypeUtils.typeEffectiveSchemaPath(ctx)));
}
- public static IntegerTypeEffectiveStatementImpl<Int32TypeDefinition> create(
+ public static IntegerTypeEffectiveStatementImpl<Int32TypeDefinition, Integer> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Int32TypeDefinition baseType) {
return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt32Builder(baseType,
TypeUtils.typeEffectiveSchemaPath(ctx)));
}
- public static IntegerTypeEffectiveStatementImpl<Int64TypeDefinition> create(
+ public static IntegerTypeEffectiveStatementImpl<Int64TypeDefinition, Long> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Int64TypeDefinition baseType) {
return new IntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newInt64Builder(baseType,
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type;
+import java.math.BigInteger;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeclaredEffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UnknownEffectiveStatementImpl;
-public final class UnsignedIntegerTypeEffectiveStatementImpl<T extends UnsignedIntegerTypeDefinition<?, T>> extends
- DeclaredEffectiveStatementBase<String, TypeStatement> implements TypeEffectiveStatement<TypeStatement> {
+public final class UnsignedIntegerTypeEffectiveStatementImpl<T extends UnsignedIntegerTypeDefinition<N, T>,
+ N extends Number & Comparable<N>> extends DeclaredEffectiveStatementBase<String, TypeStatement>
+ implements TypeEffectiveStatement<TypeStatement> {
private final T typeDefinition;
private UnsignedIntegerTypeEffectiveStatementImpl(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
- final RangeRestrictedTypeBuilder<T> builder) {
+ final RangeRestrictedTypeBuilder<T, N> builder) {
super(ctx);
for (EffectiveStatement<?, ?> stmt : effectiveSubstatements()) {
typeDefinition = builder.build();
}
- public static UnsignedIntegerTypeEffectiveStatementImpl<Uint8TypeDefinition> create(
+ public static UnsignedIntegerTypeEffectiveStatementImpl<Uint8TypeDefinition, Short> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Uint8TypeDefinition baseType) {
return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint8Builder(baseType,
TypeUtils.typeEffectiveSchemaPath(ctx)));
}
- public static UnsignedIntegerTypeEffectiveStatementImpl<Uint16TypeDefinition> create(
+ public static UnsignedIntegerTypeEffectiveStatementImpl<Uint16TypeDefinition, Integer> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Uint16TypeDefinition baseType) {
return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint16Builder(baseType,
TypeUtils.typeEffectiveSchemaPath(ctx)));
}
- public static UnsignedIntegerTypeEffectiveStatementImpl<Uint32TypeDefinition> create(
+ public static UnsignedIntegerTypeEffectiveStatementImpl<Uint32TypeDefinition, Long> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Uint32TypeDefinition baseType) {
return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint32Builder(baseType,
TypeUtils.typeEffectiveSchemaPath(ctx)));
}
- public static UnsignedIntegerTypeEffectiveStatementImpl<Uint64TypeDefinition> create(
+ public static UnsignedIntegerTypeEffectiveStatementImpl<Uint64TypeDefinition, BigInteger> create(
final StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx,
final Uint64TypeDefinition baseType) {
return new UnsignedIntegerTypeEffectiveStatementImpl<>(ctx, RestrictedTypes.newUint64Builder(baseType,
@Nonnull
@Override
- public UnsignedIntegerTypeDefinition getTypeDefinition() {
+ public T getTypeDefinition() {
return typeDefinition;
}
}