* @param maxDepth the maximum number of sub models to process
* @return the javascript object
*/
@SuppressWarnings("unchecked")
public static JavaScriptObject getJsObject(ModelData model, int maxDepth) {
JsObject jsObj = new JsObject();
for (String key : model.getPropertyNames()) {
Object value = model.get(key);
if (value == null) continue;
if (maxDepth > 0) {
if (value instanceof Collection) {
jsObj.set(key, processCollection((Collection) value, maxDepth).getJsObject());
} else if (value instanceof Object[]) {
jsObj.set(key, processArray((Object[]) value, maxDepth).getJsObject());
} else if (value instanceof ModelData) {
jsObj.set(key, getJsObject((ModelData) value, maxDepth - 1));
} else {
jsObj.set(key, value);
}
} else {
jsObj.set(key, value);
}
}
return jsObj.getJsObject();
}