Я хочу иметь возможность добавить обработчик для интерфейса
ISerializationEventHandler
и когда POJO
имеет этот интерфейс, вызовите метод JAXB
beforeMarshal
.
Я знаю, что могу добавить аннотацию "@JsonProperty"
к методу getModifierItemLine()
, но это требует обновления загрузок сущностей в базе кода.
Сокращенная версия сущности
public abstract class Modifier implements IModifier, ISerializationEventHandler {
/** Entity name. */
public static final String ENTITY_NAME = "modifier";
@XmlTransient
private IModifierItem<?, ?> modifierItem = null;
@XmlAttribute
private Integer modifierItemLine = null;
// ...... cut out other bits of code
// Want this method to be called before serialisation
public void beforeMarshal() {
modifierItemLine = getModifierItemLine();
}
public int getModifierItemLine() {
if (modifierItem != null) {
return modifierItem.getLineNumber();
} else {
return (modifierItemLine != null) ? modifierItemLine : 0;
}
}
}
Я пытался с использованием StdConverter, но это, похоже, меняет способ сериализации объекта по какой-то причине по сравнению с другими POJOs
.
public class SerializationEventHandlerConverter extends StdConverter<ISerializationEventHandler, ISerializationEventHandler> {
@Override
public ISerializationEventHandler convert(ISerializationEventHandler value)
{
value.beforeMarshal();
return value;
}
}