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);
}