Revert "Bug 6135: Java binding v1: IAE from provideTypeForLeafref" 38/47738/1
authorRobert Varga <rovarga@cisco.com>
Fri, 28 Oct 2016 13:30:54 +0000 (15:30 +0200)
committerRobert Varga <rovarga@cisco.com>
Fri, 28 Oct 2016 13:31:41 +0000 (15:31 +0200)
This reverts commit a8795e3746f753c21bd09615bc2b582590b9db54.

Change-Id: I7135954d1f9af9579feebfa85681eb6a3439b3c7
Signed-off-by: Robert Varga <rovarga@cisco.com>
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java
binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/Bug6135Test.java [deleted file]
binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/GenEnumResolvingTest.java
binding/mdsal-binding-generator-impl/src/test/resources/bug-6135/foo.yang [deleted file]

index 36d603c32c6e689ab1a5ea8a2db9ef6f9be65e21..9e99a2ac40fdd3a5db54eefa50897b3eeb4c1941 100644 (file)
@@ -27,7 +27,6 @@ import static org.opendaylight.yangtools.binding.generator.util.Types.typeForCla
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNode;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeInSchemaContext;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule;
-
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
@@ -1415,14 +1414,18 @@ public class BindingGeneratorImpl implements BindingGenerator {
         Type returnType = null;
 
         final TypeDefinition<?> typeDef = CompatUtils.compatLeafType(leaf);
-        if (typeDef instanceof EnumTypeDefinition) {
-            final EnumTypeDefinition enumTypeDef = (EnumTypeDefinition) typeDef;
-            final EnumBuilder enumBuilder = resolveInnerEnumFromTypeDefinition(enumTypeDef, leaf.getQName(), typeBuilder, module);
-            returnType = enumBuilder != null ? enumBuilder.toInstance(typeBuilder) :
-                    typeProvider.javaTypeForSchemaDefinitionType(typeDef, leaf);
-            ((TypeProviderImpl) typeProvider).putReferencedType(leaf.getPath(), returnType);
-        } else if (isInnerType(leaf, typeDef)) {
-            if (typeDef instanceof UnionTypeDefinition) {
+        if (isInnerType(leaf, typeDef)) {
+            if (typeDef instanceof EnumTypeDefinition) {
+                returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, leaf);
+                final EnumTypeDefinition enumTypeDef = (EnumTypeDefinition) typeDef;
+                final EnumBuilder enumBuilder = resolveInnerEnumFromTypeDefinition(enumTypeDef, leaf.getQName(),
+                    typeBuilder, module);
+
+                if (enumBuilder != null) {
+                    returnType = enumBuilder.toInstance(typeBuilder);
+                }
+                ((TypeProviderImpl) typeProvider).putReferencedType(leaf.getPath(), returnType);
+            } else if (typeDef instanceof UnionTypeDefinition) {
                 GeneratedTOBuilder genTOBuilder = addTOToTypeBuilder(typeDef, typeBuilder, leaf, parentModule);
                 if (genTOBuilder != null) {
                     returnType = createReturnTypeForUnion(genTOBuilder, typeDef, typeBuilder, parentModule);
diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/Bug6135Test.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/yangtools/sal/binding/generator/impl/Bug6135Test.java
deleted file mode 100644 (file)
index a5c8ce2..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2016 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.yangtools.sal.binding.generator.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-
-import java.util.List;
-import org.junit.Test;
-import org.opendaylight.yangtools.sal.binding.model.api.Enumeration;
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
-import org.opendaylight.yangtools.sal.binding.model.api.Type;
-import org.opendaylight.yangtools.yang.model.util.type.EnumerationTypeBuilder;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveSchemaContext;
-
-public class Bug6135Test {
-
-    @Test
-    public void bug6135Test() throws ReactorException {
-        final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-        reactor.addSource(new YangStatementSourceImpl("/bug-6135/foo.yang", false));
-
-        final EffectiveSchemaContext context = reactor.buildEffective();
-        assertNotNull(context);
-
-        final List<Type> generateTypes = new BindingGeneratorImpl(false).generateTypes(context);
-        assertFalse(generateTypes.isEmpty());
-
-        GeneratedType genInterface = null;
-        for (final Type type : generateTypes) {
-            if (!(type instanceof Enumeration)) {
-                    genInterface = (GeneratedType) type;
-            }
-        }
-        assertNotNull(genInterface);
-        final List<Enumeration> enums = genInterface.getEnumerations();
-        assertEquals(3, enums.size());
-    }
-}
\ No newline at end of file
index e039405264d47568e229408f91b29123694a3ea8..f1c2fc757584586a83b2e6d9e38486d973c49f0c 100644 (file)
@@ -56,7 +56,7 @@ public class GenEnumResolvingTest {
         Enumeration operStatus = null;
         final List<Enumeration> enums = genInterface.getEnumerations();
         assertNotNull("Generated Type Interface cannot contain NULL reference to Enumeration types!", enums);
-        assertEquals("Generated Type Interface MUST contain 3 Enumeration Types", 3, enums.size());
+        assertEquals("Generated Type Interface MUST contain 2 Enumeration Types", 2, enums.size());
         for (final Enumeration e : enums) {
             if (e.getName().equals("LinkUpDownTrapEnable")) {
                 linkUpDownTrapEnable = e;
diff --git a/binding/mdsal-binding-generator-impl/src/test/resources/bug-6135/foo.yang b/binding/mdsal-binding-generator-impl/src/test/resources/bug-6135/foo.yang
deleted file mode 100644 (file)
index 374ce48..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-module test-leafref {
-
-    namespace "odl:test:leafref";
-    prefix "tl";
-    revision 2015-04-09;
-
-    typedef my-enum {
-        type enumeration {
-            enum one {
-                value 1;
-            }
-        }
-    }
-
-    leaf my-inner-leaf {
-        type my-enum;
-    }
-
-    leaf my-leafref-inner {
-        type leafref {
-            path "/tl:my-inner-leaf";
-        }
-    }
-
-    leaf my-leaf {
-        type enumeration {
-            enum one {
-                value 1;
-            }
-        }
-    }
-
-    leaf my-leafref {
-        type leafref {
-            path "/tl:my-leaf";
-        }
-    }
-
-    leaf-list list-of-enums-inner {
-        type enumeration {
-            enum x;
-            enum y;
-            enum z;
-        }
-    }
-
-    leaf-list enums {
-        type leafref {
-            path "/tl:list-of-enums";
-        }
-    }
-
-    leaf-list list-of-enums {
-        type leafref {
-            path "/tl:my-leaf";
-        }
-    }
-}
\ No newline at end of file