/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.core.util;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.Map;
import org.apache.commons.collections.Predicate;
import org.apache.commons.lang.StringUtils;
/**
* @author <a href="mailto:thomas.hoedl@aschauer-edv.at">Thomas Hoedl(asc042)</a>
* @version $Revision
*
*/
public final class Assert { // NOPMD
private static final int INPUT_MAX_WIDTH = 30;
/**
* Avoid direct creation.
*/
private Assert() {
super();
}
/**
* @param input
* input to test.
* @param predicate
* predicate to apply.
* @throws IllegalArgumentException
* if predicate rejected input.
*/
public static void assertTrue( final Object input, final Predicate predicate ) throws IllegalArgumentException {
if ( predicate.evaluate( input ) ) {
return;
}
final StringBuilder builder = new StringBuilder();
builder.append( "Predicate rejected input [predicate=" );
builder.append( predicate );
builder.append( ", input=" );
builder.append( StringUtils.abbreviate( String.valueOf( input ), INPUT_MAX_WIDTH ) );
builder.append( "]" );
throw new IllegalArgumentException( builder.toString() );
}
/**
* @param bool
* boolean to test.
* @throws IllegalArgumentException
* if bool is false.
*/
public static void assertTrue( final boolean bool ) throws IllegalArgumentException {
assertTrue( bool, "Value cannot be false" );
}
/**
* @param message
* message.
* @param bool
* boolean to test.
* @param args
* arguments to set, optional
* @throws IllegalArgumentException
* if bool is false.
*/
public static void assertTrue( final boolean bool, final String message, final Object... args ) throws IllegalArgumentException {
if ( bool ) {
return;
}
if ( args != null && args.length > 0 ) {
throw new IllegalArgumentException( MessageFormat.format( message, args ) );
}
throw new IllegalArgumentException( message );
}
/**
* @param bool
* boolean to test.
* @throws IllegalArgumentException
* if bool is true.
*/
public static void assertFalse( final boolean bool ) throws IllegalArgumentException {
assertFalse( bool, "Value cannot be true" );
}
/**
* @param bool
* boolean to test.
* @param message
* message.
* @param args
* optinal arguments.
* @throws IllegalArgumentException
* if bool is true.
*/
public static void assertFalse( final boolean bool, final String message, final Object... args ) throws IllegalArgumentException {
if ( !bool ) {
return;
}
if ( args != null && args.length > 0 ) {
throw new IllegalArgumentException( MessageFormat.format( message, args ) );
}
throw new IllegalArgumentException( message );
}
/**
* @param input
* input to test.
* @param predicate
* predicate to apply.
* @throws IllegalArgumentException
* if predicate didn't rejected input.
*/
public static void assertFalse( final Object input, final Predicate predicate ) throws IllegalArgumentException {
if ( !predicate.evaluate( input ) ) {
return;
}
final StringBuilder builder = new StringBuilder();
builder.append( "Predicate didn't rejected input [predicate=" );
builder.append( predicate );
builder.append( ", input=" );
builder.append( StringUtils.abbreviate( String.valueOf( input ), INPUT_MAX_WIDTH ) );
builder.append( "]" );
throw new IllegalArgumentException( builder.toString() );
}
/**
* @param collection
* collection to test.
* @throws IllegalArgumentException
* if collection is null or empty.
*/
public static void assertNotNullOrEmpty( final Collection<?> collection ) throws IllegalArgumentException {
if ( collection == null || collection.isEmpty() ) {
throw new IllegalArgumentException( "Collection cannot be null or empty" );
}
}
/**
* @param collection
* collection to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if collection is null or empty.
*/
public static void assertNotNullOrEmpty( final Collection<?> collection, final String message ) throws IllegalArgumentException {
if ( collection == null || collection.isEmpty() ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param array
* collection to test.
* @throws IllegalArgumentException
* if collection is null or empty.
*/
public static void assertNotNullOrEmpty( final Object[] array ) throws IllegalArgumentException {
if ( array == null || array.length == 0 ) {
throw new IllegalArgumentException( "Array cannot be null or empty" );
}
}
/**
* @param array
* array to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if collection is null or empty.
*/
public static void assertNotNullOrEmpty( final Object[] array, final String message ) throws IllegalArgumentException {
if ( array == null || array.length == 0 ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param map
* collection to test.
* @throws IllegalArgumentException
* if collection is null or empty.
*/
public static void assertNotNullOrEmpty( final Map<?, ?> map ) throws IllegalArgumentException {
if ( map == null || map.isEmpty() ) {
throw new IllegalArgumentException( "Map cannot be null or empty" );
}
}
/**
* @param map
* map to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if collection is null or empty.
*/
public static void assertNotNullOrEmpty( final Map<?, ?> map, final String message ) throws IllegalArgumentException {
if ( map == null || map.isEmpty() ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param input
* input to test.
* @throws IllegalArgumentException
* if input is null or empty.
*/
public static void assertNotEmpty( final String input ) throws IllegalArgumentException {
if ( StringUtils.isEmpty( input ) ) {
throw new IllegalArgumentException( "Input cannot be null or empty" );
}
}
/**
* @param input
* input to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if input is null or empty.
*/
public static void assertNotEmpty( final String input, final String message ) throws IllegalArgumentException {
if ( StringUtils.isEmpty( input ) ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param input
* input to test.
* @throws IllegalArgumentException
* if input is null or empty.
*/
public static void assertNotBlank( final String input ) throws IllegalArgumentException {
if ( StringUtils.isBlank( input ) ) {
throw new IllegalArgumentException( "Input cannot be null or empty" );
}
}
/**
* @param input
* input to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if input is null or empty.
*/
public static void assertNotBlank( final String input, final String message ) throws IllegalArgumentException {
if ( StringUtils.isBlank( input ) ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param input
* input to test.
* @throws IllegalArgumentException
* if input is null.
*/
public static void assertNotNull( final Object input ) throws IllegalArgumentException {
if ( input == null ) {
throw new IllegalArgumentException( "Input cannot be null" );
}
}
/**
* @param input
* input to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if input is null.
*/
public static void assertNotNull( final Object input, final String message ) throws IllegalArgumentException {
if ( input == null ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param input
* input to test.
* @throws IllegalArgumentException
* if input isn't null.
*/
public static void assertNull( final Object input ) throws IllegalArgumentException {
if ( input != null ) {
throw new IllegalArgumentException( "Input must be null" );
}
}
/**
* @param input
* input to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if input isn't null.
*/
public static void assertNull( final Object input, final String message ) throws IllegalArgumentException {
if ( input != null ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param value
* value to test.
* @throws IllegalArgumentException
* if value is null or <= 0.
*/
public static void assertGreaterZero( final Integer value ) throws IllegalArgumentException {
assertGreaterZero( value, "Value must be greater than 0" );
}
/**
* @param value
* value to test.
* @throws IllegalArgumentException
* if value is null or <= 0.
*/
public static void assertGreaterZero( final Double value ) throws IllegalArgumentException {
assertGreaterZero( value, "Value must be greater than 0" );
}
/**
* @param value
* value to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if value is null or <= 0.
*/
public static void assertGreaterZero( final Double value, final String message ) throws IllegalArgumentException {
if ( value == null || value <= 0 ) {
throw new IllegalArgumentException( message );
}
}
/**
* @param value
* value to test.
* @param message
* the message.
* @throws IllegalArgumentException
* if value is null or <= 0.
*/
public static void assertGreaterZero( final Integer value, final String message ) throws IllegalArgumentException {
if ( value == null || value <= 0 ) {
throw new IllegalArgumentException( message );
}
}
}