diff --git a/jOOQ-codegen-maven/pom.xml b/jOOQ-codegen-maven/pom.xml
index 5e0d61c276..aa9e7e563b 100644
--- a/jOOQ-codegen-maven/pom.xml
+++ b/jOOQ-codegen-maven/pom.xml
@@ -12,6 +12,7 @@
org.jooq
jooq-codegen-maven
jOOQ Codegen Maven
+ maven-plugin
diff --git a/jOOQ/src/main/java/org/jooq/tools/Convert.java b/jOOQ/src/main/java/org/jooq/tools/Convert.java
index a8e837dea2..8e0bf73ce5 100644
--- a/jOOQ/src/main/java/org/jooq/tools/Convert.java
+++ b/jOOQ/src/main/java/org/jooq/tools/Convert.java
@@ -517,6 +517,16 @@ public final class Convert {
return toDate((Long) from, toClass);
}
+ // Strings can be converted to java.sql.Date
+ else if((fromClass== String.class) && toClass == java.sql.Date.class){
+ try {
+ return (U) java.sql.Date.valueOf((String) from);
+ }
+ catch (IllegalArgumentException e) {
+ throw fail(from, java.sql.Date.class);
+ }
+ }
+
// [#1448] Some users may find it useful to convert string
// literals to Enum values without a Converter
else if ((fromClass == String.class) && java.lang.Enum.class.isAssignableFrom(toClass)) {
diff --git a/jOOQ/src/test/java/org/jooq/test/ConvertTest.java b/jOOQ/src/test/java/org/jooq/test/ConvertTest.java
new file mode 100644
index 0000000000..849b73bcb9
--- /dev/null
+++ b/jOOQ/src/test/java/org/jooq/test/ConvertTest.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2009-2012, Lukas Eder, lukas.eder@gmail.com
+ * All rights reserved.
+ *
+ * This software is licensed to you under the Apache License, Version 2.0
+ * (the "License"); You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * . Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * . Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * . Neither the name "jOOQ" nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.jooq.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.sql.Date;
+import java.util.Calendar;
+
+import org.jooq.exception.DataTypeException;
+import org.jooq.tools.Convert;
+
+import org.junit.Test;
+
+/**
+ * @author Lukas Eder
+ */
+public class ConvertTest {
+
+ @Test
+ public void testStringToDateConversion() {
+ Date date = Convert.convert("2012-01-01", java.sql.Date.class);
+ assertNotNull(date);
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeInMillis(date.getTime());
+ assertEquals("Year", cal.get(Calendar.YEAR), 2012);
+ assertEquals("Month", cal.get(Calendar.MONTH), 0);
+ assertEquals("DayOfMonth", cal.get(Calendar.DAY_OF_MONTH), 1);
+
+ // Expect a DataTypeException
+ try{
+ Convert.convert("2012-00-01", java.sql.Date.class);
+ fail("Illegal date could be converted without an exception");
+ }catch(DataTypeException e){
+ // expected
+ }
+ }
+
+}