List of usage examples for org.objectweb.asm.tree InsnList add
public void add(final InsnList insnList)
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addConstructFunction(ClassNode domain, ClassNode mapper) { MethodNode mn = new MethodNode(ACC_PUBLIC, "<init>", "()V", null, null); InsnList insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 0)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false)); insn.add(new InsnNode(RETURN)); mapper.methods.add(mn);//w w w . j a v a 2s. c o m }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addMapperValueMethod(ClassNode domain, ClassNode mapper) { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperValue(IDataSource)V method..."); MethodNode mn = new MethodNode(ACC_PUBLIC, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;)L" + domain.name + ";", null, null); InsnList insn = mn.instructions; insn.add(new TypeInsnNode(NEW, domain.name)); insn.add(new InsnNode(DUP)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, domain.name, "<init>", "()V", false)); insn.add(new VarInsnNode(ASTORE, 2)); insn.add(new VarInsnNode(ALOAD, 0)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(new VarInsnNode(ALOAD, 2)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, mapper.name, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;L" + domain.name + ";)L" + domain.name + ";", false)); insn.add(new InsnNode(POP)); insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn);//from ww w.j a va2s . c o m if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperValue(IDataSource)V method done."); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private FieldNode addMergeValueMethod(ClassNode domain, ClassNode mapper, boolean findKey) { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperValue(IDataSource,V)V method..."); MethodNode mn = new MethodNode(ACC_PUBLIC, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;L" + domain.name + ";)L" + domain.name + ";", null, null);/*w w w . ja v a2s . c o m*/ InsnList insn = mn.instructions; FieldNode fnKey = null; for (Object o : domain.fields) { FieldNode fn = (FieldNode) o; if (!DomainMojoHelper.isValidField(fn)) continue; if (findKey && isKeyField(fn)) fnKey = fn; Item1 mti = MapperToolRegistry.getDataSItem(fn.desc); if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("desc:" + fn.desc + " item:" + mti); String s1 = fn.name.substring(0, 1); String s2 = fn.name.substring(1); String setMethod = "set" + s1.toUpperCase() + s2; // field start insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(new LdcInsnNode(fn.name));// aab001 insn.add(AsmHelper.newMethodInsnNode(INVOKEINTERFACE, "gemlite/core/internal/domain/IDataSource", mti.getMethod, "(Ljava/lang/String;)" + mti.desc, true)); // Integer prop; if (AsmHelper.needTypeConvert(mti.desc, fn.desc)) AsmHelper.addTypeConvert(insn, mti.desc); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, domain.name, setMethod, "(" + fn.desc + ")V", false)); // field end } insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperValue(IDataSource,V)V method done."); return fnKey; }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addBridgeMethod(ClassNode domain, ClassNode mapper, String keyClassDesc) { // //from w ww. j ava 2 s. c o m MethodNode mn = new MethodNode(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;Ljava/lang/Object;)Ljava/lang/Object;", null, null); InsnList insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 0)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new TypeInsnNode(CHECKCAST, domain.name)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, mapper.name, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;L" + domain.name + ";)L" + domain.name + ";", false)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); // mn = new MethodNode(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;)Ljava/lang/Object;", null, null); insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 0)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, mapper.name, "mapperValue", "(Lgemlite/core/internal/domain/IDataSource;)L" + domain.name + ";", false)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); // mn = new MethodNode(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "value2Key", "(Ljava/lang/Object;)Ljava/lang/Object;", null, null); insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 0)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(new TypeInsnNode(CHECKCAST, domain.name)); keyClassDesc = AsmHelper.toFullName(keyClassDesc); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, mapper.name, "value2Key", "(L" + domain.name + ";)" + keyClassDesc + "", false)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); // mn = new MethodNode(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "mapperKey", "(Lgemlite/core/internal/domain/IDataSource;)Ljava/lang/Object;", null, null); insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 0)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, mapper.name, "mapperKey", "(Lgemlite/core/internal/domain/IDataSource;)" + keyClassDesc + "", false)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addValue2KeyComplex(ClassNode domain, ClassNode mapper, ClassNode key) { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add value2key(V)K method, key:" + key.name); MethodNode mn = new MethodNode(ACC_PUBLIC, "value2Key", "(L" + domain.name + ";)L" + key.name + ";", null, null);//from www .j av a 2s . c om InsnList insn = mn.instructions; insn.add(new TypeInsnNode(NEW, key.name)); insn.add(new InsnNode(DUP)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, key.name, "<init>", "()V", false)); insn.add(new VarInsnNode(ASTORE, 2)); for (Object o : key.fields) { FieldNode fn = (FieldNode) o; String s1 = fn.name.substring(0, 1); String s2 = fn.name.substring(1); String setMethod = "set" + s1.toUpperCase() + s2; String getMethod = "get" + s1.toUpperCase() + s2; // field start insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, domain.name, getMethod, "()" + fn.desc, false)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, key.name, setMethod, "(" + fn.desc + ")V", false)); // field end } insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add value2key(V)K method, key:" + key.name + " done."); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addMapperKeyComplex(ClassNode domain, ClassNode mapper, ClassNode key) { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperKey(mapperKey)K method, key:" + key.name); MethodNode mn = new MethodNode(ACC_PUBLIC, "mapperKey", "(Lgemlite/core/internal/domain/IDataSource;)L" + key.name + ";", null, null); InsnList insn = mn.instructions; insn.add(new TypeInsnNode(NEW, key.name)); insn.add(new InsnNode(DUP)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, key.name, "<init>", "()V", false)); insn.add(new VarInsnNode(ASTORE, 2)); for (Object o : key.fields) { FieldNode fn = (FieldNode) o;/*from w w w.j a va 2s . co m*/ if (!DomainMojoHelper.isValidField(fn)) continue; Item1 mti = MapperToolRegistry.getDataSItem(fn.desc); String s1 = fn.name.substring(0, 1); String s2 = fn.name.substring(1); String setMethod = "set" + s1.toUpperCase() + s2; // field start insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new VarInsnNode(ALOAD, 1)); insn.add(new LdcInsnNode(fn.name));// aab001 insn.add(AsmHelper.newMethodInsnNode(INVOKEINTERFACE, "gemlite/core/internal/domain/IDataSource", mti.getMethod, "(Ljava/lang/String;)" + fn.desc, true)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, key.name, setMethod, "(" + fn.desc + ")V", false)); // field end } insn.add(new VarInsnNode(ALOAD, 2)); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperKey(mapperKey)K method, key:" + key.name + " done."); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addValue2KeySimple(ClassNode domain, ClassNode mapper, FieldNode key) { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add value2key(V)K method, key field:" + key.name); String s1 = key.name.substring(0, 1); String s2 = key.name.substring(1); String getMethod = "get" + s1.toUpperCase() + s2; String fullDesc = AsmHelper.toFullName(key.desc); MethodNode mn = new MethodNode(ACC_PUBLIC, "value2Key", "(L" + domain.name + ";)" + fullDesc, null, null); InsnList insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 1)); insn.add(AsmHelper.newMethodInsnNode(INVOKEVIRTUAL, domain.name, getMethod, "()" + key.desc, false)); AsmHelper.addTypeConvert(insn, key.desc); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn);// w ww . j a va 2 s. c o m if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add value2key(V)K method, key field:" + key.name + " done."); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addMapperKeySimple(ClassNode mapper, FieldNode key) { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperKey(IDataSource)K method, key field:" + key.name); String fullDesc = AsmHelper.toFullName(key.desc); MethodNode mn = new MethodNode(ACC_PUBLIC, "mapperKey", "(Lgemlite/core/internal/domain/IDataSource;)" + fullDesc, null, null); InsnList insn = mn.instructions; insn.add(new VarInsnNode(ALOAD, 1)); insn.add(new LdcInsnNode(key.name)); Item1 mti = MapperToolRegistry.getDataSItem(key.desc); insn.add(AsmHelper.newMethodInsnNode(INVOKEINTERFACE, "gemlite/core/internal/domain/IDataSource", mti.getMethod, "(Ljava/lang/String;)" + key.desc, true)); AsmHelper.addTypeConvert(insn, key.desc); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn);//from ww w .j av a2 s .co m if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add mapperKey(IDataSource)K method, key field:" + key.name); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addFieldNames(ClassNode domain, ClassNode mapper, ClassNode kcn, FieldNode kfn) { // ???fieldNames MethodNode mn = new MethodNode(ACC_STATIC, "<clinit>", "()V", null, null); InsnList insn = mn.instructions; // new valueFieldNames insn.add(new TypeInsnNode(NEW, "java/util/ArrayList")); insn.add(new InsnNode(DUP)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V", false)); insn.add(new FieldInsnNode(PUTSTATIC, mapper.name, "valueFieldNames", "Ljava/util/List;")); // new keyFieldNames insn.add(new TypeInsnNode(NEW, "java/util/ArrayList")); insn.add(new InsnNode(DUP)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V", false)); insn.add(new FieldInsnNode(PUTSTATIC, mapper.name, "keyFieldNames", "Ljava/util/List;")); // value fields for (Object o : domain.fields) { FieldNode fn = (FieldNode) o;/* ww w . j a v a 2 s .c o m*/ if (!DomainMojoHelper.isValidField(fn)) continue; insn.add(new FieldInsnNode(GETSTATIC, mapper.name, "valueFieldNames", "Ljava/util/List;")); insn.add(new LdcInsnNode(fn.name)); insn.add(AsmHelper.newMethodInsnNode(INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z", true)); insn.add(new InsnNode(POP)); } // key fields if (kcn != null) { for (Object o : kcn.fields) { FieldNode fn = (FieldNode) o; insn.add(new FieldInsnNode(GETSTATIC, mapper.name, "keyFieldNames", "Ljava/util/List;")); insn.add(new LdcInsnNode(fn.name)); insn.add(AsmHelper.newMethodInsnNode(INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z", true)); insn.add(new InsnNode(POP)); } } else { insn.add(new FieldInsnNode(GETSTATIC, mapper.name, "keyFieldNames", "Ljava/util/List;")); insn.add(new LdcInsnNode(kfn.name)); insn.add(AsmHelper.newMethodInsnNode(INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z", true)); insn.add(new InsnNode(POP)); } insn.add(new InsnNode(RETURN)); mapper.methods.add(mn); // fieldNames ???? FieldNode fnFieldNames = new FieldNode(ACC_PRIVATE + ACC_FINAL + ACC_STATIC, "valueFieldNames", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", null); mapper.fields.add(fnFieldNames); fnFieldNames = new FieldNode(ACC_PRIVATE + ACC_FINAL + ACC_STATIC, "keyFieldNames", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", null); mapper.fields.add(fnFieldNames); // getFieldNames mn = new MethodNode(ACC_PUBLIC, "getValueFieldNames", "()Ljava/util/List;", "()Ljava/util/List<Ljava/lang/String;>;", null); insn = mn.instructions; insn.add(new FieldInsnNode(GETSTATIC, mapper.name, "valueFieldNames", "Ljava/util/List;")); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); // getKeyFieldNames mn = new MethodNode(ACC_PUBLIC, "getKeyFieldNames", "()Ljava/util/List;", "()Ljava/util/List<Ljava/lang/String;>;", null); insn = mn.instructions; insn.add(new FieldInsnNode(GETSTATIC, mapper.name, "keyFieldNames", "Ljava/util/List;")); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); }
From source file:gemlite.maven.plugin.support.mapper.MapperToolProcessor.java
License:Apache License
private void addKeyValueTypeMethod(ClassNode domain, ClassNode mapper, String keyClassDesc) { keyClassDesc = AsmHelper.toFullName(keyClassDesc); MethodNode mn = new MethodNode(ACC_PUBLIC, "getKeyClass", "()Ljava/lang/Class;", "()Ljava/lang/Class<" + keyClassDesc + ">;", null); InsnList insn = mn.instructions; insn.add(new LdcInsnNode(Type.getType(keyClassDesc))); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn);/*w w w .j a v a 2 s .c o m*/ String valueClassDesc = "L" + domain.name + ";"; mn = new MethodNode(ACC_PUBLIC, "getValueClass", "()Ljava/lang/Class;", "()Ljava/lang/Class<" + valueClassDesc + ">;", null); insn = mn.instructions; insn.add(new LdcInsnNode(Type.getType(valueClassDesc))); insn.add(new InsnNode(ARETURN)); mapper.methods.add(mn); }