Package org.objectweb.asm

Examples of org.objectweb.asm.AnnotationVisitor


    }

    public AnnotationVisitor visitAnnotation(final String desc,
        final boolean visible) {
        if (decompilingEntireClass()) {
            AnnotationVisitor cav = classNode.visitAnnotation(desc, visible);
            AnnotationVisitor av = super.visitAnnotation(desc, visible);
            if(av instanceof CommentedAnnotationVisitor){
                CommentedAnnotationVisitor visitor = (CommentedAnnotationVisitor) av;
                visitor.setAnnotationVisitor(cav);
            }
            return av;


        }
    }

    private AnnotationVisitor getDummyAnnotationVisitor(){
        if (dummyAnnVisitor == null) {
            dummyAnnVisitor = new AnnotationVisitor() {
                public void visit(String n, Object value) {
                    /* empty */
                }
                public void visitEnum(String n, String desc, String value) {
                    /* empty */
 

    public DecompiledMethod getResult(final ClassLoader cl) {
        return new DecompiledMethod(owner, text, lineNumbers, meth, cl, modes);
    }

    public AnnotationVisitor visitAnnotationDefault() {
        AnnotationVisitor annVisitor = super.visitAnnotationDefault();
        AnnotationVisitor visitor = meth.visitAnnotationDefault();
        if (annVisitor instanceof CommentedAnnotationVisitor) {
            CommentedAnnotationVisitor av = (CommentedAnnotationVisitor) annVisitor;
            av.setAnnotationVisitor(visitor);
        }
        return annVisitor;

        }
        return annVisitor;
    }

    public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
        AnnotationVisitor annVisitor = super.visitAnnotation(desc, visible);
        AnnotationVisitor visitor = meth.visitAnnotation(desc, visible);
        if (annVisitor instanceof CommentedAnnotationVisitor) {
            CommentedAnnotationVisitor av = (CommentedAnnotationVisitor) annVisitor;
            av.setAnnotationVisitor(visitor);
        }
        return annVisitor;

        return annVisitor;
    }

    public AnnotationVisitor visitParameterAnnotation(int parameter,
        String desc, boolean visible) {
        AnnotationVisitor annVisitor = super.visitParameterAnnotation(
            parameter, desc, visible);
        AnnotationVisitor visitor = meth.visitParameterAnnotation(
            parameter, desc, visible);
        if (annVisitor instanceof CommentedAnnotationVisitor) {
            CommentedAnnotationVisitor av = (CommentedAnnotationVisitor) annVisitor;
            av.setAnnotationVisitor(visitor);
        }

    cv.visitEnd();
  }

  private void addAnnotation() {
    if (!isAnnotationPresent) {
      AnnotationVisitor av = cv.visitAnnotation(annotationDesc, true);
      if (av != null) {
        av.visitEnd();
      }
      isAnnotationPresent = true;
    }
  }

        // method is done, declare all variables
        variableCompiler.declareLocals(scope, scopeStart, scopeEnd);
       
        // Define the annotation for the method
        AnnotationVisitor annotation = method.visitAnnotation(ci(JRubyMethod.class), true);
        annotation.visit("name", rubyName);
        annotation.visit("frame", true);
        annotation.visit("required", scope.getRequiredArgs());
        annotation.visit("optional", scope.getOptionalArgs());
        annotation.visit("rest", scope.getRestArg());
        // TODO: reads/writes from frame
        // TODO: information on scoping
        // TODO: visibility?

        method.end();

        return new MethodVisitor(Opcodes.ASM4) {};
    }
   
    @Override
    public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
        return new AnnotationVisitor(Opcodes.ASM4) {};
    }

    @Override
    public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
      if (Type.getType(desc).getInternalName().equals(
              "com/google/java/contract/core/agent/ContractMethodSignature")) {
        return new AnnotationVisitor(Opcodes.ASM5) {
          @Override
          public void visit(String name, Object value) {
            if (name.equals("lines")) {
              lineNumbers = ContractMethodSignatures.getLineNumbers(value);
            }

        }
        String classFileName = periodToSlashes(className);
        cw.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, classFileName, null,
                 "java/lang/Object", null);

        AnnotationVisitor av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/XmlRootElement;", true);
        av0.visit("name", wrapperElement.getLocalPart());
        av0.visit("namespace", wrapperElement.getNamespaceURI());
        av0.visitEnd();

        av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/XmlAccessorType;", true);
        av0.visitEnum("value", "Ljavax/xml/bind/annotation/XmlAccessType;", "FIELD");
        av0.visitEnd();

        av0 = cw.visitAnnotation("Ljavax/xml/bind/annotation/XmlType;", true);
        if (!anonymous) {
            av0.visit("name", wrapperElement.getLocalPart());
            av0.visit("namespace", wrapperElement.getNamespaceURI());
        } else {
            av0.visit("name", "");           
        }
        av0.visitEnd();

        // add constructor
        MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
        mv.visitCode();
        Label lbegin = new Label();

TOP

Related Classes of org.objectweb.asm.AnnotationVisitor

Copyright © 2018 www.massapicom. 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.