Examples of MethodVisitor


Examples of org.ow2.easybeans.asm.MethodVisitor

     * @throws Exception if bytecode can't be built
     */
    public static byte[] getByteForClass(final String className, final String helloWorldString) throws Exception {

        ClassWriter cw = new ClassWriter(0);
        MethodVisitor mv;
        cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, className, null, "java/lang/Object", null);

        // Constructor
        mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
        mv.visitCode();
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
        mv.visitInsn(RETURN);
        mv.visitMaxs(1, 1);
        mv.visitEnd();

        // hello method
        mv = cw.visitMethod(ACC_PUBLIC, "hello", "()Ljava/lang/String;", null, null);
        mv.visitCode();
        mv.visitLdcInsn(helloWorldString);
        mv.visitInsn(ARETURN);
        mv.visitMaxs(1, 1);
        mv.visitEnd();

        cw.visitEnd();

        return cw.toByteArray();
    }
View Full Code Here

Examples of org.ow2.easybeans.asm.MethodVisitor

     * }
     *
     * </pre>
     */
    private void addInvocationContextSetParameters() {
        MethodVisitor mv = getCW().visitMethod(ACC_PUBLIC, "setParameters", "(" + ARRAY_OBJECTS + ")V", null, null);
        mv.visitCode();

        // only for aroundInvoke
        if (this.interceptorType == AROUND_INVOKE) {
            /**
             * if (aobj == null) { throw new IllegalStateException("Cannot set a
             * null array."); }
             */
            mv.visitVarInsn(ALOAD, 1);
            Label notNull = new Label();
            mv.visitJumpInsn(IFNONNULL, notNull);
            mv.visitTypeInsn(NEW, "java/lang/IllegalStateException");
            mv.visitInsn(DUP);
            mv.visitLdcInsn("Cannot set a null array.");
            mv.visitMethodInsn(INVOKESPECIAL, "java/lang/IllegalStateException", "<init>", "(Ljava/lang/String;)V");
            mv.visitInsn(ATHROW);
            mv.visitLabel(notNull);

            /**
             * if (aobj.length != ...) { throw new
             * IllegalStateException("Invalid size of the given array. The
             * length should be '" + ... + "'."); }
             */
            mv.visitVarInsn(ALOAD, 1);
            mv.visitInsn(ARRAYLENGTH);
            mv.visitIntInsn(BIPUSH, this.methodArgsType.length);
            Label sizeOk = new Label();
            mv.visitJumpInsn(IF_ICMPEQ, sizeOk);
            mv.visitTypeInsn(NEW, "java/lang/IllegalStateException");
            mv.visitInsn(DUP);
            mv.visitLdcInsn("Invalid size of the given array. The length should be '" + this.methodArgsType.length + "'.");
            mv.visitMethodInsn(INVOKESPECIAL, "java/lang/IllegalStateException", "<init>", "(Ljava/lang/String;)V");
            mv.visitInsn(ATHROW);
            mv.visitLabel(sizeOk);

            // this.parameters = parameters
            mv.visitVarInsn(ALOAD, 0);
            mv.visitVarInsn(ALOAD, 1);
            mv.visitFieldInsn(PUTFIELD, this.generatedClassName, "parameters", ARRAY_OBJECTS);

            /**
             * arg0 = (Integer) aobj[0]; arg1 = ((Integer) aobj[1]).intValue();
             * arg2 = ((Double) aobj[2]).doubleValue(); arg3 = ((Float)
             * aobj[3]).floatValue(); arg4 = (String) aobj[4]; ...
             */
            int argCount = 0;
            for (Type type : this.methodArgsType) {
                mv.visitVarInsn(ALOAD, 0);
                mv.visitVarInsn(ALOAD, 1);
                mv.visitIntInsn(BIPUSH, argCount);
                mv.visitInsn(AALOAD);
                // Cast object Integer.valueOf(i);
                transformObjectIntoPrimitive(type, mv);
                // write result
                mv.visitFieldInsn(PUTFIELD, this.generatedClassName, ARG + argCount, type.getDescriptor());
                argCount++;
            }
        } else {
            // throw Exception
            mv.visitTypeInsn(NEW, "java/lang/IllegalStateException");
            mv.visitInsn(DUP);
            mv.visitLdcInsn("Operation setParameters can only be applied on AroundInvoke interceptors");
            mv.visitMethodInsn(INVOKESPECIAL, "java/lang/IllegalStateException", "<init>", "(Ljava/lang/String;)V");
            mv.visitInsn(ATHROW);
        }

        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
        mv.visitEnd();
    }
View Full Code Here

