@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"); //noinspection unchecked 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(); }