import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map.Entry;
import java.util.ServiceLoader;
-import org.opendaylight.binding.runtime.api.BindingRuntimeContext;
-import org.opendaylight.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
+import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext;
+import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
public final class JsonUtil {
private static final Logger LOG = LoggerFactory.getLogger(JsonUtil.class);
private static JsonUtil instance;
}
public DataObject getDataObjectFromJson(JsonReader reader, QName pathQname) {
- NormalizedNodeResult result = new NormalizedNodeResult();
- try (NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+ NormalizationResultHolder resultHolder = new NormalizationResultHolder();
+ try (NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(resultHolder);
JsonParserStream jsonParser = JsonParserStream.create(streamWriter,
- JSONCodecFactorySupplier.RFC7951.getShared(schemaCtx), schemaCtx);) {
+ JSONCodecFactorySupplier.RFC7951.getShared(schemaCtx));) {
jsonParser.parse(reader);
YangInstanceIdentifier yangId = YangInstanceIdentifier.of(pathQname);
- if (bindingDOMCodecServices.fromNormalizedNode(yangId, result.getResult()) != null) {
- return bindingDOMCodecServices.fromNormalizedNode(yangId, result.getResult()).getValue();
- } else {
- return null;
- }
+ Entry<InstanceIdentifier<?>, DataObject> entry =
+ bindingDOMCodecServices.fromNormalizedNode(yangId, resultHolder.getResult().data());
+ return entry == null ? null : entry.getValue();
} catch (IOException | IllegalArgumentException e) {
LOG.error("Cannot deserialize JSON ", e);
return null;
}
-
}
public BindingDOMCodecServices getBindingDOMCodecServices() {