Examples of org.ow2.easybeans.asm.MethodVisitor

    /**
     * Generated toString() method.
     * Generated code is in the comments of the method body.
     */
    private void addToString() {
        MethodVisitor mv = getCW().visitMethod(ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null);
        mv.visitCode();

        // local vars
        // 1 = sb
        // 2 = classNames
        // 3 = className
        // 4 = indent2
        // 5 = indent4
        // 6 = i
        //
        int localVar = 1;
        final int varSB = localVar++;
        int varCLASSNAMES = localVar++;
        int varCLASSNAME = localVar++;
        int varINDENT2 = localVar++;
        int varINDENT4 = localVar++;
        int varI = localVar++;

        /*
         * StringBuilder sb = new StringBuilder();
         * String[] classNames = this.getClass().getName().split("\\.");
         * String className = classNames[classNames.length - 1];
         * // classname
         * sb.append(className);
         * sb.append("[\n");
         * String indent2 = "  ";
         * String indent4 = "    ";
         * sb.append(indent2);
         * sb.append("List of interceptors :\n");
         */

        mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
        mv.visitInsn(DUP);
        mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V");
        mv.visitVarInsn(ASTORE, varSB);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;");
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "getName", "()Ljava/lang/String;");
        mv.visitLdcInsn("\\.");
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "split", "(Ljava/lang/String;)[Ljava/lang/String;");
        mv.visitVarInsn(ASTORE, varCLASSNAMES);
        mv.visitVarInsn(ALOAD, varCLASSNAMES);
        mv.visitVarInsn(ALOAD, varCLASSNAMES);
        mv.visitInsn(ARRAYLENGTH);
        mv.visitInsn(ICONST_1);
        mv.visitInsn(ISUB);
        mv.visitInsn(AALOAD);
        mv.visitVarInsn(ASTORE, varCLASSNAME);
        mv.visitVarInsn(ALOAD, varSB);
        mv.visitVarInsn(ALOAD, varCLASSNAME);
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
        mv.visitInsn(POP);
        mv.visitVarInsn(ALOAD, varSB);
        mv.visitLdcInsn("[\n");
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
        mv.visitInsn(POP);
        mv.visitLdcInsn("  ");
        mv.visitVarInsn(ASTORE, varINDENT2);
        mv.visitLdcInsn("    ");
        mv.visitVarInsn(ASTORE, varINDENT4);
        mv.visitVarInsn(ALOAD, varSB);
        mv.visitVarInsn(ALOAD, varINDENT2);
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
        mv.visitInsn(POP);
        mv.visitVarInsn(ALOAD, varSB);
        mv.visitLdcInsn("List of interceptors :\n");
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
        mv.visitInsn(POP);

        /*
         * In the loop, print :
         * sb.append(indent4);
         * sb.append(i);
         * sb.append(") - ");
         * sb.append(interceptor.getClassName());
         * sb.append("[");
         * sb.append(interceptor.getJMethod().getName());
         * sb.append("]\n");
         */
        int i = 1;

        // int i = 1;
        mv.visitInsn(ICONST_1);
        mv.visitVarInsn(ISTORE, varI);

        if (this.allInterceptors != null) {
            for (IJClassInterceptor interceptor : this.allInterceptors) {
                mv.visitVarInsn(ALOAD, varSB);
                mv.visitVarInsn(ALOAD, varINDENT4);
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                mv.visitVarInsn(ALOAD, varSB);
                mv.visitVarInsn(ILOAD, varI);
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                mv.visitVarInsn(ALOAD, varSB);
                mv.visitLdcInsn(") - ");
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                // sb.append(interceptor.getClassName());
                mv.visitVarInsn(ALOAD, varSB);
                mv.visitLdcInsn(interceptor.getClassName());
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                mv.visitVarInsn(ALOAD, varSB);
                mv.visitLdcInsn("[");
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                // sb.append(interceptor.getJMethod().getName());
                mv.visitVarInsn(ALOAD, varSB);
                mv.visitLdcInsn(interceptor.getJMethod().getName());
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                mv.visitVarInsn(ALOAD, varSB);
                mv.visitLdcInsn("]\n");
                mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                        "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
                mv.visitInsn(POP);

                i++;
                // i++
                mv.visitIincInsn(varI, 1);
            }
            /*
             * sb.append(indent2);
             * sb.append("Current interceptor : ");
             * sb.append(interceptor); sb.append("/");
             * sb.append(allInterceptors.size());
             */
            mv.visitVarInsn(ALOAD, varSB);
            mv.visitVarInsn(ALOAD, varINDENT2);
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                    "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);

            mv.visitVarInsn(ALOAD, varSB);
            mv.visitLdcInsn("Current interceptor : ");
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                    "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);

            mv.visitVarInsn(ALOAD, varSB);
            mv.visitVarInsn(ALOAD, 0);
            mv.visitFieldInsn(GETFIELD, this.generatedClassName, "interceptor", "I");
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);

            mv.visitVarInsn(ALOAD, varSB);
            mv.visitLdcInsn("/");
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                    "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);

            mv.visitVarInsn(ALOAD, varSB);
            mv.visitLdcInsn(String.valueOf(this.allInterceptors.size()));
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                    "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);

        } else {
            /*
             * sb.append(indent2);
             * sb.append("No interceptors : ");
             */
            mv.visitVarInsn(ALOAD, varSB);
            mv.visitVarInsn(ALOAD, varINDENT2);
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                    "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);

            mv.visitVarInsn(ALOAD, varSB);
            mv.visitLdcInsn("No interceptors : ");
            mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                    "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
            mv.visitInsn(POP);
        }

        /*
         * sb.append("\n");
         * sb.append("]");
         * return sb.toString();
         */
        mv.visitVarInsn(ALOAD, varSB);
        mv.visitLdcInsn("\n");
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
        mv.visitInsn(POP);

        mv.visitVarInsn(ALOAD, varSB);
        mv.visitLdcInsn("]");
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append",
                "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
        mv.visitInsn(POP);

        mv.visitVarInsn(ALOAD, varSB);
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;");
        mv.visitInsn(ARETURN);

        mv.visitMaxs(0, 0);
        mv.visitEnd();

    }
