package asm.nebula.entity; import java.util.*; import org.objectweb.asm.*; public class PersonDbPersistorDumpBefore implements Opcodes { public static byte[] dump () throws Exception { ClassWriter cw = new ClassWriter(0); FieldVisitor fv; MethodVisitor mv; AnnotationVisitor av0; cw.visit(V1_6, ACC_PUBLIC + ACC_SUPER, "nebula/entity/PersonDbPersistor", "Ljava/lang/Object;Lnebula/persistor/Persistor<Lnebula/entity/Person;>;", "java/lang/Object", new String[] { "nebula/persistor/Persistor" }); cw.visitInnerClass("nebula/entity/Person$WorkExperience", "nebula/entity/Person", "WorkExperience", ACC_PUBLIC); cw.visitInnerClass("nebula/entity/PersonDbPersistor$InnerPerson", "nebula/entity/PersonDbPersistor", "InnerPerson", ACC_PUBLIC); cw.visitInnerClass("nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "nebula/entity/PersonDbPersistor$InnerPerson", "InnerWorkExperience", 0); { fv = cw.visitField(ACC_FINAL, "context", "Lnebula/persistor/NebulaContext;", null, null); fv.visitEnd(); } { fv = cw.visitField(ACC_FINAL, "cp", "Lnebula/db/ConnectionProvider;", null, null); fv.visitEnd(); } { mv = cw.visitMethod(ACC_PROTECTED, "<init>", "(Lnebula/db/ConnectionProvider;Lnebula/persistor/NebulaContext;)V", null, null); { av0 = mv.visitAnnotation("Lcom/google/inject/Inject;", true); av0.visitEnd(); } mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 2); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor", "context", "Lnebula/persistor/NebulaContext;"); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitInsn(RETURN); mv.visitMaxs(2, 3); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_VARARGS, "get", "([Ljava/lang/String;)Lnebula/entity/Person;", null, null); mv.visitCode(); Label l0 = new Label(); Label l1 = new Label(); Label l2 = new Label(); mv.visitTryCatchBlock(l0, l1, l2, "java/sql/SQLException"); mv.visitLabel(l0); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("select name,sex,birthday,height,company_name,lastModified from person where name = ?"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 2); mv.visitVarInsn(ALOAD, 2); mv.visitInsn(ICONST_1); mv.visitVarInsn(ALOAD, 1); mv.visitInsn(ICONST_0); mv.visitInsn(AALOAD); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "executeQuery", "()Ljava/sql/ResultSet;"); mv.visitVarInsn(ASTORE, 3); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "next", "()Z"); Label l3 = new Label(); mv.visitJumpInsn(IFNE, l3); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l3); mv.visitFrame(Opcodes.F_APPEND,2, new Object[] {"java/sql/PreparedStatement", "java/sql/ResultSet"}, 0, null); mv.visitTypeInsn(NEW, "nebula/entity/PersonDbPersistor$InnerPerson"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "nebula/entity/PersonDbPersistor$InnerPerson", "<init>", "(Lnebula/entity/PersonDbPersistor;)V"); mv.visitVarInsn(ASTORE, 5); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 4); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "name", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "sex", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "birthday", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "height", "J"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "company_name", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "lastModified", "J"); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("select person_name,index,from_,to_,company_name,lastModified from WorkExperience w where w.person_name = ?"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 2); mv.visitVarInsn(ALOAD, 2); mv.visitInsn(ICONST_1); mv.visitVarInsn(ALOAD, 1); mv.visitInsn(ICONST_0); mv.visitInsn(AALOAD); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "executeQuery", "()Ljava/sql/ResultSet;"); mv.visitVarInsn(ASTORE, 3); Label l4 = new Label(); mv.visitJumpInsn(GOTO, l4); Label l5 = new Label(); mv.visitLabel(l5); mv.visitFrame(Opcodes.F_APPEND,2, new Object[] {Opcodes.INTEGER, "nebula/entity/PersonDbPersistor$InnerPerson"}, 0, null); mv.visitTypeInsn(NEW, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 5); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;"); mv.visitInsn(POP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "<init>", "(Lnebula/entity/PersonDbPersistor$InnerPerson;)V"); mv.visitVarInsn(ASTORE, 6); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 4); mv.visitIincInsn(4, 1); mv.visitVarInsn(ALOAD, 6); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "index", "Ljava/lang/Long;"); mv.visitVarInsn(ALOAD, 6); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "from", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 6); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "to", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 6); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "company_name", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 6); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(4, 1); mv.visitVarInsn(ILOAD, 4); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "lastModified", "J"); mv.visitVarInsn(ALOAD, 5); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "workExperiences", "Ljava/util/ArrayList;"); mv.visitVarInsn(ALOAD, 6); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "add", "(Ljava/lang/Object;)Z"); mv.visitInsn(POP); mv.visitLabel(l4); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "next", "()Z"); mv.visitJumpInsn(IFNE, l5); mv.visitVarInsn(ALOAD, 5); mv.visitLabel(l1); mv.visitInsn(ARETURN); mv.visitLabel(l2); mv.visitFrame(Opcodes.F_FULL, 2, new Object[] {"nebula/entity/PersonDbPersistor", "[Ljava/lang/String;"}, 1, new Object[] {"java/sql/SQLException"}); mv.visitVarInsn(ASTORE, 2); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "(Ljava/lang/Throwable;)V"); mv.visitInsn(ATHROW); mv.visitMaxs(4, 7); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC, "merge", "(Lnebula/entity/Person;)Lnebula/entity/Person;", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 1); mv.visitInsn(ARETURN); mv.visitMaxs(1, 2); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC, "persist", "(Lnebula/entity/Person;)V", null, null); mv.visitCode(); Label l0 = new Label(); Label l1 = new Label(); mv.visitTryCatchBlock(l0, l1, l1, "java/sql/SQLException"); mv.visitLabel(l0); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 2); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("insert into person(name,sex,birthday,height,company_name,lastModified) values(?,?,?,?,?,?)"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 3); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 2); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "name", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "birthday", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "sex", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "height", "J"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setLong", "(IJ)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "company_name", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "context", "Lnebula/persistor/NebulaContext;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/persistor/NebulaContext", "getTime", "()J"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setLong", "(IJ)V"); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "execute", "()Z"); mv.visitVarInsn(ISTORE, 4); mv.visitVarInsn(ILOAD, 4); Label l2 = new Label(); mv.visitJumpInsn(IFEQ, l2); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l2); mv.visitFrame(Opcodes.F_APPEND,3, new Object[] {Opcodes.INTEGER, "java/sql/PreparedStatement", Opcodes.INTEGER}, 0, null); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "getUpdateCount", "()I"); mv.visitVarInsn(ISTORE, 5); mv.visitVarInsn(ILOAD, 5); mv.visitInsn(ICONST_1); Label l3 = new Label(); mv.visitJumpInsn(IF_ICMPEQ, l3); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l3); mv.visitFrame(Opcodes.F_APPEND,1, new Object[] {Opcodes.INTEGER}, 0, null); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "workExperiences", "Ljava/util/ArrayList;"); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "size", "()I"); Label l4 = new Label(); mv.visitJumpInsn(IFLE, l4); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("insert into WorkExperience(person_name,index,from_,to_,company_name,lastModified) values(?,?,?,?,?,?)"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 3); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "workExperiences", "Ljava/util/ArrayList;"); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "iterator", "()Ljava/util/Iterator;"); mv.visitVarInsn(ASTORE, 7); Label l5 = new Label(); mv.visitJumpInsn(GOTO, l5); Label l6 = new Label(); mv.visitLabel(l6); mv.visitFrame(Opcodes.F_FULL, 8, new Object[] {"nebula/entity/PersonDbPersistor", "nebula/entity/Person", Opcodes.INTEGER, "java/sql/PreparedStatement", Opcodes.INTEGER, Opcodes.INTEGER, Opcodes.TOP, "java/util/Iterator"}, 0, new Object[] {}); mv.visitVarInsn(ALOAD, 7); mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;"); mv.visitTypeInsn(CHECKCAST, "nebula/entity/Person$WorkExperience"); mv.visitVarInsn(ASTORE, 6); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 2); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "name", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 6); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person$WorkExperience", "index", "Ljava/lang/Long;"); mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue", "()J"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setLong", "(IJ)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 6); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person$WorkExperience", "from", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 6); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person$WorkExperience", "to", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 6); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person$WorkExperience", "company_name", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(2, 1); mv.visitVarInsn(ILOAD, 2); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "context", "Lnebula/persistor/NebulaContext;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/persistor/NebulaContext", "getTime", "()J"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setLong", "(IJ)V"); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "addBatch", "()V"); mv.visitLabel(l5); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitVarInsn(ALOAD, 7); mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z"); mv.visitJumpInsn(IFNE, l6); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "executeBatch", "()[I"); mv.visitVarInsn(ASTORE, 6); mv.visitVarInsn(ALOAD, 6); mv.visitInsn(ICONST_0); mv.visitInsn(IALOAD); mv.visitInsn(ICONST_1); Label l7 = new Label(); mv.visitJumpInsn(IF_ICMPGE, l7); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l7); mv.visitFrame(Opcodes.F_FULL, 7, new Object[] {"nebula/entity/PersonDbPersistor", "nebula/entity/Person", Opcodes.INTEGER, "java/sql/PreparedStatement", Opcodes.INTEGER, Opcodes.INTEGER, "[I"}, 0, new Object[] {}); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "getUpdateCount", "()I"); mv.visitVarInsn(ISTORE, 5); mv.visitVarInsn(ILOAD, 5); mv.visitInsn(ICONST_1); mv.visitJumpInsn(IF_ICMPEQ, l4); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l1); mv.visitFrame(Opcodes.F_FULL, 2, new Object[] {"nebula/entity/PersonDbPersistor", "nebula/entity/Person"}, 1, new Object[] {"java/sql/SQLException"}); mv.visitVarInsn(ASTORE, 2); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "(Ljava/lang/Throwable;)V"); mv.visitInsn(ATHROW); mv.visitLabel(l4); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitInsn(RETURN); mv.visitMaxs(4, 8); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC, "remove", "(Lnebula/entity/Person;)V", null, null); mv.visitCode(); Label l0 = new Label(); Label l1 = new Label(); mv.visitTryCatchBlock(l0, l1, l1, "java/sql/SQLException"); mv.visitLabel(l0); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("delete from WorkExperience w where w.person_name = ? "); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 2); mv.visitVarInsn(ALOAD, 2); mv.visitInsn(ICONST_1); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "name", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "execute", "()Z"); mv.visitVarInsn(ISTORE, 3); mv.visitVarInsn(ILOAD, 3); Label l2 = new Label(); mv.visitJumpInsn(IFEQ, l2); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l2); mv.visitFrame(Opcodes.F_APPEND,2, new Object[] {"java/sql/PreparedStatement", Opcodes.INTEGER}, 0, null); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("delete from person where person.name = ?"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 2); mv.visitVarInsn(ALOAD, 2); mv.visitInsn(ICONST_1); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(GETFIELD, "nebula/entity/Person", "name", "Ljava/lang/String;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "setString", "(ILjava/lang/String;)V"); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "execute", "()Z"); mv.visitVarInsn(ISTORE, 3); mv.visitVarInsn(ILOAD, 3); Label l3 = new Label(); mv.visitJumpInsn(IFEQ, l3); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l1); mv.visitFrame(Opcodes.F_FULL, 2, new Object[] {"nebula/entity/PersonDbPersistor", "nebula/entity/Person"}, 1, new Object[] {"java/sql/SQLException"}); mv.visitVarInsn(ASTORE, 2); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 2); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "(Ljava/lang/Throwable;)V"); mv.visitInsn(ATHROW); mv.visitLabel(l3); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitInsn(RETURN); mv.visitMaxs(3, 4); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC, "removeAll", "()V", null, null); mv.visitCode(); Label l0 = new Label(); Label l1 = new Label(); mv.visitTryCatchBlock(l0, l1, l1, "java/sql/SQLException"); mv.visitLabel(l0); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("delete from WorkExperience"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 1); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "execute", "()Z"); mv.visitVarInsn(ISTORE, 2); mv.visitVarInsn(ILOAD, 2); Label l2 = new Label(); mv.visitJumpInsn(IFEQ, l2); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l2); mv.visitFrame(Opcodes.F_APPEND,2, new Object[] {"java/sql/PreparedStatement", Opcodes.INTEGER}, 0, null); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitLdcInsn("delete from person"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "prepareStatement", "(Ljava/lang/String;)Ljava/sql/PreparedStatement;"); mv.visitVarInsn(ASTORE, 1); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/PreparedStatement", "execute", "()Z"); mv.visitVarInsn(ISTORE, 2); mv.visitVarInsn(ILOAD, 2); Label l3 = new Label(); mv.visitJumpInsn(IFEQ, l3); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "()V"); mv.visitInsn(ATHROW); mv.visitLabel(l1); mv.visitFrame(Opcodes.F_FULL, 1, new Object[] {"nebula/entity/PersonDbPersistor"}, 1, new Object[] {"java/sql/SQLException"}); mv.visitVarInsn(ASTORE, 1); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "(Ljava/lang/Throwable;)V"); mv.visitInsn(ATHROW); mv.visitLabel(l3); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitInsn(RETURN); mv.visitMaxs(3, 3); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC, "list", "()Ljava/util/List;", "()Ljava/util/List<Lnebula/entity/Person;>;", null); mv.visitCode(); Label l0 = new Label(); Label l1 = new Label(); Label l2 = new Label(); mv.visitTryCatchBlock(l0, l1, l2, "java/sql/SQLException"); mv.visitLabel(l0); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 1); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor", "cp", "Lnebula/db/ConnectionProvider;"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/db/ConnectionProvider", "get", "()Ljava/sql/Connection;"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Connection", "createStatement", "()Ljava/sql/Statement;"); mv.visitVarInsn(ASTORE, 2); mv.visitVarInsn(ALOAD, 2); mv.visitLdcInsn("select name,sex,birthday,height,company_name,lastModified from person p order by p.lastModified desc \n"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Statement", "executeQuery", "(Ljava/lang/String;)Ljava/sql/ResultSet;"); mv.visitVarInsn(ASTORE, 3); mv.visitTypeInsn(NEW, "java/util/ArrayList"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V"); mv.visitVarInsn(ASTORE, 4); Label l3 = new Label(); mv.visitJumpInsn(GOTO, l3); Label l4 = new Label(); mv.visitLabel(l4); mv.visitFrame(Opcodes.F_FULL, 5, new Object[] {"nebula/entity/PersonDbPersistor", Opcodes.INTEGER, "java/sql/Statement", "java/sql/ResultSet", "java/util/ArrayList"}, 0, new Object[] {}); mv.visitTypeInsn(NEW, "nebula/entity/PersonDbPersistor$InnerPerson"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "nebula/entity/PersonDbPersistor$InnerPerson", "<init>", "(Lnebula/entity/PersonDbPersistor;)V"); mv.visitVarInsn(ASTORE, 5); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 1); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "name", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "sex", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "birthday", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "height", "J"); mv.visitVarInsn(ALOAD, 5); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "lastModified", "J"); mv.visitVarInsn(ALOAD, 4); mv.visitVarInsn(ALOAD, 5); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "add", "(Ljava/lang/Object;)Z"); mv.visitInsn(POP); mv.visitLabel(l3); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "next", "()Z"); mv.visitJumpInsn(IFNE, l4); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "close", "()V"); mv.visitVarInsn(ALOAD, 2); mv.visitLdcInsn("select w.person_name,w.index,w.from_,w.to_,w.company_name,w.lastModified from person p join WorkExperience w on p.name=w.person_name order by p.lastModified desc"); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/Statement", "executeQuery", "(Ljava/lang/String;)Ljava/sql/ResultSet;"); mv.visitVarInsn(ASTORE, 3); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 5); Label l5 = new Label(); mv.visitJumpInsn(GOTO, l5); Label l6 = new Label(); mv.visitLabel(l6); mv.visitFrame(Opcodes.F_APPEND,1, new Object[] {Opcodes.INTEGER}, 0, null); mv.visitVarInsn(ALOAD, 3); mv.visitInsn(ICONST_1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitVarInsn(ASTORE, 6); Label l7 = new Label(); mv.visitJumpInsn(GOTO, l7); Label l8 = new Label(); mv.visitLabel(l8); mv.visitFrame(Opcodes.F_APPEND,1, new Object[] {"java/lang/String"}, 0, null); mv.visitIincInsn(5, 1); mv.visitLabel(l7); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitVarInsn(ILOAD, 5); mv.visitVarInsn(ALOAD, 4); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "size", "()I"); Label l9 = new Label(); mv.visitJumpInsn(IF_ICMPGE, l9); mv.visitVarInsn(ALOAD, 6); mv.visitVarInsn(ALOAD, 4); mv.visitVarInsn(ILOAD, 5); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;"); mv.visitTypeInsn(CHECKCAST, "nebula/entity/Person"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/entity/Person", "getName", "()Ljava/lang/String;"); mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z"); mv.visitJumpInsn(IFEQ, l8); mv.visitLabel(l9); mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); mv.visitVarInsn(ALOAD, 4); mv.visitVarInsn(ILOAD, 5); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "get", "(I)Ljava/lang/Object;"); mv.visitTypeInsn(CHECKCAST, "nebula/entity/PersonDbPersistor$InnerPerson"); mv.visitVarInsn(ASTORE, 7); mv.visitTypeInsn(NEW, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 7); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;"); mv.visitInsn(POP); mv.visitMethodInsn(INVOKESPECIAL, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "<init>", "(Lnebula/entity/PersonDbPersistor$InnerPerson;)V"); mv.visitVarInsn(ASTORE, 8); mv.visitInsn(ICONST_0); mv.visitVarInsn(ISTORE, 1); mv.visitIincInsn(1, 1); mv.visitVarInsn(ALOAD, 8); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "index", "Ljava/lang/Long;"); mv.visitVarInsn(ALOAD, 8); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "from", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 8); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "to", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 8); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getString", "(I)Ljava/lang/String;"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "company_name", "Ljava/lang/String;"); mv.visitVarInsn(ALOAD, 8); mv.visitVarInsn(ALOAD, 3); mv.visitIincInsn(1, 1); mv.visitVarInsn(ILOAD, 1); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "getLong", "(I)J"); mv.visitFieldInsn(PUTFIELD, "nebula/entity/PersonDbPersistor$InnerPerson$InnerWorkExperience", "lastModified", "J"); mv.visitVarInsn(ALOAD, 7); mv.visitFieldInsn(GETFIELD, "nebula/entity/PersonDbPersistor$InnerPerson", "workExperiences", "Ljava/util/ArrayList;"); mv.visitVarInsn(ALOAD, 8); mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/ArrayList", "add", "(Ljava/lang/Object;)Z"); mv.visitInsn(POP); mv.visitLabel(l5); mv.visitFrame(Opcodes.F_CHOP,1, null, 0, null); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "next", "()Z"); mv.visitJumpInsn(IFNE, l6); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKEINTERFACE, "java/sql/ResultSet", "close", "()V"); mv.visitVarInsn(ALOAD, 4); mv.visitLabel(l1); mv.visitInsn(ARETURN); mv.visitLabel(l2); mv.visitFrame(Opcodes.F_FULL, 1, new Object[] {"nebula/entity/PersonDbPersistor"}, 1, new Object[] {"java/sql/SQLException"}); mv.visitVarInsn(ASTORE, 1); mv.visitTypeInsn(NEW, "nebula/persistor/PersistorException"); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKESPECIAL, "nebula/persistor/PersistorException", "<init>", "(Ljava/lang/Throwable;)V"); mv.visitInsn(ATHROW); mv.visitMaxs(4, 9); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_VARARGS, "query", "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/List;", "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/List<Lnebula/entity/Person;>;", null); mv.visitCode(); mv.visitInsn(ACONST_NULL); mv.visitInsn(ARETURN); mv.visitMaxs(1, 3); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_BRIDGE + ACC_VARARGS + ACC_SYNTHETIC, "get", "([Ljava/lang/String;)Ljava/lang/Object;", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/entity/PersonDbPersistor", "get", "([Ljava/lang/String;)Lnebula/entity/Person;"); mv.visitInsn(ARETURN); mv.visitMaxs(2, 2); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "merge", "(Ljava/lang/Object;)Ljava/lang/Object;", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitTypeInsn(CHECKCAST, "nebula/entity/Person"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/entity/PersonDbPersistor", "merge", "(Lnebula/entity/Person;)Lnebula/entity/Person;"); mv.visitInsn(ARETURN); mv.visitMaxs(2, 2); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "persist", "(Ljava/lang/Object;)V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitTypeInsn(CHECKCAST, "nebula/entity/Person"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/entity/PersonDbPersistor", "persist", "(Lnebula/entity/Person;)V"); mv.visitInsn(RETURN); mv.visitMaxs(2, 2); mv.visitEnd(); } { mv = cw.visitMethod(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "remove", "(Ljava/lang/Object;)V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitTypeInsn(CHECKCAST, "nebula/entity/Person"); mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/entity/PersonDbPersistor", "remove", "(Lnebula/entity/Person;)V"); mv.visitInsn(RETURN); mv.visitMaxs(2, 2); mv.visitEnd(); } cw.visitEnd(); return cw.toByteArray(); } }