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