// FIXME: remove this class
@Deprecated(forRemoval = true)
-abstract class AbstractTypeProvider implements TypeProvider {
+abstract class AbstractTypeProvider {
private static final JavaTypeName DEPRECATED_ANNOTATION = JavaTypeName.create(Deprecated.class);
private static final CharMatcher DASH_COLON_MATCHER = CharMatcher.anyOf("-:");
return additionalTypes;
}
- @Override
+ /**
+ * Resolve of YANG Type Definition to it's java counter part. If the Type Definition contains one of YANG primitive
+ * types the method will return {@code java.lang.} counterpart. (For example if YANG type is int32 the Java
+ * counterpart is {@link Integer}). In case that Type Definition contains extended type defined via YANG typedef
+ * statement the method SHOULD return Generated Type or Generated Transfer Object if that Type is correctly
+ * referenced to resolved imported YANG module.
+ *
+ * <p>
+ * The method will return <code>null</code> value in situations that TypeDefinition can't be resolved (either due
+ * to missing YANG import or incorrectly specified type).
+ *
+ * <p>
+ * {@code leafref} resolution for relative paths has two models of operation: lenient and strict. This is needed to
+ * handle the case where a grouping leaf's path points outside of the grouping tree. In such a case we cannot
+ * completely determine the correct type and need to fallback to {@link Object}.
+ *
+ * @param type Type Definition to resolve from
+ * @param lenientRelativeLeafrefs treat relative leafrefs leniently
+ * @return Resolved Type
+ */
+ public Type javaTypeForSchemaDefinitionType(final TypeDefinition<?> type, final SchemaNode parentNode) {
+ return javaTypeForSchemaDefinitionType(type, parentNode, null);
+ }
+
+ /**
+ * Converts schema definition type <code>typeDefinition</code> to JAVA <code>Type</code>.
+ *
+ * @param typeDefinition type definition which is converted to JAVA type
+ * @throws IllegalArgumentException
+ * <ul>
+ * <li>if <code>typeDefinition</code> equal null</li>
+ * <li>if Qname of <code>typeDefinition</code> equal null</li>
+ * <li>if name of <code>typeDefinition</code> equal null</li>
+ * </ul>
+ */
public Type javaTypeForSchemaDefinitionType(final TypeDefinition<?> typeDefinition, final SchemaNode parentNode,
final Restrictions restrictions) {
throw new UnsupportedOperationException();
+++ /dev/null
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.mdsal.binding.yang.types;
-
-import org.opendaylight.mdsal.binding.model.api.Restrictions;
-import org.opendaylight.mdsal.binding.model.api.Type;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-
-interface TypeProvider {
- /**
- * Resolve of YANG Type Definition to it's java counter part. If the Type Definition contains one of YANG primitive
- * types the method will return {@code java.lang.} counterpart. (For example if YANG type is int32 the Java
- * counterpart is {@link Integer}). In case that Type Definition contains extended type defined via YANG typedef
- * statement the method SHOULD return Generated Type or Generated Transfer Object if that Type is correctly
- * referenced to resolved imported YANG module.
- *
- * <p>
- * The method will return <code>null</code> value in situations that TypeDefinition can't be resolved (either due
- * to missing YANG import or incorrectly specified type).
- *
- * <p>
- * {@code leafref} resolution for relative paths has two models of operation: lenient and strict. This is needed to
- * handle the case where a grouping leaf's path points outside of the grouping tree. In such a case we cannot
- * completely determine the correct type and need to fallback to {@link Object}.
- *
- * @param type Type Definition to resolve from
- * @param lenientRelativeLeafrefs treat relative leafrefs leniently
- * @return Resolved Type
- */
- default Type javaTypeForSchemaDefinitionType(final TypeDefinition<?> type, final SchemaNode parentNode) {
- return javaTypeForSchemaDefinitionType(type, parentNode, null);
- }
-
- /**
- * Converts schema definition type <code>typeDefinition</code> to JAVA <code>Type</code>.
- *
- * @param typeDefinition type definition which is converted to JAVA type
- * @throws IllegalArgumentException
- * <ul>
- * <li>if <code>typeDefinition</code> equal null</li>
- * <li>if Qname of <code>typeDefinition</code> equal null</li>
- * <li>if name of <code>typeDefinition</code> equal null</li>
- * </ul>
- */
- Type javaTypeForSchemaDefinitionType(TypeDefinition<?> type, SchemaNode parentNode, Restrictions restrictions);
-}
public void bug4621test() {
final EffectiveModelContext schemaContext = YangParserTestUtils.parseYangResource("/bug4621.yang");
final Module moduleValid = schemaContext.findModules(XMLNamespace.of("foo")).iterator().next();
- final TypeProvider typeProvider = new RuntimeTypeProvider(schemaContext);
+ final AbstractTypeProvider typeProvider = new RuntimeTypeProvider(schemaContext);
final QName listNode = QName.create(moduleValid.getQNameModule(), "neighbor");
final QName leafrefNode = QName.create(moduleValid.getQNameModule(), "neighbor2-id");
@Test
public void javaTypeForSchemaDefinitionExtTypeTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
"yang-int8-type");
@Test
public void javaTypeForSchemaDefinitionRestrictedExtTypeTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
"restricted-int8-type");
@Ignore
@Test
public void bug1862RestrictedTypedefTransformationTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
"bug-1862-restricted-typedef");
@Test
public void javaTypeForSchemaDefinitionEnumExtTypeTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo", "resolve-enum-leaf");
TypeDefinition<?> leafType = leaf.getType();
Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
@Test
public void javaTypeForSchemaDefinitionLeafrefExtTypeTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "bar", "leafref-value");
TypeDefinition<?> leafType = leaf.getType();
final Type leafrefResolvedType1 = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
@Test
public void javaTypeForSchemaDefinitionConditionalLeafrefTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
final Module module = resolveModule("test-type-provider-b");
final QName leafrefNode = QName.create(module.getQNameModule(), "conditional-leafref");
@Test(expected = IllegalArgumentException.class)
public void javaTypeForSchemaDefinitionInvalidLeafrefPathTest() {
- final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
final Module module = resolveModule("test-type-provider-b");
final QName leafrefNode = QName.create(module.getQNameModule(), "unreslovable-leafref");
@Test
public void javaTypeForSchemaDefinitionIdentityrefExtTypeTest() {
- final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo", "crypto");
final TypeDefinition<?> leafType = leaf.getType();
@Test
public void javaTypeForSchemaDefinitionForExtUnionWithSimpleTypesTest() {
- final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "use-of-unions",
"simple-int-types-union");
final TypeDefinition<?> leafType = leaf.getType();
@Test
public void javaTypeForSchemaDefinitionForExtComplexUnionWithInnerUnionTypesTest() {
- final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "use-of-unions",
"complex-union");
final TypeDefinition<?> leafType = leaf.getType();
@Test
public void javaTypeForSchemaDefinitionForExtUnionWithInnerUnionAndSimpleTypeTest() {
- final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
+ final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "use-of-unions",
"complex-string-int-union");
final TypeDefinition<?> leafType = leaf.getType();