Uploaded image for project: 'Commons BCEL'
  1. Commons BCEL
  2. BCEL-113

AnnotationDefault needs a dump method

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 6.8.1
    • None
    • Main
    • None
    • Operating System: All
      Platform: All

    Description

      While using bcel to read in and then write out an annotation that has a default
      value without making any changes to it, I discovered that the resulting class
      did not contain the annotation default. The annotation looks something like this:

      @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME)
      public @interface Foo
      {
      String name() default "";
      }

      The missing bytes caused a (very misleading) NoClassDefFoundError when I tried
      to load the new class.
      When I tried to decompile the new class, I got this error:
      ItemCollectionInvalidIndex: constants: requested 1280, limit 27

      After comparing the original class with the new class in a hex editor, I
      determined that the bytes for the AnnotationDefault were missing. The problem
      is that the AnnotationDefault class does not have a dump method. I added a dump
      method and this fixed the problem. Here's a diff of the new method:

      $ svn diff
      Index: src/main/java/org/apache/bcel/classfile/AnnotationDefault.java
      ===================================================================
      — src/main/java/org/apache/bcel/classfile/AnnotationDefault.java
      (revision 573325)
      +++ src/main/java/org/apache/bcel/classfile/AnnotationDefault.java (working
      copy)
      @@ -18,6 +18,7 @@

      import java.io.DataInputStream;
      import java.io.IOException;
      +import java.io.DataOutputStream;
      import org.apache.bcel.Constants;

      /**
      @@ -105,4 +106,10 @@

      { throw new RuntimeException("Not implemented yet!"); }

      +
      + public final void dump(DataOutputStream dos) throws IOException
      +

      { + super.dump(dos); + default_value.dump(dos); + }

      }

      Attachments

        Activity

          People

            issues@commons.apache.org Apache Commons Developers
            cfeldmann@rogers.com cfeldmann
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: