You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2010/04/14 22:03:46 UTC

svn commit: r934166 - in /ofbiz/trunk/framework/base: build.xml src/org/ofbiz/base/util/Assert.java src/org/ofbiz/base/util/test/AssertTests.java

Author: adrianc
Date: Wed Apr 14 20:03:46 2010
New Revision: 934166

URL: http://svn.apache.org/viewvc?rev=934166&view=rev
Log:
Added an Assert class. It should make argument checking easier.

Added:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java   (with props)
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java   (with props)
Modified:
    ofbiz/trunk/framework/base/build.xml

Modified: ofbiz/trunk/framework/base/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/build.xml?rev=934166&r1=934165&r2=934166&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/build.xml (original)
+++ ofbiz/trunk/framework/base/build.xml Wed Apr 14 20:03:46 2010
@@ -41,6 +41,7 @@ under the License.
     </patternset>
 
     <filelist id="test.classes" dir="${src.dir}">
+        <file name="org/ofbiz/base/util/test/AssertTests.java"/>
         <file name="org/ofbiz/base/lang/test/ComparableRangeTests.java"/>
         <file name="org/ofbiz/base/util/test/IndentingWriterTests.java"/>
         <file name="org/ofbiz/base/util/test/ObjectTypeTests.java"/>

Added: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java?rev=934166&view=auto
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java (added)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java Wed Apr 14 20:03:46 2010
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.ofbiz.base.util;
+
+/** Basic assertions.
+ * 
+ */
+public class Assert {
+
+    /**
+     * Tests if an argument is not null and can be cast to a specified class.
+     * <p><code>Assert.argumentCanBeCastTo("foo", foo, Map.class);</code></p>
+     * 
+     * @param argumentName
+     * @param argumentObject
+     * @param targetClass
+     * @throws IllegalArgumentException
+     */
+    public static void argumentCanBeCastTo(String argumentName, Object argumentObject, Class<?> targetClass) {
+        argumentNotNull(argumentName, argumentObject);
+        if (!targetClass.isAssignableFrom(argumentObject.getClass())) {
+            throw new IllegalArgumentException(argumentName + " is not a " + targetClass.getName());
+        }
+    }
+
+    /**
+     * Tests if an argument is not null and is equal to an object.
+     * <p><code>Assert.argumentEqualsObject("foo", foo, new Foo());</code></p>
+     * 
+     * @param argumentName
+     * @param argumentObject
+     * @param targetObject
+     * @throws IllegalArgumentException
+     */
+    public static void argumentEqualsObject(String argumentName, Object argumentObject, Object targetObject) {
+        argumentNotNull(argumentName, argumentObject);
+        if (!argumentObject.equals(targetObject)) {
+            throw new IllegalArgumentException(argumentName + " is not equal to " + targetObject);
+        }
+    }
+
+    /**
+     * Tests if an argument is not null and is an instance of a class.
+     * <p><code>Assert.argumentIsClass("foo", foo, HashMap.class);</code></p>
+     * 
+     * @param argumentName
+     * @param argumentObject
+     * @param targetClass
+     * @throws IllegalArgumentException
+     */
+    public static void argumentIsClass(String argumentName, Object argumentObject, Class<?> targetClass) {
+        argumentNotNull(argumentName, argumentObject);
+        if (argumentObject.getClass() != targetClass) {
+            throw new IllegalArgumentException(argumentName + " is not a " + targetClass.getName());
+        }
+    }
+
+    /**
+     * Tests an argument for <code>null</code>.
+     * <p><code>Assert.argumentNotNull("foo", foo);</code></p>
+     * 
+     * @param argumentName
+     * @param objectToTest
+     * @throws IllegalArgumentException
+     */
+    public static void argumentNotNull(String argumentName, Object objectToTest) {
+        if (objectToTest == null) {
+            throw new IllegalArgumentException(argumentName + " cannot be null");
+        }
+    }
+
+    /**
+     * Tests a list of arguments for <code>null</code>.
+     * <p><code>Assert.argumentsNotNull("foo", foo, "bar", bar, ...);</code></p>
+     * 
+     * @param arguments
+     * @throws IllegalArgumentException
+     */
+    public static void argumentsNotNull(Object... arguments) {
+        for (int i = 0; i < arguments.length;) {
+            argumentNotNull((String) arguments[i++], arguments[i++]);
+        }
+    }
+
+    private Assert() {}
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/Assert.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java?rev=934166&view=auto
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java (added)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java Wed Apr 14 20:03:46 2010
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.ofbiz.base.util.test;
+
+import java.util.Map;
+import org.ofbiz.base.util.Assert;
+import junit.framework.TestCase;
+
+/**
+ * Assert tests {@link org.ofbiz.base.util.Assert}.
+ *
+ */
+public class AssertTests extends TestCase {
+
+    public AssertTests(String name) {
+        super(name);
+    }
+
+    public void testAssert(){
+        Object testObject = new Object();
+
+        //-----------------------------------------------------------------------
+        try {
+            Assert.argumentNotNull("foo", new Object());
+        } catch (Exception e) {
+            fail("argumentNotNull threw an exception - " + e);
+        }
+        try {
+            Assert.argumentNotNull("foo", null);
+            fail("argumentNotNull - IllegalArgumentException not thrown");
+        } catch (IllegalArgumentException e) {}
+
+        //-----------------------------------------------------------------------
+        try {
+            Assert.argumentsNotNull("foo", testObject, "bar", testObject);
+        } catch (Exception e) {
+            fail("argumentsNotNull threw an exception - " + e);
+        }
+        try {
+            Assert.argumentsNotNull("foo", testObject, "bar", null);
+            fail("argumentsNotNull - IllegalArgumentException not thrown");
+        } catch (IllegalArgumentException e) {}
+
+        //-----------------------------------------------------------------------
+        try {
+            Assert.argumentIsClass("foo", testObject, Object.class);
+        } catch (Exception e) {
+            fail("argumentIsClass threw an exception - " + e);
+        }
+        try {
+            Assert.argumentIsClass("foo", testObject, AssertTests.class);
+            fail("argumentIsClass - IllegalArgumentException not thrown");
+        } catch (IllegalArgumentException e) {}
+
+        //-----------------------------------------------------------------------
+        try {
+            Assert.argumentEqualsObject("foo", testObject, testObject);
+        } catch (Exception e) {
+            fail("argumentEqualsObject threw an exception - " + e);
+        }
+        try {
+            Assert.argumentEqualsObject("foo", testObject, this);
+            fail("argumentEqualsObject - IllegalArgumentException not thrown");
+        } catch (IllegalArgumentException e) {}
+
+        //-----------------------------------------------------------------------
+        try {
+            Assert.argumentEqualsObject("foo", testObject, testObject);
+        } catch (Exception e) {
+            fail("argumentEqualsObject threw an exception - " + e);
+        }
+        try {
+            Assert.argumentEqualsObject("foo", testObject, this);
+            fail("argumentEqualsObject - IllegalArgumentException not thrown");
+        } catch (IllegalArgumentException e) {}
+
+        //-----------------------------------------------------------------------
+        try {
+            Assert.argumentCanBeCastTo("foo", testObject, Object.class);
+        } catch (Exception e) {
+            fail("argumentCanBeCastTo threw an exception - " + e);
+        }
+        try {
+            Assert.argumentCanBeCastTo("foo", this, Map.class);
+            fail("argumentCanBeCastTo - IllegalArgumentException not thrown");
+        } catch (IllegalArgumentException e) {}
+    }
+}

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/AssertTests.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain