1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.bcel.classfile;
18
19 import java.io.DataInput;
20 import java.io.DataOutputStream;
21 import java.io.IOException;
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.List;
25
26
27
28
29
30
31 public class ParameterAnnotationEntry implements Node {
32
33 static final ParameterAnnotationEntry[] EMPTY_ARRAY = {};
34
35 public static ParameterAnnotationEntry[] createParameterAnnotationEntries(final Attribute[] attrs) {
36
37 final List<ParameterAnnotationEntry> accumulatedAnnotations = new ArrayList<>(attrs.length);
38 for (final Attribute attribute : attrs) {
39 if (attribute instanceof ParameterAnnotations) {
40 final ParameterAnnotations runtimeAnnotations = (ParameterAnnotations) attribute;
41 Collections.addAll(accumulatedAnnotations, runtimeAnnotations.getParameterAnnotationEntries());
42 }
43 }
44 return accumulatedAnnotations.toArray(ParameterAnnotationEntry.EMPTY_ARRAY);
45 }
46
47 private final AnnotationEntry[] annotationTable;
48
49
50
51
52
53
54
55 ParameterAnnotationEntry(final DataInput input, final ConstantPool constantPool) throws IOException {
56 final int annotationTableLength = input.readUnsignedShort();
57 annotationTable = new AnnotationEntry[annotationTableLength];
58 for (int i = 0; i < annotationTableLength; i++) {
59
60 annotationTable[i] = AnnotationEntry.read(input, constantPool, false);
61 }
62 }
63
64
65
66
67
68
69
70 @Override
71 public void accept(final Visitor v) {
72 v.visitParameterAnnotationEntry(this);
73 }
74
75 public void dump(final DataOutputStream dos) throws IOException {
76 dos.writeShort(annotationTable.length);
77 for (final AnnotationEntry entry : annotationTable) {
78 entry.dump(dos);
79 }
80 }
81
82
83
84
85 public AnnotationEntry[] getAnnotationEntries() {
86 return annotationTable;
87 }
88 }