001    /*--------------------------------------------------------------------------+
002    $Id: CCSMPre.java 26283 2010-02-18 11:18:57Z juergens $
003    |                                                                          |
004    | Copyright 2005-2010 Technische Universitaet Muenchen                     |
005    |                                                                          |
006    | Licensed under the Apache License, Version 2.0 (the "License");          |
007    | you may not use this file except in compliance with the License.         |
008    | You may obtain a copy of the License at                                  |
009    |                                                                          |
010    |    http://www.apache.org/licenses/LICENSE-2.0                            |
011    |                                                                          |
012    | Unless required by applicable law or agreed to in writing, software      |
013    | distributed under the License is distributed on an "AS IS" BASIS,        |
014    | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
015    | See the License for the specific language governing permissions and      |
016    | limitations under the License.                                           |
017    +--------------------------------------------------------------------------*/
018    package edu.tum.cs.commons.assertion;
019    
020    /**
021     * This class provides simple methods to check preconditions. Please see refer
022     * to the {@linkplain edu.tum.cs.commons.assertion package documentation} for a
023     * discussion of assertions vs preconditions.
024     * 
025     * @author deissenb
026     * @author $Author: juergens $
027     * @version $Rev: 26283 $
028     * @levd.rating GREEN Hash: 4BF2AFF0A3284F2E41474F6ADB98344E
029     */
030    public class CCSMPre {
031    
032            /**
033             * Checks if a condition is <code>true</code>.
034             * 
035             * @param condition
036             *            condition to check
037             * @param message
038             *            exception message
039             * @throws PreconditionException
040             *             if the condition is <code>false</code>
041             */
042            public static void isTrue(boolean condition, String message)
043                            throws PreconditionException {
044                    if (!condition) {
045                            throw new PreconditionException(message);
046                    }
047            }
048    
049            /**
050             * Checks if a condition is <code>false</code>.
051             * 
052             * @param condition
053             *            condition to check
054             * @param message
055             *            exception message
056             * @throws PreconditionException
057             *             if the condition is <code>true</code>
058             */
059            public static void isFalse(boolean condition, String message)
060                            throws PreconditionException {
061                    if (condition) {
062                            throw new PreconditionException(message);
063                    }
064            }
065    
066            /** Checks that the object is a instance of the class */
067            public static void isInstanceOf(Object object, Class<?> clazz) {
068                    isTrue(clazz.isInstance(object), object + " must be instance of "
069                                    + clazz);
070            }
071    
072            /**
073             * Throws a {@link PreconditionException} with the provided message.
074             */
075            public static void fail(String message) throws PreconditionException {
076                    throw new PreconditionException(message);
077            }
078    
079            /**
080             * Checks whether a reference is <code>null</code>.
081             * 
082             * @param reference
083             *            reference to check
084             * @throws AssertionError
085             *             if the reference is <code>null</code>
086             */
087            public static void isNotNull(Object reference) throws AssertionError {
088                    isNotNull(reference, "Reference must not be null");
089            }
090    
091            /**
092             * Checks whether a reference is <code>null</code>.
093             * 
094             * @param reference
095             *            reference to check
096             * @param message
097             *            exception message
098             * @throws AssertionError
099             *             if the reference is <code>null</code>
100             */
101            public static void isNotNull(Object reference, String message)
102                            throws AssertionError {
103                    if (reference == null) {
104                            throw new AssertionError(message);
105                    }
106            }
107    
108    }