Polishing

This commit is contained in:
Juergen Hoeller
2018-07-18 14:03:54 +02:00
parent 55563c16b5
commit c0040a5508
52 changed files with 331 additions and 253 deletions

View File

@@ -261,7 +261,7 @@ public class WebExchangeBindException extends ServerWebInputException implements
}
@Override
public void recordFieldValue(String field, Class<?> type, Object value) {
public void recordFieldValue(String field, Class<?> type, @Nullable Object value) {
this.bindingResult.recordFieldValue(field, type, value);
}

View File

@@ -33,7 +33,6 @@ import org.springframework.core.ParameterNameDiscoverer;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.validation.AbstractBindingResult;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
@@ -289,13 +288,11 @@ public class ModelAttributeMethodProcessor implements HandlerMethodArgumentResol
}
if (bindingFailure) {
if (binder.getBindingResult() instanceof AbstractBindingResult) {
AbstractBindingResult result = (AbstractBindingResult) binder.getBindingResult();
for (int i = 0; i < paramNames.length; i++) {
result.recordFieldValue(paramNames[i], paramTypes[i], args[i]);
}
BindingResult result = binder.getBindingResult();
for (int i = 0; i < paramNames.length; i++) {
result.recordFieldValue(paramNames[i], paramTypes[i], args[i]);
}
throw new BindException(binder.getBindingResult());
throw new BindException(result);
}
return BeanUtils.instantiateClass(ctor, args);
@@ -319,13 +316,17 @@ public class ModelAttributeMethodProcessor implements HandlerMethodArgumentResol
* @param parameter the method parameter declaration
*/
protected void validateIfApplicable(WebDataBinder binder, MethodParameter parameter) {
Annotation[] annotations = parameter.getParameterAnnotations();
for (Annotation ann : annotations) {
for (Annotation ann : parameter.getParameterAnnotations()) {
Validated validatedAnn = AnnotationUtils.getAnnotation(ann, Validated.class);
if (validatedAnn != null || ann.annotationType().getSimpleName().startsWith("Valid")) {
Object hints = (validatedAnn != null ? validatedAnn.value() : AnnotationUtils.getValue(ann));
Object[] validationHints = (hints instanceof Object[] ? (Object[]) hints : new Object[] {hints});
binder.validate(validationHints);
if (hints != null) {
Object[] validationHints = (hints instanceof Object[] ? (Object[]) hints : new Object[] {hints});
binder.validate(validationHints);
}
else {
binder.validate();
}
break;
}
}

View File

@@ -62,7 +62,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {
* {@link IllegalStateException}.
* <p>By default set to 10000.
* @param maxSessions the maximum number of sessions
* @since 5.1
* @since 5.0.8
*/
public void setMaxSessions(int maxSessions) {
this.maxSessions = maxSessions;
@@ -70,7 +70,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {
/**
* Return the maximum number of sessions that can be stored.
* @since 5.1
* @since 5.0.8
*/
public int getMaxSessions() {
return this.maxSessions;
@@ -102,9 +102,9 @@ public class InMemoryWebSessionStore implements WebSessionStore {
* Return the map of sessions with an {@link Collections#unmodifiableMap
* unmodifiable} wrapper. This could be used for management purposes, to
* list active sessions, invalidate expired ones, etc.
* @since 5.1
* @since 5.0.8
*/
public Map<String, InMemoryWebSession> getSessions() {
public Map<String, WebSession> getSessions() {
return Collections.unmodifiableMap(this.sessions);
}
@@ -153,7 +153,7 @@ public class InMemoryWebSessionStore implements WebSessionStore {
* kicked off lazily during calls to {@link #createWebSession() create} or
* {@link #retrieveSession retrieve}, no less than 60 seconds apart.
* This method can be called to force a check at a specific time.
* @since 5.1
* @since 5.0.8
*/
public void removeExpiredSessions() {
this.expiredSessionChecker.removeExpiredSessions(this.clock.instant());

View File

@@ -255,7 +255,6 @@ final class HierarchicalUriComponents extends UriComponents {
// Encoding
HierarchicalUriComponents encodeTemplate(Charset charset) {
if (this.encodeState.isEncoded()) {
return this;
}

View File

@@ -325,7 +325,7 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
}
// encode methods
// Encode methods
/**
* Request to have the URI template pre-encoded at build time, and
@@ -361,7 +361,7 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
}
// build methods
// Build methods
/**
* Build a {@code UriComponents} instance from the various components contained in this builder.
@@ -386,8 +386,7 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
HierarchicalUriComponents uriComponents =
new HierarchicalUriComponents(this.scheme, this.fragment, this.userInfo,
this.host, this.port, this.pathBuilder.build(), this.queryParams, encoded);
return this.encodeTemplate ? uriComponents.encodeTemplate(this.charset) : uriComponents;
return (this.encodeTemplate ? uriComponents.encodeTemplate(this.charset) : uriComponents);
}
}
@@ -406,7 +405,7 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
* Build a {@code UriComponents} instance and replaces URI template variables
* with the values from an array. This is a shortcut method which combines
* calls to {@link #build()} and then {@link UriComponents#expand(Object...)}.
* @param uriVariableValues URI variable values
* @param uriVariableValues the URI variable values
* @return the URI components with expanded values
*/
public UriComponents buildAndExpand(Object... uriVariableValues) {