List of usage examples for org.objectweb.asm.tree MethodNode MethodNode
public MethodNode(final int access, final String name, final String descriptor, final String signature, final String[] exceptions)
From source file:gemlite.core.internal.asm.serialize.PdxSerializeHelper.java
License:Apache License
private void implementInterface(ClassNode cn) { MethodNode toMethod = new MethodNode(ACC_PUBLIC, PdxConstants.PDX_TODATA, PdxConstants.PDX_WRITER_PARAM, null, new String[] {}); InsnList instToMethod = toMethod.instructions; MethodNode fromMethod = new MethodNode(ACC_PUBLIC, PdxConstants.PDX_FROMDATA, PdxConstants.PDX_READER_PARAM, null, new String[] {}); InsnList instFromMethod = fromMethod.instructions; for (int i = 0; i < cn.fields.size(); i++) { FieldNode fn = (FieldNode) cn.fields.get(i); fp.toMethod(cn.name, fn, instToMethod); fp.fromMethod(cn.name, fn, instFromMethod); }//from w ww . j a v a 2 s . com //markIdentityFields fp.markIdentityFields(cn, instToMethod); instToMethod.add(new InsnNode(RETURN)); cn.methods.add(toMethod); instFromMethod.add(new InsnNode(RETURN)); cn.methods.add(fromMethod); // if (DomainMojoHelper.log().isDebugEnabled()) // DomainMojoHelper.log().debug(cn.name + " add toData and fromData method."); }
From source file:gemlite.maven.plugin.support.mapper.CreateMapperRegister.java
License:Apache License
private void addConstructFunction(ClassNode reg) { MethodNode mn = new MethodNode(ACC_PUBLIC, "<init>", "()V", null, null); insn = mn.instructions;//from w w w .j a va 2 s. c o m insn.add(new VarInsnNode(ALOAD, 0)); insn.add(AsmHelper.newMethodInsnNode(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false)); insn.add(new InsnNode(RETURN)); reg.methods.add(mn); }
From source file:gemlite.maven.plugin.support.mapper.CreateMapperRegister.java
License:Apache License
private InsnList implementInterface(ClassNode reg) throws IOException { if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add doRegistry()V method..."); MethodNode mn = new MethodNode(ACC_PUBLIC, "doRegistry", "()V", null, null); InsnList insn = mn.instructions;// w w w . ja va 2 s . com reg.methods.add(mn); return insn; }
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;/*from w ww .j a v a 2 s. c o m*/ 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); }
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;// w w w .ja va 2s. c om 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); 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);//from ww w . ja v a2 s .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) { // // w w w. j a v a 2 s.com 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);//w w w. j a v a2 s .c o m 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;/* w ww.j a v a 2 s. c o m*/ 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; 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;//from w ww . j a v a 2s . co m 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); if (DomainMojoHelper.log().isDebugEnabled()) DomainMojoHelper.log().debug("Add value2key(V)K method, key field:" + key.name + " done."); }