Skip to content

Commit

Permalink
minor refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
arnej27959 committed Jan 31, 2025
1 parent 65c356f commit 944cc4a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -771,27 +771,27 @@ protected void renderFieldContents(Object field) throws IOException {
public void accept(Object field) throws IOException {
if (field == null) {
generator().writeNull();
} else if (field instanceof Boolean) {
generator().writeBoolean((Boolean)field);
} else if (field instanceof Number) {
renderNumberField((Number) field);
} else if (field instanceof TreeNode) {
generator().writeTree((TreeNode) field);
} else if (field instanceof Tensor) {
renderTensor(Optional.of((Tensor)field));
} else if (field instanceof Boolean bool) {
generator().writeBoolean(bool);
} else if (field instanceof Number num) {
renderNumberField(num);
} else if (field instanceof TreeNode treenode) {
generator().writeTree(treenode);
} else if (field instanceof Tensor t) {
renderTensor(Optional.of(t));
} else if (field instanceof FeatureData featureData) {
generator().writeRawValue(featureData.toJson(settings.tensorOptions));
} else if (field instanceof Inspectable) {
renderInspectorDirect(((Inspectable)field).inspect());
} else if (field instanceof JsonProducer) {
generator().writeRawValue(((JsonProducer) field).toJson());
} else if (field instanceof StringFieldValue) {
generator().writeString(((StringFieldValue)field).getString());
} else if (field instanceof TensorFieldValue) {
renderTensor(((TensorFieldValue)field).getTensor());
} else if (field instanceof FieldValue) {
// the null below is the field which has already been written
((FieldValue) field).serialize(null, new JsonWriter(generator));
} else if (field instanceof Inspectable i) {
renderInspectorDirect(i.inspect());
} else if (field instanceof JsonProducer jp) {
generator().writeRawValue(jp.toJson());
} else if (field instanceof StringFieldValue sfv) {
generator().writeString(sfv.getString());
} else if (field instanceof TensorFieldValue tfv) {
renderTensor(tfv.getTensor());
} else if (field instanceof FieldValue fv) {
// the null below is the field name which has already been written
fv.serialize(null, new JsonWriter(generator));
} else {
generator().writeString(field.toString());
}
Expand All @@ -800,27 +800,27 @@ public void accept(Object field) throws IOException {
private void renderNumberField(Number field) throws IOException {
if (field instanceof Integer) {
generator().writeNumber(field.intValue());
} else if (field instanceof Float) {
} else if (field instanceof Float) {
generator().writeNumber(field.floatValue());
} else if (field instanceof Double) {
} else if (field instanceof Double) {
generator().writeNumber(field.doubleValue());
} else if (field instanceof Long) {
generator().writeNumber(field.longValue());
} else if (field instanceof Byte || field instanceof Short) {
generator().writeNumber(field.intValue());
} else if (field instanceof BigInteger) {
generator().writeNumber((BigInteger) field);
} else if (field instanceof BigDecimal) {
generator().writeNumber((BigDecimal) field);
} else if (field instanceof BigInteger bigint) {
generator().writeNumber(bigint);
} else if (field instanceof BigDecimal bigdec) {
generator().writeNumber(bigdec);
} else {
generator().writeNumber(field.doubleValue());
}
}

private void renderTensor(Optional<Tensor> tensor) throws IOException {
generator().writeRawValue(new String(JsonFormat.encode(tensor.orElse(Tensor.Builder.of(TensorType.empty).build()),
settings.tensorOptions),
StandardCharsets.UTF_8));
var t = tensor.orElse(Tensor.Builder.of(TensorType.empty).build());
byte[] json = JsonFormat.encode(t, settings.tensorOptions);
generator().writeRawValue(new String(json, StandardCharsets.UTF_8));
}

private JsonGenerator generator() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ private Tensor decodeTensor(String featureName) {

return switch (featureValue.type()) {
case DOUBLE -> Tensor.from(featureValue.asDouble());
case DATA -> TypedBinaryFormat.decode(Optional.empty(), GrowableByteBuffer.wrap(featureValue.asData()));
case DATA -> tensorFromData(featureValue.asData());
default -> throw new IllegalStateException("Unexpected feature value type " + featureValue.type());
};
}
Expand Down Expand Up @@ -202,11 +202,14 @@ private static class Encoder extends JsonRender.StringEncoder {
@Override
public void encodeDATA(byte[] value) {
// This could be done more efficiently ...
Tensor tensor = TypedBinaryFormat.decode(Optional.empty(), GrowableByteBuffer.wrap(value));
Tensor tensor = tensorFromData(value);
byte[] encodedTensor = JsonFormat.encode(tensor, tensorOptions);
target().append(new String(encodedTensor, StandardCharsets.UTF_8));
}

}

private static Tensor tensorFromData(byte[] value) {
return TypedBinaryFormat.decode(Optional.empty(), GrowableByteBuffer.wrap(value));
}
}

0 comments on commit 944cc4a

Please sign in to comment.