private static String toType(Class<?> target) { String name = target.getName(); return toType(name); }
private static String toType(Class<?> target) { String name = target.getName(); return toType(name); }
public static byte[] createObjectSetter(final String className, final Field field) throws Exception { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); MethodVisitor mv; Class<?> target = field.getDeclaringClass(); Class<?> property = field.getType(); String targetType = toType(target); String propertyType = toType(property); String classType = toType(className); cw.visit( V1_6, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, classType, "Ljava/lang/Object;L" + SETTER_TYPE + "<L" + targetType + ";" + AsmUtils.toTargetTypeDeclaration(propertyType) + ">;", "java/lang/Object", new String[] {SETTER_TYPE}); { mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } appendSet(field, cw, target, targetType, propertyType, classType); appendToString(cw); cw.visitEnd(); return AsmUtils.writeClassToFile(className, cw.toByteArray()); }
public static byte[] createObjectSetter(final String className, final Method method) throws Exception { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); MethodVisitor mv; Class<?> target = method.getDeclaringClass(); Class<?> property = method.getParameterTypes()[0]; String targetType = toType(target); String propertyType = toType(property); String classType = toType(className); cw.visit( V1_6, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, classType, "Ljava/lang/Object;L" + SETTER_TYPE + "<L" + targetType + ";" + AsmUtils.toTargetTypeDeclaration(propertyType) + ">;", "java/lang/Object", new String[] {SETTER_TYPE}); { mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } appendSet(method, cw, target, targetType, propertyType, classType); appendToString(cw); cw.visitEnd(); return AsmUtils.writeClassToFile(className, cw.toByteArray()); }
public static byte[] createObjectSetter(final String className, final Field field) throws Exception { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); MethodVisitor mv; Class<?> target = field.getDeclaringClass(); Class<?> property = field.getType(); String targetType = toType(target); String propertyType = toType(property); String classType = toType(className); cw.visit( V1_6, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, classType, "Ljava/lang/Object;L" + SETTER_TYPE + "<L" + targetType + ";" + AsmUtils.toTargetTypeDeclaration(propertyType) + ">;", "java/lang/Object", new String[] {SETTER_TYPE}); { mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } appendSet(field, cw, target, targetType, propertyType, classType); appendToString(cw); cw.visitEnd(); return AsmUtils.writeClassToFile(className, cw.toByteArray()); }
public static byte[] createObjectSetter(final String className, final Method method) throws Exception { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); MethodVisitor mv; Class<?> target = method.getDeclaringClass(); Class<?> property = method.getParameterTypes()[0]; String targetType = toType(target); String propertyType = toType(property); String classType = toType(className); cw.visit( V1_6, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, classType, "Ljava/lang/Object;L" + SETTER_TYPE + "<L" + targetType + ";" + AsmUtils.toTargetTypeDeclaration(propertyType) + ">;", "java/lang/Object", new String[] {SETTER_TYPE}); { mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } appendSet(method, cw, target, targetType, propertyType, classType); appendToString(cw); cw.visitEnd(); return AsmUtils.writeClassToFile(className, cw.toByteArray()); }