You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by vg...@apache.org on 2006/09/02 16:17:15 UTC

svn commit: r439601 - in /jakarta/commons/proper/beanutils/trunk/src: java/org/apache/commons/beanutils/converters/ test/org/apache/commons/beanutils/converters/

Author: vgritsenko
Date: Sat Sep  2 07:17:15 2006
New Revision: 439601

URL: http://svn.apache.org/viewvc?rev=439601&view=rev
Log:
BEANUTILS-239: Better implementation of SqlDateConverter.
Modified SqlDateConverter, SqlTimeConverter and SqlTimestampConverter
to accept java.util.Date and Calendar object instances. Added tests.

Added:
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java   (with props)
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java   (with props)
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java   (with props)
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java   (with props)
Modified:
    jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlDateConverter.java
    jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimeConverter.java
    jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimestampConverter.java

Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlDateConverter.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlDateConverter.java?rev=439601&r1=439600&r2=439601&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlDateConverter.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlDateConverter.java Sat Sep  2 07:17:15 2006
@@ -20,6 +20,8 @@
 
 
 import java.sql.Date;
+import java.util.Calendar;
+
 import org.apache.commons.beanutils.ConversionException;
 import org.apache.commons.beanutils.Converter;
 
@@ -107,6 +109,14 @@
 
         if (value instanceof Date) {
             return (value);
+        }
+
+        if (value instanceof java.util.Date) {
+            return new Date(((java.util.Date)value).getTime());
+        }
+
+        if (value instanceof Calendar) {
+            return new Date(((Calendar)value).getTime().getTime());
         }
 
         try {

Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimeConverter.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimeConverter.java?rev=439601&r1=439600&r2=439601&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimeConverter.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimeConverter.java Sat Sep  2 07:17:15 2006
@@ -20,6 +20,9 @@
 
 
 import java.sql.Time;
+import java.util.Calendar;
+import java.util.Date;
+
 import org.apache.commons.beanutils.ConversionException;
 import org.apache.commons.beanutils.Converter;
 
@@ -107,6 +110,14 @@
 
         if (value instanceof Time) {
             return (value);
+        }
+
+        if (value instanceof Date) {
+            return new Time(((Date)value).getTime());
+        }
+
+        if (value instanceof Calendar) {
+            return new Time(((Calendar)value).getTime().getTime());
         }
 
         try {

Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimestampConverter.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimestampConverter.java?rev=439601&r1=439600&r2=439601&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimestampConverter.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/converters/SqlTimestampConverter.java Sat Sep  2 07:17:15 2006
@@ -20,6 +20,9 @@
 
 
 import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Date;
+
 import org.apache.commons.beanutils.ConversionException;
 import org.apache.commons.beanutils.Converter;
 
@@ -107,6 +110,14 @@
 
         if (value instanceof Timestamp) {
             return (value);
+        }
+
+        if (value instanceof Date) {
+            return new Timestamp(((Date)value).getTime());
+        }
+
+        if (value instanceof Calendar) {
+            return new Timestamp(((Calendar)value).getTime().getTime());
         }
 
         try {

Added: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java?rev=439601&view=auto
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java (added)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java Sat Sep  2 07:17:15 2006
@@ -0,0 +1,91 @@
+/*
+ * 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.apache.commons.beanutils.converters;
+
+import java.util.Date;
+
+import junit.framework.TestCase;
+import org.apache.commons.beanutils.Converter;
+import org.apache.commons.beanutils.ConversionException;
+
+/**
+ * Abstract base for <Date>Converter classes.
+ *
+ * @version $Revision$ $Date$
+ */
+
+public abstract class DateConverterTestBase extends TestCase {
+
+    // ------------------------------------------------------------------------
+
+    public DateConverterTestBase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------------------------
+
+    protected abstract Converter makeConverter();
+    protected abstract Class getExpectedType();
+
+    // ------------------------------------------------------------------------
+
+    /**
+     * Assumes ConversionException in response to covert(getExpectedType(), null).
+     */
+    public void testConvertNull() throws Exception {
+        try {
+            makeConverter().convert(getExpectedType(), null);
+            fail("Expected ConversionException");
+        } catch(ConversionException e) {
+            // expected
+        }
+    }
+
+    /**
+     * Assumes convert() returns some non-null
+     * instance of getExpectedType().
+     */
+    public void testConvertDate() throws Exception {
+        String[] message= {
+            "from Date",
+            "from Calendar",
+            "from SQL Date",
+            "from SQL Time",
+            "from SQL Timestamp"
+        };
+
+        long now = System.currentTimeMillis();
+
+        Object[] date = {
+            new Date(now),
+            new java.util.GregorianCalendar(),
+            new java.sql.Date(now),
+            new java.sql.Time(now),
+            new java.sql.Timestamp(now)
+        };
+
+        for (int i = 0; i < date.length; i++) {
+            Object val = makeConverter().convert(getExpectedType(), date[i]);
+            assertNotNull("Convert " + message[i] + " should not be null", val);
+            assertTrue("Convert " + message[i] + " should return a " + getExpectedType().getName(),
+                       getExpectedType().isInstance(val));
+            assertEquals("Convert " + message[i] + " should return a " + date[0],
+                         now, ((Date) val).getTime());
+        }
+    }
+}

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/DateConverterTestBase.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java?rev=439601&view=auto
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java (added)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java Sat Sep  2 07:17:15 2006
@@ -0,0 +1,53 @@
+/*
+ * 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.apache.commons.beanutils.converters;
+
+import java.sql.Date;
+
+import junit.framework.TestSuite;
+import org.apache.commons.beanutils.Converter;
+
+/**
+ * Test Case for the {@link SqlDateConverter} class.
+ *
+ * @version $Revision$ $Date$
+ */
+
+public class SqlDateConverterTestCase extends DateConverterTestBase {
+
+    public SqlDateConverterTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------------------------
+
+    public static TestSuite suite() {
+        return new TestSuite(SqlDateConverterTestCase.class);
+    }
+
+    // ------------------------------------------------------------------------
+
+    protected Converter makeConverter() {
+        return new SqlDateConverter();
+    }
+
+    protected Class getExpectedType() {
+        return Date.class;
+    }
+
+}

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlDateConverterTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java?rev=439601&view=auto
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java (added)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java Sat Sep  2 07:17:15 2006
@@ -0,0 +1,53 @@
+/*
+ * 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.apache.commons.beanutils.converters;
+
+import java.sql.Time;
+
+import junit.framework.TestSuite;
+import org.apache.commons.beanutils.Converter;
+
+/**
+ * Test Case for the {@link SqlTimeConverter} class.
+ *
+ * @version $Revision$ $Date$
+ */
+
+public class SqlTimeConverterTestCase extends DateConverterTestBase {
+
+    public SqlTimeConverterTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------------------------
+
+    public static TestSuite suite() {
+        return new TestSuite(SqlTimeConverterTestCase.class);
+    }
+
+    // ------------------------------------------------------------------------
+
+    protected Converter makeConverter() {
+        return new SqlTimeConverter();
+    }
+
+    protected Class getExpectedType() {
+        return Time.class;
+    }
+
+}
\ No newline at end of file

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimeConverterTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java?rev=439601&view=auto
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java (added)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java Sat Sep  2 07:17:15 2006
@@ -0,0 +1,53 @@
+/*
+ * 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.apache.commons.beanutils.converters;
+
+import java.sql.Timestamp;
+
+import junit.framework.TestSuite;
+import org.apache.commons.beanutils.Converter;
+
+/**
+ * Test Case for the {@link SqlTimestampConverter} class.
+ *
+ * @version $Revision$ $Date$
+ */
+
+public class SqlTimestampConverterTestCase extends DateConverterTestBase {
+
+    public SqlTimestampConverterTestCase(String name) {
+        super(name);
+    }
+
+    // ------------------------------------------------------------------------
+
+    public static TestSuite suite() {
+        return new TestSuite(SqlTimestampConverterTestCase.class);
+    }
+
+    // ------------------------------------------------------------------------
+
+    protected Converter makeConverter() {
+        return new SqlTimestampConverter();
+    }
+
+    protected Class getExpectedType() {
+        return Timestamp.class;
+    }
+
+}
\ No newline at end of file

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/converters/SqlTimestampConverterTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org