Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'archive/org.eclipse.qvt.declarative.editor.imp.runtime/src/org/eclipse/imp/core/Assert.java')
-rw-r--r--archive/org.eclipse.qvt.declarative.editor.imp.runtime/src/org/eclipse/imp/core/Assert.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/archive/org.eclipse.qvt.declarative.editor.imp.runtime/src/org/eclipse/imp/core/Assert.java b/archive/org.eclipse.qvt.declarative.editor.imp.runtime/src/org/eclipse/imp/core/Assert.java
new file mode 100644
index 000000000..9de055e22
--- /dev/null
+++ b/archive/org.eclipse.qvt.declarative.editor.imp.runtime/src/org/eclipse/imp/core/Assert.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+* Copyright (c) 2007 IBM Corporation.
+* 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:
+* Robert Fuhrer (rfuhrer@watson.ibm.com) - initial API and implementation
+
+*******************************************************************************/
+
+package org.eclipse.imp.core;
+
+/**
+ * <code>Assert</code> is useful for for embedding runtime sanity checks in code. The static 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 (or not
+ * thrown). <b>If you find yourself in the position where you need to catch an assertion failure, you have most
+ * certainly written your program incorrectly.</b>
+ * </p>
+ * <p>
+ * Note that an <code>assert</code> statement is slated to be added to the Java language in JDK 1.4, rending this
+ * class obsolete.
+ * </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>
+ */
+ private static class AssertionFailedException extends RuntimeException {
+ /** This class is not intended to be serialized. */
+ private static final long serialVersionUID= 1L;
+
+ /**
+ * Constructs a new exception.
+ */
+ public AssertionFailedException() {
+ }
+
+ /**
+ * Constructs a new exception with the given message.
+ *
+ * @param detail
+ * the detail message
+ */
+ public AssertionFailedException(String detail) {
+ super(detail);
+ }
+ }
+
+ /* This class is not intended to be instantiated. */
+ private Assert() {
+ }
+
+ /**
+ * Asserts that the given object is not <code>null</code>. If this is not the case, some kind of unchecked
+ * exception is thrown.
+ * <p>
+ * As a general rule, parameters passed to API methods must not be <code>null</code> unless <b>explicitly</b>
+ * allowed in the method's specification. Similarly, results returned from API methods are never <code>null</code>
+ * unless <b>explicitly</b> allowed in the method's specification. Implementations are encouraged to make regular
+ * use of <code>Assert.isNotNull</code> to ensure that <code>null</code> parameters are detected as early as
+ * possible.
+ * </p>
+ *
+ * @param object
+ * the value to test
+ */
+ public static void isNotNull(Object object) {
+ // succeed as quickly as possible
+ if (object != null) {
+ return;
+ }
+ 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.
+ * <p>
+ * As a general rule, parameters passed to API methods must not be <code>null</code> unless <b>explicitly</b>
+ * allowed in the method's specification. Similarly, results returned from API methods are never <code>null</code>
+ * unless <b>explicitly</b> allowed in the method's specification. Implementations are encouraged to make regular
+ * use of <code>Assert.isNotNull</code> to ensure that <code>null</code> parameters are detected as early as
+ * possible.
+ * </p>
+ *
+ * @param object
+ * the value to test
+ * @param message
+ * the message to include in the exception
+ */
+ public static void isNotNull(Object object, String message) {
+ if (object == null)
+ throw new AssertionFailedException(IMPMessages.Assert_null_argument + 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 outcome of the check
+ * @return <code>true</code> if the check passes (does not return if the check fails)
+ */
+ public static boolean isTrue(boolean expression) {
+ // succeed as quickly as possible
+ if (expression) {
+ return true;
+ }
+ 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 outcome 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 AssertionFailedException(IMPMessages.Assert_assertion_failed + message);
+ return expression;
+ }
+
+}

Back to the top