org.aspectj.apache.bcel.classfile.AttributeUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aspectjweaver Show documentation
Show all versions of aspectjweaver Show documentation
The AspectJ weaver applies aspects to Java classes. It can be used as a Java agent in order to apply load-time
weaving (LTW) during class-loading and also contains the AspectJ runtime classes.
package org.aspectj.apache.bcel.classfile;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.aspectj.apache.bcel.Constants;
public class AttributeUtils {
public static Attribute[] readAttributes(DataInputStream dataInputstream, ConstantPool cpool) {
try {
int length = dataInputstream.readUnsignedShort();
if (length == 0) {
return Attribute.NoAttributes;
}
Attribute[] attrs = new Attribute[length];
for (int i = 0; i < length; i++) {
attrs[i] = Attribute.readAttribute(dataInputstream, cpool);
}
return attrs;
} catch (IOException e) {
throw new ClassFormatException("IOException whilst reading set of attributes: " + e.toString());
}
}
/** Write (serialize) a set of attributes into a specified output stream */
public static void writeAttributes(Attribute[] attributes, DataOutputStream file) throws IOException {
if (attributes == null) {
file.writeShort(0);
} else {
file.writeShort(attributes.length);
for (int i = 0; i < attributes.length; i++) {
attributes[i].dump(file);
}
}
}
public static Signature getSignatureAttribute(Attribute[] attributes) {
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].tag == Constants.ATTR_SIGNATURE) {
return (Signature) attributes[i];
}
}
return null;
}
public static Code getCodeAttribute(Attribute[] attributes) {
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].tag == Constants.ATTR_CODE) {
return (Code) attributes[i];
}
}
return null;
}
public static ExceptionTable getExceptionTableAttribute(Attribute[] attributes) {
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].tag == Constants.ATTR_EXCEPTIONS) {
return (ExceptionTable) attributes[i];
}
}
return null;
}
public static ConstantValue getConstantValueAttribute(Attribute[] attributes) {
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].getTag() == Constants.ATTR_CONSTANT_VALUE) {
return (ConstantValue) attributes[i];
}
}
return null;
}
public static void accept(Attribute[] attributes, ClassVisitor visitor) {
for (int i = 0; i < attributes.length; i++) {
attributes[i].accept(visitor);
}
}
public static boolean hasSyntheticAttribute(Attribute[] attributes) {
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].tag == Constants.ATTR_SYNTHETIC) {
return true;
}
}
return false;
}
public static SourceFile getSourceFileAttribute(Attribute[] attributes) {
for (int i = 0; i < attributes.length; i++) {
if (attributes[i].tag == Constants.ATTR_SOURCE_FILE) {
return (SourceFile) attributes[i];
}
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy