public static Class<?> getCollectionItemClass(Type fieldType) { if (fieldType instanceof ParameterizedType) { Class<?> itemClass; Type actualTypeArgument = ((ParameterizedType) fieldType).getActualTypeArguments()[0]; if (actualTypeArgument instanceof Class) { itemClass = (Class<?>) actualTypeArgument; if (!Modifier.isPublic(itemClass.getModifiers())) { throw new ASMException("can not create ASMParser"); } } else { throw new ASMException("can not create ASMParser"); } return itemClass; } return Object.class; }
private Class<?> getCollectionItemClass(Type fieldType) { if (fieldType instanceof ParameterizedType) { Class<?> itemClass; Type actualTypeArgument = ((ParameterizedType) fieldType).getActualTypeArguments()[0]; if (actualTypeArgument instanceof Class) { itemClass = (Class<?>) actualTypeArgument; if (!Modifier.isPublic(itemClass.getModifiers())) { throw new ASMException("can not create ASMParser"); } } else { throw new ASMException("can not create ASMParser"); } return itemClass; } return Object.class; }
private Class<?> getCollectionItemClass(Type fieldType) { if (!(fieldType instanceof ParameterizedType)) { return Object.class; } Type actualTypeArgument = ((ParameterizedType) fieldType).getActualTypeArguments()[0]; if (actualTypeArgument instanceof Class) { Class<?> cls = (Class) actualTypeArgument; if (Modifier.isPublic(cls.getModifiers())) { return cls; } throw new ASMException("can not create ASMParser"); } throw new ASMException("can not create ASMParser"); }
public ObjectDeserializer createJavaBeanDeserializer(Class<?> clazz, Type type) { boolean asmEnable = this.asmEnable; if (asmEnable) { Class<?> superClass = clazz; while (Modifier.isPublic(superClass.getModifiers())) { superClass = superClass.getSuperclass(); if (superClass != Object.class) { if (superClass == null) { break; } } break; } asmEnable = false; } if (clazz.getTypeParameters().length != 0) { asmEnable = false; } if (asmEnable && this.asmFactory != null && this.asmFactory.isExternalClass(clazz)) { asmEnable = false; } if (asmEnable) { asmEnable = ASMUtils.checkName(clazz.getName()); } if (asmEnable) { if (clazz.isInterface()) { asmEnable = false; } DeserializeBeanInfo beanInfo = DeserializeBeanInfo.computeSetters(clazz, type); if (beanInfo.getFieldList().size() > 200) { asmEnable = false; } if (beanInfo.getDefaultConstructor() == null && !clazz.isInterface()) { asmEnable = false; } for (FieldInfo fieldInfo : beanInfo.getFieldList()) { if (fieldInfo.isGetOnly()) { asmEnable = false; break; } Class<?> fieldClass = fieldInfo.getFieldClass(); if (!Modifier.isPublic(fieldClass.getModifiers())) { asmEnable = false; break; } if (fieldClass.isMemberClass() && !Modifier.isStatic(fieldClass.getModifiers())) { asmEnable = false; } if (!ASMUtils.checkName(fieldInfo.getMember().getName())) { asmEnable = false; } } } if (asmEnable && clazz.isMemberClass() && !Modifier.isStatic(clazz.getModifiers())) { asmEnable = false; } if (!asmEnable) { return new JavaBeanDeserializer(this, clazz, type); } try { return this.asmFactory.createJavaBeanDeserializer(this, clazz, type); } catch (NoSuchMethodException e) { return new JavaBeanDeserializer(this, clazz, type); } catch (ASMException e2) { return new JavaBeanDeserializer(this, clazz, type); } catch (Exception e3) { throw new JSONException("create asm deserializer error, " + clazz.getName(), e3); } }
public ObjectDeserializer createJavaBeanDeserializer(Class<?> clazz, Type type) { boolean asmEnable = this.asmEnable; if (asmEnable) { Class<?> superClass = clazz; for (;;) { if (!Modifier.isPublic(superClass.getModifiers())) { asmEnable = false; break; } superClass = superClass.getSuperclass(); if (superClass == Object.class || superClass == null) { break; } } } if (clazz.getTypeParameters().length != 0) { asmEnable = false; } if (asmFactory.isExternalClass(clazz)) { asmEnable = false; } if (asmEnable) { if (clazz.isInterface()) { asmEnable = false; } DeserializeBeanInfo beanInfo = DeserializeBeanInfo.computeSetters(clazz, type); if (beanInfo.getFieldList().size() > 200) { asmEnable = false; } Constructor<?> defaultConstructor = beanInfo.getDefaultConstructor(); if (defaultConstructor == null && !clazz.isInterface()) { asmEnable = false; } for (FieldInfo fieldInfo : beanInfo.getFieldList()) { if (fieldInfo.isGetOnly()) { asmEnable = false; break; } Class<?> fieldClass = fieldInfo.getFieldClass(); if (!Modifier.isPublic(fieldClass.getModifiers())) { asmEnable = false; break; } if (fieldClass.isMemberClass() && !Modifier.isStatic(fieldClass.getModifiers())) { asmEnable = false; } } } if (asmEnable) { if (clazz.isMemberClass() && !Modifier.isStatic(clazz.getModifiers())) { asmEnable = false; } } if (!asmEnable) { return new JavaBeanDeserializer(this, clazz, type); } try { return asmFactory.createJavaBeanDeserializer(this, clazz, type); // } catch (VerifyError e) { // e.printStackTrace(); // return new JavaBeanDeserializer(this, clazz, type); } catch (NoSuchMethodException ex) { return new JavaBeanDeserializer(this, clazz, type); } catch (ASMException asmError) { return new JavaBeanDeserializer(this, clazz, type); } catch (Exception e) { throw new JSONException("create asm deserializer error, " + clazz.getName(), e); } }