package org.opendaylight.mdsal.binding.generator.util;
import com.google.common.annotations.Beta;
-import java.math.BigDecimal;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.generator.spi.TypeProvider;
import org.opendaylight.mdsal.binding.model.api.Restrictions;
import org.opendaylight.mdsal.binding.model.util.BaseYangTypes;
import org.opendaylight.mdsal.binding.model.util.Types;
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
-import org.opendaylight.yangtools.yang.common.Uint16;
-import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.common.Uint64;
-import org.opendaylight.yangtools.yang.common.Uint8;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
public Type javaTypeForSchemaDefinitionType(final TypeDefinition<?> type, final SchemaNode parentNode,
final Restrictions restrictions, final boolean lenientRelativeLeafrefs) {
final String typeName = type.getQName().getLocalName();
- if (restrictions != null) {
- switch (typeName) {
- case "binary":
- return Types.typeForClass(byte[].class, restrictions);
- case "decimal64":
- return Types.typeForClass(BigDecimal.class, restrictions);
- case "enumeration":
- return Types.typeForClass(Enum.class, restrictions);
- case "int8":
- return Types.typeForClass(Byte.class, restrictions);
- case "int16":
- return Types.typeForClass(Short.class, restrictions);
- case "int32":
- return Types.typeForClass(Integer.class, restrictions);
- case "int64":
- return Types.typeForClass(Long.class, restrictions);
- case "string":
- return Types.typeForClass(String.class, restrictions);
- case "uint8":
- return Types.typeForClass(Uint8.class, restrictions);
- case "uint16":
- return Types.typeForClass(Uint16.class, restrictions);
- case "uint32":
- return Types.typeForClass(Uint32.class, restrictions);
- case "uint64":
- return Types.typeForClass(Uint64.class, restrictions);
- default:
- break;
- }
- }
-
- return BaseYangTypes.javaTypeForYangType(typeName);
+ final Type mapped = BaseYangTypes.javaTypeForYangType(typeName);
+ return mapped == null || restrictions == null ? mapped : Types.restrictedType(mapped, restrictions);
}
@Override
import static java.util.Objects.requireNonNull;
+import com.google.common.annotations.Beta;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
public static @NonNull ConcreteType typeForClass(final @NonNull Class<?> cls,
final @Nullable Restrictions restrictions) {
- if (restrictions == null) {
- return typeForClass(cls);
- }
+ return restrictions == null ? typeForClass(cls) : restrictedType(JavaTypeName.create(cls), restrictions);
+ }
- final JavaTypeName identifier = JavaTypeName.create(cls);
- if (restrictions instanceof DefaultRestrictions) {
- return new ConcreteTypeImpl(identifier, restrictions);
- }
- return new BaseTypeWithRestrictionsImpl(identifier, restrictions);
+ @Beta
+ public static @NonNull ConcreteType restrictedType(final Type type, final @NonNull Restrictions restrictions) {
+ return restrictedType(type.getIdentifier(), restrictions);
+ }
+
+ private static @NonNull ConcreteType restrictedType(final JavaTypeName identifier,
+ final @NonNull Restrictions restrictions) {
+ return restrictions instanceof DefaultRestrictions ? new ConcreteTypeImpl(identifier, restrictions)
+ : new BaseTypeWithRestrictionsImpl(identifier, restrictions);
}
/**