1 /* 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"). 5 * You may not use this file except in compliance with the License. 6 * A copy of the License is located at 7 * 8 * http://aws.amazon.com/apache2.0 9 * 10 * or in the "license" file accompanying this file. This file is distributed 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 * express or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package software.amazon.awssdk.benchmark.enhanced.dynamodb; 17 18 import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; 19 import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; 20 import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; 21 import com.amazonaws.services.dynamodbv2.model.AttributeValue; 22 import com.amazonaws.util.ImmutableMapParameter; 23 import java.lang.reflect.Method; 24 import java.nio.ByteBuffer; 25 import java.util.List; 26 import java.util.Map; 27 import java.util.stream.Collectors; 28 import software.amazon.awssdk.core.SdkBytes; 29 30 public final class V1ItemFactory extends ItemFactory<AttributeValue> { v1hugeBean()31 public V1HugeBean v1hugeBean() { 32 return V1HugeBean.fromHugeBean(super.hugeBean()); 33 } 34 v1TinyBean()35 public V1TinyBean v1TinyBean() { 36 return V1TinyBean.fromTinyBean(super.tinyBean()); 37 } 38 v1SmallBean()39 public V1SmallBean v1SmallBean() { 40 return V1SmallBean.fromSmallBean(super.smallBean()); 41 } 42 v1HugeBeanFlat()43 public V1HugeBeanFlat v1HugeBeanFlat() { 44 return V1HugeBeanFlat.fromHugeBeanFlat(super.hugeBeanFlat()); 45 } 46 47 @Override asItem(TinyBean b)48 protected Map<String, AttributeValue> asItem(TinyBean b) { 49 ImmutableMapParameter.Builder<String, AttributeValue> builder = ImmutableMapParameter.builder(); 50 51 builder.put("stringAttr", av(b.getStringAttr())); 52 53 return builder.build(); 54 } 55 56 @Override asItem(SmallBean b)57 protected Map<String, AttributeValue> asItem(SmallBean b) { 58 ImmutableMapParameter.Builder<String, AttributeValue> builder = ImmutableMapParameter.builder(); 59 60 builder.put("stringAttr", av(b.getStringAttr())); 61 builder.put("binaryAttr", av(b.getBinaryAttr())); 62 63 List<AttributeValue> listAttr = b.getListAttr().stream().map(this::av).collect(Collectors.toList()); 64 65 builder.put("listAttr", av(listAttr)); 66 67 return builder.build(); 68 } 69 70 @Override asItem(HugeBean b)71 protected Map<String, AttributeValue> asItem(HugeBean b) { 72 ImmutableMapParameter.Builder<String, AttributeValue> builder = ImmutableMapParameter.builder(); 73 74 builder.put("hashKey", av(b.getHashKey())); 75 builder.put("stringAttr", av(b.getStringAttr())); 76 builder.put("binaryAttr", av(b.getBinaryAttr())); 77 78 List<AttributeValue> listAttr = b.getListAttr().stream().map(this::av).collect(Collectors.toList()); 79 80 builder.put("listAttr", av(listAttr)); 81 82 Map<String, AttributeValue> mapAttr1 = b.getMapAttr1().entrySet().stream().collect( 83 Collectors.toMap(Map.Entry::getKey, 84 e -> av(e.getValue()))); 85 86 builder.put("mapAttr1", av(mapAttr1)); 87 88 89 Map<String, AttributeValue> mapAttr2 = b.getMapAttr2().entrySet().stream().collect( 90 Collectors.toMap(Map.Entry::getKey, 91 e -> av(e.getValue().stream().map(this::av).collect(Collectors.toList())))); 92 93 builder.put("mapAttr2", av(mapAttr2)); 94 95 Map<String, AttributeValue> mapAttr3 = b.getMapAttr3().entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, 96 e -> { 97 List<Map<String, List<SdkBytes>>> value = e.getValue(); 98 AttributeValue valueAv = av(value.stream().map(m -> av(m.entrySet().stream() 99 .collect(Collectors.toMap(Map.Entry::getKey, 100 ee -> av(ee.getValue().stream().map(this::av).collect(Collectors.toList())))))) 101 .collect(Collectors.toList())); 102 return valueAv; 103 })); 104 105 builder.put("mapAttr3", av(mapAttr3)); 106 107 return builder.build(); 108 } 109 110 @Override av(String val)111 protected AttributeValue av(String val) { 112 return new AttributeValue() 113 .withS(val); 114 } 115 116 @Override av(List<AttributeValue> val)117 protected AttributeValue av(List<AttributeValue> val) { 118 return new AttributeValue() 119 .withL(val); 120 } 121 122 @Override av(Map<String, AttributeValue> val)123 protected AttributeValue av(Map<String, AttributeValue> val) { 124 return new AttributeValue() 125 .withM(val); 126 } 127 128 @Override av(SdkBytes val)129 protected AttributeValue av(SdkBytes val) { 130 return new AttributeValue() 131 .withB(val.asByteBuffer()); 132 } 133 134 @DynamoDBTable(tableName = "V1TinyBean") 135 public static class V1TinyBean extends ItemFactory.TinyBean { V1TinyBean()136 public V1TinyBean() { 137 } 138 V1TinyBean(String stringAttr)139 public V1TinyBean(String stringAttr) { 140 super.setStringAttr(stringAttr); 141 } 142 143 @DynamoDBHashKey 144 @Override getStringAttr()145 public String getStringAttr() { 146 return super.getStringAttr(); 147 } 148 fromTinyBean(TinyBean tb)149 private static V1TinyBean fromTinyBean(TinyBean tb) { 150 V1TinyBean b = new V1TinyBean(); 151 b.setStringAttr(tb.getStringAttr()); 152 return b; 153 } 154 } 155 156 @DynamoDBTable(tableName = "V1SmallBean") 157 public static class V1SmallBean extends ItemFactory.SmallBean { 158 private ByteBuffer binaryAttr; 159 V1SmallBean()160 public V1SmallBean() { 161 } 162 V1SmallBean(String stringAttr)163 public V1SmallBean(String stringAttr) { 164 super.setStringAttr(stringAttr); 165 } 166 167 @DynamoDBHashKey 168 @Override getStringAttr()169 public String getStringAttr() { 170 return super.getStringAttr(); 171 } 172 173 @DynamoDBAttribute(attributeName = "binaryAttr") getBinaryAttrV1()174 public ByteBuffer getBinaryAttrV1() { 175 return binaryAttr; 176 } 177 178 @DynamoDBAttribute(attributeName = "binaryAttr") setBinaryAttrV1(ByteBuffer binaryAttr)179 public void setBinaryAttrV1(ByteBuffer binaryAttr) { 180 this.binaryAttr = binaryAttr; 181 } 182 183 @DynamoDBAttribute 184 @Override getListAttr()185 public List<String> getListAttr() { 186 return super.getListAttr(); 187 } 188 fromSmallBean(SmallBean sb)189 private static V1SmallBean fromSmallBean(SmallBean sb) { 190 V1SmallBean b = new V1SmallBean(); 191 b.setStringAttr(sb.getStringAttr()); 192 b.setBinaryAttrV1(sb.getBinaryAttr().asByteBuffer()); 193 b.setListAttr(sb.getListAttr()); 194 return b; 195 } 196 } 197 198 @DynamoDBTable(tableName = "V1HugeBean") 199 public static class V1HugeBean extends ItemFactory.HugeBean { 200 private ByteBuffer binaryAttr; 201 private Map<String, ByteBuffer> mapAttr1; 202 private Map<String, List<ByteBuffer>> mapAttr2; 203 private Map<String, List<Map<String, List<ByteBuffer>>>> mapAttr3; 204 V1HugeBean()205 public V1HugeBean() { 206 } 207 V1HugeBean(String stringAttr)208 public V1HugeBean(String stringAttr) { 209 super.setStringAttr(stringAttr); 210 } 211 212 @DynamoDBHashKey 213 @Override getStringAttr()214 public String getStringAttr() { 215 return super.getStringAttr(); 216 } 217 218 @DynamoDBAttribute 219 @Override getHashKey()220 public String getHashKey() { 221 return super.getHashKey(); 222 } 223 224 @DynamoDBAttribute(attributeName = "binaryAttr") getBinaryAttrV1()225 public ByteBuffer getBinaryAttrV1() { 226 return binaryAttr; 227 } 228 229 @DynamoDBAttribute(attributeName = "binaryAttr") setBinaryAttrV1(ByteBuffer binaryAttr)230 public void setBinaryAttrV1(ByteBuffer binaryAttr) { 231 this.binaryAttr = binaryAttr; 232 } 233 234 @DynamoDBAttribute 235 @Override getListAttr()236 public List<String> getListAttr() { 237 return super.getListAttr(); 238 } 239 240 @DynamoDBAttribute(attributeName = "mapAttr1") getMapAttr1V1()241 public Map<String, ByteBuffer> getMapAttr1V1() { 242 return mapAttr1; 243 } 244 245 @DynamoDBAttribute(attributeName = "mapAttr1") setMapAttr1V1(Map<String, ByteBuffer> mapAttr1)246 public void setMapAttr1V1(Map<String, ByteBuffer> mapAttr1) { 247 this.mapAttr1 = mapAttr1; 248 } 249 250 @DynamoDBAttribute(attributeName = "mapAttr2") getMapAttr2V1()251 public Map<String, List<ByteBuffer>> getMapAttr2V1() { 252 return mapAttr2; 253 } 254 255 @DynamoDBAttribute(attributeName = "mapAttr2") setMapAttr2V1(Map<String, List<ByteBuffer>> mapAttr2)256 public void setMapAttr2V1(Map<String, List<ByteBuffer>> mapAttr2) { 257 this.mapAttr2 = mapAttr2; 258 } 259 260 @DynamoDBAttribute(attributeName = "mapAttr3") getMapAttr3V1()261 public Map<String, List<Map<String, List<ByteBuffer>>>> getMapAttr3V1() { 262 return mapAttr3; 263 } 264 265 @DynamoDBAttribute(attributeName = "mapAttr3") setMapAttr3V1(Map<String, List<Map<String, List<ByteBuffer>>>> mapAttr3)266 public void setMapAttr3V1(Map<String, List<Map<String, List<ByteBuffer>>>> mapAttr3) { 267 this.mapAttr3 = mapAttr3; 268 } 269 fromHugeBean(HugeBean hb)270 private static V1HugeBean fromHugeBean(HugeBean hb) { 271 V1HugeBean b = new V1HugeBean(); 272 b.setHashKey(hb.getHashKey()); 273 b.setStringAttr(hb.getStringAttr()); 274 b.setBinaryAttrV1(hb.getBinaryAttr().asByteBuffer()); 275 b.setListAttr(hb.getListAttr()); 276 277 b.setMapAttr1V1(hb.getMapAttr1() 278 .entrySet().stream() 279 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().asByteBuffer()))); 280 281 b.setMapAttr2V1(hb.getMapAttr2() 282 .entrySet().stream() 283 .collect(Collectors.toMap(Map.Entry::getKey, 284 e -> e.getValue().stream().map(SdkBytes::asByteBuffer).collect(Collectors.toList())))); 285 286 Map<String, List<Map<String, List<ByteBuffer>>>> mapAttr3V1 = hb.getMapAttr3() 287 .entrySet().stream() 288 .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().stream() 289 .map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, ee -> 290 ee.getValue().stream().map(SdkBytes::asByteBuffer).collect(Collectors.toList()) 291 ))) 292 .collect(Collectors.toList()))); 293 294 b.setMapAttr3V1(mapAttr3V1); 295 296 return b; 297 } 298 } 299 300 @DynamoDBTable(tableName = "V1HugeBeanFlat") 301 public static class V1HugeBeanFlat extends HugeBeanFlat { V1HugeBeanFlat()302 public V1HugeBeanFlat() { 303 } 304 V1HugeBeanFlat(String stringAttr)305 public V1HugeBeanFlat(String stringAttr) { 306 this.setStringAttr1(stringAttr); 307 } 308 309 @DynamoDBAttribute(attributeName = "stringAttr1") 310 @DynamoDBHashKey 311 @Override getStringAttr1()312 public String getStringAttr1() { 313 return super.getStringAttr1(); 314 } 315 316 @DynamoDBAttribute(attributeName = "stringAttr2") 317 @Override getStringAttr2()318 public String getStringAttr2() { 319 return super.getStringAttr2(); 320 } 321 322 @DynamoDBAttribute(attributeName = "stringAttr3") 323 @Override getStringAttr3()324 public String getStringAttr3() { 325 return super.getStringAttr3(); 326 } 327 328 @DynamoDBAttribute(attributeName = "stringAttr4") 329 @Override getStringAttr4()330 public String getStringAttr4() { 331 return super.getStringAttr4(); 332 } 333 334 @DynamoDBAttribute(attributeName = "stringAttr5") 335 @Override getStringAttr5()336 public String getStringAttr5() { 337 return super.getStringAttr5(); 338 } 339 340 @DynamoDBAttribute(attributeName = "stringAttr6") 341 @Override getStringAttr6()342 public String getStringAttr6() { 343 return super.getStringAttr6(); 344 } 345 346 @DynamoDBAttribute(attributeName = "stringAttr7") 347 @Override getStringAttr7()348 public String getStringAttr7() { 349 return super.getStringAttr7(); 350 } 351 352 @DynamoDBAttribute(attributeName = "stringAttr8") 353 @Override getStringAttr8()354 public String getStringAttr8() { 355 return super.getStringAttr8(); 356 } 357 358 @DynamoDBAttribute(attributeName = "stringAttr9") 359 @Override getStringAttr9()360 public String getStringAttr9() { 361 return super.getStringAttr9(); 362 } 363 364 @DynamoDBAttribute(attributeName = "stringAttr10") 365 @Override getStringAttr10()366 public String getStringAttr10() { 367 return super.getStringAttr10(); 368 } 369 370 @DynamoDBAttribute(attributeName = "stringAttr11") 371 @Override getStringAttr11()372 public String getStringAttr11() { 373 return super.getStringAttr11(); 374 } 375 376 @DynamoDBAttribute(attributeName = "stringAttr12") 377 @Override getStringAttr12()378 public String getStringAttr12() { 379 return super.getStringAttr12(); 380 } 381 382 @DynamoDBAttribute(attributeName = "stringAttr13") 383 @Override getStringAttr13()384 public String getStringAttr13() { 385 return super.getStringAttr13(); 386 } 387 388 @DynamoDBAttribute(attributeName = "stringAttr14") 389 @Override getStringAttr14()390 public String getStringAttr14() { 391 return super.getStringAttr14(); 392 } 393 394 @DynamoDBAttribute(attributeName = "stringAttr15") 395 @Override getStringAttr15()396 public String getStringAttr15() { 397 return super.getStringAttr15(); 398 } 399 400 @DynamoDBAttribute(attributeName = "stringAttr16") 401 @Override getStringAttr16()402 public String getStringAttr16() { 403 return super.getStringAttr16(); 404 } 405 406 @DynamoDBAttribute(attributeName = "stringAttr17") 407 @Override getStringAttr17()408 public String getStringAttr17() { 409 return super.getStringAttr17(); 410 } 411 412 @DynamoDBAttribute(attributeName = "stringAttr18") 413 @Override getStringAttr18()414 public String getStringAttr18() { 415 return super.getStringAttr18(); 416 } 417 418 @DynamoDBAttribute(attributeName = "stringAttr19") 419 @Override getStringAttr19()420 public String getStringAttr19() { 421 return super.getStringAttr19(); 422 } 423 424 @DynamoDBAttribute(attributeName = "stringAttr20") 425 @Override getStringAttr20()426 public String getStringAttr20() { 427 return super.getStringAttr20(); 428 } 429 430 @DynamoDBAttribute(attributeName = "stringAttr21") 431 @Override getStringAttr21()432 public String getStringAttr21() { 433 return super.getStringAttr21(); 434 } 435 436 @DynamoDBAttribute(attributeName = "stringAttr22") 437 @Override getStringAttr22()438 public String getStringAttr22() { 439 return super.getStringAttr22(); 440 } 441 442 @DynamoDBAttribute(attributeName = "stringAttr23") 443 @Override getStringAttr23()444 public String getStringAttr23() { 445 return super.getStringAttr23(); 446 } 447 448 @DynamoDBAttribute(attributeName = "stringAttr24") 449 @Override getStringAttr24()450 public String getStringAttr24() { 451 return super.getStringAttr24(); 452 } 453 454 @DynamoDBAttribute(attributeName = "stringAttr25") 455 @Override getStringAttr25()456 public String getStringAttr25() { 457 return super.getStringAttr25(); 458 } 459 460 @DynamoDBAttribute(attributeName = "stringAttr26") 461 @Override getStringAttr26()462 public String getStringAttr26() { 463 return super.getStringAttr26(); 464 } 465 466 @DynamoDBAttribute(attributeName = "stringAttr27") 467 @Override getStringAttr27()468 public String getStringAttr27() { 469 return super.getStringAttr27(); 470 } 471 472 @DynamoDBAttribute(attributeName = "stringAttr28") 473 @Override getStringAttr28()474 public String getStringAttr28() { 475 return super.getStringAttr28(); 476 } 477 478 @DynamoDBAttribute(attributeName = "stringAttr29") 479 @Override getStringAttr29()480 public String getStringAttr29() { 481 return super.getStringAttr29(); 482 } 483 484 @DynamoDBAttribute(attributeName = "stringAttr30") 485 @Override getStringAttr30()486 public String getStringAttr30() { 487 return super.getStringAttr30(); 488 } 489 490 @DynamoDBAttribute(attributeName = "stringAttr31") 491 @Override getStringAttr31()492 public String getStringAttr31() { 493 return super.getStringAttr31(); 494 } 495 496 @DynamoDBAttribute(attributeName = "stringAttr32") 497 @Override getStringAttr32()498 public String getStringAttr32() { 499 return super.getStringAttr32(); 500 } 501 502 @DynamoDBAttribute(attributeName = "stringAttr33") 503 @Override getStringAttr33()504 public String getStringAttr33() { 505 return super.getStringAttr33(); 506 } 507 508 @DynamoDBAttribute(attributeName = "stringAttr34") 509 @Override getStringAttr34()510 public String getStringAttr34() { 511 return super.getStringAttr34(); 512 } 513 514 @DynamoDBAttribute(attributeName = "stringAttr35") 515 @Override getStringAttr35()516 public String getStringAttr35() { 517 return super.getStringAttr35(); 518 } 519 520 @DynamoDBAttribute(attributeName = "stringAttr36") 521 @Override getStringAttr36()522 public String getStringAttr36() { 523 return super.getStringAttr36(); 524 } 525 526 @DynamoDBAttribute(attributeName = "stringAttr37") 527 @Override getStringAttr37()528 public String getStringAttr37() { 529 return super.getStringAttr37(); 530 } 531 532 @DynamoDBAttribute(attributeName = "stringAttr38") 533 @Override getStringAttr38()534 public String getStringAttr38() { 535 return super.getStringAttr38(); 536 } 537 538 @DynamoDBAttribute(attributeName = "stringAttr39") 539 @Override getStringAttr39()540 public String getStringAttr39() { 541 return super.getStringAttr39(); 542 } 543 544 @DynamoDBAttribute(attributeName = "stringAttr40") 545 @Override getStringAttr40()546 public String getStringAttr40() { 547 return super.getStringAttr40(); 548 } 549 550 @DynamoDBAttribute(attributeName = "stringAttr41") 551 @Override getStringAttr41()552 public String getStringAttr41() { 553 return super.getStringAttr41(); 554 } 555 556 @DynamoDBAttribute(attributeName = "stringAttr42") 557 @Override getStringAttr42()558 public String getStringAttr42() { 559 return super.getStringAttr42(); 560 } 561 562 @DynamoDBAttribute(attributeName = "stringAttr43") 563 @Override getStringAttr43()564 public String getStringAttr43() { 565 return super.getStringAttr43(); 566 } 567 568 @DynamoDBAttribute(attributeName = "stringAttr44") 569 @Override getStringAttr44()570 public String getStringAttr44() { 571 return super.getStringAttr44(); 572 } 573 574 @DynamoDBAttribute(attributeName = "stringAttr45") 575 @Override getStringAttr45()576 public String getStringAttr45() { 577 return super.getStringAttr45(); 578 } 579 580 @DynamoDBAttribute(attributeName = "stringAttr46") 581 @Override getStringAttr46()582 public String getStringAttr46() { 583 return super.getStringAttr46(); 584 } 585 586 @DynamoDBAttribute(attributeName = "stringAttr47") 587 @Override getStringAttr47()588 public String getStringAttr47() { 589 return super.getStringAttr47(); 590 } 591 592 @DynamoDBAttribute(attributeName = "stringAttr48") 593 @Override getStringAttr48()594 public String getStringAttr48() { 595 return super.getStringAttr48(); 596 } 597 598 @DynamoDBAttribute(attributeName = "stringAttr49") 599 @Override getStringAttr49()600 public String getStringAttr49() { 601 return super.getStringAttr49(); 602 } 603 604 @DynamoDBAttribute(attributeName = "stringAttr50") 605 @Override getStringAttr50()606 public String getStringAttr50() { 607 return super.getStringAttr50(); 608 } 609 610 @DynamoDBAttribute(attributeName = "stringAttr51") 611 @Override getStringAttr51()612 public String getStringAttr51() { 613 return super.getStringAttr51(); 614 } 615 616 @DynamoDBAttribute(attributeName = "stringAttr52") 617 @Override getStringAttr52()618 public String getStringAttr52() { 619 return super.getStringAttr52(); 620 } 621 622 @DynamoDBAttribute(attributeName = "stringAttr53") 623 @Override getStringAttr53()624 public String getStringAttr53() { 625 return super.getStringAttr53(); 626 } 627 628 @Override 629 @DynamoDBAttribute(attributeName = "stringAttr54") getStringAttr54()630 public String getStringAttr54() { 631 return super.getStringAttr54(); 632 } 633 634 @DynamoDBAttribute(attributeName = "stringAttr55") 635 @Override getStringAttr55()636 public String getStringAttr55() { 637 return super.getStringAttr55(); 638 } 639 640 @DynamoDBAttribute(attributeName = "stringAttr56") 641 @Override getStringAttr56()642 public String getStringAttr56() { 643 return super.getStringAttr56(); 644 } 645 646 @DynamoDBAttribute(attributeName = "stringAttr57") 647 @Override getStringAttr57()648 public String getStringAttr57() { 649 return super.getStringAttr57(); 650 } 651 652 @DynamoDBAttribute(attributeName = "stringAttr58") 653 @Override getStringAttr58()654 public String getStringAttr58() { 655 return super.getStringAttr58(); 656 } 657 658 @DynamoDBAttribute(attributeName = "stringAttr59") 659 @Override getStringAttr59()660 public String getStringAttr59() { 661 return super.getStringAttr59(); 662 } 663 664 @DynamoDBAttribute(attributeName = "stringAttr60") 665 @Override getStringAttr60()666 public String getStringAttr60() { 667 return super.getStringAttr60(); 668 } 669 670 @DynamoDBAttribute(attributeName = "stringAttr61") 671 @Override getStringAttr61()672 public String getStringAttr61() { 673 return super.getStringAttr61(); 674 } 675 676 @DynamoDBAttribute(attributeName = "stringAttr62") 677 @Override getStringAttr62()678 public String getStringAttr62() { 679 return super.getStringAttr62(); 680 } 681 682 @DynamoDBAttribute(attributeName = "stringAttr63") 683 @Override getStringAttr63()684 public String getStringAttr63() { 685 return super.getStringAttr63(); 686 } 687 fromHugeBeanFlat(HugeBeanFlat b)688 public static V1HugeBeanFlat fromHugeBeanFlat(HugeBeanFlat b) { 689 V1HugeBeanFlat bean = new V1HugeBeanFlat(); 690 for (int i = 1; i <= 63; ++i) { 691 try { 692 Method setter = V1HugeBeanFlat.class.getMethod("setStringAttr" + i, String.class); 693 Method getter = HugeBeanFlat.class.getMethod("getStringAttr" + i); 694 setter.setAccessible(true); 695 setter.invoke(bean, getter.invoke(b)); 696 } catch (Throwable t) { 697 throw new RuntimeException(t); 698 } 699 } 700 return bean; 701 } 702 } 703 } 704