Skip to content

Commit b03af2e

Browse files
committed
StringRenderer: use a StringBuilder instead of string concatenation
1 parent f3430b6 commit b03af2e

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

src/main/java/com/github/fge/uritemplate/render/StringRenderer.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,26 @@ public List<String> render(final VariableSpec varspec,
5151

5252
private String doRender(final VariableSpec varspec, final String value)
5353
{
54-
String ret = "";
54+
final StringBuilder sb = new StringBuilder(value.length());
5555
if (named) {
5656
// Note: variable names do not contain any character susceptible to
5757
// be percent encoded, so we leave them intact
58-
ret += varspec.getName();
58+
sb.append(varspec.getName());
5959
if (value.isEmpty())
60-
return ret + ifEmpty;
61-
ret += '=';
60+
return sb.append(ifEmpty).toString();
61+
//return ret + ifEmpty;
62+
sb.append('=');
6263
}
6364
// Account for a prefix, if any. Note: explode modifier is ignored.
64-
final int len = value.codePointCount(0, value.length());
6565
final int prefixLen = varspec.getPrefixLength();
66-
final String val = prefixLen == -1 ? value
67-
: nFirstCodePoints(value, Math.min(len, prefixLen));
68-
ret += pctEncode(val);
69-
return ret;
66+
if (prefixLen == -1)
67+
return sb.append(pctEncode(value)).toString();
68+
final int len = value.codePointCount(0, value.length());
69+
return len <= prefixLen ? sb.append(pctEncode(value)).toString()
70+
:sb.append(pctEncode(nFirstChars(value, prefixLen))).toString();
7071
}
7172

72-
private static String nFirstCodePoints(final String s, final int n)
73+
private static String nFirstChars(final String s, final int n)
7374
{
7475
int realIndex = n;
7576
while (s.codePointCount(0, realIndex) != n)

0 commit comments

Comments
 (0)