Polishing

This commit is contained in:
Juergen Hoeller
2016-11-24 15:32:06 +01:00
parent 0b71e3640b
commit b22a59a0c4
3 changed files with 29 additions and 25 deletions

View File

@@ -30,8 +30,8 @@ import org.springframework.util.StringUtils;
* Helper class for calculating property matches, according to a configurable
* distance. Provide the list of potential matches and an easy way to generate
* an error message. Works for both java bean properties and fields.
* <p>
* Mainly for use within the framework and in particular the binding facility
*
* <p>Mainly for use within the framework and in particular the binding facility.
*
* @author Alef Arendsen
* @author Arjen Poutsma
@@ -43,14 +43,12 @@ import org.springframework.util.StringUtils;
*/
public abstract class PropertyMatches {
//---------------------------------------------------------------------
// Static section
//---------------------------------------------------------------------
/** Default maximum property distance: 2 */
public static final int DEFAULT_MAX_DISTANCE = 2;
// Static factory methods
/**
* Create PropertyMatches for the given bean property.
* @param propertyName the name of the property to find possible matches for
@@ -90,9 +88,7 @@ public abstract class PropertyMatches {
}
//---------------------------------------------------------------------
// Instance section
//---------------------------------------------------------------------
// Instance state
private final String propertyName;
@@ -107,18 +103,19 @@ public abstract class PropertyMatches {
this.possibleMatches = possibleMatches;
}
/**
* Return the name of the requested property.
*/
public String getPropertyName() {
return propertyName;
return this.propertyName;
}
/**
* Return the calculated possible matches.
*/
public String[] getPossibleMatches() {
return possibleMatches;
return this.possibleMatches;
}
/**
@@ -127,6 +124,9 @@ public abstract class PropertyMatches {
*/
public abstract String buildErrorMessage();
// Implementation support for subclasses
protected void appendHintMessage(StringBuilder msg) {
msg.append("Did you mean ");
for (int i = 0; i < this.possibleMatches.length; i++) {
@@ -184,9 +184,12 @@ public abstract class PropertyMatches {
return d[s1.length()][s2.length()];
}
// Concrete subclasses
private static class BeanPropertyMatches extends PropertyMatches {
private BeanPropertyMatches(String propertyName, Class<?> beanClass, int maxDistance) {
public BeanPropertyMatches(String propertyName, Class<?> beanClass, int maxDistance) {
super(propertyName, calculateMatches(propertyName,
BeanUtils.getPropertyDescriptors(beanClass), maxDistance));
}
@@ -231,12 +234,12 @@ public abstract class PropertyMatches {
}
return msg.toString();
}
}
private static class FieldPropertyMatches extends PropertyMatches {
private FieldPropertyMatches(String propertyName, Class<?> beanClass, int maxDistance) {
public FieldPropertyMatches(String propertyName, Class<?> beanClass, int maxDistance) {
super(propertyName, calculateMatches(propertyName, beanClass, maxDistance));
}
@@ -255,7 +258,6 @@ public abstract class PropertyMatches {
return StringUtils.toStringArray(candidates);
}
@Override
public String buildErrorMessage() {
String propertyName = getPropertyName();
@@ -270,7 +272,6 @@ public abstract class PropertyMatches {
}
return msg.toString();
}
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2012 the original author or authors.
* Copyright 2002-2016 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,12 +27,12 @@ import org.springframework.core.convert.support.GenericConversionService;
/**
* A factory providing convenient access to a ConversionService configured with
* converters appropriate for most environments. Set the {@link #setConverters
* "converters"} property to supplement the default converters.
* converters appropriate for most environments. Set the
* {@link #setConverters "converters"} property to supplement the default converters.
*
* <p>This implementation creates a {@link DefaultConversionService}. Subclasses
* may override {@link #createConversionService()} in order to return a
* {@link GenericConversionService} instance of their choosing.
* <p>This implementation creates a {@link DefaultConversionService}.
* Subclasses may override {@link #createConversionService()} in order to return
* a {@link GenericConversionService} instance of their choosing.
*
* <p>Like all {@code FactoryBean} implementations, this class is suitable for
* use when configuring a Spring application context using Spring {@code <beans>}

View File

@@ -33,6 +33,7 @@ abstract class ConversionUtils {
public static Object invokeConverter(GenericConverter converter, Object source, TypeDescriptor sourceType,
TypeDescriptor targetType) {
try {
return converter.convert(source, sourceType, targetType);
}
@@ -44,7 +45,9 @@ abstract class ConversionUtils {
}
}
public static boolean canConvertElements(TypeDescriptor sourceElementType, TypeDescriptor targetElementType, ConversionService conversionService) {
public static boolean canConvertElements(TypeDescriptor sourceElementType, TypeDescriptor targetElementType,
ConversionService conversionService) {
if (targetElementType == null) {
// yes
return true;
@@ -58,11 +61,11 @@ abstract class ConversionUtils {
return true;
}
else if (sourceElementType.getType().isAssignableFrom(targetElementType.getType())) {
// maybe;
// maybe
return true;
}
else {
// no;
// no
return false;
}
}