@Override
public String processServiceMethodResult(Object result, Class resultType) throws Exception {
MyJSONObject root = new MyJSONObject();
if (result instanceof Entity) {
Entity entity = (Entity) result;
MyJSONObject entityObject = _process(entity);
root.set("result", entityObject);
} else if (result instanceof Collection) {
if (!checkCollectionItemTypes((Collection) result, Entity.class))
throw new IllegalArgumentException("Items that are not instances of Entity found in service method result");
ArrayList list = new ArrayList((Collection) result);
MetaClass metaClass;
if (!list.isEmpty())
metaClass = ((Entity) list.get(0)).getMetaClass();
else
metaClass = AppBeans.get(Metadata.class).getClasses().iterator().next();
MyJSONObject.Array processed = _process(list, metaClass, null);
root.set("result", processed);
} else {
if (result != null && resultType != Void.TYPE) {
Datatype datatype = getDatatype(resultType);
root.set("result", datatype != null ? datatype.format(result) : result.toString());
} else {
root.set("result", null);
}
}
return root.toString();
}