svn commit: r153604 - in jakarta/bcel/trunk/src/java/org/apache/bcel: Constants.java classfile/Annotations.java classfile/Attribute.java classfile/EmptyVisitor.java classfile/ParameterAnnotationEntry.java classfile/ParameterAnnotations.java classfile/Visitor.java

[email protected]
Newsgroups gmane.comp.jakarta.bcel.devel
Message-ID <[email protected]>
Author: dbrosius
Date: Sat Feb 12 20:59:14 2005
New Revision: 153604

URL: http://svn.apache.org/viewcvs?view=rev&rev=153604
Log:
Start adding support for Parameter Annotations (still commnted out)

Added:
    jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
    jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java
Modified:
    jakarta/bcel/trunk/src/java/org/apache/bcel/Constants.java
    jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Annotations.java
    jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Attribute.java
    jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/EmptyVisitor.java
    jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Visitor.java

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/Constants.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/Constants.java?view=diff&r1=153603&r2=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/Constants.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/Constants.java Sat Feb 12 20:59:14 2005
@@ -698,21 +698,23 @@
 
   /** Attributes and their corresponding names.
    */
-  public static final byte ATTR_UNKNOWN                       = -1;
-  public static final byte ATTR_SOURCE_FILE                   = 0;
-  public static final byte ATTR_CONSTANT_VALUE                = 1;
-  public static final byte ATTR_CODE                          = 2;
-  public static final byte ATTR_EXCEPTIONS                    = 3;
-  public static final byte ATTR_LINE_NUMBER_TABLE             = 4;
-  public static final byte ATTR_LOCAL_VARIABLE_TABLE          = 5;
-  public static final byte ATTR_INNER_CLASSES                 = 6;
-  public static final byte ATTR_SYNTHETIC                     = 7;
-  public static final byte ATTR_DEPRECATED                    = 8;
-  public static final byte ATTR_PMG                           = 9;
-  public static final byte ATTR_SIGNATURE                     = 10;
-  public static final byte ATTR_STACK_MAP                     = 11;
-  public static final byte ATTR_RUNTIMEVISIBLE_ANNOTATIONS    = 12;
-  public static final byte ATTR_RUNTIMEINVISIBLE_ANNOTATIONS  = 13;
+  public static final byte ATTR_UNKNOWN                       			= -1;
+  public static final byte ATTR_SOURCE_FILE                   			= 0;
+  public static final byte ATTR_CONSTANT_VALUE                			= 1;
+  public static final byte ATTR_CODE                          			= 2;
+  public static final byte ATTR_EXCEPTIONS                    			= 3;
+  public static final byte ATTR_LINE_NUMBER_TABLE             			= 4;
+  public static final byte ATTR_LOCAL_VARIABLE_TABLE          			= 5;
+  public static final byte ATTR_INNER_CLASSES                 			= 6;
+  public static final byte ATTR_SYNTHETIC                     			= 7;
+  public static final byte ATTR_DEPRECATED                    			= 8;
+  public static final byte ATTR_PMG                           			= 9;
+  public static final byte ATTR_SIGNATURE                     			= 10;
+  public static final byte ATTR_STACK_MAP                     			= 11;
+  public static final byte ATTR_RUNTIMEVISIBLE_ANNOTATIONS    			= 12;
+  public static final byte ATTR_RUNTIMEINVISIBLE_ANNOTATIONS  			= 13;
+  public static final byte ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS 	= 14;
+  public static final byte ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS 	= 14;
 
   public static final short KNOWN_ATTRIBUTES = 14;
 
@@ -721,7 +723,8 @@
     "LineNumberTable", "LocalVariableTable",
     "InnerClasses", "Synthetic", "Deprecated",
     "PMGClass", "Signature", "StackMap", 
-    "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations"
+    "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
+    "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations"
   };
 
   /** Constants used in the StackMap attribute.

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Annotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Annotations.java?view=diff&r1=153603&r2=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Annotations.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Annotations.java Sat Feb 12 20:59:14 2005
@@ -104,5 +104,5 @@
 	  /**
 	   * @returns the number of annotation entries in this annotation
 	   */
