Author: tcurdt
Date: Mon Jun 26 03:19:54 2006
New Revision: 417157
URL: http://svn.apache.org/viewvc?rev=417157&view=rev
Log:
GSoC: latest changes from Dmitriy Khayredinov
Added:
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java (with props)
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java (with props)
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java (with props)
Modified:
jakarta/bcel/trunk/pom.xml
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Annotations.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValue.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValuePair.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Utility.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationGen.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementNameValuePairGen.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValueGen.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java
jakarta/bcel/trunk/src/test/java/org/apache/bcel/AnnotationGenTestCase.java
Modified: jakarta/bcel/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/pom.xml?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/pom.xml (original)
+++ jakarta/bcel/trunk/pom.xml Mon Jun 26 03:19:54 2006
@@ -149,8 +149,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>true</debug>
- <source>1.4</source>
- <target>1.4</target>
+ <source>1.5</source>
+ <target>1.5</target>
</configuration>
</plugin>
<plugin>
@@ -180,4 +180,4 @@
<version>3.8.1</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/AnnotationEntry.java Mon Jun 26 03:19:54 2006
@@ -19,6 +19,8 @@
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.bcel.Constants;
/**
@@ -32,8 +34,9 @@
private int type_index;
private int num_element_value_pairs;
- private ElementValuePair[] element_value_pairs;
+ private List element_value_pairs;
private ConstantPool constant_pool;
+ private boolean isRuntimeVisible;
/**
@@ -41,14 +44,22 @@
* @param file Input stream
* @throws IOException
*/
- AnnotationEntry(DataInputStream file, ConstantPool constant_pool) throws IOException {
- type_index = (file.readUnsignedShort());
- num_element_value_pairs = (file.readUnsignedShort());
- element_value_pairs = new ElementValuePair[num_element_value_pairs];
- for (int i = 0; i < num_element_value_pairs; i++) {
- element_value_pairs[i] = new ElementValuePair(file, constant_pool);
- }
+ public AnnotationEntry(int type_index, ConstantPool constant_pool, boolean isRuntimeVisible) {
+ this.type_index = type_index;
+
this.constant_pool = constant_pool;
+ this.isRuntimeVisible = isRuntimeVisible;
+ }
+
+ public static AnnotationEntry read(DataInputStream file, ConstantPool constant_pool, boolean isRuntimeVisible) throws IOException
+ {
+ AnnotationEntry annotationEntry = new AnnotationEntry(file.readUnsignedShort(), constant_pool, isRuntimeVisible);
+ annotationEntry.num_element_value_pairs = (file.readUnsignedShort());
+ annotationEntry.element_value_pairs = new ArrayList();
+ for (int i = 0; i < annotationEntry.num_element_value_pairs; i++) {
+ annotationEntry.element_value_pairs.add(new ElementValuePair(file.readUnsignedShort(), ElementValue.readElementValue(file, constant_pool), constant_pool));
+ }
+ return annotationEntry;
}
@@ -72,6 +83,14 @@
c = (ConstantUtf8) constant_pool.getConstant(type_index, CONSTANT_Utf8);
return c.getBytes();
}
+
+ /**
+ * @return the annotation type index
+ */
+ public int getAnnotationTypeIndex()
+ {
+ return type_index;
+ }
/**
@@ -86,12 +105,24 @@
* @return the element value pairs in this annotation entry
*/
public ElementValuePair[] getElementValuePairs() {
- return element_value_pairs;
+ // TOFO return List
+ return (ElementValuePair[]) element_value_pairs.toArray();
}
public void dump(DataOutputStream dos)
{
// TODO Auto-generated method stub
+ }
+
+
+ public boolean isRuntimeVisible()
+ {
+ return isRuntimeVisible;
+ }
+
+ public void addElementNameValuePair(ElementValuePair elementNameValuePair)
+ {
+ element_value_pairs.add(elementNameValuePair);
}
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Annotations.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Annotations.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Annotations.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Annotations.java Mon Jun 26 03:19:54 2006
@@ -30,6 +30,7 @@
private int annotation_table_length;
private AnnotationEntry[] annotation_table; // Table of annotations
+ private boolean isRuntimeVisible;
/**
@@ -39,13 +40,13 @@
* @param file Input stream
* @param constant_pool Array of constants
*/
- Annotations(byte annotation_type, int name_index, int length, DataInputStream file,
- ConstantPool constant_pool) throws IOException {
- this(annotation_type, name_index, length, (AnnotationEntry[]) null, constant_pool);
+ public Annotations(byte annotation_type, int name_index, int length, DataInputStream file,
+ ConstantPool constant_pool, boolean isRuntimeVisible) throws IOException {
+ this(annotation_type, name_index, length, (AnnotationEntry[]) null, constant_pool, isRuntimeVisible);
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);
+ annotation_table[i] = AnnotationEntry.read(file, constant_pool, isRuntimeVisible);
}
}
@@ -58,9 +59,10 @@
* @param constant_pool Array of constants
*/
public Annotations(byte annotation_type, int name_index, int length,
- AnnotationEntry[] annotation_table, ConstantPool constant_pool) {
+ AnnotationEntry[] annotation_table, ConstantPool constant_pool , boolean isRuntimeVisible) {
super(annotation_type, name_index, length, constant_pool);
setAnnotationTable(annotation_table);
+ this.isRuntimeVisible = isRuntimeVisible;
}
@@ -106,5 +108,10 @@
*/
public final int getNumAnnotations() {
return annotation_table_length;
+ }
+
+ public boolean isRuntimeVisible()
+ {
+ return isRuntimeVisible;
}
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValue.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValue.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValue.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValue.java Mon Jun 26 03:19:54 2006
@@ -118,8 +118,9 @@
case 'c': // Class
return new ClassElementValue(CLASS, dis.readUnsignedShort(), cpool);
case '@': // Annotation
- return new AnnotationElementValue(ANNOTATION, new AnnotationEntry(
- dis, cpool), cpool);
+ // TODO isRuntimeVisible
+ return new AnnotationElementValue(ANNOTATION, AnnotationEntry.read(
+ dis, cpool, false), cpool);
case '[': // Array
int numArrayVals = dis.readUnsignedShort();
List arrayVals = new ArrayList();
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValuePair.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValuePair.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValuePair.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ElementValuePair.java Mon Jun 26 03:19:54 2006
@@ -16,30 +16,45 @@
*/
package org.apache.bcel.classfile;
-import java.io.DataInputStream;
-import java.io.IOException;
+import org.apache.bcel.Constants;
/**
* an annotation's element value pair
*
* @version $Id: ElementValuePair
- * @author <A HREF="mailto:[email protected]">D. Brosius</A>
+ * @author <A HREF="mailto:[email protected]">D. Brosius</A>
* @since 5.2
*/
-public class ElementValuePair {
+public class ElementValuePair
+{
+ private ElementValue elementValue;
- private int element_name_index;
- private ElementValue value;
+ private ConstantPool constantPool;
+ private int elementNameIndex;
- /**
- * Construct object from file stream.
- * @param file Input stream
- * @param constant_pool the constant pool
- * @throws IOException
- */
- ElementValuePair(DataInputStream file, ConstantPool constant_pool) throws IOException {
- element_name_index = (file.readUnsignedShort());
- value = ElementValue.readElementValue(file, constant_pool);
- }
+ public ElementValuePair(int elementNameIndex, ElementValue elementValue,
+ ConstantPool constantPool)
+ {
+ this.elementValue = elementValue;
+ this.elementNameIndex = elementNameIndex;
+ this.constantPool = constantPool;
+ }
+
+ public String getNameString()
+ {
+ ConstantUtf8 c = (ConstantUtf8) constantPool.getConstant(
+ elementNameIndex, Constants.CONSTANT_Utf8);
+ return c.getBytes();
+ }
+
+ public final ElementValue getValue()
+ {
+ return elementValue;
+ }
+
+ public int getNameIndex()
+ {
+ return elementNameIndex;
+ }
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/ParameterAnnotationEntry.java Mon Jun 26 03:19:54 2006
@@ -42,7 +42,8 @@
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);
+// TODO isRuntimeVisible
+ annotation_table[i] = AnnotationEntry.read(file, constant_pool, false);
}
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java Mon Jun 26 03:19:54 2006
@@ -38,7 +38,7 @@
*/
RuntimeInvisibleAnnotations(int name_index, int length, DataInputStream file,
ConstantPool constant_pool) throws IOException {
- super(Constants.ATTR_RUNTIMEIN_VISIBLE_ANNOTATIONS, name_index, length, file, constant_pool);
+ super(Constants.ATTR_RUNTIMEIN_VISIBLE_ANNOTATIONS, name_index, length, file, constant_pool, false);
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeVisibleAnnotations.java Mon Jun 26 03:19:54 2006
@@ -36,12 +36,12 @@
* @param file Input stream
* @param constant_pool Array of constants
*/
- RuntimeVisibleAnnotations(int name_index, int length, DataInputStream file,
+ public RuntimeVisibleAnnotations(int name_index, int length, DataInputStream file,
ConstantPool constant_pool) throws IOException {
- super(Constants.ATTR_RUNTIME_VISIBLE_ANNOTATIONS, name_index, length, file, constant_pool);
+ super(Constants.ATTR_RUNTIME_VISIBLE_ANNOTATIONS, name_index, length, file, constant_pool, true);
}
-
-
+
+
/**
* @return deep copy of this attribute
*/
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/SimpleElementValue.java Mon Jun 26 03:19:54 2006
@@ -24,7 +24,7 @@
{
private int index;
- protected SimpleElementValue(int type, int index, ConstantPool cpool)
+ public SimpleElementValue(int type, int index, ConstantPool cpool)
{
super(type, cpool);
this.index = index;
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Utility.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Utility.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Utility.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Utility.java Mon Jun 26 03:19:54 2006
@@ -20,6 +20,8 @@
import java.io.ByteArrayOutputStream;
import java.io.CharArrayReader;
import java.io.CharArrayWriter;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
import java.io.FilterReader;
import java.io.FilterWriter;
import java.io.IOException;
@@ -33,6 +35,8 @@
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import org.apache.bcel.Constants;
+import org.apache.bcel.generic.AnnotationEntryGen;
+import org.apache.bcel.generic.ConstantPoolGen;
import org.apache.bcel.util.ByteSequence;
/**
@@ -1338,5 +1342,74 @@
}
}
return buf.toString();
+ }
+
+
+ /**
+ * Converts a list of AnnotationGen objects into a set of attributes
+ * that can be attached to the class file.
+ *
+ * @param cp The constant pool gen where we can create the necessary name refs
+ * @param vec A list of AnnotationGen objects
+ */
+ public static Attribute[] getAnnotationAttributes(ConstantPoolGen cp,List vec) {
+
+ if (vec.size()==0) return null;
+
+ try {
+ int countVisible = 0;
+ int countInvisible = 0;
+
+ // put the annotations in the right output stream
+ for (int i=0; i<vec.size(); i++) {
+ AnnotationEntryGen a = (AnnotationEntryGen)vec.get(i);
+ if (a.isRuntimeVisible()) countVisible++;
+ else countInvisible++;
+ }
+
+ ByteArrayOutputStream rvaBytes = new ByteArrayOutputStream();
+ ByteArrayOutputStream riaBytes = new ByteArrayOutputStream();
+ DataOutputStream rvaDos = new DataOutputStream(rvaBytes);
+ DataOutputStream riaDos = new DataOutputStream(riaBytes);
+
+ rvaDos.writeShort(countVisible);
+ riaDos.writeShort(countInvisible);
+
+ // put the annotations in the right output stream
+ for (int i=0; i<vec.size(); i++) {
+ AnnotationEntryGen a = (AnnotationEntryGen)vec.get(i);
+ if (a.isRuntimeVisible()) a.dump(rvaDos);
+ else a.dump(riaDos);
+ }
+
+ rvaDos.close();
+ riaDos.close();
+
+ byte[] rvaData = rvaBytes.toByteArray();
+ byte[] riaData = riaBytes.toByteArray();
+
+ int rvaIndex = -1;
+ int riaIndex = -1;
+
+ if (rvaData.length>2) rvaIndex = cp.addUtf8("RuntimeVisibleAnnotations");
+ if (riaData.length>2) riaIndex = cp.addUtf8("RuntimeInvisibleAnnotations");
+
+ List newAttributes = new ArrayList();
+ if (rvaData.length>2) {
+
+ newAttributes.add(
+ new RuntimeVisibleAnnotations(rvaIndex,rvaData.length,new DataInputStream(new ByteArrayInputStream(rvaData)),cp.getConstantPool()));
+ }
+ if (riaData.length>2) {
+ newAttributes.add(
+ new RuntimeInvisibleAnnotations(riaIndex,riaData.length,new DataInputStream(new ByteArrayInputStream(riaData)),cp.getConstantPool()));
+ }
+
+ return (Attribute[])newAttributes.toArray(new Attribute[]{});
+ } catch (IOException e) {
+ System.err.println("IOException whilst processing annotations");
+ e.printStackTrace();
+ }
+ return null;
}
}
Added: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java?rev=417157&view=auto
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java (added)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java Mon Jun 26 03:19:54 2006
@@ -0,0 +1,190 @@
+package org.apache.bcel.generic;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.bcel.classfile.AnnotationEntry;
+import org.apache.bcel.classfile.ConstantUtf8;
+import org.apache.bcel.classfile.ElementValuePair;
+
+
+public class AnnotationEntryGen
+{
+ private int typeIndex;
+
+ private List /* ElementNameValuePairGen */evs;
+
+ private ConstantPoolGen cpool;
+
+ private boolean isRuntimeVisible = false;
+
+ /**
+ * Here we are taking a fixed annotation of type Annotation and building a
+ * modifiable AnnotationGen object. If the pool passed in is for a different
+ * class file, then copyPoolEntries should have been passed as true as that
+ * will force us to do a deep copy of the annotation and move the cpool
+ * entries across. We need to copy the type and the element name value pairs
+ * and the visibility.
+ */
+ public AnnotationEntryGen(AnnotationEntry a, ConstantPoolGen cpool,
+ boolean copyPoolEntries)
+ {
+ this.cpool = cpool;
+ if (copyPoolEntries)
+ {
+ typeIndex = cpool.addUtf8(a.getAnnotationType());
+ }
+ else
+ {
+ typeIndex = a.getAnnotationTypeIndex();
+ }
+ isRuntimeVisible = a.isRuntimeVisible();
+ evs = copyValues(a.getElementValuePairs(), cpool, copyPoolEntries);
+ }
+
+ private List copyValues(ElementValuePair[] in, ConstantPoolGen cpool,
+ boolean copyPoolEntries)
+ {
+ List out = new ArrayList();
+ int l = in.length;
+ for (int i = 0; i < l; i++)
+ {
+ ElementValuePair nvp = (ElementValuePair) in[i];
+ out.add(new ElementValuePairGen(nvp, cpool, copyPoolEntries));
+ }
+ return out;
+ }
+
+ private AnnotationEntryGen(ConstantPoolGen cpool)
+ {
+ this.cpool = cpool;
+ }
+
+ /**
+ * Retrieve an immutable version of this AnnotationGen
+ */
+ public AnnotationEntry getAnnotation()
+ {
+ AnnotationEntry a = new AnnotationEntry(typeIndex, cpool.getConstantPool(),
+ isRuntimeVisible);
+ for (Iterator iter = evs.iterator(); iter.hasNext();)
+ {
+ ElementValuePairGen element = (ElementValuePairGen) iter
+ .next();
+ a.addElementNameValuePair(element.getElementNameValuePair());
+ }
+ return a;
+ }
+
+ public AnnotationEntryGen(ObjectType type,
+ List /* ElementNameValuePairGen */elements, boolean vis,
+ ConstantPoolGen cpool)
+ {
+ this.cpool = cpool;
+ this.typeIndex = cpool.addUtf8(type.getSignature());
+ evs = elements;
+ isRuntimeVisible = vis;
+ }
+
+ public static AnnotationEntryGen read(DataInputStream dis,
+ ConstantPoolGen cpool, boolean b) throws IOException
+ {
+ AnnotationEntryGen a = new AnnotationEntryGen(cpool);
+ a.typeIndex = dis.readUnsignedShort();
+ int elemValuePairCount = dis.readUnsignedShort();
+ for (int i = 0; i < elemValuePairCount; i++)
+ {
+ int nidx = dis.readUnsignedShort();
+ a.addElementNameValuePair(new ElementValuePairGen(nidx,
+ ElementValueGen.readElementValue(dis, cpool), cpool));
+ }
+ a.isRuntimeVisible(b);
+ return a;
+ }
+
+ public void dump(DataOutputStream dos) throws IOException
+ {
+ dos.writeShort(typeIndex); // u2 index of type name in cpool
+ dos.writeShort(evs.size()); // u2 element_value pair count
+ for (int i = 0; i < evs.size(); i++)
+ {
+ ElementValuePairGen envp = (ElementValuePairGen) evs.get(i);
+ envp.dump(dos);
+ }
+ }
+
+ public void addElementNameValuePair(ElementValuePairGen evp)
+ {
+ if (evs == null)
+ evs = new ArrayList();
+ evs.add(evp);
+ }
+
+ public int getTypeIndex()
+ {
+ return typeIndex;
+ }
+
+ public final String getTypeSignature()
+ {
+ // ConstantClass c = (ConstantClass)cpool.getConstant(typeIndex);
+ ConstantUtf8 utf8 = (ConstantUtf8) cpool
+ .getConstant(typeIndex/* c.getNameIndex() */);
+ return utf8.getBytes();
+ }
+
+ public final String getTypeName()
+ {
+ return getTypeSignature();// BCELBUG: Should I use this instead?
+ // Utility.signatureToString(getTypeSignature());
+ }
+
+ /**
+ * Returns list of ElementNameValuePair objects
+ */
+ public List getValues()
+ {
+ return evs;
+ }
+
+ public String toString()
+ {
+ StringBuffer s = new StringBuffer();
+ s.append("AnnotationGen:[" + getTypeName() + " #" + evs.size() + " {");
+ for (int i = 0; i < evs.size(); i++)
+ {
+ s.append(evs.get(i));
+ if (i + 1 < evs.size())
+ s.append(",");
+ }
+ s.append("}]");
+ return s.toString();
+ }
+
+ public String toShortString()
+ {
+ StringBuffer s = new StringBuffer();
+ s.append("@" + getTypeName() + "(");
+ for (int i = 0; i < evs.size(); i++)
+ {
+ s.append(evs.get(i));
+ if (i + 1 < evs.size())
+ s.append(",");
+ }
+ s.append(")");
+ return s.toString();
+ }
+
+ private void isRuntimeVisible(boolean b)
+ {
+ isRuntimeVisible = b;
+ }
+
+ public boolean isRuntimeVisible()
+ {
+ return isRuntimeVisible;
+ }
+}
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationEntryGen.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationGen.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationGen.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/AnnotationGen.java Mon Jun 26 03:19:54 2006
@@ -1,5 +0,0 @@
-package org.apache.bcel.generic;
-
-public class AnnotationGen
-{
-}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementNameValuePairGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementNameValuePairGen.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementNameValuePairGen.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementNameValuePairGen.java Mon Jun 26 03:19:54 2006
@@ -1,5 +0,0 @@
-package org.apache.bcel.generic;
-
-public class ElementNameValuePairGen
-{
-}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValueGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValueGen.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValueGen.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValueGen.java Mon Jun 26 03:19:54 2006
@@ -98,8 +98,8 @@
case 'e': // Enum constant
return new EnumElementValueGen(dis.readUnsignedShort(), dis
.readUnsignedShort(), cpGen);
- case 'c': // Class
- return new ClassElementValueGen(dis.readUnsignedShort(), cpGen);
+ // case 'c': // Class
+ // return new ClassElementValueGen(dis.readUnsignedShort(), cpGen);
//
// case '@': // Annotation
// return new
@@ -147,15 +147,15 @@
case 'e': // Enum constant
return new EnumElementValueGen((EnumElementValue) value, cpool,
copyPoolEntries);
- case '@': // Annotation
- return new AnnotationElementValueGen(
- (AnnotationElementValue) value, cpool, copyPoolEntries);
- case '[': // Array
- return new ArrayElementValueGen((ArrayElementValue) value, cpool,
- copyPoolEntries);
- case 'c': // Class
- return new ClassElementValueGen((ClassElementValue) value, cpool,
- copyPoolEntries);
+ // case '@': // Annotation
+ // return new AnnotationElementValueGen(
+ // (AnnotationElementValue) value, cpool, copyPoolEntries);
+ // case '[': // Array
+ // return new ArrayElementValueGen((ArrayElementValue) value, cpool,
+ // copyPoolEntries);
+ // case 'c': // Class
+ // return new ClassElementValueGen((ClassElementValue) value, cpool,
+ // copyPoolEntries);
default:
throw new RuntimeException("Not implemented yet! ("
+ value.getElementValueType() + ")");
Added: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java?rev=417157&view=auto
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java (added)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java Mon Jun 26 03:19:54 2006
@@ -0,0 +1,93 @@
+package org.apache.bcel.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import org.apache.bcel.classfile.ConstantUtf8;
+import org.apache.bcel.classfile.ElementValue;
+import org.apache.bcel.classfile.ElementValuePair;
+
+public class ElementValuePairGen
+{
+ private int nameIdx;
+
+ private ElementValueGen value;
+
+ private ConstantPoolGen cpool;
+
+ public ElementValuePairGen(ElementValuePair nvp, ConstantPoolGen cpool,
+ boolean copyPoolEntries)
+ {
+ this.cpool = cpool;
+ // J5ASSERT:
+ // Could assert nvp.getNameString() points to the same thing as
+ // cpool.getConstant(nvp.getNameIndex())
+ // if
+ // (!nvp.getNameString().equals(((ConstantUtf8)cpool.getConstant(nvp.getNameIndex())).getBytes()))
+ // {
+ // throw new RuntimeException("envp buggered");
+ // }
+ if (copyPoolEntries)
+ {
+ nameIdx = cpool.addUtf8(nvp.getNameString());
+ }
+ else
+ {
+ nameIdx = nvp.getNameIndex();
+ }
+ value = ElementValueGen.copy(nvp.getValue(), cpool, copyPoolEntries);
+ }
+
+ /**
+ * Retrieve an immutable version of this ElementNameValuePairGen
+ */
+ public ElementValuePair getElementNameValuePair()
+ {
+ ElementValue immutableValue = value.getElementValue();
+ return new ElementValuePair(nameIdx, immutableValue, cpool
+ .getConstantPool());
+ }
+
+ protected ElementValuePairGen(int idx, ElementValueGen value,
+ ConstantPoolGen cpool)
+ {
+ this.nameIdx = idx;
+ this.value = value;
+ this.cpool = cpool;
+ }
+
+ public ElementValuePairGen(String name, ElementValueGen value,
+ ConstantPoolGen cpool)
+ {
+ this.nameIdx = cpool.addUtf8(name);
+ this.value = value;
+ this.cpool = cpool;
+ }
+
+ protected void dump(DataOutputStream dos) throws IOException
+ {
+ dos.writeShort(nameIdx); // u2 name of the element
+ value.dump(dos);
+ }
+
+ public int getNameIndex()
+ {
+ return nameIdx;
+ }
+
+ public final String getNameString()
+ {
+ // ConstantString cu8 = (ConstantString)cpool.getConstant(nameIdx);
+ return ((ConstantUtf8) cpool.getConstant(nameIdx)).getBytes();
+ }
+
+ public final ElementValueGen getValue()
+ {
+ return value;
+ }
+
+ public String toString()
+ {
+ return "ElementValuePair:[" + getNameString() + "="
+ + value.stringifyValue() + "]";
+ }
+}
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java
------------------------------------------------------------------------------
svn:executable = *
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/ElementValuePairGen.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java?rev=417157&view=auto
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java (added)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java Mon Jun 26 03:19:54 2006
@@ -0,0 +1,119 @@
+package org.apache.bcel.generic;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import org.apache.bcel.classfile.ConstantUtf8;
+import org.apache.bcel.classfile.ElementValue;
+import org.apache.bcel.classfile.EnumElementValue;
+
+public class EnumElementValueGen extends ElementValueGen
+{
+ // For enum types, these two indices point to the type and value
+ private int typeIdx;
+
+ private int valueIdx;
+
+ /**
+ * This ctor assumes the constant pool already contains the right type and
+ * value - as indicated by typeIdx and valueIdx. This ctor is used for
+ * deserialization
+ */
+ protected EnumElementValueGen(int typeIdx, int valueIdx,
+ ConstantPoolGen cpool)
+ {
+ super(ElementValueGen.ENUM_CONSTANT, cpool);
+ if (type != ENUM_CONSTANT)
+ throw new RuntimeException(
+ "Only element values of type enum can be built with this ctor");
+ this.typeIdx = typeIdx;
+ this.valueIdx = valueIdx;
+ }
+
+ /**
+ * Return immutable variant of this EnumElementValue
+ */
+ public ElementValue getElementValue()
+ {
+ System.err.println("Duplicating value: " + getEnumTypeString() + ":"
+ + getEnumValueString());
+ return new EnumElementValue(type, typeIdx, valueIdx, cpGen
+ .getConstantPool());
+ }
+
+ public EnumElementValueGen(ObjectType t, String value, ConstantPoolGen cpool)
+ {
+ super(ElementValueGen.ENUM_CONSTANT, cpool);
+ typeIdx = cpool.addUtf8(t.getSignature());// was addClass(t);
+ valueIdx = cpool.addUtf8(value);// was addString(value);
+ }
+
+ public EnumElementValueGen(EnumElementValue value, ConstantPoolGen cpool,
+ boolean copyPoolEntries)
+ {
+ super(ENUM_CONSTANT, cpool);
+ if (copyPoolEntries)
+ {
+ typeIdx = cpool.addUtf8(value.getEnumTypeString());// was
+ // addClass(value.getEnumTypeString());
+ valueIdx = cpool.addUtf8(value.getEnumValueString()); // was
+ // addString(value.getEnumValueString());
+ }
+ else
+ {
+ typeIdx = value.getTypeIndex();
+ valueIdx = value.getValueIndex();
+ }
+ }
+
+ public void dump(DataOutputStream dos) throws IOException
+ {
+ dos.writeByte(type); // u1 type of value (ENUM_CONSTANT == 'e')
+ dos.writeShort(typeIdx); // u2
+ dos.writeShort(valueIdx); // u2
+ }
+
+ public String stringifyValue()
+ {
+ ConstantUtf8 cu8 = (ConstantUtf8) getConstantPool().getConstant(
+ valueIdx);
+ return cu8.getBytes();
+ // ConstantString cu8 =
+ // (ConstantString)getConstantPool().getConstant(valueIdx);
+ // return
+ // ((ConstantUtf8)getConstantPool().getConstant(cu8.getStringIndex())).getBytes();
+ }
+
+ // BCELBUG: Should we need to call utility.signatureToString() on the output
+ // here?
+ public String getEnumTypeString()
+ {
+ // Constant cc = getConstantPool().getConstant(typeIdx);
+ // ConstantClass cu8 =
+ // (ConstantClass)getConstantPool().getConstant(typeIdx);
+ // return
+ // ((ConstantUtf8)getConstantPool().getConstant(cu8.getNameIndex())).getBytes();
+ return ((ConstantUtf8) getConstantPool().getConstant(typeIdx))
+ .getBytes();
+ // return Utility.signatureToString(cu8.getBytes());
+ }
+
+ public String getEnumValueString()
+ {
+ return ((ConstantUtf8) getConstantPool().getConstant(valueIdx))
+ .getBytes();
+ // ConstantString cu8 =
+ // (ConstantString)getConstantPool().getConstant(valueIdx);
+ // return
+ // ((ConstantUtf8)getConstantPool().getConstant(cu8.getStringIndex())).getBytes();
+ }
+
+ public int getValueIndex()
+ {
+ return valueIdx;
+ }
+
+ public int getTypeIndex()
+ {
+ return typeIdx;
+ }
+}
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/EnumElementValueGen.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/generic/SimpleElementValueGen.java Mon Jun 26 03:19:54 2006
@@ -1,5 +1,245 @@
package org.apache.bcel.generic;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import org.apache.bcel.classfile.ConstantDouble;
+import org.apache.bcel.classfile.ConstantFloat;
+import org.apache.bcel.classfile.ConstantInteger;
+import org.apache.bcel.classfile.ConstantLong;
+import org.apache.bcel.classfile.ConstantUtf8;
+import org.apache.bcel.classfile.ElementValue;
+import org.apache.bcel.classfile.SimpleElementValue;
+
public class SimpleElementValueGen extends ElementValueGen
{
+ // For primitive types and string type, this points to the value entry in
+ // the cpGen
+ // For 'class' this points to the class entry in the cpGen
+ private int idx;
+
+ // ctors for each supported type... type could be inferred but for now lets
+ // force it to be passed
+ /**
+ * Protected ctor used for deserialization, doesn't *put* an entry in the
+ * constant pool, assumes the one at the supplied index is correct.
+ */
+ protected SimpleElementValueGen(int type, int idx, ConstantPoolGen cpGen)
+ {
+ super(type, cpGen);
+ this.idx = idx;
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, int value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addInteger(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, long value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addLong(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, double value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addDouble(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, float value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addFloat(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, short value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addInteger(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, byte value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addInteger(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, char value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addInteger(value);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, boolean value)
+ {
+ super(type, cpGen);
+ if (value)
+ idx = cpGen.addInteger(1);
+ else
+ idx = cpGen.addInteger(0);
+ }
+
+ public SimpleElementValueGen(int type, ConstantPoolGen cpGen, String value)
+ {
+ super(type, cpGen);
+ idx = cpGen.addUtf8(value);
+ }
+
+ /**
+ * The boolean controls whether we copy info from the 'old' constant pool to
+ * the 'new'. You need to use this ctor if the annotation is being copied
+ * from one file to another.
+ */
+ public SimpleElementValueGen(SimpleElementValue value,
+ ConstantPoolGen cpool, boolean copyPoolEntries)
+ {
+ super(value.getElementValueType(), cpool);
+ if (!copyPoolEntries)
+ {
+ // J5ASSERT: Could assert value.stringifyValue() is the same as
+ // cpool.getConstant(SimpleElementValuevalue.getIndex())
+ idx = value.getIndex();
+ }
+ else
+ {
+ switch (value.getElementValueType())
+ {
+ case STRING:
+ idx = cpool.addUtf8(value.getValueString());
+ break;
+ case PRIMITIVE_INT:
+ idx = cpool.addInteger(value.getValueInt());
+ break;
+ case PRIMITIVE_BYTE:
+ idx = cpool.addInteger(value.getValueByte());
+ break;
+ case PRIMITIVE_CHAR:
+ idx = cpool.addInteger(value.getValueChar());
+ break;
+ case PRIMITIVE_LONG:
+ idx = cpool.addLong(value.getValueLong());
+ break;
+ case PRIMITIVE_FLOAT:
+ idx = cpool.addFloat(value.getValueFloat());
+ break;
+ case PRIMITIVE_DOUBLE:
+ idx = cpool.addDouble(value.getValueDouble());
+ break;
+ case PRIMITIVE_BOOLEAN:
+ if (value.getValueBoolean())
+ {
+ idx = cpool.addInteger(1);
+ }
+ else
+ {
+ idx = cpool.addInteger(0);
+ }
+ break;
+ case PRIMITIVE_SHORT:
+ idx = cpool.addInteger(value.getValueShort());
+ break;
+ default:
+ throw new RuntimeException(
+ "SimpleElementValueGen class does not know how "
+ + "to copy this type " + type);
+ }
+ }
+ }
+
+ /**
+ * Return immutable variant
+ */
+ public ElementValue getElementValue()
+ {
+ return new SimpleElementValue(type, idx, cpGen.getConstantPool());
+ }
+
+ public int getIndex()
+ {
+ return idx;
+ }
+
+ public String getValueString()
+ {
+ if (type != STRING)
+ throw new RuntimeException(
+ "Dont call getValueString() on a non STRING ElementValue");
+ ConstantUtf8 c = (ConstantUtf8) cpGen.getConstant(idx);
+ return c.getBytes();
+ }
+
+ public int getValueInt()
+ {
+ if (type != PRIMITIVE_INT)
+ throw new RuntimeException(
+ "Dont call getValueString() on a non STRING ElementValue");
+ ConstantInteger c = (ConstantInteger) cpGen.getConstant(idx);
+ return c.getBytes();
+ }
+
+ // Whatever kind of value it is, return it as a string
+ public String stringifyValue()
+ {
+ switch (type)
+ {
+ case PRIMITIVE_INT:
+ ConstantInteger c = (ConstantInteger) cpGen.getConstant(idx);
+ return Integer.toString(c.getBytes());
+ case PRIMITIVE_LONG:
+ ConstantLong j = (ConstantLong) cpGen.getConstant(idx);
+ return Long.toString(j.getBytes());
+ case PRIMITIVE_DOUBLE:
+ ConstantDouble d = (ConstantDouble) cpGen.getConstant(idx);
+ return Double.toString(d.getBytes());
+ case PRIMITIVE_FLOAT:
+ ConstantFloat f = (ConstantFloat) cpGen.getConstant(idx);
+ return Float.toString(f.getBytes());
+ case PRIMITIVE_SHORT:
+ ConstantInteger s = (ConstantInteger) cpGen.getConstant(idx);
+ return Integer.toString(s.getBytes());
+ case PRIMITIVE_BYTE:
+ ConstantInteger b = (ConstantInteger) cpGen.getConstant(idx);
+ return Integer.toString(b.getBytes());
+ case PRIMITIVE_CHAR:
+ ConstantInteger ch = (ConstantInteger) cpGen.getConstant(idx);
+ return Integer.toString(ch.getBytes());
+ case PRIMITIVE_BOOLEAN:
+ ConstantInteger bo = (ConstantInteger) cpGen.getConstant(idx);
+ if (bo.getBytes() == 0)
+ return "false";
+ if (bo.getBytes() != 0)
+ return "true";
+ case STRING:
+ ConstantUtf8 cu8 = (ConstantUtf8) cpGen.getConstant(idx);
+ return cu8.getBytes();
+ default:
+ throw new RuntimeException(
+ "SimpleElementValueGen class does not know how to stringify type "
+ + type);
+ }
+ }
+
+ public void dump(DataOutputStream dos) throws IOException
+ {
+ dos.writeByte(type); // u1 kind of value
+ switch (type)
+ {
+ case PRIMITIVE_INT:
+ case PRIMITIVE_BYTE:
+ case PRIMITIVE_CHAR:
+ case PRIMITIVE_FLOAT:
+ case PRIMITIVE_LONG:
+ case PRIMITIVE_BOOLEAN:
+ case PRIMITIVE_SHORT:
+ case PRIMITIVE_DOUBLE:
+ case STRING:
+ dos.writeShort(idx);
+ break;
+ default:
+ throw new RuntimeException(
+ "SimpleElementValueGen doesnt know how to write out type "
+ + type);
+ }
+ }
}
Modified: jakarta/bcel/trunk/src/test/java/org/apache/bcel/AnnotationGenTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/test/java/org/apache/bcel/AnnotationGenTestCase.java?rev=417157&r1=417156&r2=417157&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/test/java/org/apache/bcel/AnnotationGenTestCase.java (original)
+++ jakarta/bcel/trunk/src/test/java/org/apache/bcel/AnnotationGenTestCase.java Mon Jun 26 03:19:54 2006
@@ -8,15 +8,16 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
+import org.apache.bcel.classfile.Annotations;
import org.apache.bcel.classfile.Attribute;
import org.apache.bcel.classfile.RuntimeInvisibleAnnotations;
import org.apache.bcel.classfile.RuntimeVisibleAnnotations;
import org.apache.bcel.classfile.Utility;
-import org.apache.bcel.generic.AnnotationGen;
+import org.apache.bcel.generic.AnnotationEntryGen;
import org.apache.bcel.generic.ClassGen;
import org.apache.bcel.generic.ConstantPoolGen;
-import org.apache.bcel.generic.ElementNameValuePairGen;
import org.apache.bcel.generic.ElementValueGen;
+import org.apache.bcel.generic.ElementValuePairGen;
import org.apache.bcel.generic.ObjectType;
import org.apache.bcel.generic.SimpleElementValueGen;
@@ -40,7 +41,7 @@
SimpleElementValueGen evg = new SimpleElementValueGen(
ElementValueGen.PRIMITIVE_INT, cp, 4);
// Give it a name, call it 'id'
- ElementNameValuePairGen nvGen = new ElementNameValuePairGen("id", evg,
+ ElementValuePairGen nvGen = new ElementValuePairGen("id", evg,
cp);
// Check it looks right
assertTrue(
@@ -51,7 +52,7 @@
elements.add(nvGen);
// Build an annotation of type 'SimpleAnnotation' with 'id=4' as the
// only value :)
- AnnotationGen a = new AnnotationGen(t, elements, true, cp);
+ AnnotationEntryGen a = new AnnotationEntryGen(t, elements, true, cp);
// Check we can save and load it ok
checkSerialize(a, cp);
}
@@ -65,7 +66,7 @@
SimpleElementValueGen evg = new SimpleElementValueGen(
ElementValueGen.PRIMITIVE_INT, cp, 4);
// Give it a name, call it 'id'
- ElementNameValuePairGen nvGen = new ElementNameValuePairGen("id", evg,
+ ElementValuePairGen nvGen = new ElementValuePairGen("id", evg,
cp);
// Check it looks right
assertTrue(
@@ -76,7 +77,7 @@
elements.add(nvGen);
// Build a RV annotation of type 'SimpleAnnotation' with 'id=4' as the
// only value :)
- AnnotationGen a = new AnnotationGen(t, elements, true, cp);
+ AnnotationEntryGen a = new AnnotationEntryGen(t, elements, true, cp);
Vector v = new Vector();
v.add(a);
Attribute[] attributes = Utility.getAnnotationAttributes(cp, v);
@@ -86,14 +87,14 @@
Attribute attribute = attributes[i];
if (attribute instanceof RuntimeVisibleAnnotations)
{
- assertTrue(((RuntimeAnnotations) attribute).areVisible());
+ assertTrue(((Annotations) attribute).isRuntimeVisible());
foundRV = true;
}
}
assertTrue("Should have seen a RuntimeVisibleAnnotation", foundRV);
// Build a RIV annotation of type 'SimpleAnnotation' with 'id=4' as the
// only value :)
- AnnotationGen a2 = new AnnotationGen(t, elements, false, cp);
+ AnnotationEntryGen a2 = new AnnotationEntryGen(t, elements, false, cp);
Vector v2 = new Vector();
v2.add(a2);
Attribute[] attributes2 = Utility.getAnnotationAttributes(cp, v2);
@@ -103,14 +104,14 @@
Attribute attribute = attributes2[i];
if (attribute instanceof RuntimeInvisibleAnnotations)
{
- assertFalse(((RuntimeAnnotations) attribute).areVisible());
+ assertFalse(((Annotations) attribute).isRuntimeVisible());
foundRIV = true;
}
}
assertTrue("Should have seen a RuntimeInvisibleAnnotation", foundRIV);
}
- private void checkSerialize(AnnotationGen a, ConstantPoolGen cpg)
+ private void checkSerialize(AnnotationEntryGen a, ConstantPoolGen cpg)
{
try
{
@@ -124,7 +125,7 @@
byte[] bs = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(bs);
DataInputStream dis = new DataInputStream(bais);
- AnnotationGen annAfter = AnnotationGen.read(dis, cpg, a
+ AnnotationEntryGen annAfter = AnnotationEntryGen.read(dis, cpg, a
.isRuntimeVisible());
dis.close();
String afterName = annAfter.getTypeName();
@@ -142,9 +143,9 @@
}
for (int i = 0; i < a.getValues().size(); i++)
{
- ElementNameValuePairGen beforeElement = (ElementNameValuePairGen) a
+ ElementValuePairGen beforeElement = (ElementValuePairGen) a
.getValues().get(i);
- ElementNameValuePairGen afterElement = (ElementNameValuePairGen) annAfter
+ ElementValuePairGen afterElement = (ElementValuePairGen) annAfter
.getValues().get(i);
if (!beforeElement.getNameString().equals(
afterElement.getNameString()))
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.