1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase;
19
20 import java.io.IOException;
21
22 import org.apache.hadoop.hbase.classification.InterfaceAudience;
23 import org.apache.hadoop.hbase.io.HeapSize;
24 import org.apache.hadoop.hbase.util.ClassSize;
25
26
27
28
29
30
31 @InterfaceAudience.Private
32 public class TagRewriteCell implements Cell, SettableSequenceId, SettableTimestamp, HeapSize {
33
34 private Cell cell;
35 private byte[] tags;
36
37
38
39
40
41 public TagRewriteCell(Cell cell, byte[] tags) {
42 assert cell instanceof SettableSequenceId;
43 assert cell instanceof SettableTimestamp;
44 assert tags != null;
45 this.cell = cell;
46 this.tags = tags;
47
48 if (this.cell instanceof TagRewriteCell) {
49
50 ((TagRewriteCell) this.cell).tags = null;
51 }
52 }
53
54 @Override
55 public byte[] getRowArray() {
56 return cell.getRowArray();
57 }
58
59 @Override
60 public int getRowOffset() {
61 return cell.getRowOffset();
62 }
63
64 @Override
65 public short getRowLength() {
66 return cell.getRowLength();
67 }
68
69 @Override
70 public byte[] getFamilyArray() {
71 return cell.getFamilyArray();
72 }
73
74 @Override
75 public int getFamilyOffset() {
76 return cell.getFamilyOffset();
77 }
78
79 @Override
80 public byte getFamilyLength() {
81 return cell.getFamilyLength();
82 }
83
84 @Override
85 public byte[] getQualifierArray() {
86 return cell.getQualifierArray();
87 }
88
89 @Override
90 public int getQualifierOffset() {
91 return cell.getQualifierOffset();
92 }
93
94 @Override
95 public int getQualifierLength() {
96 return cell.getQualifierLength();
97 }
98
99 @Override
100 public long getTimestamp() {
101 return cell.getTimestamp();
102 }
103
104 @Override
105 public byte getTypeByte() {
106 return cell.getTypeByte();
107 }
108
109 @Override
110 @Deprecated
111 public long getMvccVersion() {
112 return getSequenceId();
113 }
114
115 @Override
116 public long getSequenceId() {
117 return cell.getSequenceId();
118 }
119
120 @Override
121 public byte[] getValueArray() {
122 return cell.getValueArray();
123 }
124
125 @Override
126 public int getValueOffset() {
127 return cell.getValueOffset();
128 }
129
130 @Override
131 public int getValueLength() {
132 return cell.getValueLength();
133 }
134
135 @Override
136 public byte[] getTagsArray() {
137 return this.tags;
138 }
139
140 @Override
141 public int getTagsOffset() {
142 return 0;
143 }
144
145 @Override
146 public int getTagsLength() {
147 if (null == this.tags) {
148
149 return 0;
150 }
151 return this.tags.length;
152 }
153
154 @Override
155 @Deprecated
156 public byte[] getValue() {
157 return cell.getValue();
158 }
159
160 @Override
161 @Deprecated
162 public byte[] getFamily() {
163 return cell.getFamily();
164 }
165
166 @Override
167 @Deprecated
168 public byte[] getQualifier() {
169 return cell.getQualifier();
170 }
171
172 @Override
173 @Deprecated
174 public byte[] getRow() {
175 return cell.getRow();
176 }
177
178 @Override
179 public long heapSize() {
180 long sum = CellUtil.estimatedHeapSizeOf(cell) - cell.getTagsLength();
181 sum += ClassSize.OBJECT;
182 sum += (2 * ClassSize.REFERENCE);
183 if (this.tags != null) {
184 sum += ClassSize.align(ClassSize.ARRAY);
185 sum += this.tags.length;
186 }
187 return sum;
188 }
189
190 @Override
191 public void setTimestamp(long ts) throws IOException {
192
193 CellUtil.setTimestamp(cell, ts);
194 }
195
196 @Override
197 public void setTimestamp(byte[] ts, int tsOffset) throws IOException {
198
199 CellUtil.setTimestamp(cell, ts, tsOffset);
200 }
201
202 @Override
203 public void setSequenceId(long seqId) throws IOException {
204
205 CellUtil.setSequenceId(cell, seqId);
206 }
207 }