import java.util.Map;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.sal.binding.model.api.ConcreteType;
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
import org.opendaylight.yangtools.sal.binding.model.api.Type;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.slf4j.Logger;
this.type = Preconditions.checkNotNull(typeClass);
}
- // We need to walk up the GTO tree to get the root and then return its 'value' property
- private static Type javaTypeForGTO(final GeneratedTransferObject gto) {
- GeneratedTransferObject rootGto = gto;
- while (rootGto.getSuperType() != null) {
- rootGto = rootGto.getSuperType();
- }
-
- LOG.debug("Root GTO of {} is {}", rootGto, gto);
- for (GeneratedProperty s : rootGto.getProperties()) {
- if ("value".equals(s.getName())) {
- return s.getReturnType();
- }
- }
-
- throw new IllegalArgumentException(String.format("Failed to resolve GTO {} root {} to a Java type, properties are {}", gto, rootGto));
- }
-
static AbstractRangeGenerator<?> forType(@Nonnull final Type type) {
- final Type javaType;
- if (type instanceof GeneratedTransferObject) {
- javaType = javaTypeForGTO((GeneratedTransferObject) type);
- LOG.debug("Resolved GTO {} to concrete type {}", type, javaType);
- } else {
- javaType = type;
- }
-
- Preconditions.checkArgument(javaType instanceof ConcreteType, "Unsupported type %s", type);
+ final ConcreteType javaType = TypeUtils.getBaseYangType(type);
return GENERATORS.get(javaType.getFullyQualifiedName());
}