BUG-7983: unify JSONCodec and XmlCodec methods
[yangtools.git] / yang / yang-data-codec-gson / src / main / java / org / opendaylight / yangtools / yang / data / codec / gson / AbstractJSONCodec.java
index 9b3f3d2ac4e12f942b43eb4943b048c677f08bc8..74715cef77dc69b808501691e06ec59168d7ccc2 100644 (file)
@@ -8,57 +8,32 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 import com.google.common.base.Preconditions;
-import org.opendaylight.yangtools.concepts.Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.BooleanCodec;
-import org.opendaylight.yangtools.yang.data.api.codec.DecimalCodec;
-import org.opendaylight.yangtools.yang.data.api.codec.Int16Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Int32Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Int64Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Int8Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Uint16Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Uint32Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Uint64Codec;
-import org.opendaylight.yangtools.yang.data.api.codec.Uint8Codec;
+import org.opendaylight.yangtools.yang.data.impl.codec.DataStringCodec;
 import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
 
 /**
  * Abstract base implementation of {@link JSONCodec}, which wraps a {@link TypeDefinitionAwareCodec}.
  *
- * @param <T> Deserialized objec type
+ * @param <T> Deserialized object type
  */
 abstract class AbstractJSONCodec<T> implements JSONCodec<T> {
-    private final Codec<String, T> codec;
+    private final DataStringCodec<T> codec;
 
-    protected AbstractJSONCodec(final Codec<String, T> codec) {
+    AbstractJSONCodec(final DataStringCodec<T> codec) {
         this.codec = Preconditions.checkNotNull(codec);
     }
 
-    /**
-     * Create a proper JSONCodec based on the underlying codec type
-     * @param codec underlying codec
-     * @return A JSONCodec instance
-     */
-    public static JSONCodec<?> create(final Codec<String, ?> codec) {
-        if (codec instanceof BooleanCodec) {
-            return new BooleanJSONCodec((BooleanCodec<String>) codec);
-        } else if (codec instanceof DecimalCodec || codec instanceof Int8Codec
-                || codec instanceof Int16Codec || codec instanceof Int32Codec
-                || codec instanceof Int64Codec || codec instanceof Uint8Codec
-                || codec instanceof Uint16Codec || codec instanceof Uint32Codec
-                || codec instanceof Uint64Codec) {
-            return new NumberJSONCodec(codec);
-        } else {
-            return new QuotedJSONCodec<>(codec);
-        }
+    @Override
+    public final Class<T> getDataType() {
+        return codec.getInputClass();
     }
 
     @Override
-    public final T deserialize(final String input) {
-        return codec.deserialize(input);
+    public final T parseValue(final Object ctx, final String str) {
+        return codec.deserialize(str);
     }
 
-    @Override
-    public final String serialize(final T input) {
+    final String serialize(final T input) {
         return codec.serialize(input);
     }
 }