Binding v2 runtime - write transaction fix 51/59651/1
authorMartin Ciglan <martin.ciglan@pantheon.tech>
Tue, 27 Jun 2017 12:00:44 +0000 (14:00 +0200)
committerMartin Ciglan <martin.ciglan@pantheon.tech>
Thu, 29 Jun 2017 08:23:32 +0000 (08:23 +0000)
- don't fiddle with normalizer in runtime
- make sure streamWriter method names correspond with yang-data-api naming
- JUnit test revealing mentioned issues added

Change-Id: Iebf92f43e0d3bd39e4c4c1aa0d38b8128cd7a918
Signed-off-by: Martin Ciglan <martin.ciglan@pantheon.tech>
(cherry picked from commit 6707b4a164734c6f2ea87bfe956a2367766e28a5)

binding2/mdsal-binding2-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/test/BasicLeafValueTest.java [new file with mode: 0644]
binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/serializer/BindingToNormalizedStreamWriter.java
binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/serializer/ForwardingBindingStreamEventWriter.java
binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContext.java
binding2/mdsal-binding2-spec/src/main/java/org/opendaylight/mdsal/binding/javav2/spec/runtime/BindingStreamEventWriter.java
binding2/mdsal-binding2-test-model/src/main/yang/test.yang [new file with mode: 0644]

diff --git a/binding2/mdsal-binding2-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/test/BasicLeafValueTest.java b/binding2/mdsal-binding2-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/test/BasicLeafValueTest.java
new file mode 100644 (file)
index 0000000..d14a89d
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. 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.javav2.dom.adapter.test;
+
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.javav2.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
+import org.opendaylight.mdsal.gen.javav2.urn.test.rev170627.data.MyCont;
+import org.opendaylight.mdsal.gen.javav2.urn.test.rev170627.dto.MyContBuilder;
+
+public class BasicLeafValueTest extends AbstractDataBrokerTest {
+
+    private static final InstanceIdentifier<MyCont> MY_CONT_NODE_PATH
+            = InstanceIdentifier.create(MyCont.class);
+
+    @Test
+    public void testMyContLeafNode() throws TransactionCommitFailedException {
+        final WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
+        final MyContBuilder hello = new MyContBuilder().setMyLeaf("hello");
+        writeTx.put(LogicalDatastoreType.OPERATIONAL, MY_CONT_NODE_PATH, hello.build());
+        writeTx.submit().checkedGet();
+    }
+}
index 014e9c3a1e4642a5fe1346c91012d6670de15600..324ee64b8cdce2bde397e3269e3d2ae963cfebf6 100644 (file)
@@ -144,7 +144,7 @@ public final class BindingToNormalizedStreamWriter
     }
 
     @Override
-    public void startleafNode(final String localName, final Object value) throws IOException {
+    public void leafNode(final String localName, final Object value) throws IOException {
         final Entry<NodeIdentifier, Object> dom = serializeLeaf(localName, value);
         getDelegate().leafNode(dom.getKey(), dom.getValue());
     }
@@ -156,7 +156,7 @@ public final class BindingToNormalizedStreamWriter
     }
 
     @Override
