001 /* 002 * JBoss, Home of Professional Open Source. 003 * Copyright 2008, Red Hat Middleware LLC, and individual contributors 004 * as indicated by the @author tags. See the copyright.txt file in the 005 * distribution for a full listing of individual contributors. 006 * 007 * This is free software; you can redistribute it and/or modify it 008 * under the terms of the GNU Lesser General Public License as 009 * published by the Free Software Foundation; either version 2.1 of 010 * the License, or (at your option) any later version. 011 * 012 * This software is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this software; if not, write to the Free 019 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 020 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 021 */ 022 package org.jboss.dna.common.util; 023 024 import java.util.Collection; 025 import java.util.Iterator; 026 import java.util.Map; 027 import org.jboss.dna.common.CommonI18n; 028 029 /** 030 * Utility class that checks arguments to methods. This class is to be used only in API methods, where failure to supply correct 031 * arguments should result in a useful error message. In all cases, use the <code>assert</code> statement. 032 */ 033 public final class CheckArg { 034 035 // ########################## int METHODS ################################### 036 037 /** 038 * Check that the argument is not less than the supplied value 039 * 040 * @param argument The argument 041 * @param notLessThanValue the value that is to be used to check the value 042 * @param name The name of the argument 043 * @throws IllegalArgumentException If argument greater than or equal to the supplied vlaue 044 */ 045 public static void isNotLessThan( int argument, 046 int notLessThanValue, 047 String name ) { 048 if (argument < notLessThanValue) { 049 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeLessThan.text(name, argument, notLessThanValue)); 050 } 051 } 052 053 /** 054 * Check that the argument is not greater than the supplied value 055 * 056 * @param argument The argument 057 * @param notGreaterThanValue the value that is to be used to check the value 058 * @param name The name of the argument 059 * @throws IllegalArgumentException If argument is less than or equal to the supplied value 060 */ 061 public static void isNotGreaterThan( int argument, 062 int notGreaterThanValue, 063 String name ) { 064 if (argument > notGreaterThanValue) { 065 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeGreaterThan.text(name, argument, notGreaterThanValue)); 066 } 067 } 068 069 /** 070 * Check that the argument is greater than the supplied value 071 * 072 * @param argument The argument 073 * @param greaterThanValue the value that is to be used to check the value 074 * @param name The name of the argument 075 * @throws IllegalArgumentException If argument is not greater than the supplied value 076 */ 077 public static void isGreaterThan( int argument, 078 int greaterThanValue, 079 String name ) { 080 if (argument <= greaterThanValue) { 081 throw new IllegalArgumentException(CommonI18n.argumentMustBeGreaterThan.text(name, argument, greaterThanValue)); 082 } 083 } 084 085 /** 086 * Check that the argument is less than the supplied value 087 * 088 * @param argument The argument 089 * @param lessThanValue the value that is to be used to check the value 090 * @param name The name of the argument 091 * @throws IllegalArgumentException If argument is not less than the supplied value 092 */ 093 public static void isLessThan( int argument, 094 int lessThanValue, 095 String name ) { 096 if (argument >= lessThanValue) { 097 throw new IllegalArgumentException(CommonI18n.argumentMustBeLessThan.text(name, argument, lessThanValue)); 098 } 099 } 100 101 /** 102 * Check that the argument is greater than or equal to the supplied value 103 * 104 * @param argument The argument 105 * @param greaterThanOrEqualToValue the value that is to be used to check the value 106 * @param name The name of the argument 107 * @throws IllegalArgumentException If argument is not greater than or equal to the supplied value 108 */ 109 public static void isGreaterThanOrEqualTo( int argument, 110 int greaterThanOrEqualToValue, 111 String name ) { 112 if (argument < greaterThanOrEqualToValue) { 113 throw new IllegalArgumentException(CommonI18n.argumentMustBeGreaterThanOrEqualTo.text(name, 114 argument, 115 greaterThanOrEqualToValue)); 116 } 117 } 118 119 /** 120 * Check that the argument is less than or equal to the supplied value 121 * 122 * @param argument The argument 123 * @param lessThanOrEqualToValue the value that is to be used to check the value 124 * @param name The name of the argument 125 * @throws IllegalArgumentException If argument is not less than or equal to the supplied value 126 */ 127 public static void isLessThanOrEqualTo( int argument, 128 int lessThanOrEqualToValue, 129 String name ) { 130 if (argument > lessThanOrEqualToValue) { 131 throw new IllegalArgumentException(CommonI18n.argumentMustBeLessThanOrEqualTo.text(name, 132 argument, 133 lessThanOrEqualToValue)); 134 } 135 } 136 137 /** 138 * Check that the argument is non-negative (>=0). 139 * 140 * @param argument The argument 141 * @param name The name of the argument 142 * @throws IllegalArgumentException If argument is negative (<0) 143 */ 144 public static void isNonNegative( int argument, 145 String name ) { 146 if (argument < 0) { 147 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeNegative.text(name, argument)); 148 } 149 } 150 151 /** 152 * Check that the argument is non-positive (<=0). 153 * 154 * @param argument The argument 155 * @param name The name of the argument 156 * @throws IllegalArgumentException If argument is positive (>0) 157 */ 158 public static void isNonPositive( int argument, 159 String name ) { 160 if (argument > 0) { 161 throw new IllegalArgumentException(CommonI18n.argumentMayNotBePositive.text(name, argument)); 162 } 163 } 164 165 /** 166 * Check that the argument is negative (<0). 167 * 168 * @param argument The argument 169 * @param name The name of the argument 170 * @throws IllegalArgumentException If argument is non-negative (>=0) 171 */ 172 public static void isNegative( int argument, 173 String name ) { 174 if (argument >= 0) { 175 throw new IllegalArgumentException(CommonI18n.argumentMustBeNegative.text(name, argument)); 176 } 177 } 178 179 /** 180 * Check that the argument is positive (>0). 181 * 182 * @param argument The argument 183 * @param name The name of the argument 184 * @throws IllegalArgumentException If argument is non-positive (<=0) 185 */ 186 public static void isPositive( int argument, 187 String name ) { 188 if (argument <= 0) { 189 throw new IllegalArgumentException(CommonI18n.argumentMustBePositive.text(name, argument)); 190 } 191 } 192 193 // ########################## long METHODS ################################### 194 195 /** 196 * Check that the argument is non-negative (>=0). 197 * 198 * @param argument The argument 199 * @param name The name of the argument 200 * @throws IllegalArgumentException If argument is negative (<0) 201 */ 202 public static void isNonNegative( long argument, 203 String name ) { 204 if (argument < 0) { 205 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeNegative.text(name, argument)); 206 } 207 } 208 209 /** 210 * Check that the argument is non-positive (<=0). 211 * 212 * @param argument The argument 213 * @param name The name of the argument 214 * @throws IllegalArgumentException If argument is positive (>0) 215 */ 216 public static void isNonPositive( long argument, 217 String name ) { 218 if (argument > 0) { 219 throw new IllegalArgumentException(CommonI18n.argumentMayNotBePositive.text(name, argument)); 220 } 221 } 222 223 /** 224 * Check that the argument is negative (<0). 225 * 226 * @param argument The argument 227 * @param name The name of the argument 228 * @throws IllegalArgumentException If argument is non-negative (>=0) 229 */ 230 public static void isNegative( long argument, 231 String name ) { 232 if (argument >= 0) { 233 throw new IllegalArgumentException(CommonI18n.argumentMustBeNegative.text(name, argument)); 234 } 235 } 236 237 /** 238 * Check that the argument is positive (>0). 239 * 240 * @param argument The argument 241 * @param name The name of the argument 242 * @throws IllegalArgumentException If argument is non-positive (<=0) 243 */ 244 public static void isPositive( long argument, 245 String name ) { 246 if (argument <= 0) { 247 throw new IllegalArgumentException(CommonI18n.argumentMustBePositive.text(name, argument)); 248 } 249 } 250 251 // ########################## double METHODS ################################### 252 253 /** 254 * Check that the argument is non-negative (>=0). 255 * 256 * @param argument The argument 257 * @param name The name of the argument 258 * @throws IllegalArgumentException If argument is negative (<0) 259 */ 260 public static void isNonNegative( double argument, 261 String name ) { 262 if (argument < 0.0) { 263 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeNegative.text(name, argument)); 264 } 265 } 266 267 /** 268 * Check that the argument is non-positive (<=0). 269 * 270 * @param argument The argument 271 * @param name The name of the argument 272 * @throws IllegalArgumentException If argument is positive (>0) 273 */ 274 public static void isNonPositive( double argument, 275 String name ) { 276 if (argument > 0.0) { 277 throw new IllegalArgumentException(CommonI18n.argumentMayNotBePositive.text(name, argument)); 278 } 279 } 280 281 /** 282 * Check that the argument is negative (<0). 283 * 284 * @param argument The argument 285 * @param name The name of the argument 286 * @throws IllegalArgumentException If argument is non-negative (>=0) 287 */ 288 public static void isNegative( double argument, 289 String name ) { 290 if (argument >= 0.0) { 291 throw new IllegalArgumentException(CommonI18n.argumentMustBeNegative.text(name, argument)); 292 } 293 } 294 295 /** 296 * Check that the argument is positive (>0). 297 * 298 * @param argument The argument 299 * @param name The name of the argument 300 * @throws IllegalArgumentException If argument is non-positive (<=0) 301 */ 302 public static void isPositive( double argument, 303 String name ) { 304 if (argument <= 0.0) { 305 throw new IllegalArgumentException(CommonI18n.argumentMustBePositive.text(name, argument)); 306 } 307 } 308 309 /** 310 * Check that the argument is not NaN. 311 * 312 * @param argument The argument 313 * @param name The name of the argument 314 * @throws IllegalArgumentException If argument is NaN 315 */ 316 public static void isNotNan( double argument, 317 String name ) { 318 if (Double.isNaN(argument)) { 319 throw new IllegalArgumentException(CommonI18n.argumentMustBeNumber.text(name)); 320 } 321 } 322 323 // ########################## String METHODS ################################### 324 325 /** 326 * Check that the string is non-null and has length > 0 327 * 328 * @param argument The argument 329 * @param name The name of the argument 330 * @throws IllegalArgumentException If value is null or length == 0 331 */ 332 public static void isNotZeroLength( String argument, 333 String name ) { 334 isNotNull(argument, name); 335 if (argument.length() <= 0) { 336 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeNullOrZeroLength.text(name)); 337 } 338 } 339 340 /** 341 * Check that the string is not empty, is not null, and does not contain only whitespace. 342 * 343 * @param argument String 344 * @param name The name of the argument 345 * @throws IllegalArgumentException If string is null or empty 346 */ 347 public static void isNotEmpty( String argument, 348 String name ) { 349 isNotZeroLength(argument, name); 350 if (argument != null && argument.trim().length() == 0) { 351 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeNullOrZeroLengthOrEmpty.text(name)); 352 } 353 } 354 355 // ########################## Object METHODS ################################### 356 357 /** 358 * Check that the specified argument is non-null 359 * 360 * @param argument The argument 361 * @param name The name of the argument 362 * @throws IllegalArgumentException If argument is null 363 */ 364 public static void isNotNull( Object argument, 365 String name ) { 366 if (argument == null) { 367 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeNull.text(name)); 368 } 369 } 370 371 /** 372 * Returns the specified argument if it is not <code>null</code>. 373 * 374 * @param <T> 375 * @param argument The argument 376 * @param name The name of the argument 377 * @return The argument 378 * @throws IllegalArgumentException If argument is <code>null</code> 379 */ 380 public static <T> T getNotNull( T argument, 381 String name ) { 382 isNotNull(argument, name); 383 return argument; 384 } 385 386 /** 387 * Check that the argument is null 388 * 389 * @param argument The argument 390 * @param name The name of the argument 391 * @throws IllegalArgumentException If value is non-null 392 */ 393 public static void isNull( Object argument, 394 String name ) { 395 if (argument != null) { 396 throw new IllegalArgumentException(CommonI18n.argumentMustBeNull.text(name)); 397 } 398 } 399 400 /** 401 * Check that the object is an instance of the specified Class 402 * 403 * @param argument Value 404 * @param expectedClass Class 405 * @param name The name of the argument 406 * @throws IllegalArgumentException If value is null 407 */ 408 public static void isInstanceOf( Object argument, 409 Class<?> expectedClass, 410 String name ) { 411 isNotNull(argument, name); 412 if (!expectedClass.isInstance(argument)) { 413 throw new IllegalArgumentException(CommonI18n.argumentMustBeInstanceOf.text(name, 414 argument.getClass(), 415 expectedClass.getName())); 416 } 417 } 418 419 /** 420 * Checks that the object is an instance of the specified Class and then returns the object cast to the specified Class 421 * 422 * @param <C> the class type 423 * @param argument Value 424 * @param expectedClass Class 425 * @param name The name of the argument 426 * @return value cast to the specified Class 427 * @throws IllegalArgumentException If value is not an instance of theClass. 428 */ 429 // due to cast in return 430 public static <C> C getInstanceOf( Object argument, 431 Class<C> expectedClass, 432 String name ) { 433 isInstanceOf(argument, expectedClass, name); 434 return expectedClass.cast(argument); 435 } 436 437 /** 438 * Asserts that the specified first object is the same as (==) the specified second object. 439 * 440 * @param <T> 441 * @param argument The argument to assert as the same as <code>object</code>. 442 * @param argumentName The name that will be used within the exception message for the argument should an exception be thrown 443 * @param object The object to assert as the same as <code>argument</code>. 444 * @param objectName The name that will be used within the exception message for <code>object</code> should an exception be 445 * thrown; if <code>null</code> and <code>object</code> is not <code>null</code>, <code>object.toString()</code> will 446 * be used. 447 * @throws IllegalArgumentException If the specified objects are not the same. 448 */ 449 public static <T> void isSame( final T argument, 450 String argumentName, 451 final T object, 452 String objectName ) { 453 if (argument != object) { 454 if (objectName == null) objectName = getObjectName(object); 455 throw new IllegalArgumentException(CommonI18n.argumentMustBeSameAs.text(argumentName, objectName)); 456 } 457 } 458 459 /** 460 * Asserts that the specified first object is not the same as (==) the specified second object. 461 * 462 * @param <T> 463 * @param argument The argument to assert as not the same as <code>object</code>. 464 * @param argumentName The name that will be used within the exception message for the argument should an exception be thrown 465 * @param object The object to assert as not the same as <code>argument</code>. 466 * @param objectName The name that will be used within the exception message for <code>object</code> should an exception be 467 * thrown; if <code>null</code> and <code>object</code> is not <code>null</code>, <code>object.toString()</code> will 468 * be used. 469 * @throws IllegalArgumentException If the specified objects are the same. 470 */ 471 public static <T> void isNotSame( final T argument, 472 String argumentName, 473 final T object, 474 String objectName ) { 475 if (argument == object) { 476 if (objectName == null) objectName = getObjectName(object); 477 throw new IllegalArgumentException(CommonI18n.argumentMustNotBeSameAs.text(argumentName, objectName)); 478 } 479 } 480 481 /** 482 * Asserts that the specified first object is {@link Object#equals(Object) equal to} the specified second object. 483 * 484 * @param <T> 485 * @param argument The argument to assert equal to <code>object</code>. 486 * @param argumentName The name that will be used within the exception message for the argument should an exception be thrown 487 * @param object The object to assert as equal to <code>argument</code>. 488 * @param objectName The name that will be used within the exception message for <code>object</code> should an exception be 489 * thrown; if <code>null</code> and <code>object</code> is not <code>null</code>, <code>object.toString()</code> will 490 * be used. 491 * @throws IllegalArgumentException If the specified objects are not equal. 492 */ 493 public static <T> void isEquals( final T argument, 494 String argumentName, 495 final T object, 496 String objectName ) { 497 if (!argument.equals(object)) { 498 if (objectName == null) objectName = getObjectName(object); 499 throw new IllegalArgumentException(CommonI18n.argumentMustBeEquals.text(argumentName, objectName)); 500 } 501 } 502 503 /** 504 * Asserts that the specified first object is not {@link Object#equals(Object) equal to} the specified second object. 505 * 506 * @param <T> 507 * @param argument The argument to assert equal to <code>object</code>. 508 * @param argumentName The name that will be used within the exception message for the argument should an exception be thrown 509 * @param object The object to assert as equal to <code>argument</code>. 510 * @param objectName The name that will be used within the exception message for <code>object</code> should an exception be 511 * thrown; if <code>null</code> and <code>object</code> is not <code>null</code>, <code>object.toString()</code> will 512 * be used. 513 * @throws IllegalArgumentException If the specified objects are equals. 514 */ 515 public static <T> void isNotEquals( final T argument, 516 String argumentName, 517 final T object, 518 String objectName ) { 519 if (argument.equals(object)) { 520 if (objectName == null) objectName = getObjectName(object); 521 throw new IllegalArgumentException(CommonI18n.argumentMustNotBeEquals.text(argumentName, objectName)); 522 } 523 } 524 525 // ########################## ITERATOR METHODS ################################### 526 527 /** 528 * Checks that the iterator is not empty, and throws an exception if it is. 529 * 530 * @param argument the iterator to check 531 * @param name The name of the argument 532 * @throws IllegalArgumentException If iterator is empty (i.e., iterator.hasNext() returns false) 533 */ 534 public static void isNotEmpty( Iterator<?> argument, 535 String name ) { 536 isNotNull(argument, name); 537 if (!argument.hasNext()) { 538 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeEmpty.text(name)); 539 } 540 } 541 542 // ########################## COLLECTION METHODS ################################### 543 544 /** 545 * Check that the collection is not empty 546 * 547 * @param argument Collection 548 * @param name The name of the argument 549 * @throws IllegalArgumentException If collection is null or empty 550 */ 551 public static void isNotEmpty( Collection<?> argument, 552 String name ) { 553 isNotNull(argument, name); 554 if (argument.isEmpty()) { 555 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeEmpty.text(name)); 556 } 557 } 558 559 /** 560 * Check that the map is not empty 561 * 562 * @param argument Map 563 * @param name The name of the argument 564 * @throws IllegalArgumentException If map is null or empty 565 */ 566 public static void isNotEmpty( Map<?, ?> argument, 567 String name ) { 568 isNotNull(argument, name); 569 if (argument.isEmpty()) { 570 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeEmpty.text(name)); 571 } 572 } 573 574 /** 575 * Check that the array is not empty 576 * 577 * @param argument Array 578 * @param name The name of the argument 579 * @throws IllegalArgumentException If array is null or empty 580 */ 581 public static void isNotEmpty( Object[] argument, 582 String name ) { 583 isNotNull(argument, name); 584 if (argument.length == 0) { 585 throw new IllegalArgumentException(CommonI18n.argumentMayNotBeEmpty.text(name)); 586 } 587 } 588 589 protected static String getObjectName( Object obj ) { 590 return obj == null ? null : "'" + obj.toString() + "'"; 591 } 592 593 /** 594 * Check that the collection contains the value 595 * 596 * @param argument Collection to check 597 * @param value Value to check for, may be null 598 * @param name The name of the argument 599 * @throws IllegalArgumentException If collection is null or doesn't contain value 600 */ 601 public static void contains( Collection<?> argument, 602 Object value, 603 String name ) { 604 isNotNull(argument, name); 605 if (!argument.contains(value)) { 606 throw new IllegalArgumentException(CommonI18n.argumentDidNotContainObject.text(name, getObjectName(value))); 607 } 608 } 609 610 /** 611 * Check that the map contains the key 612 * 613 * @param argument Map to check 614 * @param key Key to check for, may be null 615 * @param name The name of the argument 616 * @throws IllegalArgumentException If map is null or doesn't contain key 617 */ 618 public static void containsKey( Map<?, ?> argument, 619 Object key, 620 String name ) { 621 isNotNull(argument, name); 622 if (!argument.containsKey(key)) { 623 throw new IllegalArgumentException(CommonI18n.argumentDidNotContainKey.text(name, getObjectName(key))); 624 } 625 } 626 627 /** 628 * Check that the collection is not null and contains no nulls 629 * 630 * @param argument Array 631 * @param name The name of the argument 632 * @throws IllegalArgumentException If array is null or has null values 633 */ 634 public static void containsNoNulls( Iterable<?> argument, 635 String name ) { 636 isNotNull(argument, name); 637 int i = 0; 638 for (Object object : argument) { 639 if (object == null) { 640 throw new IllegalArgumentException(CommonI18n.argumentMayNotContainNullValue.text(name, i)); 641 } 642 ++i; 643 } 644 } 645 646 /** 647 * Check that the array is not null and contains no nulls 648 * 649 * @param argument Array 650 * @param name The name of the argument 651 * @throws IllegalArgumentException If array is null or has null values 652 */ 653 public static void containsNoNulls( Object[] argument, 654 String name ) { 655 isNotNull(argument, name); 656 int i = 0; 657 for (Object object : argument) { 658 if (object == null) { 659 throw new IllegalArgumentException(CommonI18n.argumentMayNotContainNullValue.text(name, i)); 660 } 661 ++i; 662 } 663 } 664 665 /** 666 * Check that the collection contains at least the supplied number of elements 667 * 668 * @param argument Collection 669 * @param minimumSize the minimum size 670 * @param name The name of the argument 671 * @throws IllegalArgumentException If collection has a size smaller than the supplied value 672 */ 673 public static void hasSizeOfAtLeast( Collection<?> argument, 674 int minimumSize, 675 String name ) { 676 isNotNull(argument, name); 677 if (argument.size() < minimumSize) { 678 throw new IllegalArgumentException(CommonI18n.argumentMustBeOfMinimumSize.text(name, 679 Collection.class.getSimpleName(), 680 argument.size(), 681 minimumSize)); 682 } 683 } 684 685 /** 686 * Check that the collection contains no more than the supplied number of elements 687 * 688 * @param argument Collection 689 * @param maximumSize the maximum size 690 * @param name The name of the argument 691 * @throws IllegalArgumentException If collection has a size smaller than the supplied value 692 */ 693 public static void hasSizeOfAtMost( Collection<?> argument, 694 int maximumSize, 695 String name ) { 696 isNotNull(argument, name); 697 if (argument.size() > maximumSize) { 698 throw new IllegalArgumentException(CommonI18n.argumentMustBeOfMinimumSize.text(name, 699 Collection.class.getSimpleName(), 700 argument.size(), 701 maximumSize)); 702 } 703 } 704 705 /** 706 * Check that the map contains at least the supplied number of entries 707 * 708 * @param argument the map 709 * @param minimumSize the minimum size 710 * @param name The name of the argument 711 * @throws IllegalArgumentException If the map has a size smaller than the supplied value 712 */ 713 public static void hasSizeOfAtLeast( Map<?, ?> argument, 714 int minimumSize, 715 String name ) { 716 isNotNull(argument, name); 717 if (argument.size() < minimumSize) { 718 throw new IllegalArgumentException(CommonI18n.argumentMustBeOfMinimumSize.text(name, 719 Map.class.getSimpleName(), 720 argument.size(), 721 minimumSize)); 722 } 723 } 724 725 /** 726 * Check that the map contains no more than the supplied number of entries 727 * 728 * @param argument the map 729 * @param maximumSize the maximum size 730 * @param name The name of the argument 731 * @throws IllegalArgumentException If the map has a size smaller than the supplied value 732 */ 733 public static void hasSizeOfAtMost( Map<?, ?> argument, 734 int maximumSize, 735 String name ) { 736 isNotNull(argument, name); 737 if (argument.size() > maximumSize) { 738 throw new IllegalArgumentException(CommonI18n.argumentMustBeOfMinimumSize.text(name, 739 Map.class.getSimpleName(), 740 argument.size(), 741 maximumSize)); 742 } 743 } 744 745 /** 746 * Check that the array contains at least the supplied number of elements 747 * 748 * @param argument the array 749 * @param minimumSize the minimum size 750 * @param name The name of the argument 751 * @throws IllegalArgumentException If the array has a size smaller than the supplied value 752 */ 753 public static void hasSizeOfAtLeast( Object[] argument, 754 int minimumSize, 755 String name ) { 756 isNotNull(argument, name); 757 if (argument.length < minimumSize) { 758 throw new IllegalArgumentException(CommonI18n.argumentMustBeOfMinimumSize.text(name, 759 Object[].class.getSimpleName(), 760 argument.length, 761 minimumSize)); 762 } 763 } 764 765 /** 766 * Check that the array contains no more than the supplied number of elements 767 * 768 * @param argument the array 769 * @param maximumSize the maximum size 770 * @param name The name of the argument 771 * @throws IllegalArgumentException If the array has a size smaller than the supplied value 772 */ 773 public static void hasSizeOfAtMost( Object[] argument, 774 int maximumSize, 775 String name ) { 776 isNotNull(argument, name); 777 if (argument.length > maximumSize) { 778 throw new IllegalArgumentException(CommonI18n.argumentMustBeOfMinimumSize.text(name, 779 Object[].class.getSimpleName(), 780 argument.length, 781 maximumSize)); 782 } 783 } 784 785 private CheckArg() { 786 // prevent construction 787 } 788 }