Polishing (selective backports from master)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -61,7 +61,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||
/**
|
||||
* Specify the maximum time allotted in milliseconds for the shutdown of
|
||||
* any phase (group of SmartLifecycle beans with the same 'phase' value).
|
||||
* The default value is 30 seconds.
|
||||
* <p>The default value is 30 seconds.
|
||||
*/
|
||||
public void setTimeoutPerShutdownPhase(long timeoutPerShutdownPhase) {
|
||||
this.timeoutPerShutdownPhase = timeoutPerShutdownPhase;
|
||||
@@ -80,13 +80,12 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||
// Lifecycle implementation
|
||||
|
||||
/**
|
||||
* Start all registered beans that implement Lifecycle and are
|
||||
* <i>not</i> already running. Any bean that implements SmartLifecycle
|
||||
* will be started within its 'phase', and all phases will be ordered
|
||||
* from lowest to highest value. All beans that do not implement
|
||||
* SmartLifecycle will be started in the default phase 0. A bean
|
||||
* declared as a dependency of another bean will be started before
|
||||
* the dependent bean regardless of the declared phase.
|
||||
* Start all registered beans that implement {@link Lifecycle} and are <i>not</i>
|
||||
* already running. Any bean that implements {@link SmartLifecycle} will be
|
||||
* started within its 'phase', and all phases will be ordered from lowest to
|
||||
* highest value. All beans that do not implement {@link SmartLifecycle} will be
|
||||
* started in the default phase 0. A bean declared as a dependency of another bean
|
||||
* will be started before the dependent bean regardless of the declared phase.
|
||||
*/
|
||||
@Override
|
||||
public void start() {
|
||||
@@ -95,13 +94,12 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop all registered beans that implement Lifecycle and <i>are</i>
|
||||
* currently running. Any bean that implements SmartLifecycle
|
||||
* will be stopped within its 'phase', and all phases will be ordered
|
||||
* from highest to lowest value. All beans that do not implement
|
||||
* SmartLifecycle will be stopped in the default phase 0. A bean
|
||||
* declared as dependent on another bean will be stopped before
|
||||
* the dependency bean regardless of the declared phase.
|
||||
* Stop all registered beans that implement {@link Lifecycle} and <i>are</i>
|
||||
* currently running. Any bean that implements {@link SmartLifecycle} will be
|
||||
* stopped within its 'phase', and all phases will be ordered from highest to
|
||||
* lowest value. All beans that do not implement {@link SmartLifecycle} will be
|
||||
* stopped in the default phase 0. A bean declared as dependent on another bean
|
||||
* will be stopped before the dependency bean regardless of the declared phase.
|
||||
*/
|
||||
@Override
|
||||
public void stop() {
|
||||
@@ -127,7 +125,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||
}
|
||||
|
||||
|
||||
// internal helpers
|
||||
// Internal helpers
|
||||
|
||||
private void startBeans(boolean autoStartupOnly) {
|
||||
Map<String, Lifecycle> lifecycleBeans = getLifecycleBeans();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,7 +21,7 @@ import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.EnumMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
@@ -47,7 +47,7 @@ public class DateFormatter implements Formatter<Date> {
|
||||
private static final Map<ISO, String> ISO_PATTERNS;
|
||||
|
||||
static {
|
||||
Map<ISO, String> formats = new HashMap<ISO, String>(4);
|
||||
Map<ISO, String> formats = new EnumMap<ISO, String>(ISO.class);
|
||||
formats.put(ISO.DATE, "yyyy-MM-dd");
|
||||
formats.put(ISO.TIME, "HH:mm:ss.SSSZ");
|
||||
formats.put(ISO.DATE_TIME, "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -18,7 +18,7 @@ package org.springframework.format.datetime.joda;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
@@ -73,7 +73,7 @@ public class JodaTimeFormatterRegistrar implements FormatterRegistrar {
|
||||
/**
|
||||
* User defined formatters.
|
||||
*/
|
||||
private final Map<Type, DateTimeFormatter> formatters = new HashMap<Type, DateTimeFormatter>();
|
||||
private final Map<Type, DateTimeFormatter> formatters = new EnumMap<Type, DateTimeFormatter>(Type.class);
|
||||
|
||||
/**
|
||||
* Factories used when specific formatters have not been specified.
|
||||
@@ -82,7 +82,7 @@ public class JodaTimeFormatterRegistrar implements FormatterRegistrar {
|
||||
|
||||
|
||||
public JodaTimeFormatterRegistrar() {
|
||||
this.factories = new HashMap<Type, DateTimeFormatterFactory>();
|
||||
this.factories = new EnumMap<Type, DateTimeFormatterFactory>(Type.class);
|
||||
for (Type type : Type.values()) {
|
||||
this.factories.put(type, new DateTimeFormatterFactory());
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.jmx.MBeanServerNotFoundException;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -68,8 +69,7 @@ public abstract class JmxUtils {
|
||||
* {@code MBeanServer} can be found. Logs a warning if more than one
|
||||
* {@code MBeanServer} found, returning the first one from the list.
|
||||
* @return the {@code MBeanServer} if found
|
||||
* @throws org.springframework.jmx.MBeanServerNotFoundException
|
||||
* if no {@code MBeanServer} could be found
|
||||
* @throws MBeanServerNotFoundException if no {@code MBeanServer} could be found
|
||||
* @see javax.management.MBeanServerFactory#findMBeanServer
|
||||
*/
|
||||
public static MBeanServer locateMBeanServer() throws MBeanServerNotFoundException {
|
||||
@@ -84,8 +84,7 @@ public abstract class JmxUtils {
|
||||
* If this parameter is {@code null}, all registered MBeanServers are considered.
|
||||
* If the empty String is given, the platform MBeanServer will be returned.
|
||||
* @return the {@code MBeanServer} if found
|
||||
* @throws org.springframework.jmx.MBeanServerNotFoundException
|
||||
* if no {@code MBeanServer} could be found
|
||||
* @throws MBeanServerNotFoundException if no {@code MBeanServer} could be found
|
||||
* @see javax.management.MBeanServerFactory#findMBeanServer(String)
|
||||
*/
|
||||
public static MBeanServer locateMBeanServer(String agentId) throws MBeanServerNotFoundException {
|
||||
@@ -94,7 +93,7 @@ public abstract class JmxUtils {
|
||||
// null means any registered server, but "" specifically means the platform server
|
||||
if (!"".equals(agentId)) {
|
||||
List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(agentId);
|
||||
if (servers != null && servers.size() > 0) {
|
||||
if (!CollectionUtils.isEmpty(servers)) {
|
||||
// Check to see if an MBeanServer is registered.
|
||||
if (servers.size() > 1 && logger.isWarnEnabled()) {
|
||||
logger.warn("Found more than one MBeanServer instance" +
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -80,8 +80,7 @@ public interface BindingResult extends Errors {
|
||||
* Extract the raw field value for the given field.
|
||||
* Typically used for comparison purposes.
|
||||
* @param field the field to check
|
||||
* @return the current value of the field in its raw form,
|
||||
* or {@code null} if not known
|
||||
* @return the current value of the field in its raw form, or {@code null} if not known
|
||||
*/
|
||||
Object getRawFieldValue(String field);
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -562,9 +562,10 @@ public class DataBinder implements PropertyEditorRegistry, TypeConverter {
|
||||
|
||||
private void assertValidators(Validator... validators) {
|
||||
Assert.notNull(validators, "Validators required");
|
||||
Object target = getTarget();
|
||||
for (Validator validator : validators) {
|
||||
if (validator != null && (getTarget() != null && !validator.supports(getTarget().getClass()))) {
|
||||
throw new IllegalStateException("Invalid target for Validator [" + validator + "]: " + getTarget());
|
||||
if (validator != null && (target != null && !validator.supports(target.getClass()))) {
|
||||
throw new IllegalStateException("Invalid target for Validator [" + validator + "]: " + target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -58,9 +58,9 @@ public class DefaultBindingErrorProcessor implements BindingErrorProcessor {
|
||||
String fixedField = bindingResult.getNestedPath() + missingField;
|
||||
String[] codes = bindingResult.resolveMessageCodes(MISSING_FIELD_ERROR_CODE, missingField);
|
||||
Object[] arguments = getArgumentsForBindError(bindingResult.getObjectName(), fixedField);
|
||||
bindingResult.addError(new FieldError(
|
||||
bindingResult.getObjectName(), fixedField, "", true,
|
||||
codes, arguments, "Field '" + fixedField + "' is required"));
|
||||
FieldError error = new FieldError(bindingResult.getObjectName(), fixedField, "", true,
|
||||
codes, arguments, "Field '" + fixedField + "' is required");
|
||||
bindingResult.addError(error);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -70,12 +70,12 @@ public class DefaultBindingErrorProcessor implements BindingErrorProcessor {
|
||||
String[] codes = bindingResult.resolveMessageCodes(ex.getErrorCode(), field);
|
||||
Object[] arguments = getArgumentsForBindError(bindingResult.getObjectName(), field);
|
||||
Object rejectedValue = ex.getValue();
|
||||
if (rejectedValue != null && rejectedValue.getClass().isArray()) {
|
||||
if (ObjectUtils.isArray(rejectedValue)) {
|
||||
rejectedValue = StringUtils.arrayToCommaDelimitedString(ObjectUtils.toObjectArray(rejectedValue));
|
||||
}
|
||||
bindingResult.addError(new FieldError(
|
||||
bindingResult.getObjectName(), field, rejectedValue, true,
|
||||
codes, arguments, ex.getLocalizedMessage()));
|
||||
FieldError error = new FieldError(bindingResult.getObjectName(), field, rejectedValue, true,
|
||||
codes, arguments, ex.getLocalizedMessage());
|
||||
bindingResult.addError(error);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -96,12 +96,6 @@ public class FieldError extends ObjectError {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Field error in object '" + getObjectName() + "' on field '" + this.field +
|
||||
"': rejected value [" + this.rejectedValue + "]; " + resolvableToString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
@@ -125,4 +119,11 @@ public class FieldError extends ObjectError {
|
||||
return hashCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Field error in object '" + getObjectName() + "' on field '" + this.field +
|
||||
"': rejected value [" + ObjectUtils.nullSafeToString(this.rejectedValue) + "]; " +
|
||||
resolvableToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -27,8 +27,8 @@ package org.springframework.validation;
|
||||
public interface MessageCodeFormatter {
|
||||
|
||||
/**
|
||||
* Build and return a message code consisting of the given fields, usually delimited
|
||||
* by {@link DefaultMessageCodesResolver#CODE_SEPARATOR}.
|
||||
* Build and return a message code consisting of the given fields,
|
||||
* usually delimited by {@link DefaultMessageCodesResolver#CODE_SEPARATOR}.
|
||||
* @param errorCode e.g.: "typeMismatch"
|
||||
* @param objectName e.g.: "user"
|
||||
* @param field e.g. "age"
|
||||
@@ -36,4 +36,5 @@ public interface MessageCodeFormatter {
|
||||
* @see DefaultMessageCodesResolver.Format
|
||||
*/
|
||||
String format(String errorCode, String objectName, String field);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -68,11 +68,6 @@ public class ObjectError extends DefaultMessageSourceResolvable {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Error in object '" + this.objectName + "': " + resolvableToString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
@@ -90,4 +85,9 @@ public class ObjectError extends DefaultMessageSourceResolvable {
|
||||
return super.hashCode() * 29 + getObjectName().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Error in object '" + this.objectName + "': " + resolvableToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -46,7 +46,7 @@ public class DateFormatterTests {
|
||||
private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
|
||||
|
||||
@Rule
|
||||
public ExpectedException thown = ExpectedException.none();
|
||||
public ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
|
||||
@Test
|
||||
@@ -183,8 +183,8 @@ public class DateFormatterTests {
|
||||
public void shouldThrowOnUnsupportedStylePattern() throws Exception {
|
||||
DateFormatter formatter = new DateFormatter();
|
||||
formatter.setStylePattern("OO");
|
||||
thown.expect(IllegalStateException.class);
|
||||
thown.expectMessage("Unsupported style pattern 'OO'");
|
||||
thrown.expect(IllegalStateException.class);
|
||||
thrown.expectMessage("Unsupported style pattern 'OO'");
|
||||
formatter.parse("2009", Locale.US);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -52,12 +52,12 @@ public class DateFormattingTests {
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
public void setup() {
|
||||
DateFormatterRegistrar registrar = new DateFormatterRegistrar();
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
}
|
||||
|
||||
private void setUp(DateFormatterRegistrar registrar) {
|
||||
private void setup(DateFormatterRegistrar registrar) {
|
||||
DefaultConversionService.addDefaultConverters(conversionService);
|
||||
registrar.registerFormatters(conversionService);
|
||||
|
||||
@@ -193,7 +193,7 @@ public class DateFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dateToStringWithoutGlobalFormat() throws Exception {
|
||||
public void dateToStringWithoutGlobalFormat() {
|
||||
Date date = new Date();
|
||||
Object actual = this.conversionService.convert(date, TypeDescriptor.valueOf(Date.class), TypeDescriptor.valueOf(String.class));
|
||||
String expected = date.toString();
|
||||
@@ -201,33 +201,31 @@ public class DateFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dateToStringWithGlobalFormat() throws Exception {
|
||||
public void dateToStringWithGlobalFormat() {
|
||||
DateFormatterRegistrar registrar = new DateFormatterRegistrar();
|
||||
registrar.setFormatter(new DateFormatter());
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
Date date = new Date();
|
||||
Object actual = this.conversionService.convert(date, TypeDescriptor.valueOf(Date.class), TypeDescriptor.valueOf(String.class));
|
||||
String expected = new DateFormatter().print(date, Locale.US);
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Test // SPR-10105
|
||||
@SuppressWarnings("deprecation")
|
||||
public void stringToDateWithoutGlobalFormat() throws Exception {
|
||||
// SPR-10105
|
||||
public void stringToDateWithoutGlobalFormat() {
|
||||
String string = "Sat, 12 Aug 1995 13:30:00 GM";
|
||||
Date date = this.conversionService.convert(string, Date.class);
|
||||
assertThat(date, equalTo(new Date(string)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stringToDateWithGlobalFormat() throws Exception {
|
||||
// SPR-10105
|
||||
@Test // SPR-10105
|
||||
public void stringToDateWithGlobalFormat() {
|
||||
DateFormatterRegistrar registrar = new DateFormatterRegistrar();
|
||||
DateFormatter dateFormatter = new DateFormatter();
|
||||
dateFormatter.setIso(ISO.DATE_TIME);
|
||||
registrar.setFormatter(dateFormatter);
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
// This is a format that cannot be parsed by new Date(String)
|
||||
String string = "2009-06-01T14:23:05.003+0000";
|
||||
Date date = this.conversionService.convert(string, Date.class);
|
||||
@@ -260,7 +258,7 @@ public class DateFormattingTests {
|
||||
@DateTimeFormat(iso=ISO.DATE_TIME)
|
||||
private Date isoDateTime;
|
||||
|
||||
private final List<SimpleDateBean> children = new ArrayList<SimpleDateBean>();
|
||||
private final List<SimpleDateBean> children = new ArrayList<>();
|
||||
|
||||
public Long getMillis() {
|
||||
return millis;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -29,27 +29,28 @@ import static org.junit.Assert.*;
|
||||
*/
|
||||
public class DateTimeFormatterFactoryBeanTests {
|
||||
|
||||
private DateTimeFormatterFactoryBean factory = new DateTimeFormatterFactoryBean();
|
||||
private final DateTimeFormatterFactoryBean factory = new DateTimeFormatterFactoryBean();
|
||||
|
||||
|
||||
@Test
|
||||
public void isSingleton() throws Exception {
|
||||
public void isSingleton() {
|
||||
assertThat(factory.isSingleton(), is(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void getObjectType() throws Exception {
|
||||
public void getObjectType() {
|
||||
assertThat(factory.getObjectType(), is(equalTo((Class) DateTimeFormatter.class)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getObject() throws Exception {
|
||||
public void getObject() {
|
||||
factory.afterPropertiesSet();
|
||||
assertThat(factory.getObject(), is(equalTo(DateTimeFormat.mediumDateTime())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getObjectIsAlwaysSingleton() throws Exception {
|
||||
public void getObjectIsAlwaysSingleton() {
|
||||
factory.afterPropertiesSet();
|
||||
DateTimeFormatter formatter = factory.getObject();
|
||||
assertThat(formatter, is(equalTo(DateTimeFormat.mediumDateTime())));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -50,32 +50,32 @@ public class DateTimeFormatterFactoryTests {
|
||||
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatter() throws Exception {
|
||||
public void createDateTimeFormatter() {
|
||||
assertThat(factory.createDateTimeFormatter(), is(equalTo(DateTimeFormat.mediumDateTime())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithPattern() throws Exception {
|
||||
public void createDateTimeFormatterWithPattern() {
|
||||
factory = new DateTimeFormatterFactory("yyyyMMddHHmmss");
|
||||
DateTimeFormatter formatter = factory.createDateTimeFormatter();
|
||||
assertThat(formatter.print(dateTime), is("20091021121000"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithNullFallback() throws Exception {
|
||||
public void createDateTimeFormatterWithNullFallback() {
|
||||
DateTimeFormatter formatter = factory.createDateTimeFormatter(null);
|
||||
assertThat(formatter, is(nullValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithFallback() throws Exception {
|
||||
public void createDateTimeFormatterWithFallback() {
|
||||
DateTimeFormatter fallback = DateTimeFormat.forStyle("LL");
|
||||
DateTimeFormatter formatter = factory.createDateTimeFormatter(fallback);
|
||||
assertThat(formatter, is(sameInstance(fallback)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterInOrderOfPropertyPriority() throws Exception {
|
||||
public void createDateTimeFormatterInOrderOfPropertyPriority() {
|
||||
factory.setStyle("SS");
|
||||
String value = applyLocale(factory.createDateTimeFormatter()).print(dateTime);
|
||||
assertTrue(value.startsWith("10/21/09"));
|
||||
@@ -89,7 +89,7 @@ public class DateTimeFormatterFactoryTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithTimeZone() throws Exception {
|
||||
public void createDateTimeFormatterWithTimeZone() {
|
||||
factory.setPattern("yyyyMMddHHmmss Z");
|
||||
factory.setTimeZone(TEST_TIMEZONE);
|
||||
DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(TEST_TIMEZONE);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -62,12 +62,12 @@ public class JodaTimeFormattingTests {
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
public void setup() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
}
|
||||
|
||||
private void setUp(JodaTimeFormatterRegistrar registrar) {
|
||||
private void setup(JodaTimeFormatterRegistrar registrar) {
|
||||
conversionService = new FormattingConversionService();
|
||||
DefaultConversionService.addDefaultConverters(conversionService);
|
||||
registrar.registerFormatters(conversionService);
|
||||
@@ -84,7 +84,7 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
public void cleanup() {
|
||||
LocaleContextHolder.setLocale(null);
|
||||
JodaTimeContextHolder.setJodaTimeContext(null);
|
||||
}
|
||||
@@ -108,10 +108,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindLocalDateWithSpecificStyle() throws Exception {
|
||||
public void testBindLocalDateWithSpecificStyle() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setDateStyle("L");
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("localDate", "October 31, 2009");
|
||||
binder.bind(propertyValues);
|
||||
@@ -120,10 +120,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindLocalDateWithSpecificFormatter() throws Exception {
|
||||
public void testBindLocalDateWithSpecificFormatter() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setDateFormatter(org.joda.time.format.DateTimeFormat.forPattern("yyyyMMdd"));
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("localDate", "20091031");
|
||||
binder.bind(propertyValues);
|
||||
@@ -196,10 +196,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindLocalTimeWithSpecificStyle() throws Exception {
|
||||
public void testBindLocalTimeWithSpecificStyle() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setTimeStyle("M");
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("localTime", "12:00:00 PM");
|
||||
binder.bind(propertyValues);
|
||||
@@ -208,10 +208,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindLocalTimeWithSpecificFormatter() throws Exception {
|
||||
public void testBindLocalTimeWithSpecificFormatter() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setTimeFormatter(org.joda.time.format.DateTimeFormat.forPattern("HHmmss"));
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("localTime", "130000");
|
||||
binder.bind(propertyValues);
|
||||
@@ -261,10 +261,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindDateTimeWithSpecificStyle() throws Exception {
|
||||
public void testBindDateTimeWithSpecificStyle() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setDateTimeStyle("MM");
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("localDateTime", new LocalDateTime(2009, 10, 31, 12, 0));
|
||||
binder.bind(propertyValues);
|
||||
@@ -275,10 +275,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindDateTimeISO() throws Exception {
|
||||
public void testBindDateTimeISO() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setUseIsoFormat(true);
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("dateTime", "2009-10-31T12:00:00.000Z");
|
||||
binder.bind(propertyValues);
|
||||
@@ -287,10 +287,10 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBindDateTimeWithSpecificFormatter() throws Exception {
|
||||
public void testBindDateTimeWithSpecificFormatter() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setDateTimeFormatter(org.joda.time.format.DateTimeFormat.forPattern("yyyyMMddHHmmss"));
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
MutablePropertyValues propertyValues = new MutablePropertyValues();
|
||||
propertyValues.add("dateTime", "20091031130000");
|
||||
binder.bind(propertyValues);
|
||||
@@ -435,33 +435,31 @@ public class JodaTimeFormattingTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dateToStringWithFormat() throws Exception {
|
||||
public void dateToStringWithFormat() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
registrar.setDateTimeFormatter(org.joda.time.format.DateTimeFormat.shortDateTime());
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
Date date = new Date();
|
||||
Object actual = this.conversionService.convert(date, TypeDescriptor.valueOf(Date.class), TypeDescriptor.valueOf(String.class));
|
||||
String expected = JodaTimeContextHolder.getFormatter(org.joda.time.format.DateTimeFormat.shortDateTime(), Locale.US).print(new DateTime(date));
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Test // SPR-10105
|
||||
@SuppressWarnings("deprecation")
|
||||
public void stringToDateWithoutGlobalFormat() throws Exception {
|
||||
// SPR-10105
|
||||
public void stringToDateWithoutGlobalFormat() {
|
||||
String string = "Sat, 12 Aug 1995 13:30:00 GM";
|
||||
Date date = this.conversionService.convert(string, Date.class);
|
||||
assertThat(date, equalTo(new Date(string)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stringToDateWithGlobalFormat() throws Exception {
|
||||
// SPR-10105
|
||||
@Test // SPR-10105
|
||||
public void stringToDateWithGlobalFormat() {
|
||||
JodaTimeFormatterRegistrar registrar = new JodaTimeFormatterRegistrar();
|
||||
DateTimeFormatterFactory factory = new DateTimeFormatterFactory();
|
||||
factory.setIso(ISO.DATE_TIME);
|
||||
registrar.setDateTimeFormatter(factory.createDateTimeFormatter());
|
||||
setUp(registrar);
|
||||
setup(registrar);
|
||||
// This is a format that cannot be parsed by new Date(String)
|
||||
String string = "2009-10-31T07:00:00.000-05:00";
|
||||
Date date = this.conversionService.convert(string, Date.class);
|
||||
@@ -570,7 +568,7 @@ public class JodaTimeFormattingTests {
|
||||
|
||||
private MonthDay monthDay;
|
||||
|
||||
private final List<JodaTimeBean> children = new ArrayList<JodaTimeBean>();
|
||||
private final List<JodaTimeBean> children = new ArrayList<>();
|
||||
|
||||
public LocalDate getLocalDate() {
|
||||
return localDate;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,31 +30,32 @@ import static org.junit.Assert.*;
|
||||
*/
|
||||
public class DateTimeFormatterFactoryBeanTests {
|
||||
|
||||
private DateTimeFormatterFactoryBean factory = new DateTimeFormatterFactoryBean();
|
||||
private final DateTimeFormatterFactoryBean factory = new DateTimeFormatterFactoryBean();
|
||||
|
||||
|
||||
@Test
|
||||
public void isSingleton() throws Exception {
|
||||
public void isSingleton() {
|
||||
assertThat(factory.isSingleton(), is(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void getObjectType() throws Exception {
|
||||
assertThat(factory.getObjectType(), is(equalTo((Class) DateTimeFormatter.class)));
|
||||
public void getObjectType() {
|
||||
assertThat(factory.getObjectType(), is(equalTo(DateTimeFormatter.class)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getObject() throws Exception {
|
||||
public void getObject() {
|
||||
factory.afterPropertiesSet();
|
||||
assertThat(factory.getObject().toString(), is(equalTo(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).toString())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getObjectIsAlwaysSingleton() throws Exception {
|
||||
public void getObjectIsAlwaysSingleton() {
|
||||
factory.afterPropertiesSet();
|
||||
DateTimeFormatter formatter = factory.getObject();
|
||||
assertThat(formatter.toString(), is(equalTo(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).toString())));
|
||||
factory.setStylePattern("LL");
|
||||
assertThat(factory.getObject(), is(sameInstance(formatter)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -51,32 +51,32 @@ public class DateTimeFormatterFactoryTests {
|
||||
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatter() throws Exception {
|
||||
public void createDateTimeFormatter() {
|
||||
assertThat(factory.createDateTimeFormatter().toString(), is(equalTo(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).toString())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithPattern() throws Exception {
|
||||
public void createDateTimeFormatterWithPattern() {
|
||||
factory = new DateTimeFormatterFactory("yyyyMMddHHmmss");
|
||||
DateTimeFormatter formatter = factory.createDateTimeFormatter();
|
||||
assertThat(formatter.format(dateTime), is("20091021121000"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithNullFallback() throws Exception {
|
||||
public void createDateTimeFormatterWithNullFallback() {
|
||||
DateTimeFormatter formatter = factory.createDateTimeFormatter(null);
|
||||
assertThat(formatter, is(nullValue()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithFallback() throws Exception {
|
||||
public void createDateTimeFormatterWithFallback() {
|
||||
DateTimeFormatter fallback = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
|
||||
DateTimeFormatter formatter = factory.createDateTimeFormatter(fallback);
|
||||
assertThat(formatter, is(sameInstance(fallback)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterInOrderOfPropertyPriority() throws Exception {
|
||||
public void createDateTimeFormatterInOrderOfPropertyPriority() {
|
||||
factory.setStylePattern("SS");
|
||||
String value = applyLocale(factory.createDateTimeFormatter()).format(dateTime);
|
||||
assertTrue(value.startsWith("10/21/09"));
|
||||
@@ -90,7 +90,7 @@ public class DateTimeFormatterFactoryTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createDateTimeFormatterWithTimeZone() throws Exception {
|
||||
public void createDateTimeFormatterWithTimeZone() {
|
||||
factory.setPattern("yyyyMMddHHmmss Z");
|
||||
factory.setTimeZone(TEST_TIMEZONE);
|
||||
ZoneId dateTimeZone = TEST_TIMEZONE.toZoneId();
|
||||
|
||||
Reference in New Issue
Block a user