From a16aa767dcb026ffb89b4fbb1fc7f64215110a2e Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 22 Aug 2016 22:04:28 +0100 Subject: [PATCH] Tweak performance of RelaxedNames.separatedToCamelCase Closes gh-6661 --- .../org/springframework/boot/bind/RelaxedNames.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedNames.java b/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedNames.java index 3e335e335e..819943dabe 100644 --- a/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedNames.java +++ b/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedNames.java @@ -200,23 +200,29 @@ public final class RelaxedNames implements Iterable { }; + private static final char[] SUFFIXES = new char[] { '_', '-', '.' }; + public abstract String apply(String value); private static String separatedToCamelCase(String value, boolean caseInsensitive) { + if (value.length() == 0) { + return value; + } StringBuilder builder = new StringBuilder(); for (String field : SEPARATED_TO_CAMEL_CASE_PATTERN.split(value)) { field = (caseInsensitive ? field.toLowerCase() : field); builder.append( builder.length() == 0 ? field : StringUtils.capitalize(field)); } - for (String suffix : new String[] { "_", "-", "." }) { - if (value.endsWith(suffix)) { + char lastChar = value.charAt(value.length() - 1); + for (char suffix : SUFFIXES) { + if (lastChar == suffix) { builder.append(suffix); + break; } } return builder.toString(); - } }