001// *************************************************************************************************************************** 002// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * 003// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * 004// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * 005// * with the License. You may obtain a copy of the License at * 006// * * 007// * http://www.apache.org/licenses/LICENSE-2.0 * 008// * * 009// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * 010// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * 011// * specific language governing permissions and limitations under the License. * 012// *************************************************************************************************************************** 013package org.apache.juneau.serializer; 014 015import static org.apache.juneau.internal.CollectionUtils.*; 016import static org.apache.juneau.serializer.Serializer.*; 017 018import java.util.*; 019 020import org.apache.juneau.*; 021import org.apache.juneau.http.*; 022import org.apache.juneau.internal.*; 023 024/** 025 * Builder class for creating instances of {@link SerializerGroup}. 026 */ 027public class SerializerGroupBuilder extends BeanContextBuilder { 028 029 private final List<Object> serializers; 030 031 /** 032 * Create an empty serializer group builder. 033 */ 034 public SerializerGroupBuilder() { 035 this.serializers = new ArrayList<>(); 036 } 037 038 /** 039 * Clone an existing serializer group builder. 040 * 041 * @param copyFrom The serializer group that we're copying settings and serializers from. 042 */ 043 public SerializerGroupBuilder(SerializerGroup copyFrom) { 044 super(copyFrom.getPropertyStore()); 045 this.serializers = new ArrayList<>(); 046 addReverse(serializers, copyFrom.getSerializers()); 047 } 048 049 /** 050 * Registers the specified serializers with this group. 051 * 052 * @param s The serializers to append to this group. 053 * @return This object (for method chaining). 054 */ 055 public SerializerGroupBuilder append(Class<?>...s) { 056 addReverse(serializers, s); 057 return this; 058 } 059 060 /** 061 * Registers the specified serializers with this group. 062 * 063 * <p> 064 * When passing in pre-instantiated serializers to this group, applying properties and transforms to the group 065 * do not affect them. 066 * 067 * @param s The serializers to append to this group. 068 * @return This object (for method chaining). 069 */ 070 public SerializerGroupBuilder append(Serializer...s) { 071 addReverse(serializers, s); 072 return this; 073 } 074 075 /** 076 * Registers the specified serializers with this group. 077 * 078 * <p> 079 * Objects can either be instances of serializers or serializer classes. 080 * 081 * @param s The serializers to append to this group. 082 * @return This object (for method chaining). 083 */ 084 public SerializerGroupBuilder append(List<Object> s) { 085 addReverse(serializers, s); 086 return this; 087 } 088 089 /** 090 * Registers the specified serializers with this group. 091 * 092 * <p> 093 * Objects can either be instances of serializers or serializer classes. 094 * 095 * @param s The serializers to append to this group. 096 * @return This object (for method chaining). 097 */ 098 public SerializerGroupBuilder append(Object...s) { 099 addReverse(serializers, s); 100 return this; 101 } 102 103 /** 104 * Creates a new {@link SerializerGroup} object using a snapshot of the settings defined in this builder. 105 * 106 * <p> 107 * This method can be called multiple times to produce multiple serializer groups. 108 * 109 * @return A new {@link SerializerGroup} object. 110 */ 111 @Override /* ContextBuilder */ 112 @SuppressWarnings("unchecked") 113 public SerializerGroup build() { 114 List<Serializer> l = new ArrayList<>(); 115 for (Object s : serializers) { 116 Class<? extends Serializer> c = null; 117 PropertyStore ps = getPropertyStore(); 118 if (s instanceof Class) { 119 c = (Class<? extends Serializer>)s; 120 l.add(ContextCache.INSTANCE.create(c, ps)); 121 } else { 122 l.add((Serializer)s); 123 } 124 } 125 return new SerializerGroup(getPropertyStore(), ArrayUtils.toReverseArray(Serializer.class, l)); 126 } 127 128 129 //-------------------------------------------------------------------------------- 130 // Properties 131 //-------------------------------------------------------------------------------- 132 133 /** 134 * Configuration property: Abridged output. 135 * 136 * <p> 137 * When enabled, it is assumed that the parser knows the exact Java POJO type being parsed, and therefore top-level 138 * type information that might normally be included to determine the data type will not be serialized. 139 * 140 * <h5 class='section'>See Also:</h5> 141 * <ul> 142 * <li class='jf'>{@link Serializer#SERIALIZER_abridged} 143 * </ul> 144 * 145 * @param value 146 * The new value for this property. 147 * <br>The default is <jk>false</jk>. 148 * @return This object (for method chaining). 149 */ 150 public SerializerGroupBuilder abridged(boolean value) { 151 return set(SERIALIZER_abridged, value); 152 } 153 154 /** 155 * Configuration property: Abridged output. 156 * 157 * <p> 158 * Shortcut for calling <code>abridged(<jk>true</jk>)</code>. 159 * 160 * <h5 class='section'>See Also:</h5> 161 * <ul> 162 * <li class='jf'>{@link Serializer#SERIALIZER_abridged} 163 * </ul> 164 * 165 * @return This object (for method chaining). 166 */ 167 public SerializerGroupBuilder abridged() { 168 return set(SERIALIZER_abridged, true); 169 } 170 171 /** 172 * Configuration property: Add <js>"_type"</js> properties when needed. 173 * 174 * <p> 175 * If <jk>true</jk>, then <js>"_type"</js> properties will be added to beans if their type cannot be inferred 176 * through reflection. 177 * 178 * <h5 class='section'>See Also:</h5> 179 * <ul> 180 * <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypeProperties} 181 * </ul> 182 * 183 * @param value 184 * The new value for this property. 185 * <br>The default is <jk>true</jk>. 186 * @return This object (for method chaining). 187 */ 188 public SerializerGroupBuilder addBeanTypeProperties(boolean value) { 189 return set(SERIALIZER_addBeanTypeProperties, value); 190 } 191 192 /** 193 * Configuration property: Automatically detect POJO recursions. 194 * 195 * <p> 196 * Specifies that recursions should be checked for during serialization. 197 * 198 * <h5 class='section'>Notes:</h5> 199 * <ul class='spaced-list'> 200 * <li> 201 * Checking for recursion can cause a small performance penalty. 202 * </ul> 203 * 204 * <h5 class='section'>See Also:</h5> 205 * <ul> 206 * <li class='jf'>{@link Serializer#SERIALIZER_detectRecursions} 207 * </ul> 208 * 209 * @param value 210 * The new value for this property. 211 * <br>The default is <jk>false</jk>. 212 * @return This object (for method chaining). 213 */ 214 public SerializerGroupBuilder detectRecursions(boolean value) { 215 return set(SERIALIZER_detectRecursions, value); 216 } 217 218 /** 219 * Configuration property: Automatically detect POJO recursions. 220 * 221 * <p> 222 * Shortcut for calling <code>detectRecursions(<jk>true</jk>)</code>. 223 * 224 * <h5 class='section'>See Also:</h5> 225 * <ul> 226 * <li class='jf'>{@link Serializer#SERIALIZER_detectRecursions} 227 * </ul> 228 * 229 * @return This object (for method chaining). 230 */ 231 public SerializerGroupBuilder detectRecursions() { 232 return set(SERIALIZER_detectRecursions, true); 233 } 234 235 /** 236 * Configuration property: Ignore recursion errors. 237 * 238 * <p> 239 * If <jk>true</jk>, when we encounter the same object when serializing a tree, we set the value to <jk>null</jk>. 240 * Otherwise, an exception is thrown. 241 * 242 * <h5 class='section'>Notes:</h5> 243 * <ul class='spaced-list'> 244 * <li> 245 * Checking for recursion can cause a small performance penalty. 246 * </ul> 247 * 248 * <h5 class='section'>See Also:</h5> 249 * <ul> 250 * <li class='jf'>{@link Serializer#SERIALIZER_ignoreRecursions} 251 * </ul> 252 * 253 * @param value 254 * The new value for this property. 255 * <br>The default is <jk>false</jk>. 256 * @return This object (for method chaining). 257 */ 258 public SerializerGroupBuilder ignoreRecursions(boolean value) { 259 return set(SERIALIZER_ignoreRecursions, value); 260 } 261 262 /** 263 * Configuration property: Ignore recursion errors. 264 * 265 * <p> 266 * Shortcut for calling <code>ignoreRecursions(<jk>true</jk>)</code>. 267 * 268 * <h5 class='section'>See Also:</h5> 269 * <ul> 270 * <li class='jf'>{@link Serializer#SERIALIZER_ignoreRecursions} 271 * </ul> 272 * 273 * @return This object (for method chaining). 274 */ 275 public SerializerGroupBuilder ignoreRecursions() { 276 return set(SERIALIZER_ignoreRecursions, true); 277 } 278 279 /** 280 * Configuration property: Initial depth. 281 * 282 * <p> 283 * The initial indentation level at the root. 284 * 285 * <h5 class='section'>See Also:</h5> 286 * <ul> 287 * <li class='jf'>{@link Serializer#SERIALIZER_initialDepth} 288 * </ul> 289 * 290 * @param value 291 * The new value for this property. 292 * <br>The default is <code>0</code>. 293 * @return This object (for method chaining). 294 */ 295 public SerializerGroupBuilder initialDepth(int value) { 296 return set(SERIALIZER_initialDepth, value); 297 } 298 299 /** 300 * Configuration property: Serializer listener. 301 * 302 * <p> 303 * Class used to listen for errors and warnings that occur during serialization. 304 * 305 * <h5 class='section'>See Also:</h5> 306 * <ul> 307 * <li class='jf'>{@link Serializer#SERIALIZER_listener} 308 * </ul> 309 * 310 * @param value 311 * The new value for this property. 312 * @return This object (for method chaining). 313 */ 314 public SerializerGroupBuilder listener(Class<? extends SerializerListener> value) { 315 return set(SERIALIZER_listener, value); 316 } 317 318 /** 319 * Configuration property: Max serialization depth. 320 * 321 * <p> 322 * Abort serialization if specified depth is reached in the POJO tree. 323 * <br>If this depth is exceeded, an exception is thrown. 324 * <br>This prevents stack overflows from occurring when trying to serialize models with recursive references. 325 * 326 * <h5 class='section'>See Also:</h5> 327 * <ul> 328 * <li class='jf'>{@link Serializer#SERIALIZER_maxDepth} 329 * </ul> 330 * 331 * @param value 332 * The new value for this property. 333 * <br>The default is <code>100</code>. 334 * @return This object (for method chaining). 335 */ 336 public SerializerGroupBuilder maxDepth(int value) { 337 return set(SERIALIZER_maxDepth, value); 338 } 339 340 /** 341 * Configuration property: Maximum indentation. 342 * 343 * <p> 344 * Specifies the maximum indentation level in the serialized document. 345 * 346 * <h5 class='section'>See Also:</h5> 347 * <ul> 348 * <li class='jf'>{@link Serializer#SERIALIZER_maxIndent} 349 * </ul> 350 * 351 * @param value 352 * The new value for this property. 353 * <br>The default is <code>100</code>. 354 * @return This object (for method chaining). 355 */ 356 public SerializerGroupBuilder maxIndent(int value) { 357 return set(SERIALIZER_maxIndent, value); 358 } 359 360 /** 361 * Configuration property: Quote character. 362 * 363 * <p> 364 * This is the character used for quoting attributes and values. 365 * 366 * <h5 class='section'>See Also:</h5> 367 * <ul> 368 * <li class='jf'>{@link Serializer#SERIALIZER_quoteChar} 369 * </ul> 370 * 371 * @param value 372 * The new value for this property. 373 * <br>The default is <js>'"'</js>. 374 * @return This object (for method chaining). 375 */ 376 public SerializerGroupBuilder quoteChar(char value) { 377 return set(SERIALIZER_quoteChar, value); 378 } 379 380 /** 381 * Configuration property: Sort arrays and collections alphabetically. 382 * 383 * <h5 class='section'>See Also:</h5> 384 * <ul> 385 * <li class='jf'>{@link Serializer#SERIALIZER_sortCollections} 386 * </ul> 387 * 388 * @param value 389 * The new value for this property. 390 * <br>The default is <jk>false</jk>. 391 * @return This object (for method chaining). 392 */ 393 public SerializerGroupBuilder sortCollections(boolean value) { 394 return set(SERIALIZER_sortCollections, value); 395 } 396 397 /** 398 * Configuration property: Sort arrays and collections alphabetically. 399 * 400 * <p> 401 * Shortcut for calling <code>sortCollections(<jk>true</jk>)</code>. 402 * 403 * <h5 class='section'>See Also:</h5> 404 * <ul> 405 * <li class='jf'>{@link Serializer#SERIALIZER_sortCollections} 406 * </ul> 407 * 408 * @return This object (for method chaining). 409 */ 410 public SerializerGroupBuilder sortCollections() { 411 return set(SERIALIZER_sortCollections, true); 412 } 413 414 /** 415 * Configuration property: Sort maps alphabetically. 416 * 417 * <h5 class='section'>See Also:</h5> 418 * <ul> 419 * <li class='jf'>{@link Serializer#SERIALIZER_sortMaps} 420 * </ul> 421 * 422 * @param value 423 * The new value for this property. 424 * <br>The default is <jk>false</jk>. 425 * @return This object (for method chaining). 426 */ 427 public SerializerGroupBuilder sortMaps(boolean value) { 428 return set(SERIALIZER_sortMaps, value); 429 } 430 431 /** 432 * Configuration property: Sort maps alphabetically. 433 * 434 * <p> 435 * Shortcut for calling <code>sortMaps(<jk>true</jk>)</code>. 436 * 437 * <h5 class='section'>See Also:</h5> 438 * <ul> 439 * <li class='jf'>{@link Serializer#SERIALIZER_sortMaps} 440 * </ul> 441 * 442 * @return This object (for method chaining). 443 */ 444 public SerializerGroupBuilder sortMaps() { 445 return set(SERIALIZER_sortMaps, true); 446 } 447 448 /** 449 * Configuration property: Sort maps alphabetically. 450 * 451 * <p> 452 * Shortcut for calling <code>quoteChar(<js>'\''</js>)</code>. 453 * 454 * <h5 class='section'>See Also:</h5> 455 * <ul> 456 * <li class='jf'>{@link Serializer#SERIALIZER_quoteChar} 457 * </ul> 458 * 459 * @return This object (for method chaining). 460 */ 461 public SerializerGroupBuilder sq() { 462 return quoteChar('\''); 463 } 464 465 /** 466 * Configuration property: Trim empty lists and arrays. 467 * 468 * <p> 469 * If <jk>true</jk>, empty list values will not be serialized to the output. 470 * 471 * <h5 class='section'>See Also:</h5> 472 * <ul> 473 * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyCollections} 474 * </ul> 475 * 476 * @param value 477 * The new value for this property. 478 * <br>The default is <jk>false</jk>. 479 * @return This object (for method chaining). 480 */ 481 public SerializerGroupBuilder trimEmptyCollections(boolean value) { 482 return set(SERIALIZER_trimEmptyCollections, value); 483 } 484 485 /** 486 * Configuration property: Trim empty lists and arrays. 487 * 488 * <p> 489 * Shortcut for calling <code>trimEmptyCollections(<jk>true</jk>)</code>. 490 * 491 * <h5 class='section'>See Also:</h5> 492 * <ul> 493 * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyCollections} 494 * </ul> 495 * 496 * @return This object (for method chaining). 497 */ 498 public SerializerGroupBuilder trimEmptyCollections() { 499 return set(SERIALIZER_trimEmptyCollections, true); 500 } 501 502 /** 503 * Configuration property: Trim empty maps. 504 * 505 * <p> 506 * If <jk>true</jk>, empty map values will not be serialized to the output. 507 * 508 * <h5 class='section'>See Also:</h5> 509 * <ul> 510 * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps} 511 * </ul> 512 * 513 * @param value 514 * The new value for this property. 515 * <br>The default is <jk>false</jk>. 516 * @return This object (for method chaining). 517 */ 518 public SerializerGroupBuilder trimEmptyMaps(boolean value) { 519 return set(SERIALIZER_trimEmptyMaps, value); 520 } 521 522 /** 523 * Configuration property: Trim empty maps. 524 * 525 * <p> 526 * Shortcut for calling <code>trimEmptyMaps(<jk>true</jk>)</code>. 527 * 528 * <h5 class='section'>See Also:</h5> 529 * <ul> 530 * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps} 531 * </ul> 532 * 533 * @return This object (for method chaining). 534 */ 535 public SerializerGroupBuilder trimEmptyMaps() { 536 return set(SERIALIZER_trimEmptyMaps, true); 537 } 538 539 /** 540 * Configuration property: Trim null bean property values. 541 * 542 * <p> 543 * If <jk>true</jk>, null bean values will not be serialized to the output. 544 * 545 * <h5 class='section'>See Also:</h5> 546 * <ul> 547 * <li class='jf'>{@link Serializer#SERIALIZER_trimNullProperties} 548 * </ul> 549 * 550 * @param value 551 * The new value for this property. 552 * <br>The default is <jk>true</jk>. 553 * @return This object (for method chaining). 554 */ 555 public SerializerGroupBuilder trimNullProperties(boolean value) { 556 return set(SERIALIZER_trimNullProperties, value); 557 } 558 559 /** 560 * Configuration property: Trim strings. 561 * 562 * <p> 563 * If <jk>true</jk>, string values will be trimmed of whitespace using {@link String#trim()} before being serialized. 564 * 565 * <h5 class='section'>See Also:</h5> 566 * <ul> 567 * <li class='jf'>{@link Serializer#SERIALIZER_trimStrings} 568 * </ul> 569 * 570 * @param value 571 * The new value for this property. 572 * <br>The default is <jk>false</jk>. 573 * @return This object (for method chaining). 574 */ 575 public SerializerGroupBuilder trimStrings(boolean value) { 576 return set(SERIALIZER_trimStrings, value); 577 } 578 579 /** 580 * Configuration property: Trim strings. 581 * 582 * <p> 583 * Shortcut for calling <code>trimStrings(<jk>true</jk>)</code>. 584 * 585 * <h5 class='section'>See Also:</h5> 586 * <ul> 587 * <li class='jf'>{@link Serializer#SERIALIZER_trimStrings} 588 * </ul> 589 * 590 * @return This object (for method chaining). 591 */ 592 public SerializerGroupBuilder trimStrings() { 593 return set(SERIALIZER_trimStrings, true); 594 } 595 596 /** 597 * Configuration property: URI context bean. 598 * 599 * <p> 600 * Bean used for resolution of URIs to absolute or root-relative form. 601 * 602 * <h5 class='section'>See Also:</h5> 603 * <ul> 604 * <li class='jf'>{@link Serializer#SERIALIZER_uriContext} 605 * </ul> 606 * 607 * @param value The new value for this property. 608 * @return This object (for method chaining). 609 */ 610 public SerializerGroupBuilder uriContext(UriContext value) { 611 return set(SERIALIZER_uriContext, value); 612 } 613 614 /** 615 * Configuration property: URI relativity. 616 * 617 * <p> 618 * Defines what relative URIs are relative to when serializing URI/URL objects. 619 * 620 * <h5 class='section'>See Also:</h5> 621 * <ul> 622 * <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity} 623 * </ul> 624 * 625 * @param value 626 * The new value for this property. 627 * <br>The default is {@link UriRelativity#RESOURCE} 628 * @return This object (for method chaining). 629 */ 630 public SerializerGroupBuilder uriRelativity(UriRelativity value) { 631 return set(SERIALIZER_uriRelativity, value); 632 } 633 634 /** 635 * Configuration property: URI resolution. 636 * 637 * <p> 638 * Defines the resolution level for URIs when serializing URI/URL objects. 639 * 640 * <h5 class='section'>See Also:</h5> 641 * <ul> 642 * <li class='jf'>{@link Serializer#SERIALIZER_uriResolution} 643 * </ul> 644 * 645 * @param value 646 * The new value for this property. 647 * <br>The default is {@link UriResolution#NONE} 648 * @return This object (for method chaining). 649 */ 650 public SerializerGroupBuilder uriResolution(UriResolution value) { 651 return set(SERIALIZER_uriResolution, value); 652 } 653 654 /** 655 * Configuration property: Use whitespace. 656 * 657 * <p> 658 * If <jk>true</jk>, newlines and indentation and spaces are added to the output to improve readability. 659 * 660 * <h5 class='section'>See Also:</h5> 661 * <ul> 662 * <li class='jf'>{@link Serializer#SERIALIZER_useWhitespace} 663 * </ul> 664 * 665 * @param value 666 * The new value for this property. 667 * <br>The default is <jk>false</jk>. 668 * @return This object (for method chaining). 669 */ 670 public SerializerGroupBuilder useWhitespace(boolean value) { 671 return set(SERIALIZER_useWhitespace, value); 672 } 673 674 /** 675 * Configuration property: Use whitespace. 676 * 677 * <p> 678 * Shortcut for calling <code>useWhitespace(<jk>true</jk>)</code>. 679 * 680 * <h5 class='section'>See Also:</h5> 681 * <ul> 682 * <li class='jf'>{@link Serializer#SERIALIZER_useWhitespace} 683 * </ul> 684 * @return This object (for method chaining). 685 */ 686 public SerializerGroupBuilder useWhitespace() { 687 return set(SERIALIZER_useWhitespace, true); 688 } 689 690 /** 691 * Configuration property: Use whitespace. 692 * 693 * <p> 694 * Shortcut for calling <code>useWhitespace(<jk>true</jk>)</code>. 695 * 696 * <h5 class='section'>See Also:</h5> 697 * <ul> 698 * <li class='jf'>{@link Serializer#SERIALIZER_useWhitespace} 699 * </ul> 700 * 701 * @return This object (for method chaining). 702 */ 703 public SerializerGroupBuilder ws() { 704 return useWhitespace(); 705 } 706 707 708 @Override /* BeanContextBuilder */ 709 public SerializerGroupBuilder beansRequireDefaultConstructor(boolean value) { 710 super.beansRequireDefaultConstructor(value); 711 return this; 712 } 713 714 @Override /* BeanContextBuilder */ 715 public SerializerGroupBuilder beansRequireDefaultConstructor() { 716 super.beansRequireDefaultConstructor(); 717 return this; 718 } 719 720 @Override /* BeanContextBuilder */ 721 public SerializerGroupBuilder beansRequireSerializable(boolean value) { 722 super.beansRequireSerializable(value); 723 return this; 724 } 725 726 @Override /* BeanContextBuilder */ 727 public SerializerGroupBuilder beansRequireSerializable() { 728 super.beansRequireSerializable(); 729 return this; 730 } 731 732 @Override /* BeanContextBuilder */ 733 public SerializerGroupBuilder beansRequireSettersForGetters(boolean value) { 734 super.beansRequireSettersForGetters(value); 735 return this; 736 } 737 738 @Override /* BeanContextBuilder */ 739 public SerializerGroupBuilder beansRequireSettersForGetters() { 740 super.beansRequireSettersForGetters(); 741 return this; 742 } 743 744 @Override /* BeanContextBuilder */ 745 public SerializerGroupBuilder beansRequireSomeProperties(boolean value) { 746 super.beansRequireSomeProperties(value); 747 return this; 748 } 749 750 @Override /* BeanContextBuilder */ 751 public SerializerGroupBuilder beanMapPutReturnsOldValue(boolean value) { 752 super.beanMapPutReturnsOldValue(value); 753 return this; 754 } 755 756 @Override /* BeanContextBuilder */ 757 public SerializerGroupBuilder beanMapPutReturnsOldValue() { 758 super.beanMapPutReturnsOldValue(); 759 return this; 760 } 761 762 @Override /* BeanContextBuilder */ 763 public SerializerGroupBuilder beanConstructorVisibility(Visibility value) { 764 super.beanConstructorVisibility(value); 765 return this; 766 } 767 768 @Override /* BeanContextBuilder */ 769 public SerializerGroupBuilder beanClassVisibility(Visibility value) { 770 super.beanClassVisibility(value); 771 return this; 772 } 773 774 @Override /* BeanContextBuilder */ 775 public SerializerGroupBuilder beanFieldVisibility(Visibility value) { 776 super.beanFieldVisibility(value); 777 return this; 778 } 779 780 @Override /* BeanContextBuilder */ 781 public SerializerGroupBuilder beanMethodVisibility(Visibility value) { 782 super.beanMethodVisibility(value); 783 return this; 784 } 785 786 @Override /* BeanContextBuilder */ 787 public SerializerGroupBuilder useJavaBeanIntrospector(boolean value) { 788 super.useJavaBeanIntrospector(value); 789 return this; 790 } 791 792 @Override /* BeanContextBuilder */ 793 public SerializerGroupBuilder useJavaBeanIntrospector() { 794 super.useJavaBeanIntrospector(); 795 return this; 796 } 797 798 @Override /* BeanContextBuilder */ 799 public SerializerGroupBuilder useInterfaceProxies(boolean value) { 800 super.useInterfaceProxies(value); 801 return this; 802 } 803 804 @Override /* BeanContextBuilder */ 805 public SerializerGroupBuilder ignoreUnknownBeanProperties(boolean value) { 806 super.ignoreUnknownBeanProperties(value); 807 return this; 808 } 809 810 @Override /* BeanContextBuilder */ 811 public SerializerGroupBuilder ignoreUnknownBeanProperties() { 812 super.ignoreUnknownBeanProperties(); 813 return this; 814 } 815 816 @Override /* BeanContextBuilder */ 817 public SerializerGroupBuilder ignoreUnknownNullBeanProperties(boolean value) { 818 super.ignoreUnknownNullBeanProperties(value); 819 return this; 820 } 821 822 @Override /* BeanContextBuilder */ 823 public SerializerGroupBuilder ignorePropertiesWithoutSetters(boolean value) { 824 super.ignorePropertiesWithoutSetters(value); 825 return this; 826 } 827 828 @Override /* BeanContextBuilder */ 829 public SerializerGroupBuilder ignoreInvocationExceptionsOnGetters(boolean value) { 830 super.ignoreInvocationExceptionsOnGetters(value); 831 return this; 832 } 833 834 @Override /* BeanContextBuilder */ 835 public SerializerGroupBuilder ignoreInvocationExceptionsOnGetters() { 836 super.ignoreInvocationExceptionsOnGetters(); 837 return this; 838 } 839 840 @Override /* BeanContextBuilder */ 841 public SerializerGroupBuilder ignoreInvocationExceptionsOnSetters(boolean value) { 842 super.ignoreInvocationExceptionsOnSetters(value); 843 return this; 844 } 845 846 @Override /* BeanContextBuilder */ 847 public SerializerGroupBuilder ignoreInvocationExceptionsOnSetters() { 848 super.ignoreInvocationExceptionsOnSetters(); 849 return this; 850 } 851 852 @Override /* BeanContextBuilder */ 853 public SerializerGroupBuilder sortProperties(boolean value) { 854 super.sortProperties(value); 855 return this; 856 } 857 858 @Override /* BeanContextBuilder */ 859 public SerializerGroupBuilder sortProperties() { 860 super.sortProperties(); 861 return this; 862 } 863 864 @Override /* BeanContextBuilder */ 865 public SerializerGroupBuilder notBeanPackages(Object...values) { 866 super.notBeanPackages(values); 867 return this; 868 } 869 870 @Override /* BeanContextBuilder */ 871 public SerializerGroupBuilder notBeanPackages(String...values) { 872 super.notBeanPackages(values); 873 return this; 874 } 875 876 @Override /* BeanContextBuilder */ 877 public SerializerGroupBuilder notBeanPackages(boolean append, Object...values) { 878 super.notBeanPackages(append, values); 879 return this; 880 } 881 882 @Override /* BeanContextBuilder */ 883 public SerializerGroupBuilder notBeanPackagesRemove(Object...values) { 884 super.notBeanPackagesRemove(values); 885 return this; 886 } 887 888 @Override /* BeanContextBuilder */ 889 public SerializerGroupBuilder notBeanClasses(Object...values) { 890 super.notBeanClasses(values); 891 return this; 892 } 893 894 @Override /* BeanContextBuilder */ 895 public SerializerGroupBuilder notBeanClasses(Class<?>...values) { 896 super.notBeanClasses(values); 897 return this; 898 } 899 900 @Override /* BeanContextBuilder */ 901 public SerializerGroupBuilder notBeanClasses(boolean append, Object...values) { 902 super.notBeanClasses(append, values); 903 return this; 904 } 905 906 @Override /* BeanContextBuilder */ 907 public SerializerGroupBuilder notBeanClassesRemove(Object...values) { 908 super.notBeanClassesRemove(values); 909 return this; 910 } 911 912 @Override /* BeanContextBuilder */ 913 public SerializerGroupBuilder beanFilters(Object...values) { 914 super.beanFilters(values); 915 return this; 916 } 917 918 @Override /* BeanContextBuilder */ 919 public SerializerGroupBuilder beanFilters(Class<?>...values) { 920 super.beanFilters(values); 921 return this; 922 } 923 924 @Override /* BeanContextBuilder */ 925 public SerializerGroupBuilder beanFilters(boolean append, Object...values) { 926 super.beanFilters(append, values); 927 return this; 928 } 929 930 @Override /* BeanContextBuilder */ 931 public SerializerGroupBuilder beanFiltersRemove(Object...values) { 932 super.beanFiltersRemove(values); 933 return this; 934 } 935 936 @Override /* BeanContextBuilder */ 937 public SerializerGroupBuilder pojoSwaps(Object...values) { 938 super.pojoSwaps(values); 939 return this; 940 } 941 942 @Override /* BeanContextBuilder */ 943 public SerializerGroupBuilder pojoSwaps(Class<?>...values) { 944 super.pojoSwaps(values); 945 return this; 946 } 947 948 @Override /* BeanContextBuilder */ 949 public SerializerGroupBuilder pojoSwaps(boolean append, Object...values) { 950 super.pojoSwaps(append, values); 951 return this; 952 } 953 954 @Override /* BeanContextBuilder */ 955 public SerializerGroupBuilder pojoSwapsRemove(Object...values) { 956 super.pojoSwapsRemove(values); 957 return this; 958 } 959 960 @Override /* BeanContextBuilder */ 961 public SerializerGroupBuilder implClasses(Map<String,Class<?>> values) { 962 super.implClasses(values); 963 return this; 964 } 965 966 @Override /* BeanContextBuilder */ 967 public <T> SerializerGroupBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) { 968 super.implClass(interfaceClass, implClass); 969 return this; 970 } 971 972 @Override /* BeanContextBuilder */ 973 public SerializerGroupBuilder beanDictionary(Object...values) { 974 super.beanDictionary(values); 975 return this; 976 } 977 978 @Override /* BeanContextBuilder */ 979 public SerializerGroupBuilder beanDictionary(Class<?>...values) { 980 super.beanDictionary(values); 981 return this; 982 } 983 984 @Override /* BeanContextBuilder */ 985 public SerializerGroupBuilder beanDictionary(boolean append, Object...values) { 986 super.beanDictionary(append, values); 987 return this; 988 } 989 990 @Override /* BeanContextBuilder */ 991 public SerializerGroupBuilder beanDictionaryRemove(Object...values) { 992 super.beanDictionaryRemove(values); 993 return this; 994 } 995 996 @Override /* BeanContextBuilder */ 997 public SerializerGroupBuilder beanTypePropertyName(String value) { 998 super.beanTypePropertyName(value); 999 return this; 1000 } 1001 1002 @Override /* BeanContextBuilder */ 1003 public SerializerGroupBuilder locale(Locale value) { 1004 super.locale(value); 1005 return this; 1006 } 1007 1008 @Override /* BeanContextBuilder */ 1009 public SerializerGroupBuilder timeZone(TimeZone value) { 1010 super.timeZone(value); 1011 return this; 1012 } 1013 1014 @Override /* BeanContextBuilder */ 1015 public SerializerGroupBuilder mediaType(MediaType value) { 1016 super.mediaType(value); 1017 return this; 1018 } 1019 1020 @Override /* BeanContextBuilder */ 1021 public SerializerGroupBuilder debug() { 1022 super.debug(); 1023 return this; 1024 } 1025 1026 @Override /* ContextBuilder */ 1027 public SerializerGroupBuilder set(String name, Object value) { 1028 super.set(name, value); 1029 return this; 1030 } 1031 1032 @Override /* ContextBuilder */ 1033 public SerializerGroupBuilder set(boolean append, String name, Object value) { 1034 super.set(append, name, value); 1035 return this; 1036 } 1037 1038 @Override /* ContextBuilder */ 1039 public SerializerGroupBuilder set(Map<String,Object> properties) { 1040 super.set(properties); 1041 return this; 1042 } 1043 1044 @Override /* ContextBuilder */ 1045 public SerializerGroupBuilder add(Map<String,Object> properties) { 1046 super.add(properties); 1047 return this; 1048 } 1049 1050 @Override /* ContextBuilder */ 1051 public SerializerGroupBuilder addTo(String name, Object value) { 1052 super.addTo(name, value); 1053 return this; 1054 } 1055 1056 @Override /* ContextBuilder */ 1057 public SerializerGroupBuilder addTo(String name, String key, Object value) { 1058 super.addTo(name, key, value); 1059 return this; 1060 } 1061 1062 @Override /* ContextBuilder */ 1063 public SerializerGroupBuilder removeFrom(String name, Object value) { 1064 super.removeFrom(name, value); 1065 return this; 1066 } 1067 1068 @Override /* ContextBuilder */ 1069 public SerializerGroupBuilder apply(PropertyStore copyFrom) { 1070 super.apply(copyFrom); 1071 return this; 1072 } 1073}