Bug 6692: remove InstanceIdentifierCodec instance from SBU
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / InstanceIdentifierCodec.java
index 3d9430f56bd7575ef1ba519dfbc5fdc517325453..fce7dae43677ff240c584c1eda7f3a72b2155508 100644 (file)
@@ -11,7 +11,7 @@ package org.opendaylight.ovsdb.southbound;
 import java.net.URI;
 
 import org.opendaylight.controller.sal.core.api.model.SchemaService;
-import org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeSerializer;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException;
@@ -20,10 +20,14 @@ import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class InstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec
     implements SchemaContextListener {
 
+    private static final Logger LOG = LoggerFactory.getLogger(InstanceIdentifierCodec.class);
+
     private DataSchemaContextTree dataSchemaContextTree;
     private SchemaContext context;
     private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
@@ -51,9 +55,9 @@ public class InstanceIdentifierCodec extends AbstractModuleStringInstanceIdentif
     }
 
     @Override
-    public void onGlobalContextUpdated(SchemaContext context) {
-        this.context = context;
-        this.dataSchemaContextTree = DataSchemaContextTree.from(context);
+    public void onGlobalContextUpdated(SchemaContext schemaContext) {
+        this.context = schemaContext;
+        this.dataSchemaContextTree = DataSchemaContextTree.from(schemaContext);
     }
 
     public String serialize(InstanceIdentifier<?> iid) {
@@ -61,15 +65,25 @@ public class InstanceIdentifierCodec extends AbstractModuleStringInstanceIdentif
         return serialize(normalizedIid);
     }
 
-    public  InstanceIdentifier<?> bindingDeserializer(String iidString) throws DeserializationException {
+    public YangInstanceIdentifier getYangInstanceIdentifier(InstanceIdentifier<?> iid) {
+        return bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid);
+    }
+
+    public InstanceIdentifier<?> bindingDeserializer(String iidString) throws DeserializationException {
         YangInstanceIdentifier normalizedYangIid = deserialize(iidString);
-        InstanceIdentifier<?> iid = bindingNormalizedNodeSerializer.fromYangInstanceIdentifier(normalizedYangIid);
-        return iid;
+        return bindingNormalizedNodeSerializer.fromYangInstanceIdentifier(normalizedYangIid);
     }
 
     public InstanceIdentifier<?> bindingDeserializer(YangInstanceIdentifier yangIID) {
-        InstanceIdentifier<?> iid = bindingNormalizedNodeSerializer.fromYangInstanceIdentifier(yangIID);
-        return iid;
+        return bindingNormalizedNodeSerializer.fromYangInstanceIdentifier(yangIID);
     }
 
+    public InstanceIdentifier<?> bindingDeserializerOrNull(String iidString) {
+        try {
+            return bindingDeserializer(iidString);
+        } catch (DeserializationException e) {
+            LOG.warn("Unable to deserialize iidString", e);
+        }
+        return null;
+    }
 }