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