@Override public TypeSerializer buildTypeSerializer(final SerializationConfig config, final JavaType baseType, final Collection<NamedType> subtypes) { final TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, true, false); return version == GraphSONVersion.V2_0 ? new GraphSONTypeSerializerV2d0(idRes, this.getTypeProperty(), typeInfo, valuePropertyName) : new GraphSONTypeSerializerV3d0(idRes, this.getTypeProperty(), typeInfo, valuePropertyName); }
@Override public WritableTypeId writeTypePrefix(final JsonGenerator jsonGenerator, final WritableTypeId writableTypeId) throws IOException { if (writableTypeId.valueShape == JsonToken.START_OBJECT) { if (writableTypeId.forValue instanceof Map) { writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); jsonGenerator.writeStartArray(); } else { jsonGenerator.writeStartObject(); } } else if (writableTypeId.valueShape == JsonToken.START_ARRAY) { if (writableTypeId.forValue instanceof List || writableTypeId.forValue instanceof Set) { writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); jsonGenerator.writeStartArray(); } else { jsonGenerator.writeStartArray(); } } else if (canWriteTypeId()) { writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); } else { throw new IllegalStateException("Could not write prefix: shape[" + writableTypeId.valueShape + "] value[" + writableTypeId.forValue + "]"); } return writableTypeId; }
@Override public WritableTypeId writeTypeSuffix(final JsonGenerator jsonGenerator, final WritableTypeId writableTypeId) throws IOException { if (writableTypeId.valueShape == JsonToken.START_OBJECT) { if (writableTypeId.forValue instanceof Map) { jsonGenerator.writeEndArray(); writeTypeSuffix(jsonGenerator); } else { jsonGenerator.writeEndObject(); } } else if (writableTypeId.valueShape == JsonToken.START_ARRAY) { if (writableTypeId.forValue instanceof List || writableTypeId.forValue instanceof Set) { jsonGenerator.writeEndArray(); writeTypeSuffix(jsonGenerator); } else { jsonGenerator.writeEndArray(); } } else if (canWriteTypeId()) { writeTypeSuffix(jsonGenerator); } else { throw new IllegalStateException("Could not write suffix: shape[" + writableTypeId.valueShape + "] value[" + writableTypeId.forValue + "]"); } return writableTypeId; }
@Override public WritableTypeId writeTypePrefix(final JsonGenerator jsonGenerator, final WritableTypeId writableTypeId) throws IOException { if (writableTypeId.valueShape == JsonToken.START_OBJECT) { if (writableTypeId.forValue instanceof Map) { writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); jsonGenerator.writeStartArray(); } else { jsonGenerator.writeStartObject(); } } else if (writableTypeId.valueShape == JsonToken.START_ARRAY) { if (writableTypeId.forValue instanceof List || writableTypeId.forValue instanceof Set) { writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); jsonGenerator.writeStartArray(); } else { jsonGenerator.writeStartArray(); } } else if (canWriteTypeId()) { writeTypePrefix(jsonGenerator, getTypeIdResolver().idFromValueAndType(writableTypeId.forValue, getClassFromObject(writableTypeId.forValue))); } else { throw new IllegalStateException("Could not write prefix: shape[" + writableTypeId.valueShape + "] value[" + writableTypeId.forValue + "]"); } return writableTypeId; }
@Override public WritableTypeId writeTypeSuffix(final JsonGenerator jsonGenerator, final WritableTypeId writableTypeId) throws IOException { if (writableTypeId.valueShape == JsonToken.START_OBJECT) { if (writableTypeId.forValue instanceof Map) { jsonGenerator.writeEndArray(); writeTypeSuffix(jsonGenerator); } else { jsonGenerator.writeEndObject(); } } else if (writableTypeId.valueShape == JsonToken.START_ARRAY) { if (writableTypeId.forValue instanceof List || writableTypeId.forValue instanceof Set) { jsonGenerator.writeEndArray(); writeTypeSuffix(jsonGenerator); } else { jsonGenerator.writeEndArray(); } } else if (canWriteTypeId()) { writeTypeSuffix(jsonGenerator); } else { throw new IllegalStateException("Could not write suffix: shape[" + writableTypeId.valueShape + "] value[" + writableTypeId.forValue + "]"); } return writableTypeId; }
@Override public TypeSerializer buildTypeSerializer(final SerializationConfig config, final JavaType baseType, final Collection<NamedType> subtypes) { final TypeIdResolver idRes = this.idResolver(config, baseType, subtypes, true, false); return version == GraphSONVersion.V2_0 ? new GraphSONTypeSerializerV2d0(idRes, this.getTypeProperty(), typeInfo, valuePropertyName) : new GraphSONTypeSerializerV3d0(idRes, this.getTypeProperty(), typeInfo, valuePropertyName); }