diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/RuntimeVisibleAnnotationsAttribute.java')
-rw-r--r-- | bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/RuntimeVisibleAnnotationsAttribute.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/RuntimeVisibleAnnotationsAttribute.java b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/RuntimeVisibleAnnotationsAttribute.java new file mode 100644 index 000000000..00306e271 --- /dev/null +++ b/bundles/org.eclipse.equinox.p2.repository.tools/src/org/eclipse/equinox/p2/internal/repository/comparator/java/RuntimeVisibleAnnotationsAttribute.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2009 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.equinox.p2.internal.repository.comparator.java; + +public class RuntimeVisibleAnnotationsAttribute extends ClassFileAttribute { + + private static final Annotation[] NO_ENTRIES = new Annotation[0]; + private int annotationsNumber; + private Annotation[] annotations; + + /** + * Constructor for RuntimeVisibleAnnotations. + * @param classFileBytes + * @param constantPool + * @param offset + * @throws ClassFormatException + */ + public RuntimeVisibleAnnotationsAttribute(byte[] classFileBytes, ConstantPool constantPool, int offset) throws ClassFormatException { + super(classFileBytes, constantPool, offset); + final int length = u2At(classFileBytes, 6, offset); + this.annotationsNumber = length; + if (length != 0) { + int readOffset = 8; + this.annotations = new Annotation[length]; + for (int i = 0; i < length; i++) { + Annotation annotation = new Annotation(classFileBytes, constantPool, offset + readOffset); + this.annotations[i] = annotation; + readOffset += annotation.sizeInBytes(); + } + } else { + this.annotations = NO_ENTRIES; + } + } + + /* (non-Javadoc) + * @see org.eclipse.jdt.core.util.IRuntimeVisibleAnnotations#getAnnotations() + */ + public Annotation[] getAnnotations() { + return this.annotations; + } + + /* (non-Javadoc) + * @see org.eclipse.jdt.core.util.IRuntimeVisibleAnnotations#getAnnotationsNumber() + */ + public int getAnnotationsNumber() { + return this.annotationsNumber; + } +} |