public Boolean findIgnoreUnknownProperties(AnnotatedClass paramAnnotatedClass) { JsonIgnoreProperties localJsonIgnoreProperties = (JsonIgnoreProperties)paramAnnotatedClass.getAnnotation(JsonIgnoreProperties.class); if (localJsonIgnoreProperties == null) return null; return Boolean.valueOf(localJsonIgnoreProperties.ignoreUnknown()); }
public String[] findPropertiesToIgnore(AnnotatedClass paramAnnotatedClass) { JsonIgnoreProperties localJsonIgnoreProperties = (JsonIgnoreProperties)paramAnnotatedClass.getAnnotation(JsonIgnoreProperties.class); if (localJsonIgnoreProperties == null) return null; return localJsonIgnoreProperties.value(); }
/** * 创建jackson的代理注解接口类 <br> * 2013-10-25 上午11:59:50 * * @param names 要生成的字段 * @return 代理接口类 */ private Class<?> createMixInAnnotation(String[] names) { Class<?> clazz = null; clazz = proxyMixInAnnotationMap.get(StringHelper.hashCodeOfStringArray(names)); if (clazz != null) { return clazz; } ClassPool pool = ClassPool.getDefault(); // 创建代理接口 CtClass cc = pool.makeInterface("ProxyMixInAnnotation" + System.currentTimeMillis() + proxyIndex++); ClassFile ccFile = cc.getClassFile(); ConstPool constpool = ccFile.getConstPool(); // create the annotation AnnotationsAttribute attr = new AnnotationsAttribute(constpool, AnnotationsAttribute.visibleTag); // 创建JsonIgnoreProperties注解 Annotation jsonIgnorePropertiesAnnotation = new Annotation( JsonIgnoreProperties.class.getName(), constpool); BooleanMemberValue ignoreUnknownMemberValue = new BooleanMemberValue(false, constpool); ArrayMemberValue arrayMemberValue = new ArrayMemberValue(constpool);// value的数组成员 Collection<MemberValue> memberValues = new HashSet<MemberValue>(); for (int i = 0; i < names.length; i++) { String name = names[i]; StringMemberValue memberValue = new StringMemberValue(constpool);// 将name值设入注解内 memberValue.setValue(name); memberValues.add(memberValue); } arrayMemberValue.setValue(memberValues.toArray(new MemberValue[]{})); jsonIgnorePropertiesAnnotation.addMemberValue("value", arrayMemberValue); jsonIgnorePropertiesAnnotation.addMemberValue("ignoreUnknown", ignoreUnknownMemberValue); attr.addAnnotation(jsonIgnorePropertiesAnnotation); ccFile.addAttribute(attr); // generate the class try { clazz = cc.toClass(); proxyMixInAnnotationMap.put(StringHelper.hashCodeOfStringArray(names), clazz); // JsonIgnoreProperties ignoreProperties = (JsonIgnoreProperties) // clazz // .getAnnotation(JsonIgnoreProperties.class); // EntityHelper.print(ignoreProperties); // // EntityHelper.print(clazz); // try { // Object instance = clazz.newInstance(); // EntityHelper.print(instance); // // } catch (InstantiationException e) { // e.printStackTrace(); // } catch (IllegalAccessException e) { // e.printStackTrace(); // } } catch (CannotCompileException e) { e.printStackTrace(); } // right // mthd.getMethodInfo().addAttribute(attr); return clazz; }