Skip to content

Commit 6f2772c

Browse files
committed
GRAILS-11507 optimize output of StringBuilder and StringBuffer instances (CharSequence) in GrailsPrintWriter
1 parent 2c46172 commit 6f2772c

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

grails-web/src/main/groovy/org/codehaus/groovy/grails/web/util/GrailsPrintWriter.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import org.apache.commons.logging.Log;
2727
import org.apache.commons.logging.LogFactory;
28+
import org.codehaus.groovy.grails.support.encoding.CharSequences;
2829
import org.codehaus.groovy.grails.support.encoding.EncodedAppender;
2930
import org.codehaus.groovy.grails.support.encoding.EncodedAppenderFactory;
3031
import org.codehaus.groovy.grails.support.encoding.EncodedAppenderWriter;
@@ -122,7 +123,7 @@ else if (obj instanceof Writable) {
122123
else if (obj instanceof CharSequence) {
123124
try {
124125
usageFlag = true;
125-
getOut().append((CharSequence)obj);
126+
CharSequences.writeCharSequence(getOut(), (CharSequence)obj);
126127
}
127128
catch (IOException e) {
128129
handleIOException(e);
@@ -224,7 +225,7 @@ else if (obj instanceof Writable) {
224225
else if (obj instanceof CharSequence) {
225226
try {
226227
usageFlag = true;
227-
getOut().append((CharSequence)obj);
228+
CharSequences.writeCharSequence(getOut(), (CharSequence)obj);
228229
}
229230
catch (IOException e) {
230231
handleIOException(e);
@@ -439,19 +440,29 @@ public GrailsPrintWriter append(final char c) {
439440
public GrailsPrintWriter append(final CharSequence csq, final int start, final int end) {
440441
try {
441442
usageFlag = true;
442-
getOut().append(csq, start, end);
443+
if (csq == null)
444+
appendNullCharSequence();
445+
else
446+
CharSequences.writeCharSequence(getOut(), csq, start, end);
443447
}
444448
catch (IOException e) {
445449
handleIOException(e);
446450
}
447451
return this;
448452
}
449453

454+
protected void appendNullCharSequence() throws IOException {
455+
getOut().append(null);
456+
}
457+
450458
@Override
451459
public GrailsPrintWriter append(final CharSequence csq) {
452460
try {
453461
usageFlag = true;
454-
getOut().append(csq);
462+
if (csq == null)
463+
appendNullCharSequence();
464+
else
465+
CharSequences.writeCharSequence(getOut(), csq);
455466
}
456467
catch (IOException e) {
457468
handleIOException(e);

0 commit comments

Comments
 (0)