Skip to content

Commit 0c7431a

Browse files
committed
Allow partial dates to be parsed from non-4.0 vCards
#155
1 parent 510728d commit 0c7431a

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

src/main/java/ezvcard/io/scribe/DateOrTimePropertyScribe.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,13 +221,12 @@ private T parse(String value, ParseContext context) {
221221
try {
222222
return newInstance(date(value));
223223
} catch (IllegalArgumentException e) {
224-
if (context.getVersion() == VCardVersion.V2_1 || context.getVersion() == VCardVersion.V3_0) {
225-
throw new CannotParseException(5);
226-
}
227-
228224
try {
229225
return newInstance(PartialDate.parse(value));
230226
} catch (IllegalArgumentException e2) {
227+
if (context.getVersion() == VCardVersion.V2_1 || context.getVersion() == VCardVersion.V3_0) {
228+
throw new CannotParseException(5);
229+
}
231230
context.addWarning(6);
232231
return newInstance(value);
233232
}

src/test/java/ezvcard/io/scribe/DateOrTimePropertyScribeTest.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,9 @@ public void writeJson() {
161161
public void parseText() {
162162
sensei.assertParseText(dateExtendedStr).run(withDate);
163163
sensei.assertParseText(dateTimeExtendedStr).run(withDateTime);
164-
sensei.assertParseText(partialDate.toISO8601(false)).versions(V2_1, V3_0).cannotParse(5);
165-
sensei.assertParseText(partialDate.toISO8601(false)).versions(V4_0).run(withPartialDate);
166-
sensei.assertParseText(partialTime.toISO8601(false)).versions(V2_1, V3_0).cannotParse(5);
167-
sensei.assertParseText(partialTime.toISO8601(false)).versions(V4_0).run(withPartialTime);
168-
sensei.assertParseText(partialDateTime.toISO8601(false)).versions(V2_1, V3_0).cannotParse(5);
169-
sensei.assertParseText(partialDateTime.toISO8601(false)).versions(V4_0).run(withPartialDateTime);
164+
sensei.assertParseText(partialDate.toISO8601(false)).run(withPartialDate);
165+
sensei.assertParseText(partialTime.toISO8601(false)).run(withPartialTime);
166+
sensei.assertParseText(partialDateTime.toISO8601(false)).run(withPartialDateTime);
170167
sensei.assertParseText(text).versions(V2_1, V3_0).cannotParse(5);
171168
sensei.assertParseText(text).versions(V4_0).warnings(6).run(hasText(text));
172169
sensei.assertParseText(text).versions(V2_1, V3_0).dataType(TEXT).cannotParse(5);

0 commit comments

Comments
 (0)