import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableSet;
import com.google.gson.stream.JsonWriter;
+
import java.io.IOException;
import java.io.Writer;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.net.URI;
import java.util.ArrayDeque;
+import java.util.Collection;
import java.util.Deque;
+
import org.opendaylight.yangtools.concepts.Codec;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
}
}
+ private static final Collection<Class<?>> NUMERIC_CLASSES =
+ ImmutableSet.<Class<?>>of(Byte.class, Short.class, Integer.class, Long.class, BigInteger.class, BigDecimal.class);
private final Deque<TypeInfo> stack = new ArrayDeque<>();
private final SchemaContext schemaContext;
private final CodecFactory codecs;
* @param writer Output writer
* @return A stream writer instance
*/
- public static NormalizedNodeStreamWriter create(final SchemaContext schemaContext, SchemaPath path,final Writer writer) {
+ public static NormalizedNodeStreamWriter create(final SchemaContext schemaContext, final SchemaPath path,final Writer writer) {
return new JSONNormalizedNodeStreamWriter(schemaContext, path, writer, null, 0);
}
* @param initialNs Initial namespace
* @return A stream writer instance
*/
- public static NormalizedNodeStreamWriter create(final SchemaContext schemaContext, SchemaPath path,URI initialNs, final Writer writer) {
+ public static NormalizedNodeStreamWriter create(final SchemaContext schemaContext, final SchemaPath path,final URI initialNs, final Writer writer) {
return new JSONNormalizedNodeStreamWriter(schemaContext, path, writer, initialNs, 0);
}
separateElementFromPreviousElement();
writeJsonIdentifier(name);
currentNamespace = stack.peek().getNamespace();
- writeValue(String.valueOf(codec.serialize(value)));
+ writeValue(codec.serialize(value));
separateNextSiblingsWithComma();
}
final Codec<Object, Object> codec = codecs.codecFor(schema.getType());
separateElementFromPreviousElement();
- writeValue(String.valueOf(codec.serialize(value)));
+ writeValue(codec.serialize(value));
separateNextSiblingsWithComma();
}
separateElementFromPreviousElement();
writeJsonIdentifier(name);
currentNamespace = stack.peek().getNamespace();
- writeValue(value.toString());
+ writeValue(value);
separateNextSiblingsWithComma();
}
}
}
- private void writeValue(final String value) throws IOException {
- writer.append('"');
- writer.append(value);
- writer.append('"');
+ private void writeValue(final Object value) throws IOException {
+ final String str = String.valueOf(value);
+
+ if (!NUMERIC_CLASSES.contains(value.getClass())) {
+ writer.append('"');
+ writer.append(str);
+ writer.append('"');
+ } else {
+ writer.append(str);
+ }
}
private void writeJsonIdentifier(final NodeIdentifier name) throws IOException {