-	  public final int getNumAnnotation() { return annotation_table_length; }
+	  public final int getNumAnnotations() { return annotation_table_length; }
 }

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Attribute.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Attribute.java?view=diff&r1=153603&r2=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Attribute.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Attribute.java Sat Feb 12 20:59:14 2005
@@ -184,11 +184,17 @@
       return new StackMap(name_index, length, file, constant_pool);
 
 //    case Constants.ATTR_RUNTIMEVISIBLE_ANNOTATIONS:
-//        return new RuntimeVisibleAnnotations(name_index, length, file, constant_pool);
+//      return new RuntimeVisibleAnnotations(name_index, length, file, constant_pool);
         
 //    case Constants.ATTR_RUNTIMEINVISIBLE_ANNOTATIONS:
 //      return new RuntimeInvisibleAnnotations(name_index, length, file, constant_pool);
       
+//    case Constants.ATTR_RUNTIMEVISIBLE_PARAMETER_ANNOTATIONS:
+//      return new RuntimeVisibleParameterAnnotations(name_index, length, file, constant_pool);
+    
+//    case Constants.ATTR_RUNTIMEINVISIBLE_PARAMETER_ANNOTATIONS:
+//      return new RuntimeInvisibleParameterAnnotations(name_index, length, file, constant_pool);
+
     default: // Never reached
       throw new IllegalStateException("Ooops! default case reached.");
     }

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/EmptyVisitor.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/EmptyVisitor.java?view=diff&r1=153603&r2=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/EmptyVisitor.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/EmptyVisitor.java Sat Feb 12 20:59:14 2005
@@ -31,8 +31,9 @@
 public class EmptyVisitor implements Visitor {
   protected EmptyVisitor() { }
 
-  //public void visitAnnotation(Annotations obj) {}
-  //public void visitAnnotationEntry(AnnotationEntry obj) {}
+  public void visitAnnotation(Annotations obj) {}
+  public void visitParameterAnnotation(ParameterAnnotations obj) {}
+  public void visitAnnotationEntry(AnnotationEntry obj) {}
   public void visitCode(Code obj) {}
   public void visitCodeException(CodeException obj) {}
   public void visitConstantClass(ConstantClass obj) {}

Added: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java?view=auto&rev=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java (added)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java Sat Feb 12 20:59:14 2005
@@ -0,0 +1,73 @@
+/*
+ * Copyright  2000-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.bcel.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import org.apache.bcel.Constants;
+
+
+/**
+ * represents one parameter annotation in the parameter annotation table
+ * 
+ * @version $Id: ParameterAnnotationEntry
+ * @author  <A HREF="mailto:[email protected]">D. Brosius</A>
+ */
+public class ParameterAnnotationEntry implements Node, Constants
+{
+	private int annotation_table_length;
+	private AnnotationEntry[] annotation_table;
+	
+	/**
+	 * Construct object from file stream.
+	 * @param file Input stream
+	 * @throws IOException
+	 */
+	ParameterAnnotationEntry(DataInputStream file, ConstantPool constant_pool)
+	       throws IOException
+	{
+		annotation_table_length = (file.readUnsignedShort());
+
+		annotation_table = new AnnotationEntry[annotation_table_length];
+	    for(int i=0; i < annotation_table_length; i++)
+	    	annotation_table[i] = new AnnotationEntry(file, constant_pool);
+	}
+	
+	  /**
+	   * Called by objects that are traversing the nodes of the tree implicitely
+	   * defined by the contents of a Java class. I.e., the hierarchy of methods,
+	   * fields, attributes, etc. spawns a tree of objects.
+	   *
+	   * @param v Visitor object
+	   */
+	  public void accept(Visitor v) {
+//	    v.visitParameterAnnotationEntry(this);
+	  }	  
+	  
+	  /**
+	   * @returns the number of annotation entries in this parameter annotation
+	   */
+	  public final int getNumAnnotations() { return annotation_table_length; }
+	  
+	  /**
+	   * returns the array of annotation entries in this annotation
+	   */
+	  public AnnotationEntry[] getAnnotationEntries() {
+	  	return annotation_table;
+	  }
+}

Added: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java?view=auto&rev=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java (added)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/ParameterAnnotations.java Sat Feb 12 20:59:14 2005
@@ -0,0 +1,108 @@
+/*
+ * Copyright  2000-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.bcel.classfile;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import  org.apache.bcel.Constants;
+
+/**
+ * base class for parameter annotations
+ * 
+ * @version $Id: ParameterAnnotations
+ * @author  <A HREF="mailto:[email protected]">D. Brosius</A>
+ */
+public abstract class ParameterAnnotations extends Attribute {
+
+	private int               		   num_parameters; 
+	private ParameterAnnotationEntry[] parameter_annotation_table;        // Table of parameter annotations
+
+	/**
+	 * @param parameter_annotation_type the subclass type of the parameter annotation
+	 * @param name_index Index pointing to the name <em>Code</em>
+	 * @param length Content length in bytes
+	 * @param file Input stream
+	 * @param constant_pool Array of constants
+	 */
+	ParameterAnnotations(byte parameter_annotation_type, int name_index, int length, DataInputStream file,
+       ConstantPool constant_pool) throws IOException
+    {
+	    this(parameter_annotation_type, name_index, length, (ParameterAnnotationEntry[]) null, constant_pool);   
+	    
+	    num_parameters = (file.readUnsignedShort());
+	    parameter_annotation_table = new ParameterAnnotationEntry[num_parameters];
+
+	    for(int i=0; i < num_parameters; i++)
+	    	parameter_annotation_table[i] = new ParameterAnnotationEntry(file, constant_pool);
+	}
+	
+	/**
+	 * @param parameter_annotation_type the subclass type of the parameter annotation
+	 * @param name_index Index pointing to the name <em>Code</em>
+	 * @param length Content length in bytes
+	 * @param parameter_annotation_table the actual parameter annotations
+	 * @param constant_pool Array of constants
+	 */
+	 public ParameterAnnotations(byte parameter_annotation_type, int name_index, int length, ParameterAnnotationEntry[] parameter_annotation_table, ConstantPool constant_pool)
+	 {
+	    super(parameter_annotation_type, name_index, length, constant_pool);
+	    setParameterAnnotationTable(parameter_annotation_table);
+
+	 }
+	 	  
+	  /**
+	   * Called by objects that are traversing the nodes of the tree implicitely
+	   * defined by the contents of a Java class. I.e., the hierarchy of methods,
+	   * fields, attributes, etc. spawns a tree of objects.
+	   *
+	   * @param v Visitor object
+	   */
+	  public void accept(Visitor v) {
+//	    v.visitParameterAnnotation(this);
+	  }
+	  
+	  /**
+	   * @param parameter_annotation_table the entries to set in this parameter annotation
+	   */
+	  public final void setParameterAnnotationTable(ParameterAnnotationEntry[] parameter_annotation_table)
+	  {
+	    this.parameter_annotation_table = parameter_annotation_table;
+	    num_parameters = (parameter_annotation_table == null)? 0 :
+	    	parameter_annotation_table.length;
+	  }
+
+	  /**
+	   * @returns the parameter annotation entry table
+	   */
+	  public final ParameterAnnotationEntry[] getParameterAnnotationTable()
+	  {
+	    return parameter_annotation_table;
+	  }
+	  
+	  /**
+	   * returns the array of parameter annotation entries in this parameter annotation
+	   */
+	  public ParameterAnnotationEntry[] getParameterAnnotationEntries() {
+	  	return parameter_annotation_table;
+	  }
+	  
+	  /**
+	   * @returns the number of parameter annotation entries in this parameter annotation
+	   */
+	  public final int getNumParameterAnnotation() { return num_parameters; }
+}

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Visitor.java
URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Visitor.java?view=diff&r1=153603&r2=153604
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Visitor.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/Visitor.java Sat Feb 12 20:59:14 2005
@@ -30,6 +30,7 @@
  */
 public interface Visitor {
   //public void visitAnnotation(Annotations obj);
+  //public void visitParameterAnnotation(ParameterAnnotations obj);
   //public void visitAnnotationEntry(AnnotationEntry obj);
   public void visitCode(Code obj);    
   public void visitCodeException(CodeException obj);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.