BUG-7983: unify JSONCodec and XmlCodec methods
[yangtools.git] / yang / yang-data-codec-gson / src / main / java / org / opendaylight / yangtools / yang / data / codec / gson / JSONStringInstanceIdentifierCodec.java
index c53eea45132ed4dc0038233d42cc72e6c4abed9b..98f0ec602c7fd0fbd155d188847734554e9b4774 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.base.Preconditions;
 import com.google.gson.stream.JsonWriter;
 import java.io.IOException;
 import java.net.URI;
+import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
@@ -19,7 +20,8 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
-final class JSONStringInstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec implements JSONCodec<YangInstanceIdentifier> {
+final class JSONStringInstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec
+        implements JSONCodec<YangInstanceIdentifier> {
     private final DataSchemaContextTree dataContextTree;
     private final JSONCodecFactory codecFactory;
     private final SchemaContext context;
@@ -31,42 +33,42 @@ final class JSONStringInstanceIdentifierCodec extends AbstractModuleStringInstan
     }
 
     @Override
-    protected Module moduleForPrefix(final String prefix) {
+    protected Module moduleForPrefix(@Nonnull final String prefix) {
         return context.findModuleByName(prefix, null);
     }
 
     @Override
-    protected String prefixForNamespace(final URI namespace) {
+    protected String prefixForNamespace(@Nonnull final URI namespace) {
         final Module module = context.findModuleByNamespaceAndRevision(namespace, null);
         return module == null ? null : module.getName();
     }
 
+    @Nonnull
     @Override
     protected DataSchemaContextTree getDataContextTree() {
         return dataContextTree;
     }
 
-    @Override
-    public boolean needQuotes() {
-        return true;
-    }
-
     @Override
     protected Object deserializeKeyValue(final DataSchemaNode schemaNode, final String value) {
         Preconditions.checkNotNull(schemaNode, "schemaNode cannot be null");
         Preconditions.checkArgument(schemaNode instanceof LeafSchemaNode, "schemaNode must be of type LeafSchemaNode");
-        final JSONCodec<Object> objectJSONCodec = codecFactory.codecFor(schemaNode);
-        return objectJSONCodec.deserialize(value);
+        final JSONCodec<?> objectJSONCodec = codecFactory.codecFor((LeafSchemaNode) schemaNode);
+        return objectJSONCodec.parseValue(null, value);
+    }
+
+    @Override
+    public Class<YangInstanceIdentifier> getDataType() {
+        return YangInstanceIdentifier.class;
+    }
+
+    @Override
+    public YangInstanceIdentifier parseValue(final Object ctx, final String str) {
+        return deserialize(str);
     }
 
-    /**
-     * Serialize YangInstanceIdentifier with specified JsonWriter.
-     *
-     * @param writer JsonWriter
-     * @param value YangInstanceIdentifier
-     */
     @Override
-    public void serializeToWriter(final JsonWriter writer, final YangInstanceIdentifier value) throws IOException {
-        writer.value(serialize(value));
+    public void writeValue(final JsonWriter ctx, final YangInstanceIdentifier value) throws IOException {
+        ctx.value(serialize(value));
     }
 }