public List<Article> getArticles() { if (!Lang.isEmpty(articles) && articles.size() > 10) { this.articles = articles.subList(0, 10); setCount(10); } else { this.setCount(Lang.length(articles)); } return articles; }
/** * 修改 get 后的值,以便修改查询的 DBObject * * @param val get 后的值 * @return 修改 get 后的值,这个值是 ejecting 从对象中取出的 */ public Object adaptForFormatQuery(Object val) { if (null == val) return null; // Mirror<?> vMirror = Mirror.me(val.getClass()); // 如果值为 Map,且自己的类型不是 Map,那么就是深入修改 Map 的各个修改器的键 ... if (vMirror.isMap() && !field.getMirror().isMap()) { final Map<String, Object> map = new HashMap<String, Object>(); Lang.each( val, true, new Each<Map.Entry<String, Object>>() { public void invoke(int index, Entry<String, Object> ele, int length) { String key = ele.getKey(); if (null != key && key.startsWith("$")) { map.put(key, adaptForFormatQuery(ele.getValue())); } } }); return map; } // 如果值为集合或者数组, 且自己不为集合或者数组,则生成个新数组返回 else if (vMirror.isContainer() && !field.getMirror().isContainer()) { int len = Lang.length(val); final Object array = Array.newInstance(Object.class, len); Lang.each( val, false, new Each<Object>() { public void invoke(int index, Object o, int length) { Array.set(array, index, adaptForFormatQuery(o)); } }); return array; } return adaptForGet(val, false); }