[jOOQ/jOOQ#12130] Wrong deserialisation of temporal data types in
MULTISET
This commit is contained in:
parent
0138667a71
commit
bcd0746a24
@ -928,7 +928,7 @@ final class Convert {
|
||||
// [#1501] Strings can be converted to java.sql.Date
|
||||
else if (fromClass == String.class && toClass == java.sql.Timestamp.class) {
|
||||
try {
|
||||
return (U) java.sql.Timestamp.valueOf((String) from);
|
||||
return (U) java.sql.Timestamp.valueOf(patchIso8601((String) from, false));
|
||||
}
|
||||
catch (IllegalArgumentException e) {
|
||||
return null;
|
||||
@ -983,18 +983,11 @@ final class Convert {
|
||||
}
|
||||
|
||||
else if (fromClass == String.class && toClass == LocalDateTime.class) {
|
||||
|
||||
// Try "lenient" ISO date formats first
|
||||
try {
|
||||
return (U) java.sql.Timestamp.valueOf((String) from).toLocalDateTime();
|
||||
return (U) LocalDateTime.parse(patchIso8601((String) from, true));
|
||||
}
|
||||
catch (IllegalArgumentException e1) {
|
||||
try {
|
||||
return (U) LocalDateTime.parse((String) from);
|
||||
}
|
||||
catch (DateTimeParseException e2) {
|
||||
return null;
|
||||
}
|
||||
catch (DateTimeParseException e2) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1213,6 +1206,15 @@ final class Convert {
|
||||
throw fail(from, toClass);
|
||||
}
|
||||
|
||||
private static final String patchIso8601(String string, boolean t) {
|
||||
if (t && string.charAt(10) == ' ')
|
||||
return string.substring(0, 10) + "T" + string.substring(11);
|
||||
else if (!t && string.charAt(10) == 'T')
|
||||
return string.substring(0, 10) + " " + string.substring(11);
|
||||
else
|
||||
return string;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object to(U to) {
|
||||
return to;
|
||||
|
||||
@ -920,7 +920,7 @@ public final class Convert {
|
||||
// [#1501] Strings can be converted to java.sql.Date
|
||||
else if (fromClass == String.class && toClass == java.sql.Timestamp.class) {
|
||||
try {
|
||||
return (U) java.sql.Timestamp.valueOf((String) from);
|
||||
return (U) java.sql.Timestamp.valueOf(patchIso8601((String) from, false));
|
||||
}
|
||||
catch (IllegalArgumentException e) {
|
||||
return null;
|
||||
@ -975,18 +975,11 @@ public final class Convert {
|
||||
}
|
||||
|
||||
else if (fromClass == String.class && toClass == LocalDateTime.class) {
|
||||
|
||||
// Try "lenient" ISO date formats first
|
||||
try {
|
||||
return (U) java.sql.Timestamp.valueOf((String) from).toLocalDateTime();
|
||||
return (U) LocalDateTime.parse(patchIso8601((String) from, true));
|
||||
}
|
||||
catch (IllegalArgumentException e1) {
|
||||
try {
|
||||
return (U) LocalDateTime.parse((String) from);
|
||||
}
|
||||
catch (DateTimeParseException e2) {
|
||||
return null;
|
||||
}
|
||||
catch (DateTimeParseException e2) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1205,6 +1198,15 @@ public final class Convert {
|
||||
throw fail(from, toClass);
|
||||
}
|
||||
|
||||
private static final String patchIso8601(String string, boolean t) {
|
||||
if (t && string.charAt(10) == ' ')
|
||||
return string.substring(0, 10) + "T" + string.substring(11);
|
||||
else if (!t && string.charAt(10) == 'T')
|
||||
return string.substring(0, 10) + " " + string.substring(11);
|
||||
else
|
||||
return string;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object to(U to) {
|
||||
return to;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user