Search in sources :

Example 1 with EscapeJsonStringAppendableWrapper

use of org.spf4j.base.EscapeJsonStringAppendableWrapper in project spf4j by zolyfarkas.

the class SpecificRecordAppender method writeSerializationError.

@SuppressFBWarnings("ITC_INHERITANCE_TYPE_CHECKING")
static void writeSerializationError(final Object object, final StringBuilder sb, final Exception ex) throws IOException {
    if (STRICT_SERIALIZATION) {
        if (ex instanceof IOException) {
            throw (IOException) ex;
        } else if (ex instanceof RuntimeException) {
            throw (RuntimeException) ex;
        } else {
            throw new IllegalStateException(ex);
        }
    }
    sb.setLength(0);
    sb.append("{\"SerializationError\":\n");
    try (AppendableOutputStream bos = new AppendableOutputStream(sb, Charsets.UTF_8)) {
        JThrowable at = Converters.convert(ex);
        Schema schema = at.getSchema();
        SpecificDatumWriter<SpecificRecord> writer = new SpecificDatumWriter<>(schema);
        JsonEncoder jsonEncoder = EF.jsonEncoder(schema, bos, true);
        writer.write(at, jsonEncoder);
        jsonEncoder.flush();
    }
    sb.append(",\n");
    sb.append("\"ObjectAsString\":\n\"");
    EscapeJsonStringAppendableWrapper escaper = new EscapeJsonStringAppendableWrapper(sb);
    escaper.append(object.toString());
    sb.append("\"}");
}
Also used : JThrowable(org.spf4j.base.avro.JThrowable) JsonEncoder(org.apache.avro.io.JsonEncoder) SpecificRecord(org.apache.avro.specific.SpecificRecord) Schema(org.apache.avro.Schema) AppendableOutputStream(org.spf4j.io.AppendableOutputStream) EscapeJsonStringAppendableWrapper(org.spf4j.base.EscapeJsonStringAppendableWrapper) IOException(java.io.IOException) SpecificDatumWriter(org.apache.avro.specific.SpecificDatumWriter) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings)

Aggregations

SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)1 IOException (java.io.IOException)1 Schema (org.apache.avro.Schema)1 JsonEncoder (org.apache.avro.io.JsonEncoder)1 SpecificDatumWriter (org.apache.avro.specific.SpecificDatumWriter)1 SpecificRecord (org.apache.avro.specific.SpecificRecord)1 EscapeJsonStringAppendableWrapper (org.spf4j.base.EscapeJsonStringAppendableWrapper)1 JThrowable (org.spf4j.base.avro.JThrowable)1 AppendableOutputStream (org.spf4j.io.AppendableOutputStream)1