@Test public void testAddIndex() { MethodVisitor mv = mock(MethodVisitor.class); AsmUtils.addIndex(mv, 0); verify(mv).visitInsn(ICONST_0); AsmUtils.addIndex(mv, 1); verify(mv).visitInsn(ICONST_1); AsmUtils.addIndex(mv, 2); verify(mv).visitInsn(ICONST_2); AsmUtils.addIndex(mv, 3); verify(mv).visitInsn(ICONST_3); AsmUtils.addIndex(mv, 4); verify(mv).visitInsn(ICONST_4); AsmUtils.addIndex(mv, 5); verify(mv).visitInsn(ICONST_5); AsmUtils.addIndex(mv, 123); verify(mv).visitIntInsn(BIPUSH, 123); AsmUtils.addIndex(mv, 512); verify(mv).visitIntInsn(SIPUSH, 512); AsmUtils.addIndex(mv, Short.MAX_VALUE + 1); verify(mv).visitLdcInsn(Short.MAX_VALUE + 1); }
@Override public void addInit(MethodVisitor mv, String mapperClassType) { Type mapperClass = AsmUtils.findClosestPublicTypeExposing(mapper.getClass(), FieldMapper.class); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(mapperClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index, toTargetTypeDeclaration(AsmUtils.toAsmType(mapperClass))); }
@Override public void addInit(MethodVisitor mv, String mapperClassType) { Type mapperClass = AsmUtils.findClosestPublicTypeExposing(mapper.getClass(), FieldMapper.class); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(mapperClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index, toTargetTypeDeclaration(AsmUtils.toAsmType(mapperClass))); }
@Override public void addInit(MethodVisitor mv, String mapperClassType) { String fieldMapperType = AsmUtils.toAsmType(mapper.getClass()); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, fieldMapperType); mv.visitFieldInsn(GETFIELD, fieldMapperType, "setter", toTargetTypeDeclaration(AsmUtils.toAsmType(declaredSetterClass))); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(setterClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index + "Setter", toTargetTypeDeclaration(AsmUtils.toAsmType(setterClass))); }
@Override public void addMappingCall(MethodVisitor mv, String mapperClassType) throws NoSuchMethodException { mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, mapperClassType, prefix + index + "Setter", toTargetTypeDeclaration(AsmUtils.toAsmType(setterClass))); mv.visitVarInsn(ALOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitVarInsn(ALOAD, 3); AsmUtils.addIndex(mv, getterIndex); AsmUtils.invoke(mv, getMethod); AsmUtils.invoke(mv, setMethod); }
@Override public void addMappingCall(MethodVisitor mv, String mapperClassType) throws NoSuchMethodException { mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, mapperClassType, prefix + index + "Setter", toTargetTypeDeclaration(AsmUtils.toAsmType(setterClass))); mv.visitVarInsn(ALOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitVarInsn(ALOAD, 3); AsmUtils.addIndex(mv, getterIndex); AsmUtils.invoke(mv, getMethod); AsmUtils.invoke(mv, setMethod); }
@Override public void addInit(MethodVisitor mv, String mapperClassType) { String fieldMapperType = AsmUtils.toAsmType(mapper.getClass()); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, fieldMapperType); mv.visitFieldInsn(GETFIELD, fieldMapperType, "setter", toTargetTypeDeclaration(AsmUtils.toAsmType(declaredSetterClass))); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(setterClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index + "Setter", toTargetTypeDeclaration(AsmUtils.toAsmType(setterClass))); }
@Override public void addInit(MethodVisitor mv, String mapperClassType) { String fieldMapperType = AsmUtils.toAsmType(mapper.getClass()); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, fieldMapperType); mv.visitFieldInsn(GETFIELD, fieldMapperType, "getter", toTargetTypeDeclaration(AsmUtils.toAsmType(declaredGetterClass))); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(getterClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index + "Getter", toTargetTypeDeclaration(AsmUtils.toAsmType(getterClass))); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, fieldMapperType); mv.visitFieldInsn(GETFIELD, fieldMapperType, "setter", toTargetTypeDeclaration(AsmUtils.toAsmType(declaredSetterClass))); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(setterClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index + "Setter", toTargetTypeDeclaration(AsmUtils.toAsmType(setterClass))); }
@Override public void addInit(MethodVisitor mv, String mapperClassType) { String fieldMapperType = AsmUtils.toAsmType(mapper.getClass()); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, fieldMapperType); mv.visitFieldInsn(GETFIELD, fieldMapperType, "getter", toTargetTypeDeclaration(AsmUtils.toAsmType(declaredGetterClass))); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(getterClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index + "Getter", toTargetTypeDeclaration(AsmUtils.toAsmType(getterClass))); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, prefix == CONSTRUCTOR_MAPPER_PREFIX ? 2 : 1); AsmUtils.addIndex(mv, index); mv.visitInsn(AALOAD); mv.visitTypeInsn(CHECKCAST, fieldMapperType); mv.visitFieldInsn(GETFIELD, fieldMapperType, "setter", toTargetTypeDeclaration(AsmUtils.toAsmType(declaredSetterClass))); mv.visitTypeInsn(CHECKCAST, AsmUtils.toAsmType(setterClass)); mv.visitFieldInsn(PUTFIELD, mapperClassType, prefix + index + "Setter", toTargetTypeDeclaration(AsmUtils.toAsmType(setterClass))); }