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.xml; 014 015import static org.apache.juneau.xml.XmlSerializer.*; 016 017import java.util.*; 018 019import org.apache.juneau.*; 020import org.apache.juneau.http.*; 021import org.apache.juneau.serializer.*; 022import org.apache.juneau.xmlschema.*; 023 024/** 025 * Builder class for building instances of XML serializers. 026 */ 027public class XmlSerializerBuilder extends WriterSerializerBuilder { 028 029 /** 030 * Constructor, default settings. 031 */ 032 public XmlSerializerBuilder() { 033 super(); 034 } 035 036 /** 037 * Constructor. 038 * 039 * @param ps The initial configuration settings for this builder. 040 */ 041 public XmlSerializerBuilder(PropertyStore ps) { 042 super(ps); 043 } 044 045 @Override /* ContextBuilder */ 046 public XmlSerializer build() { 047 return build(XmlSerializer.class); 048 } 049 050 051 //----------------------------------------------------------------------------------------------------------------- 052 // Properties 053 //----------------------------------------------------------------------------------------------------------------- 054 055 /** 056 * Configuration property: Add namespace URLs to the root element. 057 * 058 * <p> 059 * Use this setting to add {@code xmlns:x} attributes to the root element for the default and all mapped namespaces. 060 * 061 * <h5 class='section'>See Also:</h5> 062 * <ul> 063 * <li class='jf'>{@link XmlSerializer#XML_addNamespaceUrisToRoot} 064 * </ul> 065 * 066 * @param value 067 * The new value for this property. 068 * <br>The default is <jk>false</jk>. 069 * @return This object (for method chaining). 070 */ 071 public XmlSerializerBuilder addNamespaceUrisToRoot(boolean value) { 072 return set(XML_addNamespaceUrisToRoot, value); 073 } 074 075 /** 076 * Configuration property: Add namespace URLs to the root element. 077 * 078 * <p> 079 * Shortcut for calling <code>addNamespaceUrisToRoot(<jk>true</jk>)</code>. 080 * 081 * <h5 class='section'>See Also:</h5> 082 * <ul> 083 * <li class='jf'>{@link XmlSerializer#XML_addNamespaceUrisToRoot} 084 * </ul> 085 * 086 * @return This object (for method chaining). 087 */ 088 public XmlSerializerBuilder addNamespaceUrisToRoot() { 089 return set(XML_addNamespaceUrisToRoot, true); 090 } 091 092 /** 093 * Configuration property: Auto-detect namespace usage. 094 * 095 * <p> 096 * Detect namespace usage before serialization. 097 * 098 * <h5 class='section'>See Also:</h5> 099 * <ul> 100 * <li class='jf'>{@link XmlSerializer#XML_autoDetectNamespaces} 101 * </ul> 102 * 103 * @param value 104 * The new value for this property. 105 * <br>The default is <jk>true</jk>. 106 * @return This object (for method chaining). 107 */ 108 public XmlSerializerBuilder autoDetectNamespaces(boolean value) { 109 return set(XML_autoDetectNamespaces, value); 110 } 111 112 /** 113 * Configuration property: Default namespace. 114 * 115 * <p> 116 * Specifies the default namespace URI for this document. 117 * 118 * <h5 class='section'>See Also:</h5> 119 * <ul> 120 * <li class='jf'>{@link XmlSerializer#XML_defaultNamespace} 121 * </ul> 122 * 123 * @param value 124 * The new value for this property. 125 * <br>The default is <js>"juneau: http://www.apache.org/2013/Juneau"</js>. 126 * @return This object (for method chaining). 127 */ 128 public XmlSerializerBuilder defaultNamespace(String value) { 129 return set(XML_defaultNamespace, value); 130 } 131 132 /** 133 * Configuration property: Enable support for XML namespaces. 134 * 135 * <p> 136 * If not enabled, XML output will not contain any namespaces regardless of any other settings. 137 * 138 * <h5 class='section'>See Also:</h5> 139 * <ul> 140 * <li class='jf'>{@link XmlSerializer#XML_enableNamespaces} 141 * </ul> 142 * 143 * @param value 144 * The new value for this property. 145 * <br>The default is <jk>false</jk>. 146 * @return This object (for method chaining). 147 */ 148 public XmlSerializerBuilder enableNamespaces(boolean value) { 149 return set(XML_enableNamespaces, value); 150 } 151 152 /** 153 * Configuration property: Enable support for XML namespaces. 154 * 155 * <p> 156 * Shortcut for calling <code>enableNamespaces(<jk>true</jk>)</code>. 157 * 158 * <h5 class='section'>See Also:</h5> 159 * <ul> 160 * <li class='jf'>{@link XmlSerializer#XML_enableNamespaces} 161 * </ul> 162 * 163 * @return This object (for method chaining). 164 */ 165 public XmlSerializerBuilder enableNamespaces() { 166 return set(XML_enableNamespaces, true); 167 } 168 169 /** 170 * Configuration property: Enable support for XML namespaces. 171 * 172 * <p> 173 * Shortcut for calling <code>enableNamespaces(<jk>true</jk>)</code>. 174 * 175 * <h5 class='section'>See Also:</h5> 176 * <ul> 177 * <li class='jf'>{@link XmlSerializer#XML_enableNamespaces} 178 * </ul> 179 * 180 * @return This object (for method chaining). 181 */ 182 public XmlSerializerBuilder ns() { 183 return set(XML_enableNamespaces, true); 184 } 185 186 /** 187 * Configuration property: Default namespaces. 188 * 189 * <p> 190 * The default list of namespaces associated with this serializer. 191 * 192 * <h5 class='section'>See Also:</h5> 193 * <ul> 194 * <li class='jf'>{@link XmlSerializer#XML_namespaces} 195 * </ul> 196 * 197 * @param values The new value for this property. 198 * @return This object (for method chaining). 199 */ 200 public XmlSerializerBuilder namespaces(Namespace...values) { 201 return set(XML_namespaces, values); 202 } 203 204 /** 205 * Configuration property: XMLSchema namespace. 206 * 207 * <p> 208 * Specifies the namespace for the <code>XMLSchema</code> namespace, used by the schema generated by the 209 * {@link XmlSchemaSerializer} class. 210 * 211 * <h5 class='section'>See Also:</h5> 212 * <ul> 213 * <li class='jf'>{@link XmlSerializer#XML_xsNamespace} 214 * </ul> 215 * 216 * @param value 217 * The new value for this property. 218 * <br>The default is <js>"xs: http://www.w3.org/2001/XMLSchema"</js>. 219 * @return This object (for method chaining). 220 */ 221 public XmlSerializerBuilder xsNamespace(Namespace value) { 222 return set(XML_xsNamespace, value); 223 } 224 225 @Override /* WriterSerializerBuilder */ 226 public XmlSerializerBuilder maxIndent(int value) { 227 super.maxIndent(value); 228 return this; 229 } 230 231 @Override /* WriterSerializerBuilder */ 232 public XmlSerializerBuilder quoteChar(char value) { 233 super.quoteChar(value); 234 return this; 235 } 236 237 @Override /* WriterSerializerBuilder */ 238 public XmlSerializerBuilder sq() { 239 super.sq(); 240 return this; 241 } 242 243 @Override /* WriterSerializerBuilder */ 244 public XmlSerializerBuilder useWhitespace(boolean value) { 245 super.useWhitespace(value); 246 return this; 247 } 248 249 @Override /* WriterSerializerBuilder */ 250 public XmlSerializerBuilder useWhitespace() { 251 super.useWhitespace(); 252 return this; 253 } 254 255 @Override /* WriterSerializerBuilder */ 256 public XmlSerializerBuilder ws() { 257 super.ws(); 258 return this; 259 } 260 261 @Override /* SerializerBuilder */ 262 public XmlSerializerBuilder addBeanTypes(boolean value) { 263 super.addBeanTypes(value); 264 return this; 265 } 266 267 @Override /* SerializerBuilder */ 268 public XmlSerializerBuilder addBeanTypes() { 269 super.addBeanTypes(); 270 return this; 271 } 272 273 @Override /* SerializerBuilder */ 274 public XmlSerializerBuilder addRootType(boolean value) { 275 super.addRootType(value); 276 return this; 277 } 278 279 @Override /* SerializerBuilder */ 280 public XmlSerializerBuilder addRootType() { 281 super.addRootType(); 282 return this; 283 } 284 285 @Override /* SerializerBuilder */ 286 public XmlSerializerBuilder detectRecursions(boolean value) { 287 super.detectRecursions(value); 288 return this; 289 } 290 291 @Override /* SerializerBuilder */ 292 public XmlSerializerBuilder detectRecursions() { 293 super.detectRecursions(); 294 return this; 295 } 296 297 @Override /* SerializerBuilder */ 298 public XmlSerializerBuilder ignoreRecursions(boolean value) { 299 super.ignoreRecursions(value); 300 return this; 301 } 302 303 @Override /* SerializerBuilder */ 304 public XmlSerializerBuilder ignoreRecursions() { 305 super.ignoreRecursions(); 306 return this; 307 } 308 @Override /* SerializerBuilder */ 309 public XmlSerializerBuilder initialDepth(int value) { 310 super.initialDepth(value); 311 return this; 312 } 313 314 @Override /* SerializerBuilder */ 315 public XmlSerializerBuilder listener(Class<? extends SerializerListener> value) { 316 super.listener(value); 317 return this; 318 } 319 320 @Override /* SerializerBuilder */ 321 public XmlSerializerBuilder maxDepth(int value) { 322 super.maxDepth(value); 323 return this; 324 } 325 326 @Override /* SerializerBuilder */ 327 public XmlSerializerBuilder sortCollections(boolean value) { 328 super.sortCollections(value); 329 return this; 330 } 331 332 @Override /* SerializerBuilder */ 333 public XmlSerializerBuilder sortCollections() { 334 super.sortCollections(); 335 return this; 336 } 337 338 @Override /* SerializerBuilder */ 339 public XmlSerializerBuilder sortMaps(boolean value) { 340 super.sortMaps(value); 341 return this; 342 } 343 344 @Override /* SerializerBuilder */ 345 public XmlSerializerBuilder sortMaps() { 346 super.sortMaps(); 347 return this; 348 } 349 350 @Override /* SerializerBuilder */ 351 public XmlSerializerBuilder trimEmptyCollections(boolean value) { 352 super.trimEmptyCollections(value); 353 return this; 354 } 355 356 @Override /* SerializerBuilder */ 357 public XmlSerializerBuilder trimEmptyCollections() { 358 super.trimEmptyCollections(); 359 return this; 360 } 361 362 @Override /* SerializerBuilder */ 363 public XmlSerializerBuilder trimEmptyMaps(boolean value) { 364 super.trimEmptyMaps(value); 365 return this; 366 } 367 368 @Override /* SerializerBuilder */ 369 public XmlSerializerBuilder trimEmptyMaps() { 370 super.trimEmptyMaps(); 371 return this; 372 } 373 374 @Override /* SerializerBuilder */ 375 public XmlSerializerBuilder trimNullProperties(boolean value) { 376 super.trimNullProperties(value); 377 return this; 378 } 379 380 @Override /* SerializerBuilder */ 381 public XmlSerializerBuilder trimStrings(boolean value) { 382 super.trimStrings(value); 383 return this; 384 } 385 386 @Override /* SerializerBuilder */ 387 public XmlSerializerBuilder trimStrings() { 388 super.trimStrings(); 389 return this; 390 } 391 392 @Override /* SerializerBuilder */ 393 public XmlSerializerBuilder uriContext(UriContext value) { 394 super.uriContext(value); 395 return this; 396 } 397 398 @Override /* SerializerBuilder */ 399 public XmlSerializerBuilder uriRelativity(UriRelativity value) { 400 super.uriRelativity(value); 401 return this; 402 } 403 404 @Override /* SerializerBuilder */ 405 public XmlSerializerBuilder uriResolution(UriResolution value) { 406 super.uriResolution(value); 407 return this; 408 } 409 410 @Override /* BeanContextBuilder */ 411 public XmlSerializerBuilder beanClassVisibility(Visibility value) { 412 super.beanClassVisibility(value); 413 return this; 414 } 415 416 @Override /* BeanContextBuilder */ 417 public XmlSerializerBuilder beanConstructorVisibility(Visibility value) { 418 super.beanConstructorVisibility(value); 419 return this; 420 } 421 422 @Override /* BeanContextBuilder */ 423 public XmlSerializerBuilder beanDictionary(boolean append, Object...values) { 424 super.beanDictionary(append, values); 425 return this; 426 } 427 428 @Override /* BeanContextBuilder */ 429 public XmlSerializerBuilder beanDictionary(Class<?>...values) { 430 super.beanDictionary(values); 431 return this; 432 } 433 434 @Override /* BeanContextBuilder */ 435 public XmlSerializerBuilder beanDictionary(Object...values) { 436 super.beanDictionary(values); 437 return this; 438 } 439 440 @Override /* BeanContextBuilder */ 441 public XmlSerializerBuilder beanDictionaryRemove(Object...values) { 442 super.beanDictionaryRemove(values); 443 return this; 444 } 445 446 @Override /* BeanContextBuilder */ 447 public XmlSerializerBuilder beanFieldVisibility(Visibility value) { 448 super.beanFieldVisibility(value); 449 return this; 450 } 451 452 @Override /* BeanContextBuilder */ 453 public XmlSerializerBuilder beanFilters(boolean append, Object...values) { 454 super.beanFilters(append, values); 455 return this; 456 } 457 458 @Override /* BeanContextBuilder */ 459 public XmlSerializerBuilder beanFilters(Class<?>...values) { 460 super.beanFilters(values); 461 return this; 462 } 463 464 @Override /* BeanContextBuilder */ 465 public XmlSerializerBuilder beanFilters(Object...values) { 466 super.beanFilters(values); 467 return this; 468 } 469 470 @Override /* BeanContextBuilder */ 471 public XmlSerializerBuilder beanFiltersRemove(Object...values) { 472 super.beanFiltersRemove(values); 473 return this; 474 } 475 476 @Override /* BeanContextBuilder */ 477 public XmlSerializerBuilder beanMapPutReturnsOldValue(boolean value) { 478 super.beanMapPutReturnsOldValue(value); 479 return this; 480 } 481 482 @Override /* BeanContextBuilder */ 483 public XmlSerializerBuilder beanMapPutReturnsOldValue() { 484 super.beanMapPutReturnsOldValue(); 485 return this; 486 } 487 488 @Override /* BeanContextBuilder */ 489 public XmlSerializerBuilder beanMethodVisibility(Visibility value) { 490 super.beanMethodVisibility(value); 491 return this; 492 } 493 494 @Override /* BeanContextBuilder */ 495 public XmlSerializerBuilder beansRequireDefaultConstructor(boolean value) { 496 super.beansRequireDefaultConstructor(value); 497 return this; 498 } 499 500 @Override /* BeanContextBuilder */ 501 public XmlSerializerBuilder beansRequireDefaultConstructor() { 502 super.beansRequireDefaultConstructor(); 503 return this; 504 } 505 506 @Override /* BeanContextBuilder */ 507 public XmlSerializerBuilder beansRequireSerializable(boolean value) { 508 super.beansRequireSerializable(value); 509 return this; 510 } 511 512 @Override /* BeanContextBuilder */ 513 public XmlSerializerBuilder beansRequireSerializable() { 514 super.beansRequireSerializable(); 515 return this; 516 } 517 518 @Override /* BeanContextBuilder */ 519 public XmlSerializerBuilder beansRequireSettersForGetters(boolean value) { 520 super.beansRequireSettersForGetters(value); 521 return this; 522 } 523 524 @Override /* BeanContextBuilder */ 525 public XmlSerializerBuilder beansRequireSettersForGetters() { 526 super.beansRequireSettersForGetters(); 527 return this; 528 } 529 530 @Override /* BeanContextBuilder */ 531 public XmlSerializerBuilder beansRequireSomeProperties(boolean value) { 532 super.beansRequireSomeProperties(value); 533 return this; 534 } 535 536 @Override /* BeanContextBuilder */ 537 public XmlSerializerBuilder beanTypePropertyName(String value) { 538 super.beanTypePropertyName(value); 539 return this; 540 } 541 542 @Override /* BeanContextBuilder */ 543 public XmlSerializerBuilder debug() { 544 super.debug(); 545 return this; 546 } 547 548 @Override /* BeanContextBuilder */ 549 public <T> XmlSerializerBuilder example(Class<T> c, T o) { 550 super.example(c, o); 551 return this; 552 } 553 554 @Override /* BeanContextBuilder */ 555 public XmlSerializerBuilder ignoreInvocationExceptionsOnGetters(boolean value) { 556 super.ignoreInvocationExceptionsOnGetters(value); 557 return this; 558 } 559 560 @Override /* BeanContextBuilder */ 561 public XmlSerializerBuilder ignoreInvocationExceptionsOnGetters() { 562 super.ignoreInvocationExceptionsOnGetters(); 563 return this; 564 } 565 566 @Override /* BeanContextBuilder */ 567 public XmlSerializerBuilder ignoreInvocationExceptionsOnSetters(boolean value) { 568 super.ignoreInvocationExceptionsOnSetters(value); 569 return this; 570 } 571 572 @Override /* BeanContextBuilder */ 573 public XmlSerializerBuilder ignoreInvocationExceptionsOnSetters() { 574 super.ignoreInvocationExceptionsOnSetters(); 575 return this; 576 } 577 578 @Override /* BeanContextBuilder */ 579 public XmlSerializerBuilder ignorePropertiesWithoutSetters(boolean value) { 580 super.ignorePropertiesWithoutSetters(value); 581 return this; 582 } 583 584 @Override /* BeanContextBuilder */ 585 public XmlSerializerBuilder ignoreUnknownBeanProperties(boolean value) { 586 super.ignoreUnknownBeanProperties(value); 587 return this; 588 } 589 590 @Override /* BeanContextBuilder */ 591 public XmlSerializerBuilder ignoreUnknownBeanProperties() { 592 super.ignoreUnknownBeanProperties(); 593 return this; 594 } 595 596 @Override /* BeanContextBuilder */ 597 public XmlSerializerBuilder ignoreUnknownNullBeanProperties(boolean value) { 598 super.ignoreUnknownNullBeanProperties(value); 599 return this; 600 } 601 602 @Override /* BeanContextBuilder */ 603 public <T> XmlSerializerBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass) { 604 super.implClass(interfaceClass, implClass); 605 return this; 606 } 607 608 @Override /* BeanContextBuilder */ 609 public XmlSerializerBuilder implClasses(Map<String,Class<?>> values) { 610 super.implClasses(values); 611 return this; 612 } 613 614 @Override /* BeanContextBuilder */ 615 public XmlSerializerBuilder locale(Locale value) { 616 super.locale(value); 617 return this; 618 } 619 620 @Override /* BeanContextBuilder */ 621 public XmlSerializerBuilder mediaType(MediaType value) { 622 super.mediaType(value); 623 return this; 624 } 625 626 @Override /* BeanContextBuilder */ 627 public XmlSerializerBuilder notBeanClasses(boolean append, Object...values) { 628 super.notBeanClasses(append, values); 629 return this; 630 } 631 632 @Override /* BeanContextBuilder */ 633 public XmlSerializerBuilder notBeanClasses(Class<?>...values) { 634 super.notBeanClasses(values); 635 return this; 636 } 637 638 @Override /* BeanContextBuilder */ 639 public XmlSerializerBuilder notBeanClasses(Object...values) { 640 super.notBeanClasses(values); 641 return this; 642 } 643 644 @Override /* BeanContextBuilder */ 645 public XmlSerializerBuilder notBeanClassesRemove(Object...values) { 646 super.notBeanClassesRemove(values); 647 return this; 648 } 649 650 @Override /* BeanContextBuilder */ 651 public XmlSerializerBuilder notBeanPackages(boolean append, Object...values) { 652 super.notBeanPackages(append, values); 653 return this; 654 } 655 656 @Override /* BeanContextBuilder */ 657 public XmlSerializerBuilder notBeanPackages(Object...values) { 658 super.notBeanPackages(values); 659 return this; 660 } 661 662 @Override /* BeanContextBuilder */ 663 public XmlSerializerBuilder notBeanPackages(String...values) { 664 super.notBeanPackages(values); 665 return this; 666 } 667 668 @Override /* BeanContextBuilder */ 669 public XmlSerializerBuilder notBeanPackagesRemove(Object...values) { 670 super.notBeanPackagesRemove(values); 671 return this; 672 } 673 674 @Override /* BeanContextBuilder */ 675 public XmlSerializerBuilder pojoSwaps(boolean append, Object...values) { 676 super.pojoSwaps(append, values); 677 return this; 678 } 679 680 @Override /* BeanContextBuilder */ 681 public XmlSerializerBuilder pojoSwaps(Class<?>...values) { 682 super.pojoSwaps(values); 683 return this; 684 } 685 686 @Override /* BeanContextBuilder */ 687 public XmlSerializerBuilder pojoSwaps(Object...values) { 688 super.pojoSwaps(values); 689 return this; 690 } 691 692 @Override /* BeanContextBuilder */ 693 public XmlSerializerBuilder pojoSwapsRemove(Object...values) { 694 super.pojoSwapsRemove(values); 695 return this; 696 } 697 698 @Override /* BeanContextBuilder */ 699 public XmlSerializerBuilder sortProperties(boolean value) { 700 super.sortProperties(value); 701 return this; 702 } 703 704 @Override /* BeanContextBuilder */ 705 public XmlSerializerBuilder sortProperties() { 706 super.sortProperties(); 707 return this; 708 } 709 710 @Override /* BeanContextBuilder */ 711 public XmlSerializerBuilder timeZone(TimeZone value) { 712 super.timeZone(value); 713 return this; 714 } 715 716 @Override /* BeanContextBuilder */ 717 public XmlSerializerBuilder useEnumNames() { 718 super.useEnumNames(); 719 return this; 720 } 721 722 @Override /* BeanContextBuilder */ 723 public XmlSerializerBuilder useInterfaceProxies(boolean value) { 724 super.useInterfaceProxies(value); 725 return this; 726 } 727 728 @Override /* BeanContextBuilder */ 729 public XmlSerializerBuilder useJavaBeanIntrospector(boolean value) { 730 super.useJavaBeanIntrospector(value); 731 return this; 732 } 733 734 @Override /* BeanContextBuilder */ 735 public XmlSerializerBuilder useJavaBeanIntrospector() { 736 super.useJavaBeanIntrospector(); 737 return this; 738 } 739 740 @Override /* ContextBuilder */ 741 public XmlSerializerBuilder set(String name, Object value) { 742 super.set(name, value); 743 return this; 744 } 745 746 @Override /* ContextBuilder */ 747 public XmlSerializerBuilder set(boolean append, String name, Object value) { 748 super.set(append, name, value); 749 return this; 750 } 751 752 @Override /* ContextBuilder */ 753 public XmlSerializerBuilder set(Map<String,Object> properties) { 754 super.set(properties); 755 return this; 756 } 757 758 @Override /* ContextBuilder */ 759 public XmlSerializerBuilder add(Map<String,Object> properties) { 760 super.add(properties); 761 return this; 762 } 763 764 @Override /* ContextBuilder */ 765 public XmlSerializerBuilder addTo(String name, Object value) { 766 super.addTo(name, value); 767 return this; 768 } 769 770 @Override /* ContextBuilder */ 771 public XmlSerializerBuilder addTo(String name, String key, Object value) { 772 super.addTo(name, key, value); 773 return this; 774 } 775 776 @Override /* ContextBuilder */ 777 public XmlSerializerBuilder removeFrom(String name, Object value) { 778 super.removeFrom(name, value); 779 return this; 780 } 781 782 @Override /* ContextBuilder */ 783 public XmlSerializerBuilder apply(PropertyStore copyFrom) { 784 super.apply(copyFrom); 785 return this; 786 } 787}