public static Resource createResourceWithAttachments(final ResourceManager resourceManager, final ApiRequest request, final IdFormatter idFormatter,
final SchemaFactory schemaFactory, final Schema schema, Object obj, Map<String, Object> inputAdditionalFields) {
Integer depth = DEPTH.get();
try {
DEPTH.set(depth + 1);
Map<String, Object> additionalFields = new LinkedHashMap<String, Object>();
additionalFields.putAll(DataUtils.getFields(obj));
if (inputAdditionalFields != null && inputAdditionalFields.size() > 0) {
additionalFields.putAll(inputAdditionalFields);
}
if (depth == 0) {
Map<String, Object> attachments = ApiUtils.getAttachements(obj, new Transformer() {
@Override
public Object transform(Object input) {
input = ApiUtils.authorize(input);
if (input == null)
return null;
return resourceManager.convertResponse(input, request);
}
});
additionalFields.putAll(attachments);
}
String method = request == null ? null : request.getMethod();
return new WrappedResource(idFormatter, schemaFactory, schema, obj, additionalFields, PRIORITY_FIELDS, method);
} finally {
DEPTH.set(depth);
}
}