Skip to main content
summaryrefslogtreecommitdiffstats
blob: f3d1ee04ab3812b56bafc17e9024cfe33a27e44d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/*******************************************************************************
 * Copyright (c) 2001, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Jens Lukowski/Innoopract - initial renaming/restructuring
 *     
 *******************************************************************************/
package org.eclipse.wst.sse.core.internal.util;


/**
 * <code>Assert</code> is useful for for embedding runtime sanity checks in
 * code. The predicate methods all test a condition and throw some type of
 * unchecked exception if the condition does not hold.
 * <p>
 * Assertion failure exceptions, like most runtime exceptions, are thrown when
 * something is misbehaving. Assertion failures are invariably unspecified
 * behavior; consequently, clients should never rely on these being thrown
 * (and certainly should not being catching them specifically).
 * </p>
 */
public final class Assert {

	/**
	 * <code>AssertionFailedException</code> is a runtime exception thrown
	 * by some of the methods in <code>Assert</code>.
	 * <p>
	 * This class is not declared public to prevent some misuses; programs
	 * that catch or otherwise depend on assertion failures are susceptible to
	 * unexpected breakage when assertions in the code are added or removed.
	 * </p>
	 */
	class AssertionFailedException extends RuntimeException {
		/**
		 * Comment for <code>serialVersionUID</code>
		 */
		private static final long serialVersionUID = 1L;

		/**
		 * Constructs a new exception.
		 */
		public AssertionFailedException() {
			super();
		}

		/**
		 * Constructs a new exception with the given message.
		 */
		public AssertionFailedException(String detail) {
			super(detail);
		}
	}

	/**
	 * Asserts that an argument is legal. If the given boolean is not
	 * <code>true</code>, an <code>IllegalArgumentException</code> is
	 * thrown.
	 * 
	 * @param expression
	 *            the outcode of the check
	 * @return <code>true</code> if the check passes (does not return if the
	 *         check fails)
	 * @exception IllegalArgumentException
	 *                if the legality test failed
	 */
	public static boolean isLegal(boolean expression) {
		return isLegal(expression, ""); //$NON-NLS-1$
	}

	/**
	 * Asserts that an argument is legal. If the given boolean is not
	 * <code>true</code>, an <code>IllegalArgumentException</code> is
	 * thrown. The given message is included in that exception, to aid
	 * debugging.
	 * 
	 * @param expression
	 *            the outcode of the check
	 * @param message
	 *            the message to include in the exception
	 * @return <code>true</code> if the check passes (does not return if the
	 *         check fails)
	 * @exception IllegalArgumentException
	 *                if the legality test failed
	 */
	public static boolean isLegal(boolean expression, String message) {
		if (!expression)
			throw new IllegalArgumentException();
		return expression;
	}

	/**
	 * Asserts that the given object is not <code>null</code>. If this is
	 * not the case, some kind of unchecked exception is thrown.
	 * 
	 * @param object
	 *            the value to test
	 * @exception IllegalArgumentException
	 *                if the object is <code>null</code>
	 */
	public static void isNotNull(Object object) {
		isNotNull(object, ""); //$NON-NLS-1$
	}

	/**
	 * Asserts that the given object is not <code>null</code>. If this is
	 * not the case, some kind of unchecked exception is thrown. The given
	 * message is included in that exception, to aid debugging.
	 * 
	 * @param object
	 *            the value to test
	 * @param message
	 *            the message to include in the exception
	 * @exception IllegalArgumentException
	 *                if the object is <code>null</code>
	 */
	public static void isNotNull(Object object, String message) {
		if (object == null) {
			//Logger.log(Logger.ERROR, "null_argument: " + message); //$NON-NLS-1$
			throw new Assert().new AssertionFailedException(message);
		}
	}

	/**
	 * Asserts that the given boolean is <code>true</code>. If this is not
	 * the case, some kind of unchecked exception is thrown.
	 * 
	 * @param expression
	 *            the outcode of the check
	 * @return <code>true</code> if the check passes (does not return if the
	 *         check fails)
	 */
	public static boolean isTrue(boolean expression) {
		return isTrue(expression, ""); //$NON-NLS-1$
	}

	/**
	 * Asserts that the given boolean is <code>true</code>. If this is not
	 * the case, some kind of unchecked exception is thrown. The given message
	 * is included in that exception, to aid debugging.
	 * 
	 * @param expression
	 *            the outcode of the check
	 * @param message
	 *            the message to include in the exception
	 * @return <code>true</code> if the check passes (does not return if the
	 *         check fails)
	 */
	public static boolean isTrue(boolean expression, String message) {
		if (!expression) {
			throw new Assert().new AssertionFailedException(message);
		}
		return expression;
	}

	/* This class is not intended to be instantiated. */
	private Assert() {
		super();
	}
}

Back to the top