From dcc9da8273f2fe25fbc9aaa001b101f296f4ddcd Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Wed, 29 Jul 2015 22:08:31 +0200 Subject: [PATCH] BATCH-2407 Use StringBuilder instead of StringBuffer With Java 1.5 StringBuilder is preferred over StringBuffer for single threaded access as is has less overhead. This is evidenced by the class comment of StringBuffer and Effective Java 2nd Edition Item 67: Avoid excessive synchronization. > The StringBuilder class should generally be used in preference to > this one, as it supports all of the same operations but it is faster, > as it performs no synchronization. - replace StringBuffer with StringBuilder where possible Issue: BATCH-2407 --- .../test/jdbc/datasource/DataSourceInitializer.java | 4 ++-- .../batch/core/DefaultJobKeyGenerator.java | 4 ++-- .../org/springframework/batch/core/ExitStatus.java | 2 +- .../springframework/batch/core/JobParametersTests.java | 8 ++++---- .../core/repository/dao/JdbcJobInstanceDaoTests.java | 2 +- .../core/repository/dao/JdbcStepExecutionDaoTests.java | 2 +- .../test/jdbc/datasource/DataSourceInitializer.java | 4 ++-- .../test/jdbc/datasource/DataSourceInitializer.java | 4 ++-- .../batch/item/file/mapping/PropertyMatches.java | 2 +- .../item/file/transform/RangeArrayPropertyEditor.java | 2 +- .../batch/item/validator/SpringValidator.java | 4 ++-- .../repeat/context/SynchronizedAttributeAccessor.java | 2 +- .../batch/support/MethodInvokerUtils.java | 2 +- .../transaction/TransactionAwareBufferedWriter.java | 10 +++++----- .../file/transform/FormatterLineAggregatorTests.java | 4 ++-- .../test/jdbc/datasource/DataSourceInitializer.java | 4 ++-- .../batch/test/DataSourceInitializer.java | 4 ++-- .../springframework/batch/test/common/LogAdvice.java | 2 +- 18 files changed, 33 insertions(+), 33 deletions(-) diff --git a/spring-batch-core-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java b/spring-batch-core-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java index a2dc03f58..5fa3a7977 100644 --- a/spring-batch-core-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java +++ b/spring-batch-core-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java @@ -137,10 +137,10 @@ public class DataSourceInitializer implements InitializingBean, DisposableBean { } private String stripComments(List list) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); for (String line : list) { if (!line.startsWith("//") && !line.startsWith("--")) { - buffer.append(line + "\n"); + buffer.append(line).append("\n"); } } return buffer.toString(); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/DefaultJobKeyGenerator.java b/spring-batch-core/src/main/java/org/springframework/batch/core/DefaultJobKeyGenerator.java index 410037d26..bb9920c72 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/DefaultJobKeyGenerator.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/DefaultJobKeyGenerator.java @@ -43,14 +43,14 @@ public class DefaultJobKeyGenerator implements JobKeyGenerator { public String generateKey(JobParameters source) { Map props = source.getParameters(); - StringBuffer stringBuffer = new StringBuffer(); + StringBuilder stringBuffer = new StringBuilder(); List keys = new ArrayList(props.keySet()); Collections.sort(keys); for (String key : keys) { JobParameter jobParameter = props.get(key); if(jobParameter.isIdentifying()) { String value = jobParameter.getValue()==null ? "" : jobParameter.toString(); - stringBuffer.append(key + "=" + value + ";"); + stringBuffer.append(key).append("=").append(value).append(";"); } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java b/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java index 29de454af..cd5c12967 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/ExitStatus.java @@ -242,7 +242,7 @@ public class ExitStatus implements Serializable, Comparable { * description */ public ExitStatus addExitDescription(String description) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); boolean changed = StringUtils.hasText(description) && !exitDescription.equals(description); if (StringUtils.hasText(exitDescription)) { buffer.append(exitDescription); diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/JobParametersTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/JobParametersTests.java index 3094ae945..1b7ff2715 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/JobParametersTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/JobParametersTests.java @@ -157,9 +157,9 @@ public class JobParametersTests { public void testToStringOrder() { Map props = parameters.getParameters(); - StringBuffer stringBuilder = new StringBuffer(); + StringBuilder stringBuilder = new StringBuilder(); for (Entry entry : props.entrySet()) { - stringBuilder.append(entry.toString() + ";"); + stringBuilder.append(entry.toString()).append(";"); } String string1 = stringBuilder.toString(); @@ -177,9 +177,9 @@ public class JobParametersTests { JobParameters testProps = new JobParameters(parameterMap); props = testProps.getParameters(); - stringBuilder = new StringBuffer(); + stringBuilder = new StringBuilder(); for (Entry entry : props.entrySet()) { - stringBuilder.append(entry.toString() + ";"); + stringBuilder.append(entry.toString()).append(";"); } String string2 = stringBuilder.toString(); diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDaoTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDaoTests.java index 02fa041c2..659dccc65 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDaoTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDaoTests.java @@ -79,7 +79,7 @@ public class JdbcJobInstanceDaoTests extends AbstractJobInstanceDaoTests { public void testHexing() throws Exception { MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] bytes = digest.digest("f78spx".getBytes("UTF-8")); - StringBuffer output = new StringBuffer(); + StringBuilder output = new StringBuilder(); for (byte bite : bytes) { output.append(String.format("%02x", bite)); } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDaoTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDaoTests.java index 03e761675..f5485185c 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDaoTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDaoTests.java @@ -49,7 +49,7 @@ public class JdbcStepExecutionDaoTests extends AbstractStepExecutionDaoTests { @Test public void testTruncateExitDescription() { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); for (int i = 0; i < 100; i++) { sb.append("too long exit description"); } diff --git a/spring-batch-core/src/test/java/test/jdbc/datasource/DataSourceInitializer.java b/spring-batch-core/src/test/java/test/jdbc/datasource/DataSourceInitializer.java index ad6b62260..9c3303476 100644 --- a/spring-batch-core/src/test/java/test/jdbc/datasource/DataSourceInitializer.java +++ b/spring-batch-core/src/test/java/test/jdbc/datasource/DataSourceInitializer.java @@ -135,10 +135,10 @@ public class DataSourceInitializer implements InitializingBean { } private String stripComments(List list) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); for (String line : list) { if (!line.startsWith("//") && !line.startsWith("--")) { - buffer.append(line + "\n"); + buffer.append(line).append("\n"); } } return buffer.toString(); diff --git a/spring-batch-infrastructure-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java b/spring-batch-infrastructure-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java index 7c3870e72..e7130e1ee 100644 --- a/spring-batch-infrastructure-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java +++ b/spring-batch-infrastructure-tests/src/test/java/test/jdbc/datasource/DataSourceInitializer.java @@ -139,10 +139,10 @@ public class DataSourceInitializer implements InitializingBean, DisposableBean { } private String stripComments(List list) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); for (String line : list) { if (!line.startsWith("//") && !line.startsWith("--")) { - buffer.append(line + "\n"); + buffer.append(line).append("\n"); } } return buffer.toString(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PropertyMatches.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PropertyMatches.java index f73af3359..0c232b8ba 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PropertyMatches.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PropertyMatches.java @@ -99,7 +99,7 @@ final class PropertyMatches { * indicating the possible property matches. */ public String buildErrorMessage() { - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); buf.append("Bean property '"); buf.append(this.propertyName); buf.append("' is not writable or has an invalid setter method. "); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/RangeArrayPropertyEditor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/RangeArrayPropertyEditor.java index 71bf99a37..58d479c32 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/RangeArrayPropertyEditor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/transform/RangeArrayPropertyEditor.java @@ -98,7 +98,7 @@ public class RangeArrayPropertyEditor extends PropertyEditorSupport { public String getAsText() { Range[] ranges = (Range[])getValue(); - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); for (int i = 0; i < ranges.length; i++) { if(i>0) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/validator/SpringValidator.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/validator/SpringValidator.java index 888098014..8c863722f 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/validator/SpringValidator.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/validator/SpringValidator.java @@ -59,7 +59,7 @@ public class SpringValidator implements Validator, InitializingBean { * @return string of field errors followed by global errors. */ private String errorsToString(Errors errors) { - StringBuffer builder = new StringBuffer(); + StringBuilder builder = new StringBuilder(); appendCollection(errors.getFieldErrors(), builder); appendCollection(errors.getGlobalErrors(), builder); @@ -71,7 +71,7 @@ public class SpringValidator implements Validator, InitializingBean { * Append the string representation of elements of the collection (separated * by new lines) to the given StringBuilder. */ - private void appendCollection(Collection collection, StringBuffer builder) { + private void appendCollection(Collection collection, StringBuilder builder) { for (Object value : collection) { builder.append("\n"); builder.append(value.toString()); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/context/SynchronizedAttributeAccessor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/context/SynchronizedAttributeAccessor.java index 97e09abc3..03b4cc6e6 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/context/SynchronizedAttributeAccessor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/context/SynchronizedAttributeAccessor.java @@ -151,7 +151,7 @@ public class SynchronizedAttributeAccessor implements AttributeAccessor { */ @Override public String toString() { - StringBuffer buffer = new StringBuffer("SynchronizedAttributeAccessor: ["); + StringBuilder buffer = new StringBuilder("SynchronizedAttributeAccessor: ["); synchronized (support) { String[] names = attributeNames(); for (int i = 0; i < names.length; i++) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/MethodInvokerUtils.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/MethodInvokerUtils.java index 55811f802..063a7a39f 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/MethodInvokerUtils.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/MethodInvokerUtils.java @@ -70,7 +70,7 @@ public class MethodInvokerUtils { * @return String */ public static String getParamTypesString(Class... paramTypes) { - StringBuffer paramTypesList = new StringBuffer("("); + StringBuilder paramTypesList = new StringBuilder("("); for (int i = 0; i < paramTypes.length; i++) { paramTypesList.append(paramTypes[i].getSimpleName()); if (i + 1 < paramTypes.length) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/TransactionAwareBufferedWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/TransactionAwareBufferedWriter.java index 54dd2b204..29bf04288 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/TransactionAwareBufferedWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/transaction/TransactionAwareBufferedWriter.java @@ -88,11 +88,11 @@ public class TransactionAwareBufferedWriter extends Writer { /** * @return */ - private StringBuffer getCurrentBuffer() { + private StringBuilder getCurrentBuffer() { if (!TransactionSynchronizationManager.hasResource(bufferKey)) { - TransactionSynchronizationManager.bindResource(bufferKey, new StringBuffer()); + TransactionSynchronizationManager.bindResource(bufferKey, new StringBuilder()); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override @@ -113,7 +113,7 @@ public class TransactionAwareBufferedWriter extends Writer { } private void complete() throws IOException { - StringBuffer buffer = (StringBuffer) TransactionSynchronizationManager.getResource(bufferKey); + StringBuilder buffer = (StringBuilder) TransactionSynchronizationManager.getResource(bufferKey); if (buffer != null) { String string = buffer.toString(); byte[] bytes = string.getBytes(encoding); @@ -145,7 +145,7 @@ public class TransactionAwareBufferedWriter extends Writer { } - return (StringBuffer) TransactionSynchronizationManager.getResource(bufferKey); + return (StringBuilder) TransactionSynchronizationManager.getResource(bufferKey); } @@ -222,7 +222,7 @@ public class TransactionAwareBufferedWriter extends Writer { return; } - StringBuffer buffer = getCurrentBuffer(); + StringBuilder buffer = getCurrentBuffer(); buffer.append(cbuf, off, len); } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/FormatterLineAggregatorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/FormatterLineAggregatorTests.java index b7bc5dc7d..a7acaf9e0 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/FormatterLineAggregatorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/transform/FormatterLineAggregatorTests.java @@ -132,7 +132,7 @@ public class FormatterLineAggregatorTests { for (int i = 0; i < strings.length; i++) { strings[i] = item[i]; if (item[i].length() < widths[i]) { - StringBuffer buffer = new StringBuffer(strings[i]); + StringBuilder buffer = new StringBuilder(strings[i]); for (int j = 0; j < (widths[i] - item[i].length() + 1) / 2; j++) { buffer.append(" "); } @@ -167,7 +167,7 @@ public class FormatterLineAggregatorTests { for (int i = 0; i < strings.length; i++) { strings[i] = item[i]; if (item[i].length() < widths[i]) { - StringBuffer buffer = new StringBuffer(strings[i]); + StringBuilder buffer = new StringBuilder(strings[i]); for (int j = 0; j < widths[i] - item[i].length(); j++) { buffer.append("."); } diff --git a/spring-batch-infrastructure/src/test/java/test/jdbc/datasource/DataSourceInitializer.java b/spring-batch-infrastructure/src/test/java/test/jdbc/datasource/DataSourceInitializer.java index 556696b6c..92a863bbb 100644 --- a/spring-batch-infrastructure/src/test/java/test/jdbc/datasource/DataSourceInitializer.java +++ b/spring-batch-infrastructure/src/test/java/test/jdbc/datasource/DataSourceInitializer.java @@ -173,10 +173,10 @@ public class DataSourceInitializer implements InitializingBean, DisposableBean { } private String stripComments(List list) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); for (String line : list) { if (!line.startsWith("//") && !line.startsWith("--")) { - buffer.append(line + "\n"); + buffer.append(line).append("\n"); } } return buffer.toString(); diff --git a/spring-batch-test/src/main/java/org/springframework/batch/test/DataSourceInitializer.java b/spring-batch-test/src/main/java/org/springframework/batch/test/DataSourceInitializer.java index 9c18f1ce6..bfd90266c 100755 --- a/spring-batch-test/src/main/java/org/springframework/batch/test/DataSourceInitializer.java +++ b/spring-batch-test/src/main/java/org/springframework/batch/test/DataSourceInitializer.java @@ -156,10 +156,10 @@ public class DataSourceInitializer implements InitializingBean, DisposableBean { } private String stripComments(List list) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); for (String line : list) { if (!line.startsWith("//") && !line.startsWith("--")) { - buffer.append(line + "\n"); + buffer.append(line).append("\n"); } } return buffer.toString(); diff --git a/spring-batch-test/src/test/java/org/springframework/batch/test/common/LogAdvice.java b/spring-batch-test/src/test/java/org/springframework/batch/test/common/LogAdvice.java index 146045bad..ff54bd1f3 100755 --- a/spring-batch-test/src/test/java/org/springframework/batch/test/common/LogAdvice.java +++ b/spring-batch-test/src/test/java/org/springframework/batch/test/common/LogAdvice.java @@ -36,7 +36,7 @@ public class LogAdvice { */ public void doBasicLogging(JoinPoint pjp) throws Throwable { Object[] args = pjp.getArgs(); - StringBuffer output = new StringBuffer(); + StringBuilder output = new StringBuilder(); output.append(pjp.getTarget().getClass().getName()).append(": "); output.append(pjp.toShortString()).append(": ");