提交 c1bec064 编写于 作者: S scolebourne

8036818: DateTimeFormatter withResolverFields() fails to accept null

Reviewed-by: chegar, rriggs
Contributed-by: scolebourne@joda.org
上级 8f288c97
......@@ -1644,12 +1644,13 @@ public final class DateTimeFormatter {
* @return a formatter based on this formatter with the requested resolver style, not null
*/
public DateTimeFormatter withResolverFields(TemporalField... resolverFields) {
Objects.requireNonNull(resolverFields, "resolverFields");
Set<TemporalField> fields = new HashSet<>(Arrays.asList(resolverFields));
Set<TemporalField> fields = null;
if (resolverFields != null) {
fields = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(resolverFields)));
}
if (Objects.equals(this.resolverFields, fields)) {
return this;
}
fields = Collections.unmodifiableSet(fields);
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, fields, chrono, zone);
}
......@@ -1693,11 +1694,12 @@ public final class DateTimeFormatter {
* @return a formatter based on this formatter with the requested resolver style, not null
*/
public DateTimeFormatter withResolverFields(Set<TemporalField> resolverFields) {
Objects.requireNonNull(resolverFields, "resolverFields");
if (Objects.equals(this.resolverFields, resolverFields)) {
return this;
}
resolverFields = Collections.unmodifiableSet(new HashSet<>(resolverFields));
if (resolverFields != null) {
resolverFields = Collections.unmodifiableSet(new HashSet<>(resolverFields));
}
return new DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone);
}
......
......@@ -254,14 +254,20 @@ public class TCKDateTimeFormatter {
assertEquals(parsed.isSupported(YEAR), false); // not in the list of resolverFields
}
@Test(expectedExceptions = NullPointerException.class)
@Test
public void test_resolverFields_Array_null() throws Exception {
DateTimeFormatter.ISO_DATE.withResolverFields((TemporalField[]) null);
DateTimeFormatter f = DateTimeFormatter.ISO_DATE.withResolverFields(MONTH_OF_YEAR);
assertEquals(f.getResolverFields().size(), 1);
f = f.withResolverFields((TemporalField[]) null);
assertEquals(f.getResolverFields(), null);
}
@Test(expectedExceptions = NullPointerException.class)
@Test
public void test_resolverFields_Set_null() throws Exception {
DateTimeFormatter.ISO_DATE.withResolverFields((Set<TemporalField>) null);
DateTimeFormatter f = DateTimeFormatter.ISO_DATE.withResolverFields(MONTH_OF_YEAR);
assertEquals(f.getResolverFields().size(), 1);
f = f.withResolverFields((Set<TemporalField>) null);
assertEquals(f.getResolverFields(), null);
}
//-----------------------------------------------------------------------
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册