@Override
@Nonnull
public String processServiceMethodResult(Object result, Class resultType) throws Exception {
Document document = DocumentHelper.createDocument();
Element resultEl = document.addElement("result");
if (result instanceof Entity) {
Entity entity = (Entity) result;
Document convertedEntity = _process(entity, null);
resultEl.add(convertedEntity.getRootElement());
} else if (result instanceof Collection) {
if (!checkCollectionItemTypes((Collection) result, Entity.class))
throw new IllegalArgumentException("Items that are not instances of Entity class found in service method result");
ArrayList list = new ArrayList((Collection) result);
MetaClass metaClass = null;
if (!list.isEmpty())
metaClass = ((Entity) list.get(0)).getMetaClass();
Document processed = _process(list, metaClass, null);
resultEl.add(processed.getRootElement());
} else {
if (result != null && resultType != Void.TYPE) {
Datatype datatype = getDatatype(resultType);
resultEl.setText(datatype != null ? datatype.format(result) : result.toString());
} else {
encodeNull(resultEl);
}
}
return documentToString(document);
}