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
In various places in the code base a debug message is constructed
unconditionally. This adds unnecessary overhead in the common case when
debug logging is off.
- add guards around debug statements in non-test code
Issue: BATCH-2412
If no resources are found to be passed to the delegate ItemStream,
ItemStream#open is not called. This commit updates the close side to
not call the delegate's close method if the open was not called.
BATCH-2378
The solution for BATCH-2079 was too agressive in that it removed table
references from columns in places that ended up in where clauses. Since
SQL does not support the use of column aliases in where clauses, the
table references are needed. This fix should address adding the aliases
back where needed, while keeping them out in the windowing paging query
use cases where they were problematic.
BATCH-2360
When closing the RepositoryItemReader, this commit now resets the
current item index and page index to be 0 so that it can be reused
imediately (instead of requiring the reader be step scoped for the reset
to occur).
BATCH-2365
To support Spring Framework 4.2 which removes ParameterizedRowMapper,
all references to that were switched to RowMapper. As of Spring 3, the
interfaces are identicle so this should cause no backward compatability
issues.
BATCH-2369
If the user explicitly sets the currentItemCount value on a
RepositoryItemReader, prior to this commit, it is ignored. this commit
addresses this by moving the current counter up to the correct value
when that value is set. This fix addresses BATCH-2274.
This commit also addresses a number of compiler warnings around javadoc.
The JdbcPagingItemReader allows the configuration of multiple sort keys.
If a user configures one of those columns with a table alias, it causes
issues. This update strips the aliases off of the sort keys.
The ClassifierCompositeItemWriter loops through the items passed to the
write method twice. The first time to classifier each item. The second
tiem to perform the actual writes (this prevents the unnecessicary IO if
an error occurs during classification). A HashMap was previously used
to hold the classified items (key to the writer : item) however this
causes the items to be written out of order. This update changes it to
a LinkedHashMap to honor the order the items come in.
Without this change, when passing an invalid job parameter to a bean
that is created internally by Spring Batch will cause a
BeanCreationException that is essentially ignored. Due to it being
ignored, an infinite loop occurs in processing.
* Refactored iBatis based readers and writers to not utilize
SqlMapClientTemplate.
* Depricated all iBatis based readers and writers in favor of MyBatis's
native Spring support.
* Updated XStream support to 1.4.4 and Jettison to 1.2 to be in
alignment with Spring 4.
* Added the PooledEmbeddedDataSource to address the issue outlined in
SPR-11372.
- added method for replacing qualifiers with subquery-qualifiers in
select clause
- refactored buildsort method
- Replaced HashMap with LinkedHashMap for right sort orders