Package org.objectweb.asm.tree

Examples of org.objectweb.asm.tree.ClassNode


    SerializeClassImplementation(){
      _labels = new  HashMap<Integer, LabelNode>();
    }
   
    void serialize(IConstructor c,OutputStream output) throws IOException {
      ClassNode cn = buildClass(c);
      ClassWriter cw = new ClassWriter(COMPUTE_FRAMES);
      cn.accept(cw);
      output.write(cw.toByteArray());
      output.close();
    }
View Full Code Here


      output.write(cw.toByteArray());
      output.close();
    }

    ClassNode buildClass(IConstructor c) {
      ClassNode classNode = new ClassNode();
 
      classNode.version = ((IInteger)c.get(0)).intValue();
      classNode.access = ((IInteger)c.get(1)).intValue();
      classNode.name = ((IString)c.get(2)).getValue();
      classNode.signature = emptyIsNull(((IString)c.get(3)).getValue());
View Full Code Here

  }

  @SuppressWarnings("unchecked")
  public static void deserializeToDisk(ISourceLocation source, ISourceLocation destination, IString moduleName) {
    try (InputStream inputStream = _resolver.getInputStream(source.getURI())) {
      ClassNode cn = new ClassNode();
      ClassReader cr = new ClassReader(inputStream);
      //cr.aaccept(cn, 0);
     
      OutputStreamWriter writer = new OutputStreamWriter(_resolver.getOutputStream(destination.getURI(), false));
      writer.write("module " + moduleName.getValue() + "\n\n");
View Full Code Here

            try {
                classReader = new ClassReader(input);
            } finally {
                input.close();
            }
            final ClassNode classNode = new ClassNode();
            classReader.accept(classNode, SKIP_CODE | SKIP_DEBUG | SKIP_FRAMES);

            // create descriptions
            final List<ScannedAnnotation> annotations = extractAnnotation(classNode, annotatedClass);
            if (annotations.size() > 0) {
View Full Code Here

                           final String outputDirectory,
                           final Log logger)
    throws SCRDescriptorException {
        // now do byte code manipulation
        final String fileName = outputDirectory + File.separatorChar +  className.replace('.', File.separatorChar) + ".class";
        final ClassNode cn = new ClassNode();
        try {
            final ClassReader reader = new ClassReader(new FileInputStream(fileName));
            reader.accept(cn, 0);

            // For target Java7 and above use: ClassWriter.COMPUTE_MAXS  | ClassWriter.COMPUTE_FRAMES
            final int mask = (cn.version > 50 ? ClassWriter.COMPUTE_MAXS  | ClassWriter.COMPUTE_FRAMES : 0);
            final ClassWriter writer = new ClassWriter(mask) {

                @Override
                protected String getCommonSuperClass(final String type1, final String type2) {
                    Class<?> c, d;
                    try {
                        c = classLoader.loadClass(type1.replace('/', '.'));
                        d = classLoader.loadClass(type2.replace('/', '.'));
                    } catch (final Exception e) {
                        throw new RuntimeException(e.toString(), e);
                    }
                    if (c.isAssignableFrom(d)) {
                        return type1;
                    }
                    if (d.isAssignableFrom(c)) {
                        return type2;
                    }
                    if (c.isInterface() || d.isInterface()) {
                        return "java/lang/Object";
                    }
                    do {
                        c = c.getSuperclass();
                    } while (!c.isAssignableFrom(d));
                    return c.getName().replace('.', '/');
                }

            };

            cn.accept(writer);
            if ( createBind ) {
                logger.debug("Adding bind " + className + " " + fieldName);

                createMethod(writer, className, referenceName, fieldName, typeName, true);
            }
View Full Code Here

        // One of the less-than-ideal features of ASM is that
        // invalid classfile format is indicated by a
        // random runtime exception rather than something
        // indicative of the real problem.
        try {
            ClassNode cn = new ClassNode();
            classReader.accept(cn, 0);
            return cn;
        } catch (RuntimeException e) {
            throw new InvalidClassFileFormatException(descriptor, entry, e);
        }
View Full Code Here

      cw.visitField(ACC_PRIVATE, "$data", "Ljava/nio/ByteBuffer;", null, null).visitEnd();
      injectGrow(meta.type.getInternalName());
      injectDispose(meta.type.getInternalName());
     
      FieldToStructTransformer transformer = new FieldToStructTransformer(meta);
      ClassNode cn = transformer.transform(cr);
     
      cn.accept(cw);
    } else {
      cr.accept(cw, 0);
    }
    return cw.toByteArray();
  }
View Full Code Here

    this.meta = meta;
  }
 
  @Override @SuppressWarnings("unchecked")
  public ClassNode transform(ClassReader cr) {
    ClassNode cn = new ClassNode(ASM4);
    cr.accept(cn,  ClassReader.EXPAND_FRAMES);
   
    List<FieldDescriptor> toPack = instanceFields(meta);
   
    for (FieldDescriptor fd : meta.fields) {
View Full Code Here

  private boolean compileClass(String file) {
    ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
   
    ExternalFieldClassTransformer transformer = new ExternalFieldClassTransformer(null, packed);
    ClassNode cn = transformer.transform(cr);
   
    if (!transformer.isComponentAccessChanged())
      return false;
   
    try {
      cn.accept(cw);
      if (file != null)
        ClassUtil.writeClass(cw, file);
     
      return true;
     
View Full Code Here

  @Override
  public byte[] transform(String name, String transformedName, byte[] bytes)
  {
    ClassReader cr = new ClassReader(bytes);
    ClassNode cn = new ClassNode();
    cr.accept(cn, 0);

    workingPath.add(transformedName);

    if (this.implement(cn))
    {
      System.out.println("Adding runtime interfaces to " + transformedName);
      ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
      cn.accept(cw);
      bytes = cw.toByteArray();
      cr = new ClassReader(bytes);
    }

    workingPath.remove(workingPath.size() - 1);
View Full Code Here

TOP

Related Classes of org.objectweb.asm.tree.ClassNode

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.