@Override
public void serialize(Object bean, JsonGenerator jgen, SerializerProvider provider) throws IOException {
Validate.isTrue(
resourceDecorator.appliesFor(bean.getClass()),
format(
"The bean class <%s> cannot be processed by the <%s> decorator.",
bean.getClass().getName(),
resourceDecorator.getClass().getName()
)
);
@SuppressWarnings("unchecked")
T t = (T) bean;
jgen.writeStartObject();
T decoratedBean = resourceDecorator.decorateBeforeSerialization(t);
serializeFields(decoratedBean, jgen, provider);
for (Link link : resourceDecorator.links(decoratedBean, resourceContext)) {
jgen.writeObjectField(link.getName(), link.getHref());
}
jgen.writeEndObject();
}