-    public void startleafSetEntryNode(final Object value) throws IOException {
+    public void leafSetEntryNode(final Object value) throws IOException {
         final LeafNodeCodecContext<?> ctx = (LeafNodeCodecContext<?>) current();
         getDelegate().leafSetEntryNode(ctx.getSchema().getQName(), ctx.getValueCodec().serialize(value));
     }
index bf11805acd72cfaacc6dd8a6113d04df495448a2..4820c7eea575ffb8f9e43ef3080849442de5653e 100644 (file)
@@ -24,8 +24,8 @@ abstract class ForwardingBindingStreamEventWriter implements BindingStreamEventW
     protected abstract BindingStreamEventWriter delegate();
 
     @Override
-    public void startleafNode(final String localName, final Object value) throws IOException {
-        delegate().startleafNode(localName, value);
+    public void leafNode(final String localName, final Object value) throws IOException {
+        delegate().leafNode(localName, value);
     }
 
     @Override
@@ -39,8 +39,8 @@ abstract class ForwardingBindingStreamEventWriter implements BindingStreamEventW
     }
 
     @Override
-    public void startleafSetEntryNode(final Object value) throws IOException {
-        delegate().startleafSetEntryNode(value);
+    public void leafSetEntryNode(final Object value) throws IOException {
+        delegate().leafSetEntryNode(value);
     }
 
     @Override
index d4a98d92ced640dbf4259749ca5b37f5a4c8ac72..11a1646fe574ae12a520c9f496a21a838a2c2bd3 100644 (file)
@@ -287,12 +287,13 @@ public class BindingRuntimeContext implements Immutable {
     }
 
     private static Type referencedType(final Class<?> type) {
-        return new ReferencedTypeImpl(type.getPackage().getName(), type.getSimpleName());
+        return new ReferencedTypeImpl(type.getPackage().getName(), type.getSimpleName(), true);
     }
 
     static Type referencedType(final String type) {
         final int packageClassSeparator = type.lastIndexOf(DOT);
-        return new ReferencedTypeImpl(type.substring(0, packageClassSeparator), type.substring(packageClassSeparator + 1));
+        return new ReferencedTypeImpl(type.substring(0, packageClassSeparator),
+            type.substring(packageClassSeparator + 1), true);
     }
 
     /**
index 6ae9123fc5dd0adbbd894d5fd46486c1d3fd8294..a6fa33f5d5ac18fd6f90ce27cb011526194250c0 100644 (file)
@@ -14,8 +14,8 @@ import java.io.Flushable;
 import java.io.IOException;
 import org.opendaylight.mdsal.binding.javav2.spec.base.IdentifiableItem;
 import org.opendaylight.mdsal.binding.javav2.spec.base.Item;
-import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation;
 import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
+import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation;
 
 /**
  * Event Stream Writer for Binding version 2 Representation
@@ -46,13 +46,13 @@ import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode;
  * </ul></li>
  *
  * <li><code>leaf</code> - Leaf node event is emitted using
- * {@link #startleafNode(String, Object)}. {@link #endNode()} MUST NOT be emitted for
+ * {@link #leafNode(String, Object)}. {@link #endNode()} MUST NOT be emitted for
  * leaf node.</li>
  *
  * <li><code>leaf-list</code> - Leaf list start is emitted using
  * {@link #startLeafSet(String, int)}. Leaf list end is emitted using
  * {@link #endNode()}. Leaf list entries are emitted using
- * {@link #startleafSetEntryNode(Object)}.
+ * {@link #leafSetEntryNode(Object)}.
  *
  * <li><code>anyxml - Anyxml node event is emitted using
  * {@link #startAnyxmlNode(String, Object)}. {@link #endNode()} MUST NOT be emitted
@@ -132,14 +132,14 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      *             <code>choice</code> <code>unkeyed list</code> node.
      * @throws IOException if an underlying IO error occurs
      */
-    void startleafNode(String localName, Object value) throws IOException;
+    void leafNode(String localName, Object value) throws IOException;
 
     /**
      *
      * Emits a start of leaf set (leaf-list).
      * <p>
      * Emits start of leaf set, during writing leaf set event, only
-     * {@link #startleafSetEntryNode(Object)} calls are valid. Leaf set event is
+     * {@link #leafSetEntryNode(Object)} calls are valid. Leaf set event is
      * finished by calling {@link #endNode()}.
      *
      * @param localName
@@ -165,7 +165,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      * Emits a start of leaf set (leaf-list).
      * <p>
      * Emits start of leaf set, during writing leaf set event, only
-     * {@link #startleafSetEntryNode(Object)} calls are valid. Leaf set event is
+     * {@link #leafSetEntryNode(Object)} calls are valid. Leaf set event is
      * finished by calling {@link #endNode()}.
      *
      * @param localName
@@ -197,7 +197,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      *             If node was emitted outside <code>leaf set</code> node.
      * @throws IOException if an underlying IO error occurs
      */
-    void startleafSetEntryNode(Object value) throws IOException;
+    void leafSetEntryNode(Object value) throws IOException;
 
     /**
      *
@@ -209,7 +209,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      * <p>
      * Valid sub-events are:
      * <ul>
-     * <li>{@link #startleafNode(String, Object)}</li>
+     * <li>{@link #leafNode(String, Object)}</li>
      * <li>{@link #startContainerNode(Class, int)}</li>
      * <li>{@link #startChoiceNode(Item, int)}</li>
      * <li>{@link #startLeafSet(String, int)}</li>
@@ -272,7 +272,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      * Valid sub-events are:
      *
      * <ul>
-     * <li>{@link #startleafNode(String, Object)}</li>
+     * <li>{@link #leafNode(String, Object)}</li>
      * <li>{@link #startContainerNode(Class, int)}</li>
      * <li>{@link #startChoiceNode(Item, int)}</li>
      * <li>{@link #startLeafSet(String, int)}</li>
@@ -353,7 +353,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      * <p>
      * Valid sub-events are:
      * <ul>
-     * <li>{@link #startleafNode(String, Object)}</li>
+     * <li>{@link #leafNode(String, Object)}</li>
      * <li>{@link #startContainerNode(Class, int)}</li>
      * <li>{@link #startChoiceNode(Item, int)}</li>
      * <li>{@link #startLeafSet(String, int)}</li>
@@ -407,7 +407,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      * <p>
      * Valid sub-events are:
      * <ul>
-     * <li>{@link #startleafNode(String, Object)}</li>
+     * <li>{@link #leafNode(String, Object)}</li>
      * <li>{@link #startContainerNode(Class, int)}</li>
      * <li>{@link #startChoiceNode(Item, int)}</li>
      * <li>{@link #startLeafSet(String, int)}</li>
@@ -432,7 +432,7 @@ public interface BindingStreamEventWriter extends Closeable, Flushable {
      * Valid sub-events are:
      *
      * <ul>
-     * <li>{@link #startleafNode(String, Object)}</li>
+     * <li>{@link #leafNode(String, Object)}</li>
      * <li>{@link #startContainerNode(Class, int)}</li>
      * <li>{@link #startChoiceNode(Item, int)}</li>
      * <li>{@link #startLeafSet(String, int)}</li>
diff --git a/binding2/mdsal-binding2-test-model/src/main/yang/test.yang b/binding2/mdsal-binding2-test-model/src/main/yang/test.yang
new file mode 100644 (file)
index 0000000..3f31fe9
--- /dev/null
@@ -0,0 +1,18 @@
+module test {
+    namespace "urn:test";
+    prefix tst;
+
+    revision 2017-06-27;
+
+    typedef id {
+        type uint16 {
+          range "1..4094";
+        }
+    }
+
+    container my-cont {
+        leaf my-leaf {
+            type string;
+        }
+    }
+}
\ No newline at end of file