Example usage for org.objectweb.asm.tree MethodNode MethodNode

List of usage examples for org.objectweb.asm.tree MethodNode MethodNode

Introduction

In this page you can find the example usage for org.objectweb.asm.tree MethodNode MethodNode.

Prototype

public MethodNode(final int access, final String name, final String descriptor, final String signature,
        final String[] exceptions) 

Source Link

Document

Constructs a new MethodNode .

Usage

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.");
}