1
2
3
4
5 package net.java.truevfs.comp.zip;
6
7 import static java.lang.System.arraycopy;
8 import javax.annotation.CheckForNull;
9 import javax.annotation.concurrent.NotThreadSafe;
10
11
12
13
14
15
16
17 @NotThreadSafe
18 final class DefaultExtraField extends ExtraField {
19
20 private final short headerId;
21 private @CheckForNull byte[] data;
22
23
24
25
26
27
28
29 DefaultExtraField(final int headerId) {
30 assert UShort.check(headerId);
31 this.headerId = (short) headerId;
32 }
33
34 @Override
35 int getHeaderId() {
36 return headerId & UShort.MAX_VALUE;
37 }
38
39 @Override
40 int getDataSize() {
41 final byte[] data = this.data;
42 return null != data ? data.length : 0;
43 }
44
45 @Override
46 void readFrom(final byte[] buf, final int off, final int len) {
47 assert UShort.check(len);
48 arraycopy(buf, off, this.data = new byte[len], 0, len);
49 }
50
51 @Override
52 void writeTo(byte[] buf, int off) {
53 final byte[] src = this.data;
54 if (null != src) arraycopy(src, 0, buf, off, src.length);
55 }
56 }