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 *

  • All Date types can be converted into each other
  • + *
  • All String types can be converted into {@link URI}, + * {@link URL} and {@link File}
  • *
  • byte[] can be converted into String, using * the platform's default charset
  • *
  • Object[] 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);