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