@Inject JsonSerialization(JacksonMapperProvider jacksonMapperProvider) { this.jacksonMapperProvider = jacksonMapperProvider; deserializationContext = JsonDeserializationContext.builder() .failOnUnknownProperties(false); serializationContext = JsonSerializationContext.builder(); }
public final JsonSerializationContext build() { return new JsonSerializationContext( useEqualityForObjectId, serializeNulls, writeDatesAsTimestamps, writeDateKeysAsTimestamps, indent, wrapRootValue, writeCharArraysAsJsonArrays, writeNullMapValues, writeEmptyJsonArrays, orderMapEntriesByKeys, writeSingleElemArraysUnwrapped, wrapExceptions ); } }
/** {@inheritDoc} */ @Override public String write( T value, JsonSerializationContext ctx ) throws JsonSerializationException { JsonWriter writer = ctx.newJsonWriter(); try { if ( ctx.isWrapRootValue() ) { writer.beginObject(); writer.name( rootName ); getSerializer().serialize( writer, value, ctx ); writer.endObject(); } else { getSerializer().serialize( writer, value, ctx ); } return writer.getOutput(); } catch ( JsonSerializationException e ) { // already logged, we just throw it throw e; } catch ( RuntimeException e ) { throw ctx.traceError( value, e, writer ); } }
@Override protected void doSerialize( JsonWriter writer, StackTraceElement stackTraceElement, JsonSerializationContext ctx, JsonSerializerParameters params ) { writer.beginObject(); if ( stackTraceElement.getMethodName() != null || ctx.isSerializeNulls() ) { writer.name( METHOD_NAME ); writer.value( stackTraceElement.getMethodName() ); } if ( stackTraceElement.getFileName() != null || ctx.isSerializeNulls() ) { writer.name( FILE_NAME ); writer.value( stackTraceElement.getFileName() ); } writer.name( LINE_NUMBER ); writer.value( stackTraceElement.getLineNumber() ); if ( stackTraceElement.getClassName() != null || ctx.isSerializeNulls() ) { writer.name( CLASS_NAME ); writer.value( stackTraceElement.getClassName() ); } writer.endObject(); } }
if ( ctx.isSerializeNulls() || ( isMapValue && ctx.isWriteNullMapValues() ) ) { serializeNullValue( writer, ctx, params ); } else {
@Override protected String doSerialize( Key<T> value, JsonSerializationContext ctx ) { JsonWriter jsonWriter = ctx.newJsonWriter(); serializer.serialize( jsonWriter, value, ctx ); jsonWriter.close(); return jsonWriter.getOutput(); } }
idWriter = ctx.getObjectId( value ); if ( null != idWriter ) { return; ctx.addObjectId( value, idWriter ); String typeInformation = typeInfo.getTypeInfo( value.getClass() ); if ( null == typeInformation ) { ctx.getLogger().log( Level.WARNING, "Cannot find type info for class " + value.getClass() ); } else { switch ( typeInfo.getInclude() ) { ctx.getLogger().log( Level.SEVERE, "JsonTypeInfo.As." + typeInfo.getInclude() + " is not supported" );
if ( !values.isEmpty() ) { Map<K, V> map = values; if ( ctx.isOrderMapEntriesByKeys() && !(values instanceof SortedMap<?, ?>) ) { map = new TreeMap<K, V>( map ); if ( ctx.isWriteNullMapValues() ) {
@Override protected void doSerialize( JsonWriter writer, Key key, JsonSerializationContext ctx, JsonSerializerParameters params ) { writer.beginObject(); if ( key.getParent() != null || ctx.isSerializeNulls() ) { writer.name( RawKeyConstant.PARENT ); serialize( writer, key.getParent(), ctx, params ); } if ( key.getKind() != null || ctx.isSerializeNulls() ) { writer.name( RawKeyConstant.KIND ).value( key.getKind() ); } writer.name( RawKeyConstant.ID ).value( key.getId() ); if ( key.getName() != null || ctx.isSerializeNulls() ) { writer.name( RawKeyConstant.NAME ).value( key.getName() ); } writer.endObject(); } }
@Override protected String doSerialize( Ref<T> value, JsonSerializationContext ctx ) { JsonWriter jsonWriter = ctx.newJsonWriter(); RefJsonSerializer.newInstance( serializer ).serialize( jsonWriter, value, ctx ); jsonWriter.close(); return jsonWriter.getOutput(); } }
/** {@inheritDoc} */ @Override public String write( T value ) throws JsonSerializationException { return write( value, JsonSerializationContext.builder().build() ); }
@Override protected String doSerialize( Key value, JsonSerializationContext ctx ) { JsonWriter jsonWriter = ctx.newJsonWriter(); RawKeyJsonSerializer.getInstance().serialize( jsonWriter, value, ctx ); jsonWriter.close(); return jsonWriter.getOutput(); } }
/** * Trace an error and returns a corresponding exception. * * @param value current value * @param message error message * * @return a {@link JsonSerializationException} with the given message */ public JsonSerializationException traceError( Object value, String message ) { getLogger().log( Level.SEVERE, message ); return new JsonSerializationException( message ); }
protected JsonSerializationContext newDefaultSerializationContext() { return JsonSerializationContext.builder().build(); } }
private InternalSerializer<T> getSerializer( JsonWriter writer, T value, JsonSerializationContext ctx ) { if ( value.getClass() == getSerializedType() ) { return this; } SubtypeSerializer subtypeSerializer = subtypeClassToSerializer.get( value.getClass() ); if ( null == subtypeSerializer ) { if ( ctx.getLogger().isLoggable( Level.FINE ) ) { ctx.getLogger().fine( "Cannot find serializer for class " + value .getClass() + ". Fallback to the serializer of " + getSerializedType() ); } return this; } return subtypeSerializer; }
/** * Trace an error and returns a corresponding exception. * * @param value current value * @param cause cause of the error * * @return a {@link JsonSerializationException} if we wrap the exceptions, the cause otherwise */ public RuntimeException traceError( Object value, RuntimeException cause ) { getLogger().log( Level.SEVERE, "Error during serialization", cause ); if ( wrapExceptions ) { return new JsonSerializationException( cause ); } else { return cause; } }