[ https://issues.apache.org/jira/browse/GROOVY-7127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14602314#comment-14602314 ]
ASF GitHub Bot commented on GROOVY-7127: ---------------------------------------- GitHub user bobpaulin opened a pull request: https://github.com/apache/incubator-groovy/pull/45 Groovy 7127 Patch for https://issues.apache.org/jira/browse/GROOVY-7127 With love from CJUG with help from Cosmin Stroe and Steven Hicks. You can merge this pull request into a Git repository by running: $ git pull https://github.com/cjug/incubator-groovy GROOVY-7127 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-groovy/pull/45.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #45 ---- commit 2381ccea27233994f4a336d489c1aceea65e5210 Author: bpaulin <bpaulin@bob_paulin> Date: 2015-06-26T01:01:35Z GROOVY-7127 - Added Date Tests commit b5ed3bf7610c9663a09252f8f821b672a0a8761f Author: bpaulin <bpaulin@bob_paulin> Date: 2015-06-26T02:36:09Z GROOVY-7127 Allow isJsonDate to accept a date in format yyyy-MM-ddThh:mm:ss+0000 since this is how the JsonOutput.toJson method formats a date in Groovy. JSON does not have a standard string output per the ECMA spec so both may be accepted. commit 7e9270b965a2735d87bcc7246cd087d86a27e90e Author: bpaulin <bpaulin@bob_paulin> Date: 2015-06-26T02:44:46Z GROOVY-7127 - Fixed tabs to spaces. ---- > Dates.isJsonDate only recognizes Javascript Date's toJSON() Format > ------------------------------------------------------------------ > > Key: GROOVY-7127 > URL: https://issues.apache.org/jira/browse/GROOVY-7127 > Project: Groovy > Issue Type: Bug > Components: JSON > Affects Versions: 2.3.3, 2.3.7 > Reporter: Sergey Mashkov > Labels: contrib > > groovy.json.internal.Dates#isJsonDate is always returns false for valid JSON > date. This causes INDEX_OVERLAY parser to not parse dates even if checkDates > was set to true > See the implementation code: > {code} > public static boolean isJsonDate(char[] charArray, int start, int to) { > boolean valid = true; > final int length = to - start; > if (length != JSON_TIME_LENGTH) { > return false; > } > valid &= (charArray[start + 19] == '.'); > if (!valid) { > return false; > } > {code} > However valid JSON date looks like: > {noformat} > 2014-10-21T15:15:56+0000 > {noformat} > so there is no dots in this string so this method will always return false. > This consequently leads to groovy.json.internal.CharSequenceValue#doToValue > returns string instead of date so parser will never actually parse dates > properly > Test example: > {code} > import groovy.json.* > def o = new JsonSlurper(). > setType(JsonParserType.INDEX_OVERLAY). > setCheckDates(true). > parseText(JsonOutput.toJson([a : new Date()])) > assertEquals(Date.class, o.a) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)