package hirondelle.movies.util; import java.util.Collection; /** Utility methods for common argument validations. <P> Replace <tt>if</tt> statements at the start of a method with more compact method calls. */ public final class Args { /** If <tt>aObject</tt> is null, throw a <tt>NullPointerException</tt>. <P>Use cases : <pre> doSomething( SoccerBall aBall ){ //call some method on the argument : //if aBall is null, then exception is automatically thrown, so //there is no need for an explicit check for null. aBall.inflate(); //assign to a corresponding field (common in constructors): //if aBall is null, no exception is immediately thrown, so //an explicit check for null may be useful here Args.checkForNull( aBall ); fBall = aBall; //passed on to some other method as param : //it may or may not be appropriate to have an explicit check //for null here, according the needs of the problem Args.checkForNull( aBall ); //?? fReferee.verify( aBall ); } </pre> */ public static void checkForNull(Object aObject) { if ( aObject == null ) { throw new NullPointerException(); } } /** Throw an <tt>IllegalArgumentException</tt> if <tt>aText</tt> does not satisfy {@link Util#textHasContent}. <P>Most text used in an application is meaningful only if it has visible content. */ public static void checkForContent(String aText){ if( ! Util.textHasContent(aText) ){ throw new IllegalArgumentException("Text has no visible content"); } } /** Throw an <tt>IllegalArgumentException</tt> if {@link Util#isInRange} returns <tt>false</tt>. @param aLow is less than or equal to <tt>aHigh</tt>. */ public static void checkForRange( int aNumber, int aLow, int aHigh ) { if ( ! Util.isInRange(aNumber, aLow, aHigh) ) { throw new IllegalArgumentException(aNumber + " not in range " + aLow + ".." + aHigh); } } /** Throw an <tt>IllegalArgumentException</tt> only if <tt>aCollection.isEmpty</tt> returns <tt>true</tt>. */ public static void checkForEmpty(Collection aCollection){ if ( aCollection.isEmpty() ) { throw new IllegalArgumentException("Collection is empty."); } } }