Package org.objectweb.asm

Examples of org.objectweb.asm.ClassReader


        InputStream inputStream;

        // Use ASM
        inputStream = location.getInputStream(name);
        this.classReader = new ClassReader(inputStream);
        inputStream.close();

        // Use jClassLib
        inputStream = location.getInputStream(name);
        this.classFile = ClassFileReader.readFromInputStream(inputStream);
View Full Code Here


    String resource = "/" + name.replace('.', '/') + ".class";
if (DEBUG) System.out.println("Reading class file: " + resource);
    InputStream classStream = class_.getResourceAsStream(resource);
    try {
      ClassReader r = new ClassReader(classStream);
      r.accept(this, ClassReader.SKIP_CODE + ClassReader.SKIP_DEBUG
          + ClassReader.SKIP_FRAMES);

    } catch (IOException e) {
      // Shouldn't generally happen
      throw new TypeNotPresentException(
View Full Code Here

  private void readClassStream(final String name, final ClassVisitor cv) {
    String resource = "/" + name.replace('.', '/') + ".class";
    InputStream classStream = class_.getResourceAsStream(resource);
    try {
      ClassReader r = new ClassReader(classStream);
      r.accept(cv, ClassReader.SKIP_CODE + ClassReader.SKIP_DEBUG
          + ClassReader.SKIP_FRAMES);

      Class parent = class_.getSuperclass();
      if (parent != null) {
        AIB parentAib = getAib(parent);
View Full Code Here

  private static final boolean COMPACT_CONSTANTS = true;

  protected boolean weave(InputStream sourceStream, String fileName, ByteArrayOutputStream bos)
      throws IOException {

        ClassReader cr = new ClassReader(sourceStream);
        ClassWriter cw = new ClassWriter(true);

        try {
          NameTranslatorClassVisitor translator;
          ConstantPool cp;
            if (COMPACT_CONSTANTS) {
                cp = new ConstantPool();
                ClassConstantsCollector ccc = new ClassConstantsCollector(cw, cp);
                translator = new NameTranslatorClassVisitor(ccc);
            } else {
              translator = new NameTranslatorClassVisitor(cw);
            }
            ClassWeaver classWeaver = new ClassWeaver(translator, lazy, target, listener);
            SignatureStripper sigStripper = new SignatureStripper(classWeaver);
            cr.accept(sigStripper, false);       

            if (COMPACT_CONSTANTS) {
              Set<Constant> constants = new TreeSet<Constant>(new ConstantComparator());
              constants.addAll(cp.values());

              cr = new ClassReader(cw.toByteArray());
                cw = new ClassWriter(false);
                for(Constant c: constants)
                  c.write(cw);
                cr.accept(cw, false);
            }

          bos.write(cw.toByteArray());
          return true;
        } catch (LazyException e) {
View Full Code Here

  private void verifyClass(InputStream sourceStream, String classFileName)
      throws IOException {

    failedClasses = new HashSet<String>();

        ClassReader cr = new ClassReader(sourceStream);
        cr.accept(this, false);
  }
View Full Code Here

    if (warningCount != 0)
      listener.displaySummary(warningCount);
  }

  private ClassReader getClassReader(String className) throws ClassNotFoundException {
      ClassReader reader = null;
    SoftReference<ClassReader> ref = classReaderCache.get(className);
    if (ref != null)
      reader = ref.get();

    if (reader == null) {
      byte b[] = classLoader.getClassData(className);

      reader = new ClassReader(b);

      classReaderCache.put(className, new SoftReference<ClassReader>(reader));
    }
    return reader;   
  }
View Full Code Here

    }

  private boolean findField(String owner, final String name, final String c) throws ClassNotFoundException {
    String javaClassName = owner;
    while (true) {
      ClassReader reader = getClassReader(javaClassName);
      FindFieldOrMethodClassVisitor visitor = new FindFieldOrMethodClassVisitor(false, name, c);
   
      try {
        reader.accept(visitor, false);
      } catch (Success s) {
        return true;
      }
      String[] is = visitor.classInterfaces;
      for (String i : is)
View Full Code Here

  }

  private boolean findMethod(final String owner, final String name, final String desc) throws ClassNotFoundException {
    String javaClassName = owner;
    while (true) {
      ClassReader reader = getClassReader(javaClassName);
      FindFieldOrMethodClassVisitor visitor = new FindFieldOrMethodClassVisitor(true, name, desc);
      try {
        reader.accept(visitor, false);
      } catch (Success s) {
        return true;
      }

      if (visitor.isInterface || visitor.isAbstract) {
View Full Code Here

  };

  protected boolean weave(InputStream sourceStream, String fileName, ByteArrayOutputStream bos)
      throws IOException {

        ClassReader cr = new ClassReader(sourceStream);
        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);

        try {
          // chain class visitors
          ClassVisitor classVisitor = cw;
          ConstantPool cp;
            if (COMPACT_CONSTANTS) {
                cp = new ConstantPool();
                classVisitor = new ClassConstantsCollector(classVisitor, cp);
            }
            classVisitor = new NameTranslatorClassVisitor(classVisitor, NameTranslator.getGeneralTranslator());
          classVisitor = new ClassWeaver(classVisitor,
                        lazy, stripAttributes, target, listener);
         
          // StringBuilder translation will be done before general weaving and
          // mirror translation: trimToSize() calls will be processed correctly
          // and no need to do translations in general weaving process
            classVisitor = new NameTranslatorClassVisitor(classVisitor, NameTranslator.getStringBuilderTranslator());

          if (stripSignatures) {
            classVisitor = new SignatureStripper(classVisitor);
          }

          classVisitor = new AnnotationWeaver(classVisitor);

          cr.accept(classVisitor, CUSTOM_ATTRIBUTES, ClassReader.EXPAND_FRAMES);       

            if (COMPACT_CONSTANTS) {
              Set<Constant> constants = new TreeSet<Constant>(new ConstantComparator());
              constants.addAll(cp.values());

              cr = new ClassReader(cw.toByteArray());
                cw = new ClassWriter(0);
                for(Constant c: constants) {
                  c.write(cw);
                }
                cr.accept(cw, 0);
            }

          bos.write(cw.toByteArray());
          return true;
        } catch (TranslatorException te) {
View Full Code Here

  private void verifyClass(InputStream sourceStream)
      throws IOException {

    failedClasses = new HashSet<String>();

        ClassReader cr = new ClassReader(sourceStream);
        cr.accept(this, 0);
  }
View Full Code Here

TOP

Related Classes of org.objectweb.asm.ClassReader

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.