Delegate to common ClassUtils.getQualifiedName
Issue: SPR-15237
(cherry picked from commit 81aca78)
This commit is contained in:
parent
eff285eb3b
commit
5f90a7eee9
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2014 the original author or authors.
|
* Copyright 2002-2017 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -19,6 +19,7 @@ package org.springframework.expression.spel.ast;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.core.convert.TypeDescriptor;
|
import org.springframework.core.convert.TypeDescriptor;
|
||||||
|
import org.springframework.util.ClassUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility methods (formatters, etc) used during parsing and evaluation.
|
* Utility methods (formatters, etc) used during parsing and evaluation.
|
||||||
|
|
@ -28,10 +29,10 @@ import org.springframework.core.convert.TypeDescriptor;
|
||||||
public class FormatHelper {
|
public class FormatHelper {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produce a nice string for a given method name with specified arguments.
|
* Produce a readable representation for a given method name with specified arguments.
|
||||||
* @param name the name of the method
|
* @param name the name of the method
|
||||||
* @param argumentTypes the types of the arguments to the method
|
* @param argumentTypes the types of the arguments to the method
|
||||||
* @return nicely formatted string, eg. foo(String,int)
|
* @return a nicely formatted representation, e.g. {@code foo(String,int)}
|
||||||
*/
|
*/
|
||||||
public static String formatMethodForMessage(String name, List<TypeDescriptor> argumentTypes) {
|
public static String formatMethodForMessage(String name, List<TypeDescriptor> argumentTypes) {
|
||||||
StringBuilder sb = new StringBuilder(name);
|
StringBuilder sb = new StringBuilder(name);
|
||||||
|
|
@ -53,32 +54,14 @@ public class FormatHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produce a nice string for a given class object.
|
* Determine a readable name for a given Class object.
|
||||||
* For example, a string array will have the formatted name "java.lang.String[]".
|
* <p>A String array will have the formatted name "java.lang.String[]".
|
||||||
* @param clazz The class whose name is to be formatted
|
* @param clazz the Class whose name is to be formatted
|
||||||
* @return a formatted string suitable for message inclusion
|
* @return a formatted String suitable for message inclusion
|
||||||
|
* @see ClassUtils#getQualifiedName(Class)
|
||||||
*/
|
*/
|
||||||
public static String formatClassNameForMessage(Class<?> clazz) {
|
public static String formatClassNameForMessage(Class<?> clazz) {
|
||||||
if (clazz == null) {
|
return (clazz != null ? ClassUtils.getQualifiedName(clazz) : "null");
|
||||||
return "null";
|
|
||||||
}
|
|
||||||
if (clazz.isArray()) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
int dims = 1;
|
|
||||||
Class<?> baseClass = clazz.getComponentType();
|
|
||||||
while (baseClass.isArray()) {
|
|
||||||
baseClass = baseClass.getComponentType();
|
|
||||||
dims++;
|
|
||||||
}
|
|
||||||
sb.append(baseClass.getName());
|
|
||||||
for (int i = 0; i < dims; i++) {
|
|
||||||
sb.append("[]");
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return clazz.getName();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2014 the original author or authors.
|
* Copyright 2002-2017 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -48,6 +48,7 @@ public class ReflectionHelperTests extends AbstractExpressionTests {
|
||||||
public void testFormatHelperForClassName() {
|
public void testFormatHelperForClassName() {
|
||||||
assertEquals("java.lang.String",FormatHelper.formatClassNameForMessage(String.class));
|
assertEquals("java.lang.String",FormatHelper.formatClassNameForMessage(String.class));
|
||||||
assertEquals("java.lang.String[]",FormatHelper.formatClassNameForMessage(new String[1].getClass()));
|
assertEquals("java.lang.String[]",FormatHelper.formatClassNameForMessage(new String[1].getClass()));
|
||||||
|
assertEquals("java.lang.String[][]",FormatHelper.formatClassNameForMessage(new String[1][1].getClass()));
|
||||||
assertEquals("int[]",FormatHelper.formatClassNameForMessage(new int[1].getClass()));
|
assertEquals("int[]",FormatHelper.formatClassNameForMessage(new int[1].getClass()));
|
||||||
assertEquals("int[][]",FormatHelper.formatClassNameForMessage(new int[1][2].getClass()));
|
assertEquals("int[][]",FormatHelper.formatClassNameForMessage(new int[1][2].getClass()));
|
||||||
assertEquals("null",FormatHelper.formatClassNameForMessage(null));
|
assertEquals("null",FormatHelper.formatClassNameForMessage(null));
|
||||||
|
|
@ -535,7 +536,7 @@ public class ReflectionHelperTests extends AbstractExpressionTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<TypeDescriptor> getTypeDescriptors(Class<?>... types) {
|
private List<TypeDescriptor> getTypeDescriptors(Class<?>... types) {
|
||||||
List<TypeDescriptor> typeDescriptors = new ArrayList<TypeDescriptor>(types.length);
|
List<TypeDescriptor> typeDescriptors = new ArrayList<>(types.length);
|
||||||
for (Class<?> type : types) {
|
for (Class<?> type : types) {
|
||||||
typeDescriptors.add(TypeDescriptor.valueOf(type));
|
typeDescriptors.add(TypeDescriptor.valueOf(type));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue