diff --git a/jOOQ/src/main/java/org/jooq/tools/Convert.java b/jOOQ/src/main/java/org/jooq/tools/Convert.java index 06cdced348..b6d4aca17e 100644 --- a/jOOQ/src/main/java/org/jooq/tools/Convert.java +++ b/jOOQ/src/main/java/org/jooq/tools/Convert.java @@ -40,9 +40,13 @@ import static org.jooq.tools.unsigned.Unsigned.uint; import static org.jooq.tools.unsigned.Unsigned.ulong; import static org.jooq.tools.unsigned.Unsigned.ushort; +import java.io.File; import java.lang.reflect.Array; import java.math.BigDecimal; import java.math.BigInteger; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; @@ -242,6 +246,8 @@ public final class Convert { *
* All other values evaluate to null
*
Date types can be converted into each otherString types can be converted into {@link URI},
+ * {@link URL} and {@link File}byte[] can be converted into String, using
* the platform's default charsetObject[] can be converted into any other array type, if
@@ -507,6 +513,36 @@ public final class Convert {
return (U) Character.valueOf(from.toString().charAt(0));
}
+ // URI types can be converted from strings
+ else if ((fromClass == String.class) && toClass == URI.class) {
+ try {
+ return (U) new URI(from.toString());
+ }
+ catch (URISyntaxException e) {
+ return null;
+ }
+ }
+
+ // URI types can be converted from strings
+ else if ((fromClass == String.class) && toClass == URL.class) {
+ try {
+ return (U) new URI(from.toString()).toURL();
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
+ // File types can be converted from strings
+ else if ((fromClass == String.class) && toClass == File.class) {
+ try {
+ return (U) new File(from.toString());
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
// Date types can be converted among each other
else if (java.util.Date.class.isAssignableFrom(fromClass)) {
return toDate(((java.util.Date) from).getTime(), toClass);