diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java b/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java index 8c14839d8..995c64ef3 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Properties; +import org.springframework.batch.core.JobInstance; import org.springframework.batch.core.JobParameter; import org.springframework.batch.core.JobParameter.ParameterType; import org.springframework.batch.core.JobParameters; @@ -35,7 +36,9 @@ import org.springframework.util.StringUtils; /** * Converter for {@link JobParameters} instances using a simple naming - * convention for property keys. Key names ending with "(<type>)" where + * convention for property keys. Key names that are prefixed with a - are + * considered non-identifying and will not contribute to the identity of a + * {@link JobInstance}. Key names ending with "(<type>)" where * type is one of string, date, long are converted to the corresponding type. * The default type is string. E.g. * @@ -48,7 +51,7 @@ import org.springframework.util.StringUtils; * strategies, augmented if necessary by the custom editors provided. * *
- * + * * If you need to be able to parse and format local-specific dates and numbers, * you can inject formatters ({@link #setDateFormat(DateFormat)} and * {@link #setNumberFormat(NumberFormat)}). diff --git a/src/site/apt/migration/2.1.9-2.2.0.M1.apt b/src/site/apt/migration/2.1.9-2.2.0.M1.apt index 5d908a254..f99f6cc6d 100644 --- a/src/site/apt/migration/2.1.9-2.2.0.M1.apt +++ b/src/site/apt/migration/2.1.9-2.2.0.M1.apt @@ -2,6 +2,8 @@ Spring Batch 2.2.0.M1 Release Notes * Bug + * {{{https://jira.springframework.org/browse/BATCH-1697}[BATCH-1697]}} - TaskletStep not marked as FAILED when FlatFileItemWriter fails to append footer + * {{{https://jira.springframework.org/browse/BATCH-1745}[BATCH-1745]}} - XSD inconsistency: allow-start-if-complete is not allowed on non-tasklet step * {{{https://jira.springframework.org/browse/BATCH-1773}[BATCH-1773]}} - Step-scoped annotation based listener is not called @@ -10,6 +12,8 @@ Spring Batch 2.2.0.M1 Release Notes * {{{https://jira.springframework.org/browse/BATCH-1780}[BATCH-1780]}} - Code exception is masked by a batch exception + * {{{https://jira.springframework.org/browse/BATCH-1795}[BATCH-1795]}} - ExponentialBackOffPolicy and BackOffContext + * {{{https://jira.springframework.org/browse/BATCH-1799}[BATCH-1799]}} - Exception in flush of file output ItemWriters does not abort a step/job * {{{https://jira.springframework.org/browse/BATCH-1903}[BATCH-1903]}} - SQL compatibility breakage with HSQL @@ -18,6 +22,8 @@ Spring Batch 2.2.0.M1 Release Notes * {{{https://jira.springframework.org/browse/BATCH-1920}[BATCH-1920]}} - Add sample for new AMQPItemReader & Writer + * {{{https://jira.springframework.org/browse/BATCH-1948}[BATCH-1948]}} - StepScope doesn't work properly with proxyTargetClass=true in @Bean definitions + * {{{https://jira.springframework.org/browse/BATCH-1950}[BATCH-1950]}} - Fix bootstrap process * Improvement @@ -26,6 +32,8 @@ Spring Batch 2.2.0.M1 Release Notes * {{{https://jira.springframework.org/browse/BATCH-1691}[BATCH-1691]}} - Allow to define groupBy for SqlPaginingQueryProviderFactoryBean + * {{{https://jira.springframework.org/browse/BATCH-1718}[BATCH-1718]}} - CompositeRetryPolicy by default is pessimistic + * {{{https://jira.springframework.org/browse/BATCH-1854}[BATCH-1854]}} - Create marker interface to be used by MultiResourceItemReader to inject the resource an item was read from. * {{{https://jira.springframework.org/browse/BATCH-1889}[BATCH-1889]}} - SqlFire support @@ -36,6 +44,8 @@ Spring Batch 2.2.0.M1 Release Notes * {{{https://jira.springframework.org/browse/BATCH-1666}[BATCH-1666]}} - Add abort(long executionId) convenience method to JobOperator + * {{{https://jira.springframework.org/browse/BATCH-1667}[BATCH-1667]}} - StepExecutionListener ExitStatus not persisted and not accessible for other listeners + * {{{https://jira.springframework.org/browse/BATCH-1684}[BATCH-1684]}} - Allow serializer to be injected into JobRepository (ExecutionContextDao) * {{{https://jira.springframework.org/browse/BATCH-1694}[BATCH-1694]}} - Add StepLocatorStepFactoryBean @@ -48,6 +58,10 @@ Spring Batch 2.2.0.M1 Release Notes * {{{https://jira.springframework.org/browse/BATCH-1911}[BATCH-1911]}} - Provide a Step registry to be able to locate a step by its name on (namely) remote nodes + * {{{https://jira.springframework.org/browse/BATCH-1912}[BATCH-1912]}} - Provide a base PartitionHandler so that other implementations can benefit from a shared base implementation + + * {{{https://jira.springframework.org/browse/BATCH-1918}[BATCH-1918]}} - @Configuration support for batch (e.g. @EnableBatchProcessing) + * {{{https://jira.springframework.org/browse/BATCH-1935}[BATCH-1935]}} - Add quick start maven archetype * Task @@ -58,6 +72,10 @@ Spring Batch 2.2.0.M1 Release Notes * Refactoring + * {{{https://jira.springframework.org/browse/BATCH-1895}[BATCH-1895]}} - Remove batch retry and depend on spring-retry. + + * {{{https://jira.springframework.org/browse/BATCH-1897}[BATCH-1897]}} - Remove ant files from batch. + * {{{https://jira.springframework.org/browse/BATCH-1915}[BATCH-1915]}} - Change minimum compiler level to 1.6 and use @Override everywhere * {{{https://jira.springframework.org/browse/BATCH-1940}[BATCH-1940]}} - Replace org.springframework.batch.support.JdbcTestUtils with org.springframework.test.jdbc.JdbcTestUtils diff --git a/src/site/apt/migration/2.2.0.M1-2.2.0.RC1.apt b/src/site/apt/migration/2.2.0.M1-2.2.0.RC1.apt new file mode 100644 index 000000000..13146470a --- /dev/null +++ b/src/site/apt/migration/2.2.0.M1-2.2.0.RC1.apt @@ -0,0 +1,74 @@ +Spring Batch 2.2.0.RC1 Release Notes + +* Bug + + * {{{https://jira.springframework.org/browse/BATCH-1676}[BATCH-1676]}} - Inconsistencies in XSD and documentation for Listeners within Step + + * {{{https://jira.springframework.org/browse/BATCH-1720}[BATCH-1720]}} - Remote steps should not be consulted for isAllowedStartIfComplete() etc. + + * {{{https://jira.springframework.org/browse/BATCH-1788}[BATCH-1788]}} - Update chapter 4.5.6 on aborting jobs in documentation + + * {{{https://jira.springframework.org/browse/BATCH-1847}[BATCH-1847]}} - scope="step" inheritance from parent bean definitions causes odd effects + + * {{{https://jira.springframework.org/browse/BATCH-1856}[BATCH-1856]}} - ExtendedConnectionDataSourceProxy compilation error in JDK 7 + + * {{{https://jira.springframework.org/browse/BATCH-1908}[BATCH-1908]}} - Inefficient storage of StepExecutionContexts when using partitioning + + * {{{https://jira.springframework.org/browse/BATCH-1924}[BATCH-1924]}} - Restarting a stopped job in COMPLETED state prevents progress + + * {{{https://jira.springframework.org/browse/BATCH-1951}[BATCH-1951]}} - StepScoped proxies not being created with proxyMode=TARGET_CLASS + + * {{{https://jira.springframework.org/browse/BATCH-1952}[BATCH-1952]}} - Missing Import in spring-batch-infrastructure.jar + + * {{{https://jira.springframework.org/browse/BATCH-1757}[BATCH-1757]}} - MinMaxPartitioner sets incorrect max value + + * {{{https://jira.springframework.org/browse/BATCH-1959}[BATCH-1959]}} - Problem with FlatFileItemWriter restart using multi-byte encoding + + * {{{https://jira.springframework.org/browse/BATCH-1960}[BATCH-1960]}} - drop table not consistent across supported dbs + + * {{{https://jira.springframework.org/browse/BATCH-1972}[BATCH-1972]}} - StaxEventItemReader fails when restarted at end of file + + * {{{https://jira.springframework.org/browse/BATCH-1975}[BATCH-1975]}} - StaxEventItemWriter namespace added to elements after restart + +* Improvement + + * {{{https://jira.springframework.org/browse/BATCH-1723}[BATCH-1723]}} - Change JobParameters to use wrapper types for getLong and getDouble + + * {{{https://jira.springframework.org/browse/BATCH-1770}[BATCH-1770]}} - Checking for UNKNOWN step status could be performed before the JobExecution is launched + + * {{{https://jira.springframework.org/browse/BATCH-1906}[BATCH-1906]}} - add support to access an item's line number + + * {{{https://jira.springframework.org/browse/BATCH-1928}[BATCH-1928]}} - Convert deprecated classes from the org.springframework.jdbc.core.simple package in samples + + * {{{https://jira.springframework.org/browse/BATCH-1955}[BATCH-1955]}} - Remove requirement to inject ItemSqlParameterSourceProvider into JdbcBatchItemWriter + + * {{{https://jira.springframework.org/browse/BATCH-1957}[BATCH-1957]}} - Add StaxEventItemWriter deleteIfEmpty property + + * {{{https://jira.springframework.org/browse/BATCH-1958}[BATCH-1958]}} - Fix typo in samples apt index + +* New Feature + + * {{{https://jira.springframework.org/browse/BATCH-1412}[BATCH-1412]}} - Allow a Job to accept JobParameters that do not contribute to its identity + + * {{{https://jira.springframework.org/browse/BATCH-1728}[BATCH-1728]}} - Add support for Spring Data (readers and writers) + + * {{{https://jira.springframework.org/browse/BATCH-1934}[BATCH-1934]}} - Update spring-batch docs for AmqpItemReader / Writers and use of SQLFire as a db option + + * {{{https://jira.springframework.org/browse/BATCH-1964}[BATCH-1964]}} - Optional Transaction in JpaPagingItemReader + +* Task + + * {{{https://jira.springframework.org/browse/BATCH-1954}[BATCH-1954]}} - Update documentation for 2.2.0 + + * {{{https://jira.springframework.org/browse/BATCH-1968}[BATCH-1968]}} - Upgrade to hsqldb 2.2.9 + + * {{{https://jira.springframework.org/browse/BATCH-1977}[BATCH-1977]}} - Create a migration from old schema to new schema + +* Refactoring + + * {{{https://jira.springframework.org/browse/BATCH-1939}[BATCH-1939]}} - Minor cleanups to AMQP sample + + * {{{https://jira.springframework.org/browse/BATCH-1947}[BATCH-1947]}} - Replace org.easymock.classextension.EasyMock with org.easymock.EasyMock + + * {{{https://jira.springframework.org/browse/BATCH-1966}[BATCH-1966]}} - Use abstract classes to inherit behaviors + \ No newline at end of file diff --git a/src/site/docbook/reference/domain.xml b/src/site/docbook/reference/domain.xml index 8d2ab6852..5e1693e81 100644 --- a/src/site/docbook/reference/domain.xml +++ b/src/site/docbook/reference/domain.xml @@ -72,8 +72,9 @@ batch job. A Job is an entity that encapsulates an entire batch process. As is common with other Spring projects, a Job will be wired together via an XML configuration - file. This file may be referred to as the "job configuration". However, - Job is just the top of an overall hierarchy: + file or Java based configuration. This configuration may be referred to as + the "job configuration". However, Job is just the + top of an overall hierarchy: @@ -137,7 +138,7 @@ executions (JobExecution is discussed in more detail below) and only one JobInstance corresponding to a particular Job and - JobParameters can be running at a given + identifying JobParameters can be running at a given time. The definition of a JobInstance has @@ -188,11 +189,17 @@ one that was started with a job parameter of 01-01-2008 and another that was started with a parameter of 01-02-2008. Thus, the contract can be defined as: JobInstance = - Job + JobParameters. This + Job + identifying JobParameters. This allows a developer to effectively control how a JobInstance is defined, since they control what parameters are passed in. + + Not all job parameters are required to contribute to the identification + of a JobInstance. By default they do, however the framework + allows the submission of a Job with parameters that do + not contribute to the identity of a JobInstance as well. +
JobExecution @@ -205,7 +212,7 @@ successfully. Using the EndOfDay Job described above as an example, consider a JobInstance for 01-01-2008 that failed the first time it was run. If it is run again - with the same job parameters as the first run (01-01-2008), a new + with the same identifying job parameters as the first run (01-01-2008), a new JobExecution will be created. However, there will still be only one JobInstance. @@ -324,18 +331,20 @@ - BATCH_JOB_PARAMS + BATCH_JOB_EXECUTION_PARAMS - JOB_INST_ID + JOB_EXECUTION_ID TYPE_CD KEY_NAME DATE_VAL + + IDENTIFYING @@ -346,6 +355,8 @@ schedule.Date 2008-01-01 + + TRUE @@ -436,18 +447,20 @@
- BATCH_JOB_PARAMS + BATCH_JOB_EXECUTION_PARAMS - JOB_INST_ID + JOB_EXECUTION_ID TYPE_CD KEY_NAME DATE_VAL + + IDENTIFYING @@ -458,6 +471,8 @@ schedule.Date 2008-01-01 00:00:00 + + TRUE @@ -467,7 +482,21 @@ schedule.Date + 2008-01-01 00:00:00 + + TRUE + + + + 3 + + DATE + + schedule.Date + 2008-01-02 00:00:00 + + TRUE @@ -1017,9 +1046,9 @@ ExecutionContext ecJob = jobExecution.getExecutionContext(); xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/batch - http://www.springframework.org/schema/batch/spring-batch-2.0.xsd"> + http://www.springframework.org/schema/batch/spring-batch-2.2.xsd"> <job id="ioSampleJob"> <step id="step1">