1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  *   http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 package org.apache.thrift;
21 
22 import java.nio.ByteBuffer;
23 import java.nio.charset.StandardCharsets;
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.HashSet;
27 import java.util.List;
28 import thrift.test.Bonk;
29 import thrift.test.CompactProtoTestStruct;
30 import thrift.test.HolyMoley;
31 import thrift.test.Nesting;
32 import thrift.test.OneOfEach;
33 
34 public class Fixtures {
35 
getOneOfEach()36   public static OneOfEach getOneOfEach() {
37     return oneOfEach.deepCopy();
38   }
39 
getNesting()40   public static Nesting getNesting() {
41     return nesting.deepCopy();
42   }
43 
getHolyMoley()44   public static HolyMoley getHolyMoley() {
45     return holyMoley.deepCopy();
46   }
47 
getCompactProtoTestStruct()48   public static CompactProtoTestStruct getCompactProtoTestStruct() {
49     return compactProtoTestStruct.deepCopy();
50   }
51 
getPersistentBytesOneOfEach()52   public static byte[] getPersistentBytesOneOfEach() {
53     return persistentBytesOneOfEach.clone();
54   }
55 
getPersistentBytesHolyMoley()56   public static byte[] getPersistentBytesHolyMoley() {
57     return persistentBytesHolyMoley.clone();
58   }
59 
getPersistentBytesNesting()60   public static byte[] getPersistentBytesNesting() {
61     return persistentBytesNesting.clone();
62   }
63 
64   private static final OneOfEach oneOfEach;
65   private static final Nesting nesting;
66   private static final HolyMoley holyMoley;
67   private static final CompactProtoTestStruct compactProtoTestStruct;
68 
69   // These byte arrays are serialized versions of the above structs.
70   // They were serialized in binary protocol using thrift 0.6.x and are used to
71   // test backwards compatibility with respect to the standard scheme.
72   private static final byte[] persistentBytesOneOfEach =
73       new byte[] {
74         (byte) 0x02,
75         (byte) 0x00,
76         (byte) 0x01,
77         (byte) 0x01,
78         (byte) 0x02,
79         (byte) 0x00,
80         (byte) 0x02,
81         (byte) 0x00,
82         (byte) 0x03,
83         (byte) 0x00,
84         (byte) 0x03,
85         (byte) 0xD6,
86         (byte) 0x06,
87         (byte) 0x00,
88         (byte) 0x04,
89         (byte) 0x69,
90         (byte) 0x78,
91         (byte) 0x08,
92         (byte) 0x00,
93         (byte) 0x05,
94         (byte) 0x01,
95         (byte) 0x00,
96         (byte) 0x00,
97         (byte) 0x00,
98         (byte) 0x0A,
99         (byte) 0x00,
100         (byte) 0x06,
101         (byte) 0x00,
102         (byte) 0x00,
103         (byte) 0x00,
104         (byte) 0x01,
105         (byte) 0x65,
106         (byte) 0xA0,
107         (byte) 0xBC,
108         (byte) 0x00,
109         (byte) 0x04,
110         (byte) 0x00,
111         (byte) 0x07,
112         (byte) 0x40,
113         (byte) 0x09,
114         (byte) 0x21,
115         (byte) 0xFB,
116         (byte) 0x54,
117         (byte) 0x44,
118         (byte) 0x2D,
119         (byte) 0x18,
120         (byte) 0x0B,
121         (byte) 0x00,
122         (byte) 0x08,
123         (byte) 0x00,
124         (byte) 0x00,
125         (byte) 0x00,
126         (byte) 0x0D,
127         (byte) 0x4A,
128         (byte) 0x53,
129         (byte) 0x4F,
130         (byte) 0x4E,
131         (byte) 0x20,
132         (byte) 0x54,
133         (byte) 0x48,
134         (byte) 0x49,
135         (byte) 0x53,
136         (byte) 0x21,
137         (byte) 0x20,
138         (byte) 0x22,
139         (byte) 0x01,
140         (byte) 0x0B,
141         (byte) 0x00,
142         (byte) 0x09,
143         (byte) 0x00,
144         (byte) 0x00,
145         (byte) 0x00,
146         (byte) 0x2E,
147         (byte) 0xD3,
148         (byte) 0x80,
149         (byte) 0xE2,
150         (byte) 0x85,
151         (byte) 0xAE,
152         (byte) 0xCE,
153         (byte) 0x9D,
154         (byte) 0x20,
155         (byte) 0xD0,
156         (byte) 0x9D,
157         (byte) 0xCE,
158         (byte) 0xBF,
159         (byte) 0xE2,
160         (byte) 0x85,
161         (byte) 0xBF,
162         (byte) 0xD0,
163         (byte) 0xBE,
164         (byte) 0xC9,
165         (byte) 0xA1,
166         (byte) 0xD0,
167         (byte) 0xB3,
168         (byte) 0xD0,
169         (byte) 0xB0,
170         (byte) 0xCF,
171         (byte) 0x81,
172         (byte) 0xE2,
173         (byte) 0x84,
174         (byte) 0x8E,
175         (byte) 0x20,
176         (byte) 0xCE,
177         (byte) 0x91,
178         (byte) 0x74,
179         (byte) 0x74,
180         (byte) 0xCE,
181         (byte) 0xB1,
182         (byte) 0xE2,
183         (byte) 0x85,
184         (byte) 0xBD,
185         (byte) 0xCE,
186         (byte) 0xBA,
187         (byte) 0xEF,
188         (byte) 0xBF,
189         (byte) 0xBD,
190         (byte) 0xE2,
191         (byte) 0x80,
192         (byte) 0xBC,
193         (byte) 0x02,
194         (byte) 0x00,
195         (byte) 0x0A,
196         (byte) 0x00,
197         (byte) 0x0B,
198         (byte) 0x00,
199         (byte) 0x0B,
200         (byte) 0x00,
201         (byte) 0x00,
202         (byte) 0x00,
203         (byte) 0x06,
204         (byte) 0x62,
205         (byte) 0x61,
206         (byte) 0x73,
207         (byte) 0x65,
208         (byte) 0x36,
209         (byte) 0x34,
210         (byte) 0x0F,
211         (byte) 0x00,
212         (byte) 0x0C,
213         (byte) 0x03,
214         (byte) 0x00,
215         (byte) 0x00,
216         (byte) 0x00,
217         (byte) 0x03,
218         (byte) 0x01,
219         (byte) 0x02,
220         (byte) 0x03,
221         (byte) 0x0F,
222         (byte) 0x00,
223         (byte) 0x0D,
224         (byte) 0x06,
225         (byte) 0x00,
226         (byte) 0x00,
227         (byte) 0x00,
228         (byte) 0x03,
229         (byte) 0x00,
230         (byte) 0x01,
231         (byte) 0x00,
232         (byte) 0x02,
233         (byte) 0x00,
234         (byte) 0x03,
235         (byte) 0x0F,
236         (byte) 0x00,
237         (byte) 0x0E,
238         (byte) 0x0A,
239         (byte) 0x00,
240         (byte) 0x00,
241         (byte) 0x00,
242         (byte) 0x03,
243         (byte) 0x00,
244         (byte) 0x00,
245         (byte) 0x00,
246         (byte) 0x00,
247         (byte) 0x00,
248         (byte) 0x00,
249         (byte) 0x00,
250         (byte) 0x01,
251         (byte) 0x00,
252         (byte) 0x00,
253         (byte) 0x00,
254         (byte) 0x00,
255         (byte) 0x00,
256         (byte) 0x00,
257         (byte) 0x00,
258         (byte) 0x02,
259         (byte) 0x00,
260         (byte) 0x00,
261         (byte) 0x00,
262         (byte) 0x00,
263         (byte) 0x00,
264         (byte) 0x00,
265         (byte) 0x00,
266         (byte) 0x03,
267         (byte) 0x00
268       };
269   private static final byte[] persistentBytesNesting =
270       new byte[] {
271         (byte) 0x0C,
272         (byte) 0x00,
273         (byte) 0x01,
274         (byte) 0x08,
275         (byte) 0x00,
276         (byte) 0x01,
277         (byte) 0x00,
278         (byte) 0x00,
279         (byte) 0x7A,
280         (byte) 0x69,
281         (byte) 0x0B,
282         (byte) 0x00,
283         (byte) 0x02,
284         (byte) 0x00,
285         (byte) 0x00,
286         (byte) 0x00,
287         (byte) 0x13,
288         (byte) 0x49,
289         (byte) 0x20,
290         (byte) 0x61,
291         (byte) 0x6D,
292         (byte) 0x20,
293         (byte) 0x61,
294         (byte) 0x20,
295         (byte) 0x62,
296         (byte) 0x6F,
297         (byte) 0x6E,
298         (byte) 0x6B,
299         (byte) 0x2E,
300         (byte) 0x2E,
301         (byte) 0x2E,
302         (byte) 0x20,
303         (byte) 0x78,
304         (byte) 0x6F,
305         (byte) 0x72,
306         (byte) 0x21,
307         (byte) 0x00,
308         (byte) 0x0C,
309         (byte) 0x00,
310         (byte) 0x02,
311         (byte) 0x02,
312         (byte) 0x00,
313         (byte) 0x01,
314         (byte) 0x01,
315         (byte) 0x02,
316         (byte) 0x00,
317         (byte) 0x02,
318         (byte) 0x00,
319         (byte) 0x03,
320         (byte) 0x00,
321         (byte) 0x03,
322         (byte) 0xD6,
323         (byte) 0x06,
324         (byte) 0x00,
325         (byte) 0x04,
326         (byte) 0x69,
327         (byte) 0x78,
328         (byte) 0x08,
329         (byte) 0x00,
330         (byte) 0x05,
331         (byte) 0x01,
332         (byte) 0x00,
333         (byte) 0x00,
334         (byte) 0x00,
335         (byte) 0x0A,
336         (byte) 0x00,
337         (byte) 0x06,
338         (byte) 0x00,
339         (byte) 0x00,
340         (byte) 0x00,
341         (byte) 0x01,
342         (byte) 0x65,
343         (byte) 0xA0,
344         (byte) 0xBC,
345         (byte) 0x00,
346         (byte) 0x04,
347         (byte) 0x00,
348         (byte) 0x07,
349         (byte) 0x40,
350         (byte) 0x09,
351         (byte) 0x21,
352         (byte) 0xFB,
353         (byte) 0x54,
354         (byte) 0x44,
355         (byte) 0x2D,
356         (byte) 0x18,
357         (byte) 0x0B,
358         (byte) 0x00,
359         (byte) 0x08,
360         (byte) 0x00,
361         (byte) 0x00,
362         (byte) 0x00,
363         (byte) 0x0D,
364         (byte) 0x4A,
365         (byte) 0x53,
366         (byte) 0x4F,
367         (byte) 0x4E,
368         (byte) 0x20,
369         (byte) 0x54,
370         (byte) 0x48,
371         (byte) 0x49,
372         (byte) 0x53,
373         (byte) 0x21,
374         (byte) 0x20,
375         (byte) 0x22,
376         (byte) 0x01,
377         (byte) 0x0B,
378         (byte) 0x00,
379         (byte) 0x09,
380         (byte) 0x00,
381         (byte) 0x00,
382         (byte) 0x00,
383         (byte) 0x2E,
384         (byte) 0xD3,
385         (byte) 0x80,
386         (byte) 0xE2,
387         (byte) 0x85,
388         (byte) 0xAE,
389         (byte) 0xCE,
390         (byte) 0x9D,
391         (byte) 0x20,
392         (byte) 0xD0,
393         (byte) 0x9D,
394         (byte) 0xCE,
395         (byte) 0xBF,
396         (byte) 0xE2,
397         (byte) 0x85,
398         (byte) 0xBF,
399         (byte) 0xD0,
400         (byte) 0xBE,
401         (byte) 0xC9,
402         (byte) 0xA1,
403         (byte) 0xD0,
404         (byte) 0xB3,
405         (byte) 0xD0,
406         (byte) 0xB0,
407         (byte) 0xCF,
408         (byte) 0x81,
409         (byte) 0xE2,
410         (byte) 0x84,
411         (byte) 0x8E,
412         (byte) 0x20,
413         (byte) 0xCE,
414         (byte) 0x91,
415         (byte) 0x74,
416         (byte) 0x74,
417         (byte) 0xCE,
418         (byte) 0xB1,
419         (byte) 0xE2,
420         (byte) 0x85,
421         (byte) 0xBD,
422         (byte) 0xCE,
423         (byte) 0xBA,
424         (byte) 0xEF,
425         (byte) 0xBF,
426         (byte) 0xBD,
427         (byte) 0xE2,
428         (byte) 0x80,
429         (byte) 0xBC,
430         (byte) 0x02,
431         (byte) 0x00,
432         (byte) 0x0A,
433         (byte) 0x00,
434         (byte) 0x0B,
435         (byte) 0x00,
436         (byte) 0x0B,
437         (byte) 0x00,
438         (byte) 0x00,
439         (byte) 0x00,
440         (byte) 0x06,
441         (byte) 0x62,
442         (byte) 0x61,
443         (byte) 0x73,
444         (byte) 0x65,
445         (byte) 0x36,
446         (byte) 0x34,
447         (byte) 0x0F,
448         (byte) 0x00,
449         (byte) 0x0C,
450         (byte) 0x03,
451         (byte) 0x00,
452         (byte) 0x00,
453         (byte) 0x00,
454         (byte) 0x03,
455         (byte) 0x01,
456         (byte) 0x02,
457         (byte) 0x03,
458         (byte) 0x0F,
459         (byte) 0x00,
460         (byte) 0x0D,
461         (byte) 0x06,
462         (byte) 0x00,
463         (byte) 0x00,
464         (byte) 0x00,
465         (byte) 0x03,
466         (byte) 0x00,
467         (byte) 0x01,
468         (byte) 0x00,
469         (byte) 0x02,
470         (byte) 0x00,
471         (byte) 0x03,
472         (byte) 0x0F,
473         (byte) 0x00,
474         (byte) 0x0E,
475         (byte) 0x0A,
476         (byte) 0x00,
477         (byte) 0x00,
478         (byte) 0x00,
479         (byte) 0x03,
480         (byte) 0x00,
481         (byte) 0x00,
482         (byte) 0x00,
483         (byte) 0x00,
484         (byte) 0x00,
485         (byte) 0x00,
486         (byte) 0x00,
487         (byte) 0x01,
488         (byte) 0x00,
489         (byte) 0x00,
490         (byte) 0x00,
491         (byte) 0x00,
492         (byte) 0x00,
493         (byte) 0x00,
494         (byte) 0x00,
495         (byte) 0x02,
496         (byte) 0x00,
497         (byte) 0x00,
498         (byte) 0x00,
499         (byte) 0x00,
500         (byte) 0x00,
501         (byte) 0x00,
502         (byte) 0x00,
503         (byte) 0x03,
504         (byte) 0x00,
505         (byte) 0x00
506       };
507   private static final byte[] persistentBytesHolyMoley =
508       new byte[] {
509         (byte) 0x0F,
510         (byte) 0x00,
511         (byte) 0x01,
512         (byte) 0x0C,
513         (byte) 0x00,
514         (byte) 0x00,
515         (byte) 0x00,
516         (byte) 0x02,
517         (byte) 0x02,
518         (byte) 0x00,
519         (byte) 0x01,
520         (byte) 0x01,
521         (byte) 0x02,
522         (byte) 0x00,
523         (byte) 0x02,
524         (byte) 0x00,
525         (byte) 0x03,
526         (byte) 0x00,
527         (byte) 0x03,
528         (byte) 0x23,
529         (byte) 0x06,
530         (byte) 0x00,
531         (byte) 0x04,
532         (byte) 0x69,
533         (byte) 0x78,
534         (byte) 0x08,
535         (byte) 0x00,
536         (byte) 0x05,
537         (byte) 0x01,
538         (byte) 0x00,
539         (byte) 0x00,
540         (byte) 0x00,
541         (byte) 0x0A,
542         (byte) 0x00,
543         (byte) 0x06,
544         (byte) 0x00,
545         (byte) 0x00,
546         (byte) 0x00,
547         (byte) 0x01,
548         (byte) 0x65,
549         (byte) 0xA0,
550         (byte) 0xBC,
551         (byte) 0x00,
552         (byte) 0x04,
553         (byte) 0x00,
554         (byte) 0x07,
555         (byte) 0x40,
556         (byte) 0x09,
557         (byte) 0x21,
558         (byte) 0xFB,
559         (byte) 0x54,
560         (byte) 0x44,
561         (byte) 0x2D,
562         (byte) 0x18,
563         (byte) 0x0B,
564         (byte) 0x00,
565         (byte) 0x08,
566         (byte) 0x00,
567         (byte) 0x00,
568         (byte) 0x00,
569         (byte) 0x0D,
570         (byte) 0x4A,
571         (byte) 0x53,
572         (byte) 0x4F,
573         (byte) 0x4E,
574         (byte) 0x20,
575         (byte) 0x54,
576         (byte) 0x48,
577         (byte) 0x49,
578         (byte) 0x53,
579         (byte) 0x21,
580         (byte) 0x20,
581         (byte) 0x22,
582         (byte) 0x01,
583         (byte) 0x0B,
584         (byte) 0x00,
585         (byte) 0x09,
586         (byte) 0x00,
587         (byte) 0x00,
588         (byte) 0x00,
589         (byte) 0x2E,
590         (byte) 0xD3,
591         (byte) 0x80,
592         (byte) 0xE2,
593         (byte) 0x85,
594         (byte) 0xAE,
595         (byte) 0xCE,
596         (byte) 0x9D,
597         (byte) 0x20,
598         (byte) 0xD0,
599         (byte) 0x9D,
600         (byte) 0xCE,
601         (byte) 0xBF,
602         (byte) 0xE2,
603         (byte) 0x85,
604         (byte) 0xBF,
605         (byte) 0xD0,
606         (byte) 0xBE,
607         (byte) 0xC9,
608         (byte) 0xA1,
609         (byte) 0xD0,
610         (byte) 0xB3,
611         (byte) 0xD0,
612         (byte) 0xB0,
613         (byte) 0xCF,
614         (byte) 0x81,
615         (byte) 0xE2,
616         (byte) 0x84,
617         (byte) 0x8E,
618         (byte) 0x20,
619         (byte) 0xCE,
620         (byte) 0x91,
621         (byte) 0x74,
622         (byte) 0x74,
623         (byte) 0xCE,
624         (byte) 0xB1,
625         (byte) 0xE2,
626         (byte) 0x85,
627         (byte) 0xBD,
628         (byte) 0xCE,
629         (byte) 0xBA,
630         (byte) 0xEF,
631         (byte) 0xBF,
632         (byte) 0xBD,
633         (byte) 0xE2,
634         (byte) 0x80,
635         (byte) 0xBC,
636         (byte) 0x02,
637         (byte) 0x00,
638         (byte) 0x0A,
639         (byte) 0x00,
640         (byte) 0x0B,
641         (byte) 0x00,
642         (byte) 0x0B,
643         (byte) 0x00,
644         (byte) 0x00,
645         (byte) 0x00,
646         (byte) 0x06,
647         (byte) 0x62,
648         (byte) 0x61,
649         (byte) 0x73,
650         (byte) 0x65,
651         (byte) 0x36,
652         (byte) 0x34,
653         (byte) 0x0F,
654         (byte) 0x00,
655         (byte) 0x0C,
656         (byte) 0x03,
657         (byte) 0x00,
658         (byte) 0x00,
659         (byte) 0x00,
660         (byte) 0x03,
661         (byte) 0x01,
662         (byte) 0x02,
663         (byte) 0x03,
664         (byte) 0x0F,
665         (byte) 0x00,
666         (byte) 0x0D,
667         (byte) 0x06,
668         (byte) 0x00,
669         (byte) 0x00,
670         (byte) 0x00,
671         (byte) 0x03,
672         (byte) 0x00,
673         (byte) 0x01,
674         (byte) 0x00,
675         (byte) 0x02,
676         (byte) 0x00,
677         (byte) 0x03,
678         (byte) 0x0F,
679         (byte) 0x00,
680         (byte) 0x0E,
681         (byte) 0x0A,
682         (byte) 0x00,
683         (byte) 0x00,
684         (byte) 0x00,
685         (byte) 0x03,
686         (byte) 0x00,
687         (byte) 0x00,
688         (byte) 0x00,
689         (byte) 0x00,
690         (byte) 0x00,
691         (byte) 0x00,
692         (byte) 0x00,
693         (byte) 0x01,
694         (byte) 0x00,
695         (byte) 0x00,
696         (byte) 0x00,
697         (byte) 0x00,
698         (byte) 0x00,
699         (byte) 0x00,
700         (byte) 0x00,
701         (byte) 0x02,
702         (byte) 0x00,
703         (byte) 0x00,
704         (byte) 0x00,
705         (byte) 0x00,
706         (byte) 0x00,
707         (byte) 0x00,
708         (byte) 0x00,
709         (byte) 0x03,
710         (byte) 0x00,
711         (byte) 0x02,
712         (byte) 0x00,
713         (byte) 0x01,
714         (byte) 0x01,
715         (byte) 0x02,
716         (byte) 0x00,
717         (byte) 0x02,
718         (byte) 0x00,
719         (byte) 0x03,
720         (byte) 0x00,
721         (byte) 0x03,
722         (byte) 0xD6,
723         (byte) 0x06,
724         (byte) 0x00,
725         (byte) 0x04,
726         (byte) 0x69,
727         (byte) 0x78,
728         (byte) 0x08,
729         (byte) 0x00,
730         (byte) 0x05,
731         (byte) 0x01,
732         (byte) 0x00,
733         (byte) 0x00,
734         (byte) 0x00,
735         (byte) 0x0A,
736         (byte) 0x00,
737         (byte) 0x06,
738         (byte) 0x00,
739         (byte) 0x00,
740         (byte) 0x00,
741         (byte) 0x01,
742         (byte) 0x65,
743         (byte) 0xA0,
744         (byte) 0xBC,
745         (byte) 0x00,
746         (byte) 0x04,
747         (byte) 0x00,
748         (byte) 0x07,
749         (byte) 0x40,
750         (byte) 0x09,
751         (byte) 0x21,
752         (byte) 0xFB,
753         (byte) 0x54,
754         (byte) 0x44,
755         (byte) 0x2D,
756         (byte) 0x18,
757         (byte) 0x0B,
758         (byte) 0x00,
759         (byte) 0x08,
760         (byte) 0x00,
761         (byte) 0x00,
762         (byte) 0x00,
763         (byte) 0x0D,
764         (byte) 0x4A,
765         (byte) 0x53,
766         (byte) 0x4F,
767         (byte) 0x4E,
768         (byte) 0x20,
769         (byte) 0x54,
770         (byte) 0x48,
771         (byte) 0x49,
772         (byte) 0x53,
773         (byte) 0x21,
774         (byte) 0x20,
775         (byte) 0x22,
776         (byte) 0x01,
777         (byte) 0x0B,
778         (byte) 0x00,
779         (byte) 0x09,
780         (byte) 0x00,
781         (byte) 0x00,
782         (byte) 0x00,
783         (byte) 0x2E,
784         (byte) 0xD3,
785         (byte) 0x80,
786         (byte) 0xE2,
787         (byte) 0x85,
788         (byte) 0xAE,
789         (byte) 0xCE,
790         (byte) 0x9D,
791         (byte) 0x20,
792         (byte) 0xD0,
793         (byte) 0x9D,
794         (byte) 0xCE,
795         (byte) 0xBF,
796         (byte) 0xE2,
797         (byte) 0x85,
798         (byte) 0xBF,
799         (byte) 0xD0,
800         (byte) 0xBE,
801         (byte) 0xC9,
802         (byte) 0xA1,
803         (byte) 0xD0,
804         (byte) 0xB3,
805         (byte) 0xD0,
806         (byte) 0xB0,
807         (byte) 0xCF,
808         (byte) 0x81,
809         (byte) 0xE2,
810         (byte) 0x84,
811         (byte) 0x8E,
812         (byte) 0x20,
813         (byte) 0xCE,
814         (byte) 0x91,
815         (byte) 0x74,
816         (byte) 0x74,
817         (byte) 0xCE,
818         (byte) 0xB1,
819         (byte) 0xE2,
820         (byte) 0x85,
821         (byte) 0xBD,
822         (byte) 0xCE,
823         (byte) 0xBA,
824         (byte) 0xEF,
825         (byte) 0xBF,
826         (byte) 0xBD,
827         (byte) 0xE2,
828         (byte) 0x80,
829         (byte) 0xBC,
830         (byte) 0x02,
831         (byte) 0x00,
832         (byte) 0x0A,
833         (byte) 0x00,
834         (byte) 0x0B,
835         (byte) 0x00,
836         (byte) 0x0B,
837         (byte) 0x00,
838         (byte) 0x00,
839         (byte) 0x00,
840         (byte) 0x06,
841         (byte) 0x62,
842         (byte) 0x61,
843         (byte) 0x73,
844         (byte) 0x65,
845         (byte) 0x36,
846         (byte) 0x34,
847         (byte) 0x0F,
848         (byte) 0x00,
849         (byte) 0x0C,
850         (byte) 0x03,
851         (byte) 0x00,
852         (byte) 0x00,
853         (byte) 0x00,
854         (byte) 0x03,
855         (byte) 0x01,
856         (byte) 0x02,
857         (byte) 0x03,
858         (byte) 0x0F,
859         (byte) 0x00,
860         (byte) 0x0D,
861         (byte) 0x06,
862         (byte) 0x00,
863         (byte) 0x00,
864         (byte) 0x00,
865         (byte) 0x03,
866         (byte) 0x00,
867         (byte) 0x01,
868         (byte) 0x00,
869         (byte) 0x02,
870         (byte) 0x00,
871         (byte) 0x03,
872         (byte) 0x0F,
873         (byte) 0x00,
874         (byte) 0x0E,
875         (byte) 0x0A,
876         (byte) 0x00,
877         (byte) 0x00,
878         (byte) 0x00,
879         (byte) 0x03,
880         (byte) 0x00,
881         (byte) 0x00,
882         (byte) 0x00,
883         (byte) 0x00,
884         (byte) 0x00,
885         (byte) 0x00,
886         (byte) 0x00,
887         (byte) 0x01,
888         (byte) 0x00,
889         (byte) 0x00,
890         (byte) 0x00,
891         (byte) 0x00,
892         (byte) 0x00,
893         (byte) 0x00,
894         (byte) 0x00,
895         (byte) 0x02,
896         (byte) 0x00,
897         (byte) 0x00,
898         (byte) 0x00,
899         (byte) 0x00,
900         (byte) 0x00,
901         (byte) 0x00,
902         (byte) 0x00,
903         (byte) 0x03,
904         (byte) 0x00,
905         (byte) 0x0E,
906         (byte) 0x00,
907         (byte) 0x02,
908         (byte) 0x0F,
909         (byte) 0x00,
910         (byte) 0x00,
911         (byte) 0x00,
912         (byte) 0x03,
913         (byte) 0x0B,
914         (byte) 0x00,
915         (byte) 0x00,
916         (byte) 0x00,
917         (byte) 0x00,
918         (byte) 0x0B,
919         (byte) 0x00,
920         (byte) 0x00,
921         (byte) 0x00,
922         (byte) 0x03,
923         (byte) 0x00,
924         (byte) 0x00,
925         (byte) 0x00,
926         (byte) 0x0F,
927         (byte) 0x74,
928         (byte) 0x68,
929         (byte) 0x65,
930         (byte) 0x6E,
931         (byte) 0x20,
932         (byte) 0x61,
933         (byte) 0x20,
934         (byte) 0x6F,
935         (byte) 0x6E,
936         (byte) 0x65,
937         (byte) 0x2C,
938         (byte) 0x20,
939         (byte) 0x74,
940         (byte) 0x77,
941         (byte) 0x6F,
942         (byte) 0x00,
943         (byte) 0x00,
944         (byte) 0x00,
945         (byte) 0x06,
946         (byte) 0x74,
947         (byte) 0x68,
948         (byte) 0x72,
949         (byte) 0x65,
950         (byte) 0x65,
951         (byte) 0x21,
952         (byte) 0x00,
953         (byte) 0x00,
954         (byte) 0x00,
955         (byte) 0x06,
956         (byte) 0x46,
957         (byte) 0x4F,
958         (byte) 0x55,
959         (byte) 0x52,
960         (byte) 0x21,
961         (byte) 0x21,
962         (byte) 0x0B,
963         (byte) 0x00,
964         (byte) 0x00,
965         (byte) 0x00,
966         (byte) 0x02,
967         (byte) 0x00,
968         (byte) 0x00,
969         (byte) 0x00,
970         (byte) 0x09,
971         (byte) 0x61,
972         (byte) 0x6E,
973         (byte) 0x64,
974         (byte) 0x20,
975         (byte) 0x61,
976         (byte) 0x20,
977         (byte) 0x6F,
978         (byte) 0x6E,
979         (byte) 0x65,
980         (byte) 0x00,
981         (byte) 0x00,
982         (byte) 0x00,
983         (byte) 0x09,
984         (byte) 0x61,
985         (byte) 0x6E,
986         (byte) 0x64,
987         (byte) 0x20,
988         (byte) 0x61,
989         (byte) 0x20,
990         (byte) 0x74,
991         (byte) 0x77,
992         (byte) 0x6F,
993         (byte) 0x0D,
994         (byte) 0x00,
995         (byte) 0x03,
996         (byte) 0x0B,
997         (byte) 0x0F,
998         (byte) 0x00,
999         (byte) 0x00,
1000         (byte) 0x00,
1001         (byte) 0x03,
1002         (byte) 0x00,
1003         (byte) 0x00,
1004         (byte) 0x00,
1005         (byte) 0x03,
1006         (byte) 0x74,
1007         (byte) 0x77,
1008         (byte) 0x6F,
1009         (byte) 0x0C,
1010         (byte) 0x00,
1011         (byte) 0x00,
1012         (byte) 0x00,
1013         (byte) 0x02,
1014         (byte) 0x08,
1015         (byte) 0x00,
1016         (byte) 0x01,
1017         (byte) 0x00,
1018         (byte) 0x00,
1019         (byte) 0x00,
1020         (byte) 0x01,
1021         (byte) 0x0B,
1022         (byte) 0x00,
1023         (byte) 0x02,
1024         (byte) 0x00,
1025         (byte) 0x00,
1026         (byte) 0x00,
1027         (byte) 0x05,
1028         (byte) 0x57,
1029         (byte) 0x61,
1030         (byte) 0x69,
1031         (byte) 0x74,
1032         (byte) 0x2E,
1033         (byte) 0x00,
1034         (byte) 0x08,
1035         (byte) 0x00,
1036         (byte) 0x01,
1037         (byte) 0x00,
1038         (byte) 0x00,
1039         (byte) 0x00,
1040         (byte) 0x02,
1041         (byte) 0x0B,
1042         (byte) 0x00,
1043         (byte) 0x02,
1044         (byte) 0x00,
1045         (byte) 0x00,
1046         (byte) 0x00,
1047         (byte) 0x05,
1048         (byte) 0x57,
1049         (byte) 0x68,
1050         (byte) 0x61,
1051         (byte) 0x74,
1052         (byte) 0x3F,
1053         (byte) 0x00,
1054         (byte) 0x00,
1055         (byte) 0x00,
1056         (byte) 0x00,
1057         (byte) 0x05,
1058         (byte) 0x74,
1059         (byte) 0x68,
1060         (byte) 0x72,
1061         (byte) 0x65,
1062         (byte) 0x65,
1063         (byte) 0x0C,
1064         (byte) 0x00,
1065         (byte) 0x00,
1066         (byte) 0x00,
1067         (byte) 0x00,
1068         (byte) 0x00,
1069         (byte) 0x00,
1070         (byte) 0x00,
1071         (byte) 0x04,
1072         (byte) 0x7A,
1073         (byte) 0x65,
1074         (byte) 0x72,
1075         (byte) 0x6F,
1076         (byte) 0x0C,
1077         (byte) 0x00,
1078         (byte) 0x00,
1079         (byte) 0x00,
1080         (byte) 0x00,
1081         (byte) 0x00
1082       };
1083 
1084   private static final byte[] kUnicodeBytes = {
1085     (byte) 0xd3,
1086     (byte) 0x80,
1087     (byte) 0xe2,
1088     (byte) 0x85,
1089     (byte) 0xae,
1090     (byte) 0xce,
1091     (byte) 0x9d,
1092     (byte) 0x20,
1093     (byte) 0xd0,
1094     (byte) 0x9d,
1095     (byte) 0xce,
1096     (byte) 0xbf,
1097     (byte) 0xe2,
1098     (byte) 0x85,
1099     (byte) 0xbf,
1100     (byte) 0xd0,
1101     (byte) 0xbe,
1102     (byte) 0xc9,
1103     (byte) 0xa1,
1104     (byte) 0xd0,
1105     (byte) 0xb3,
1106     (byte) 0xd0,
1107     (byte) 0xb0,
1108     (byte) 0xcf,
1109     (byte) 0x81,
1110     (byte) 0xe2,
1111     (byte) 0x84,
1112     (byte) 0x8e,
1113     (byte) 0x20,
1114     (byte) 0xce,
1115     (byte) 0x91,
1116     (byte) 0x74,
1117     (byte) 0x74,
1118     (byte) 0xce,
1119     (byte) 0xb1,
1120     (byte) 0xe2,
1121     (byte) 0x85,
1122     (byte) 0xbd,
1123     (byte) 0xce,
1124     (byte) 0xba,
1125     (byte) 0x83,
1126     (byte) 0xe2,
1127     (byte) 0x80,
1128     (byte) 0xbc
1129   };
1130 
1131   static {
1132     try {
1133       oneOfEach = new OneOfEach();
1134       oneOfEach.setIm_true(true);
1135       oneOfEach.setIm_false(false);
oneOfEach.setA_bite(byte) 0xd61136       oneOfEach.setA_bite((byte) 0xd6);
oneOfEach.setInteger16(short) 270001137       oneOfEach.setInteger16((short) 27000);
1138       oneOfEach.setInteger32(1 << 24);
oneOfEach.setInteger64(long) 6000 * 1000 * 10001139       oneOfEach.setInteger64((long) 6000 * 1000 * 1000);
1140       oneOfEach.setDouble_precision(Math.PI);
1141       oneOfEach.setSome_characters("JSON THIS! \"\1");
oneOfEach.setZomg_unicode(new String(kUnicodeBytes, StandardCharsets.UTF_8))1142       oneOfEach.setZomg_unicode(new String(kUnicodeBytes, StandardCharsets.UTF_8));
1143       oneOfEach.setBase64(ByteBuffer.wrap("base64".getBytes()));
1144       // byte, i16, and i64 lists are populated by default constructor
1145 
1146       Bonk bonk = new Bonk();
1147       bonk.setType(31337);
1148       bonk.setMessage("I am a bonk... xor!");
1149       nesting = new Nesting(bonk, oneOfEach);
1150 
1151       holyMoley = new HolyMoley();
1152       List<OneOfEach> big = new ArrayList<>();
big.add(new OneOfEach(oneOfEach))1153       big.add(new OneOfEach(oneOfEach));
1154       big.add(nesting.my_ooe);
1155       holyMoley.setBig(big);
setA_bite(byte) 0x221156       holyMoley.getBig().get(0).setA_bite((byte) 0x22);
setA_bite(byte) 0x231157       holyMoley.getBig().get(0).setA_bite((byte) 0x23);
1158 
holyMoley.setContain(new HashSet<>())1159       holyMoley.setContain(new HashSet<>());
1160       ArrayList<String> stage1 = new ArrayList<>(2);
1161       stage1.add("and a one");
1162       stage1.add("and a two");
1163       holyMoley.getContain().add(stage1);
1164       stage1 = new ArrayList<>(3);
1165       stage1.add("then a one, two");
1166       stage1.add("three!");
1167       stage1.add("FOUR!!");
1168       holyMoley.getContain().add(stage1);
1169       stage1 = new ArrayList<>(0);
1170       holyMoley.getContain().add(stage1);
1171 
1172       ArrayList<Bonk> stage2 = new ArrayList<>();
holyMoley.setBonks(new HashMap<>())1173       holyMoley.setBonks(new HashMap<>());
1174       // one empty
1175       holyMoley.getBonks().put("zero", stage2);
1176 
1177       // one with two
1178       stage2 = new ArrayList<>();
1179       Bonk b = new Bonk();
1180       b.setType(1);
1181       b.setMessage("Wait.");
1182       stage2.add(b);
1183       b = new Bonk();
1184       b.setType(2);
1185       b.setMessage("What?");
1186       stage2.add(b);
1187       holyMoley.getBonks().put("two", stage2);
1188 
1189       // one with three
1190       stage2 = new ArrayList<>();
1191       b = new Bonk();
1192       b.setType(3);
1193       b.setMessage("quoth");
1194       b = new Bonk();
1195       b.setType(4);
1196       b.setMessage("the raven");
1197       b = new Bonk();
1198       b.setType(5);
1199       b.setMessage("nevermore");
1200       holyMoley.getBonks().put("three", stage2);
1201 
1202       // superhuge compact proto test struct
1203       compactProtoTestStruct =
1204           new CompactProtoTestStruct(thrift.test.DebugProtoTestConstants.COMPACT_TEST);
ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8})1205       compactProtoTestStruct.setA_binary(ByteBuffer.wrap(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8}));
1206     } catch (Exception e) {
1207       throw new RuntimeException(e);
1208     }
1209   }
1210 }
1211