View Full Code Here

Examples of org.ow2.easybeans.asm.MethodVisitor

        // Add its getter :
        // public CLASSNAME getterName() {
        //    return this.fieldName;
        // }
        MethodVisitor mv = cv.visitMethod(ACC_PUBLIC, getterName, "()" + className, null, null);
        // Add some flags on the generated method
        addAnnotationsOnGeneratedMethod(mv);
        mv.visitCode();
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, beanClassName, fieldName, className);
        // return type is depending of the type
        addReturnType(type, mv);
        mv.visitMaxs(0, 0);
        mv.visitEnd();

        // Add the setter
        // public void setterName(final CLASSNAME setterName) {
        //    this.fieldName = fieldName;
        // }
        String setterName = "set" + appendName;
        mv = cv.visitMethod(ACC_PUBLIC, setterName, "(" + className + ")V", null, null);
        // Add some flags on the generated method
        addAnnotationsOnGeneratedMethod(mv);
        mv.visitCode();
        mv.visitVarInsn(ALOAD, 0);
        // Depends of the type
        int opCode = putFieldLoadOpCode(type.getSort());
        mv.visitVarInsn(opCode, 1);
        mv.visitFieldInsn(PUTFIELD, beanClassName, fieldName, className);
        mv.visitInsn(RETURN);
        mv.visitMaxs(0, 0);
        mv.visitEnd();
    }
View Full Code Here

Examples of org.ow2.easybeans.asm.MethodVisitor

        String returnedClassName = Type.getDescriptor(clazz);
        // Add its getter :
        // public returnedClassName getterName() {
        //    return null;
        // }
        MethodVisitor mv = cv.visitMethod(ACC_PUBLIC, getterName, "()" + returnedClassName, null, null);
        // Add some flags on the generated method
        addAnnotationsOnGeneratedMethod(mv);

        mv.visitCode();
        mv.visitInsn(ACONST_NULL);
        mv.visitInsn(ARETURN);

        mv.visitMaxs(0, 0);
        mv.visitEnd();
    }
View Full Code Here

Examples of org.rsbot.loader.asm.MethodVisitor

  }

  @Override
  public void visitEnd() {
    for (final Method m : methods) {
      final MethodVisitor mv = cv.visitMethod(m.access, m.name, m.desc, null, null);
      mv.visitCode();
      new CodeReader(m.code).accept(mv);
      mv.visitMaxs(m.max_stack, m.max_locals);
      mv.visitEnd();
    }
    cv.visitEnd();
  }
View Full Code Here

Examples of org.springframework.asm.MethodVisitor

      for (FieldAdder fieldAdder: fieldAdders) {
        fieldAdder.generateField(cw,this);
      }
    }
    if (clinitAdders != null) {
      MethodVisitor mv = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "<clinit>", "()V", null, null);
      mv.visitCode();
      nextFreeVariableId = 0; // To 0 because there is no 'this' in a clinit
      for (ClinitAdder clinitAdder: clinitAdders) {
        clinitAdder.generateCode(mv, this);
      }
      mv.visitInsn(RETURN);
      mv.visitMaxs(0,0); // not supplied due to COMPUTE_MAXS
      mv.visitEnd();
    }
  }
View Full Code Here

Examples of scala.tools.asm.MethodVisitor

    @Override
    public MethodVisitor visitMethod(final int access, final String name,
            final String desc, final String signature, final String[] exceptions) {
        Printer p = this.p.visitMethod(access, name, desc, signature,
                exceptions);
        MethodVisitor mv = cv == null ? null : cv.visitMethod(access, name,
                desc, signature, exceptions);
        return new TraceMethodVisitor(mv, p);
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.