http://opensource.atlassian.com/projects/spring/browse/BATCH-241
Added some more internal bookkeeping in the JobLauncher so that it can recognise a job that it was asked to start, but hasn't been executed by the task executor yet. A side effect is that the JobExecution for such a job is never updated, so I'll keep this issue open until that is also fixed.
http://opensource.atlassian.com/projects/spring/browse/BATCH-199
Moved ExecptionHandler to the step operations.
It seemed to me that the responsibility for doing this should be encapsulated in the StepExecutor - also prevents a nasty package cycle. The only way to do this and keep everyone honest was to add an applyConfiguration() method to the StepExecutor interface. I am open to suggestion about how to do this more cleanly, but for now that is probably enough.
http://opensource.atlassian.com/projects/spring/browse/BATCH-194
Created HibernateAwareItemWriter to abstract the flushing concerns into a framework class - to use it you have to register it with the chunkOperations as an interceptor *and* inject it with an ItemWriter for the step concerned. There might be an AOP approach to this that would reduce the burden of having to confugure it - we can look into that as part of the namespace / DSL work. See hibernateJob.xml for sample.
http://opensource.atlassian.com/projects/spring/browse/BATCH-194
Implemented a pretty good workaround in HibernateCreditWriter, which can probably be tightened up and made into a base class HibernateItemWriter. Also had to make HibernateCursorInputSource Skippable (and it isn't yet Restartable so it's kind of broken - work in progress). Plus the samples were configured to use SimpleStepExecutor which doesn't skip by default (makes me wonder if the restart sample actually does anything sensible).
http://opensource.atlassian.com/projects/spring/browse/BATCH-194
Added step operations to RepeatContextHolder (and changed name of implementation so it isn't tied to chunks). This was needed anyway, otherwise you can't control the exception handling in the step operations properly.
http://opensource.atlassian.com/projects/spring/browse/BATCH-207
Added onFlushDirty to the entity interceptor in hibernate (and changed its name so not specific to entity name - BatchHibernateInterceptor). Also truncating in Sql*Dao. Only exit description is given special treatment for now, and the length is fixed at 250 - hard-coded and tightly coupled with the hibernate mapping and DDL). Should be good enough for most scenarios.
http://opensource.atlassian.com/projects/spring/browse/BATCH-194
Added some extra features to the HibernateCreditWriter sample - it needs to be a RepeatInterceptor (as per Joris's solution in BATCH-76) so it can force a flush inside the RepeatContext of the chunk.