
lowentry.ue4.libs.jackson.databind.ser.std.ArraySerializerBase Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java Show documentation
Show all versions of java Show documentation
A Java library for the Low Entry UE4 plugins.
package lowentry.ue4.libs.jackson.databind.ser.std;
import java.io.IOException;
import lowentry.ue4.libs.jackson.core.*;
import lowentry.ue4.libs.jackson.databind.*;
import lowentry.ue4.libs.jackson.databind.jsontype.TypeSerializer;
import lowentry.ue4.libs.jackson.databind.ser.*;
/**
* Intermediate base class for serializers used for various
* Java arrays.
*
* @param Type of arrays serializer handles
*/
@SuppressWarnings("serial")
public abstract class ArraySerializerBase
extends ContainerSerializer
{
protected final BeanProperty _property;
protected ArraySerializerBase(Class cls)
{
super(cls);
_property = null;
}
protected ArraySerializerBase(Class cls, BeanProperty property)
{
super(cls);
_property = property;
}
protected ArraySerializerBase(ArraySerializerBase> src)
{
super(src._handledType, false);
_property = src._property;
}
protected ArraySerializerBase(ArraySerializerBase> src, BeanProperty property)
{
super(src._handledType, false);
_property = property;
}
// NOTE: as of 2.5, sub-classes SHOULD override (in 2.4 and before, was final),
// at least if they can provide access to actual size of value and use `writeStartArray()`
// variant that passes size of array to output, which is helpful with some data formats
@Override
public void serialize(T value, JsonGenerator gen, SerializerProvider provider) throws IOException
{
if (provider.isEnabled(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)
&& hasSingleElement(value)) {
serializeContents(value, gen, provider);
return;
}
gen.writeStartArray();
// [databind#631]: Assign current value, to be accessible by custom serializers
gen.setCurrentValue(value);
serializeContents(value, gen, provider);
gen.writeEndArray();
}
@Override
public final void serializeWithType(T value, JsonGenerator gen, SerializerProvider provider,
TypeSerializer typeSer)
throws IOException
{
// note: let's NOT consider [JACKSON-805] here; gets too complicated, and probably just won't work
typeSer.writeTypePrefixForArray(value, gen);
// [databind#631]: Assign current value, to be accessible by custom serializers
gen.setCurrentValue(value);
serializeContents(value, gen, provider);
typeSer.writeTypeSuffixForArray(value, gen);
}
protected abstract void serializeContents(T value, JsonGenerator jgen, SerializerProvider provider)
throws IOException;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy