fix the yang codec null bug

Change-Id: I2a513062a8d764b2408598ca5959645f44902b80
diff --git a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java b/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
index ff6f229..17e91a4 100755
--- a/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
+++ b/providers/ietfte/tunnel/src/main/java/org/onosproject/provider/te/tunnel/TeTunnelRestconfProvider.java
@@ -35,6 +35,7 @@
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.protocol.restconf.RestConfNotificationEventListener;
 import org.onosproject.protocol.restconf.RestConfSBController;
+import org.onosproject.provider.te.utils.DefaultJsonCodec;
 import org.onosproject.provider.te.utils.YangCompositeEncodingImpl;
 import org.onosproject.tetopology.management.api.TeTopology;
 import org.onosproject.tetopology.management.api.TeTopologyKey;
@@ -45,8 +46,10 @@
 import org.onosproject.tetunnel.api.tunnel.TeTunnel;
 import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.IetfTe;
 import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.rev20160705.ietfte.tunnelsgrouping.Tunnels;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.IetfTeTypes;
 import org.onosproject.yms.ych.YangCodecHandler;
 import org.onosproject.yms.ych.YangCompositeEncoding;
+import org.onosproject.yms.ych.YangProtocolEncodingFormat;
 import org.onosproject.yms.ymsm.YmsService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -121,6 +124,9 @@
         tunnelProviderRegistry.register(this);
         codecHandler = ymsService.getYangCodecHandler();
         codecHandler.addDeviceSchema(IetfTe.class);
+        codecHandler.addDeviceSchema(IetfTeTypes.class);
+        codecHandler.registerOverriddenCodec(new DefaultJsonCodec(ymsService),
+                                             YangProtocolEncodingFormat.JSON);
         collectInitialTunnels();
         subscribe();
         log.info("Started");
@@ -200,8 +206,6 @@
             log.error("Can't find remote device for tunnel : {}", tunnel);
             return;
         }
-        log.info("Create tunnel get here");
-
         controller.post((DeviceId) srcElement, identifier,
                         new ByteArrayInputStream(resourceInformation.getBytes()),
                         MediaType.APPLICATION_JSON, ObjectNode.class);
diff --git a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java
index c8b5bae..fa9873c 100755
--- a/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java
+++ b/providers/ietfte/utils/src/main/java/org/onosproject/provider/te/utils/DefaultJsonCodec.java
@@ -29,10 +29,11 @@
 import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.convertJsonToYdt;
 import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.convertUriToYdt;
 import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.convertYdtToJson;
+import static org.onosproject.protocol.restconf.server.utils.parser.json.ParserUtils.getJsonNameFromYdtNode;
 import static org.onosproject.provider.te.utils.CodecTools.jsonToString;
 import static org.onosproject.provider.te.utils.CodecTools.toJson;
-import static org.onosproject.yms.ych.YangResourceIdentifierType.URI;
 import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
+import static org.onosproject.yms.ych.YangResourceIdentifierType.URI;
 
 
 /**
@@ -53,7 +54,8 @@
 
     @Override
     public String encodeYdtToProtocolFormat(YdtBuilder builder) {
-        ObjectNode jsonNode = convertYdtToJson(builder.getRootNode().getName(),
+        YdtContext context = builder.getRootNode();
+        ObjectNode jsonNode = convertYdtToJson(getJsonNameFromYdtNode(context),
                                                builder.getRootNode(),
                                                ymsService.getYdtWalker());
         return jsonToString(jsonNode);
@@ -67,9 +69,10 @@
         YdtContext child = rootNode.getFirstChild();
         String name = child.getName();
         String url = rootName + SLASH + DATA + SLASH + name;
-        ObjectNode objectNode = convertYdtToJson(name, child,
+        String jsonRoot = getJsonNameFromYdtNode(child);
+        ObjectNode objectNode = convertYdtToJson(jsonRoot, child,
                                                  ymsService.getYdtWalker());
-        String payload = jsonToString((ObjectNode) objectNode.get(name));
+        String payload = jsonToString((ObjectNode) objectNode.get(jsonRoot));
         return new YangCompositeEncodingImpl(URI, url, payload);
     }