001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * http://www.geoapi.org 004 * 005 * Copyright (C) 2008-2019 Open Geospatial Consortium, Inc. 006 * All Rights Reserved. http://www.opengeospatial.org/ogc/legal 007 * 008 * Permission to use, copy, and modify this software and its documentation, with 009 * or without modification, for any purpose and without fee or royalty is hereby 010 * granted, provided that you include the following on ALL copies of the software 011 * and documentation or portions thereof, including modifications, that you make: 012 * 013 * 1. The full text of this NOTICE in a location viewable to users of the 014 * redistributed or derivative work. 015 * 2. Notice of any changes or modifications to the OGC files, including the 016 * date changes were made. 017 * 018 * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE 019 * NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 020 * TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT 021 * THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY 022 * PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. 023 * 024 * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR 025 * CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. 026 * 027 * The name and trademarks of copyright holders may NOT be used in advertising or 028 * publicity pertaining to the software without specific, written prior permission. 029 * Title to copyright in this software and any associated documentation will at all 030 * times remain with copyright holders. 031 */ 032package org.opengis.test; 033 034import javax.imageio.spi.ImageReaderSpi; 035import javax.imageio.spi.ImageWriterSpi; 036import javax.imageio.metadata.IIOMetadataFormat; 037 038import org.opengis.util.*; 039import org.opengis.metadata.*; 040import org.opengis.metadata.extent.*; 041import org.opengis.metadata.citation.*; 042import org.opengis.geometry.*; 043import org.opengis.parameter.*; 044import org.opengis.referencing.*; 045import org.opengis.referencing.cs.*; 046import org.opengis.referencing.crs.*; 047import org.opengis.referencing.datum.*; 048import org.opengis.referencing.operation.*; 049 050// Following imports are for javadoc 051import org.opengis.test.util.*; 052import org.opengis.test.geometry.*; 053import org.opengis.test.metadata.*; 054import org.opengis.test.referencing.*; 055import org.opengis.test.coverage.image.*; 056 057 058/** 059 * A set of convenience static methods for validating GeoAPI implementations. Every 060 * {@code validate} method defined in this class delegate their work to one of many 061 * {@link Validator} objects in various packages. This class is especially convenient 062 * when used with {@code static import} statements. 063 * 064 * <p><b><u>Customization</u></b><br> 065 * To override some validation process on a <em>system-wide</em> basis, vendors can either 066 * assign a new {@link ValidatorContainer} instance to the {@link #DEFAULT} static field, or 067 * modify the fields ({@link ValidatorContainer#cs cs}, {@link ValidatorContainer#crs crs}, 068 * <i>etc.</i>) in the existing instance. The following example alters the existing instance 069 * in order to accept non-standard axis names:</p> 070 * 071 * <blockquote><pre>Validators.DEFAULT.crs.enforceStandardNames = false;</pre></blockquote> 072 * 073 * <p>To override some validation process without changing the system-wide setting, 074 * vendors can create a new instance of {@link ValidatorContainer} and invoke its 075 * non-static methods from the vendor's test cases.</p> 076 * 077 * @author Martin Desruisseaux (Geomatys) 078 * @version 3.1 079 * @since 2.2 080 */ 081public class Validators { 082 /** 083 * The default container to be used by all static {@code validate} methods. 084 * Vendors can change the validators referenced by this container, or change 085 * their setting. 086 * 087 * <p>This field is not final in order to allow vendors to switch easily between 088 * different configurations, for example:</p> 089 * 090 * <blockquote><pre>ValidatorContainer original = Validators.DEFAULT; 091 *Validators.DEFAULT = myConfig; 092 *... do some tests ... 093 *Validators.DEFAULT = original;</pre></blockquote> 094 */ 095 public static ValidatorContainer DEFAULT = new ValidatorContainer(); 096 097 /** 098 * For subclass constructors only. 099 */ 100 protected Validators() { 101 } 102 103 /** 104 * For each interface implemented by the given object, invokes the corresponding 105 * {@code validate(…)} method (if any). Use this method only if the type is 106 * unknown at compile-time. 107 * 108 * @param object the object to dispatch to {@code validate(…)} methods, or {@code null}. 109 */ 110 public static void dispatch(final Object object) { 111 DEFAULT.dispatch(object); 112 } 113 114 /** 115 * Tests the conformance of the given object. 116 * 117 * @param object the object to test, or {@code null}. 118 * 119 * @see MetadataBaseValidator#validate(Metadata) 120 * 121 * @since 3.1 122 */ 123 public static void validate(final Metadata object) { 124 DEFAULT.validate(object); 125 } 126 127 /** 128 * Tests the conformance of the given object. 129 * 130 * @param object the object to test, or {@code null}. 131 * 132 * @see CitationValidator#validate(Citation) 133 */ 134 public static void validate(final Citation object) { 135 DEFAULT.validate(object); 136 } 137 138 /** 139 * Tests the conformance of the given objects. 140 * 141 * @param object the objects to test, or {@code null}. 142 * 143 * @see CitationValidator#validate(CitationDate...) 144 * 145 * @since 3.1 146 */ 147 public static void validate(final CitationDate... object) { 148 DEFAULT.validate(object); 149 } 150 151 /** 152 * Tests the conformance of the given object. 153 * 154 * @param object the object to test, or {@code null}. 155 * 156 * @see CitationValidator#validate(Responsibility) 157 * 158 * @since 3.1 159 */ 160 public static void validate(final Responsibility object) { 161 DEFAULT.validate(object); 162 } 163 164 /** 165 * Tests the conformance of the given object. 166 * 167 * @param object the object to test, or {@code null}. 168 * 169 * @see CitationValidator#validate(Party) 170 * 171 * @since 3.1 172 */ 173 public static void validate(final Party object) { 174 DEFAULT.validate(object); 175 } 176 177 /** 178 * Tests the conformance of the given object. 179 * 180 * @param object the object to test, or {@code null}. 181 * 182 * @see CitationValidator#validate(Contact) 183 * 184 * @since 3.1 185 */ 186 public static void validate(final Contact object) { 187 DEFAULT.validate(object); 188 } 189 190 /** 191 * Tests the conformance of the given object. 192 * 193 * @param object the object to test, or {@code null}. 194 * 195 * @see CitationValidator#validate(Telephone) 196 * 197 * @since 3.1 198 */ 199 public static void validate(final Telephone object) { 200 DEFAULT.validate(object); 201 } 202 203 /** 204 * Tests the conformance of the given object. 205 * 206 * @param object the object to test, or {@code null}. 207 * 208 * @see CitationValidator#validate(Address) 209 * 210 * @since 3.1 211 */ 212 public static void validate(final Address object) { 213 DEFAULT.validate(object); 214 } 215 216 /** 217 * Tests the conformance of the given object. 218 * 219 * @param object the object to test, or {@code null}. 220 * 221 * @see CitationValidator#validate(OnlineResource) 222 * 223 * @since 3.1 224 */ 225 public static void validate(final OnlineResource object) { 226 DEFAULT.validate(object); 227 } 228 229 /** 230 * Tests the conformance of the given object. 231 * 232 * @param object the object to test, or {@code null}. 233 * 234 * @see ExtentValidator#validate(Extent) 235 */ 236 public static void validate(final Extent object) { 237 DEFAULT.validate(object); 238 } 239 240 /** 241 * Tests the conformance of the given object. 242 * 243 * @param object the object to test, or {@code null}. 244 * 245 * @see ExtentValidator#validate(TemporalExtent) 246 */ 247 public static void validate(final TemporalExtent object) { 248 DEFAULT.validate(object); 249 } 250 251 /** 252 * Tests the conformance of the given object. 253 * 254 * @param object the object to test, or {@code null}. 255 * 256 * @see ExtentValidator#validate(VerticalExtent) 257 */ 258 public static void validate(final VerticalExtent object) { 259 DEFAULT.validate(object); 260 } 261 262 /** 263 * Tests the conformance of the given object. 264 * 265 * @param object the object to test, or {@code null}. 266 * 267 * @see ExtentValidator#dispatch(GeographicExtent) 268 */ 269 public static void validate(final GeographicExtent object) { 270 DEFAULT.validate(object); 271 } 272 273 /** 274 * Tests the conformance of the given object. 275 * 276 * @param object the object to test, or {@code null}. 277 * 278 * @see ExtentValidator#validate(GeographicDescription) 279 */ 280 public static void validate(final GeographicDescription object) { 281 DEFAULT.validate(object); 282 } 283 284 /** 285 * Tests the conformance of the given object. 286 * 287 * @param object the object to test, or {@code null}. 288 * 289 * @see ExtentValidator#validate(BoundingPolygon) 290 */ 291 public static void validate(final BoundingPolygon object) { 292 DEFAULT.validate(object); 293 } 294 295 /** 296 * Tests the conformance of the given object. 297 * 298 * @param object the object to test, or {@code null}. 299 * 300 * @see ExtentValidator#validate(GeographicBoundingBox) 301 */ 302 public static void validate(final GeographicBoundingBox object) { 303 DEFAULT.validate(object); 304 } 305 306 /** 307 * Tests the conformance of the given object. 308 * 309 * @param object the object to test, or {@code null}. 310 * 311 * @see GeometryValidator#validate(Envelope) 312 */ 313 public static void validate(final Envelope object) { 314 DEFAULT.validate(object); 315 } 316 317 /** 318 * Tests the conformance of the given object. 319 * 320 * @param object the object to test, or {@code null}. 321 * 322 * @see GeometryValidator#validate(DirectPosition) 323 */ 324 public static void validate(final DirectPosition object) { 325 DEFAULT.validate(object); 326 } 327 328 /** 329 * Tests the conformance of the given object. 330 * 331 * @param object the object to test, or {@code null}. 332 * 333 * @see CRSValidator#dispatch(CoordinateReferenceSystem) 334 */ 335 public static void validate(final CoordinateReferenceSystem object) { 336 DEFAULT.validate(object); 337 } 338 339 /** 340 * Tests the conformance of the given object. 341 * 342 * @param object the object to test, or {@code null}. 343 * 344 * @see CRSValidator#validate(GeocentricCRS) 345 */ 346 public static void validate(final GeocentricCRS object) { 347 DEFAULT.validate(object); 348 } 349 350 /** 351 * Tests the conformance of the given object. 352 * 353 * @param object the object to test, or {@code null}. 354 * 355 * @see CRSValidator#validate(GeographicCRS) 356 */ 357 public static void validate(final GeographicCRS object) { 358 DEFAULT.validate(object); 359 } 360 361 /** 362 * Validates the given coordinate reference system. 363 * 364 * @param object the object to validate, or {@code null}. 365 * 366 * @see CRSValidator#validate(ProjectedCRS) 367 */ 368 public static void validate(final ProjectedCRS object) { 369 DEFAULT.validate(object); 370 } 371 372 /** 373 * Validates the given coordinate reference system. 374 * 375 * @param object the object to validate, or {@code null}. 376 * 377 * @see CRSValidator#validate(DerivedCRS) 378 */ 379 public static void validate(final DerivedCRS object) { 380 DEFAULT.validate(object); 381 } 382 383 /** 384 * Validates the given coordinate reference system. 385 * 386 * @param object the object to validate, or {@code null}. 387 * 388 * @see CRSValidator#validate(ImageCRS) 389 */ 390 public static void validate(final ImageCRS object) { 391 DEFAULT.validate(object); 392 } 393 394 /** 395 * Validates the given coordinate reference system. 396 * 397 * @param object the object to validate, or {@code null}. 398 * 399 * @see CRSValidator#validate(EngineeringCRS) 400 */ 401 public static void validate(final EngineeringCRS object) { 402 DEFAULT.validate(object); 403 } 404 405 /** 406 * Validates the given coordinate reference system. 407 * 408 * @param object the object to validate, or {@code null}. 409 * 410 * @see CRSValidator#validate(VerticalCRS) 411 */ 412 public static void validate(final VerticalCRS object) { 413 DEFAULT.validate(object); 414 } 415 416 /** 417 * Validates the given coordinate reference system. 418 * 419 * @param object the object to validate, or {@code null}. 420 * 421 * @see CRSValidator#validate(TemporalCRS) 422 */ 423 public static void validate(final TemporalCRS object) { 424 DEFAULT.validate(object); 425 } 426 427 /** 428 * Validates the given coordinate reference system. 429 * 430 * @param object the object to validate, or {@code null}. 431 * 432 * @see CRSValidator#validate(CompoundCRS) 433 */ 434 public static void validate(final CompoundCRS object) { 435 DEFAULT.validate(object); 436 } 437 438 /** 439 * Tests the conformance of the given object. 440 * 441 * @param object the object to test, or {@code null}. 442 * 443 * @see CSValidator#dispatch(CoordinateSystem) 444 */ 445 public static void validate(final CoordinateSystem object) { 446 DEFAULT.validate(object); 447 } 448 449 /** 450 * Tests the conformance of the given object. 451 * 452 * @param object the object to test, or {@code null}. 453 * 454 * @see CSValidator#validate(CartesianCS) 455 */ 456 public static void validate(final CartesianCS object) { 457 DEFAULT.validate(object); 458 } 459 460 /** 461 * Tests the conformance of the given object. 462 * 463 * @param object the object to test, or {@code null}. 464 * 465 * @see CSValidator#validate(EllipsoidalCS) 466 */ 467 public static void validate(final EllipsoidalCS object) { 468 DEFAULT.validate(object); 469 } 470 471 /** 472 * Tests the conformance of the given object. 473 * 474 * @param object the object to test, or {@code null}. 475 * 476 * @see CSValidator#validate(SphericalCS) 477 */ 478 public static void validate(final SphericalCS object) { 479 DEFAULT.validate(object); 480 } 481 482 /** 483 * Tests the conformance of the given object. 484 * 485 * @param object the object to test, or {@code null}. 486 * 487 * @see CSValidator#validate(CylindricalCS) 488 */ 489 public static void validate(final CylindricalCS object) { 490 DEFAULT.validate(object); 491 } 492 493 /** 494 * Tests the conformance of the given object. 495 * 496 * @param object the object to test, or {@code null}. 497 * 498 * @see CSValidator#validate(PolarCS) 499 */ 500 public static void validate(final PolarCS object) { 501 DEFAULT.validate(object); 502 } 503 504 /** 505 * Tests the conformance of the given object. 506 * 507 * @param object the object to test, or {@code null}. 508 * 509 * @see CSValidator#validate(LinearCS) 510 */ 511 public static void validate(final LinearCS object) { 512 DEFAULT.validate(object); 513 } 514 515 /** 516 * Tests the conformance of the given object. 517 * 518 * @param object the object to test, or {@code null}. 519 * 520 * @see CSValidator#validate(VerticalCS) 521 */ 522 public static void validate(final VerticalCS object) { 523 DEFAULT.validate(object); 524 } 525 526 /** 527 * Tests the conformance of the given object. 528 * 529 * @param object the object to test, or {@code null}. 530 * 531 * @see CSValidator#validate(TimeCS) 532 */ 533 public static void validate(final TimeCS object) { 534 DEFAULT.validate(object); 535 } 536 537 /** 538 * Tests the conformance of the given object. 539 * 540 * @param object the object to test, or {@code null}. 541 * 542 * @see CSValidator#validate(UserDefinedCS) 543 */ 544 public static void validate(final UserDefinedCS object) { 545 DEFAULT.validate(object); 546 } 547 548 /** 549 * Tests the conformance of the given object. 550 * 551 * @param object the object to test, or {@code null}. 552 * 553 * @see CSValidator#validate(CoordinateSystemAxis) 554 */ 555 public static void validate(final CoordinateSystemAxis object) { 556 DEFAULT.validate(object); 557 } 558 559 /** 560 * Tests the conformance of the given object. 561 * 562 * @param object the object to test, or {@code null}. 563 * 564 * @see DatumValidator#dispatch(Datum) 565 */ 566 public static void validate(final Datum object) { 567 DEFAULT.validate(object); 568 } 569 570 /** 571 * Tests the conformance of the given object. 572 * 573 * @param object the object to test, or {@code null}. 574 * 575 * @see DatumValidator#validate(PrimeMeridian) 576 */ 577 public static void validate(final PrimeMeridian object) { 578 DEFAULT.validate(object); 579 } 580 581 /** 582 * Tests the conformance of the given object. 583 * 584 * @param object the object to test, or {@code null}. 585 * 586 * @see DatumValidator#validate(Ellipsoid) 587 */ 588 public static void validate(final Ellipsoid object) { 589 DEFAULT.validate(object); 590 } 591 592 /** 593 * Tests the conformance of the given object. 594 * 595 * @param object the object to test, or {@code null}. 596 * 597 * @see DatumValidator#validate(GeodeticDatum) 598 */ 599 public static void validate(final GeodeticDatum object) { 600 DEFAULT.validate(object); 601 } 602 603 /** 604 * Tests the conformance of the given object. 605 * 606 * @param object the object to test, or {@code null}. 607 * 608 * @see DatumValidator#validate(VerticalDatum) 609 */ 610 public static void validate(final VerticalDatum object) { 611 DEFAULT.validate(object); 612 } 613 614 /** 615 * Tests the conformance of the given object. 616 * 617 * @param object the object to test, or {@code null}. 618 * 619 * @see DatumValidator#validate(TemporalDatum) 620 */ 621 public static void validate(final TemporalDatum object) { 622 DEFAULT.validate(object); 623 } 624 625 /** 626 * Tests the conformance of the given object. 627 * 628 * @param object the object to test, or {@code null}. 629 * 630 * @see DatumValidator#validate(ImageDatum) 631 */ 632 public static void validate(final ImageDatum object) { 633 DEFAULT.validate(object); 634 } 635 636 /** 637 * Tests the conformance of the given object. 638 * 639 * @param object the object to test, or {@code null}. 640 * 641 * @see DatumValidator#validate(EngineeringDatum) 642 */ 643 public static void validate(final EngineeringDatum object) { 644 DEFAULT.validate(object); 645 } 646 647 /** 648 * Tests the conformance of the given object. 649 * 650 * @param object the object to test, or {@code null}. 651 * 652 * @see OperationValidator#dispatch(CoordinateOperation) 653 */ 654 public static void validate(final CoordinateOperation object) { 655 DEFAULT.validate(object); 656 } 657 658 /** 659 * Tests the conformance of the given object. 660 * 661 * @param object the object to test, or {@code null}. 662 * 663 * @see OperationValidator#validate(Conversion) 664 */ 665 public static void validate(final Conversion object) { 666 DEFAULT.validate(object); 667 } 668 669 /** 670 * Tests the conformance of the given object. 671 * 672 * @param object the object to test, or {@code null}. 673 * 674 * @see OperationValidator#validate(Transformation) 675 */ 676 public static void validate(final Transformation object) { 677 DEFAULT.validate(object); 678 } 679 680 /** 681 * Tests the conformance of the given object. 682 * 683 * @param object the object to test, or {@code null}. 684 * 685 * @see OperationValidator#validate(ConcatenatedOperation) 686 */ 687 public static void validate(final ConcatenatedOperation object) { 688 DEFAULT.validate(object); 689 } 690 691 /** 692 * Tests the conformance of the given object. 693 * 694 * @param object the object to test, or {@code null}. 695 * 696 * @see OperationValidator#validate(PassThroughOperation) 697 */ 698 public static void validate(final PassThroughOperation object) { 699 DEFAULT.validate(object); 700 } 701 702 /** 703 * Tests the conformance of the given object. 704 * 705 * @param object the object to test, or {@code null}. 706 * 707 * @see OperationValidator#validate(OperationMethod) 708 */ 709 public static void validate(final OperationMethod object) { 710 DEFAULT.validate(object); 711 } 712 713 /** 714 * Tests the conformance of the given object. 715 * 716 * @param object the object to test, or {@code null}. 717 * 718 * @see OperationValidator#validate(Formula) 719 */ 720 public static void validate(final Formula object) { 721 DEFAULT.validate(object); 722 } 723 724 /** 725 * Tests the conformance of the given object. 726 * 727 * @param object the object to test, or {@code null}. 728 * 729 * @see OperationValidator#validate(MathTransform) 730 */ 731 public static void validate(final MathTransform object) { 732 DEFAULT.validate(object); 733 } 734 735 /** 736 * Tests the conformance of the given object. 737 * 738 * @param object the object to test, or {@code null}. 739 * 740 * @see ParameterValidator#dispatch(GeneralParameterDescriptor) 741 */ 742 public static void validate(final GeneralParameterDescriptor object) { 743 DEFAULT.validate(object); 744 } 745 746 /** 747 * Tests the conformance of the given object. 748 * 749 * @param object the object to test, or {@code null}. 750 * 751 * @see ParameterValidator#validate(ParameterDescriptor) 752 */ 753 public static void validate(final ParameterDescriptor<?> object) { 754 DEFAULT.validate(object); 755 } 756 757 /** 758 * Tests the conformance of the given object. 759 * 760 * @param object the object to test, or {@code null}. 761 * 762 * @see ParameterValidator#validate(ParameterDescriptorGroup) 763 */ 764 public static void validate(final ParameterDescriptorGroup object) { 765 DEFAULT.validate(object); 766 } 767 768 /** 769 * Tests the conformance of the given object. 770 * 771 * @param object the object to test, or {@code null}. 772 * 773 * @see ParameterValidator#dispatch(GeneralParameterValue) 774 */ 775 public static void validate(final GeneralParameterValue object) { 776 DEFAULT.validate(object); 777 } 778 779 /** 780 * Tests the conformance of the given object. 781 * 782 * @param object the object to test, or {@code null}. 783 * 784 * @see ParameterValidator#validate(ParameterValue) 785 */ 786 public static void validate(final ParameterValue<?> object) { 787 DEFAULT.validate(object); 788 } 789 790 /** 791 * Tests the conformance of the given object. 792 * 793 * @param object the object to test, or {@code null}. 794 * 795 * @see ParameterValidator#validate(ParameterValueGroup) 796 */ 797 public static void validate(final ParameterValueGroup object) { 798 DEFAULT.validate(object); 799 } 800 801 /** 802 * Tests the conformance of the given object. 803 * 804 * @param object the object to test, or {@code null}. 805 * 806 * @see ReferencingValidator#dispatchObject(IdentifiedObject) 807 */ 808 public static void validate(final IdentifiedObject object) { 809 DEFAULT.validate(object); 810 } 811 812 /** 813 * Tests the conformance of the given object. 814 * 815 * @param object the object to test, or {@code null}. 816 * 817 * @see MetadataBaseValidator#validate(Identifier) 818 * 819 * @since 3.1 820 */ 821 public static void validate(final Identifier object) { 822 DEFAULT.validate(object); 823 } 824 825 /** 826 * Tests the conformance of the given object. 827 * 828 * @param object the object to test, or {@code null}. 829 * 830 * @see NameValidator#dispatch(GenericName) 831 */ 832 public static void validate(final GenericName object) { 833 DEFAULT.validate(object); 834 } 835 836 /** 837 * Tests the conformance of the given object. 838 * 839 * @param object the object to test, or {@code null}. 840 * 841 * @see NameValidator#validate(LocalName) 842 */ 843 public static void validate(final LocalName object) { 844 DEFAULT.validate(object); 845 } 846 847 /** 848 * Tests the conformance of the given object. 849 * 850 * @param object the object to test, or {@code null}. 851 * 852 * @see NameValidator#validate(ScopedName) 853 */ 854 public static void validate(final ScopedName object) { 855 DEFAULT.validate(object); 856 } 857 858 /** 859 * Tests the conformance of the given object. 860 * 861 * @param object the object to test, or {@code null}. 862 * 863 * @see NameValidator#validate(NameSpace) 864 */ 865 public static void validate(final NameSpace object) { 866 DEFAULT.validate(object); 867 } 868 869 /** 870 * Tests the conformance of the given object. 871 * 872 * @param object the object to test, or {@code null}. 873 * 874 * @see NameValidator#validate(InternationalString) 875 */ 876 public static void validate(final InternationalString object) { 877 DEFAULT.validate(object); 878 } 879 880 /** 881 * Tests the conformance of the given object. 882 * 883 * @param object the object to test, or {@code null}. 884 * 885 * @see ImageValidator#validate(ImageReaderSpi) 886 */ 887 public static void validate(final ImageReaderSpi object) { 888 DEFAULT.validate(object); 889 } 890 891 /** 892 * Tests the conformance of the given object. 893 * 894 * @param object the object to test, or {@code null}. 895 * 896 * @see ImageValidator#validate(ImageWriterSpi) 897 */ 898 public static void validate(final ImageWriterSpi object) { 899 DEFAULT.validate(object); 900 } 901 902 /** 903 * Tests the conformance of the given object. 904 * 905 * @param object the object to test, or {@code null}. 906 * 907 * @see ImageValidator#validate(IIOMetadataFormat) 908 */ 909 public static void validate(final IIOMetadataFormat object) { 910 DEFAULT.validate(object); 911 } 912}