From 0f9b2e800ed6ad803a5422ea8a5db43d4fa326cb Mon Sep 17 00:00:00 2001 From: Michal Fotyga Date: Sun, 6 Oct 2019 11:32:45 +0200 Subject: [PATCH] Fix typos, code style, trim pictures in docs And remove unused file --- .../asciidoc/common-patterns.adoc | 6 +-- .../asciidoc/images/drivingQueryJob.png | Bin 5981 -> 4748 bytes .../images/job-launcher-sequence-async.png | Bin 14154 -> 13701 bytes .../images/job-launcher-sequence-sync.png | Bin 4506 -> 3801 bytes spring-batch-docs/asciidoc/images/jobTier.png | Bin 4730 -> 0 bytes spring-batch-docs/asciidoc/job.adoc | 4 +- .../asciidoc/readersAndWriters.adoc | 42 +++++++++--------- spring-batch-docs/asciidoc/scalability.adoc | 4 +- .../asciidoc/spring-batch-intro.adoc | 2 +- spring-batch-docs/asciidoc/step.adoc | 2 +- spring-batch-docs/asciidoc/testing.adoc | 2 +- 11 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 spring-batch-docs/asciidoc/images/jobTier.png diff --git a/spring-batch-docs/asciidoc/common-patterns.adoc b/spring-batch-docs/asciidoc/common-patterns.adoc index 99bc39535..bea1b1003 100644 --- a/spring-batch-docs/asciidoc/common-patterns.adoc +++ b/spring-batch-docs/asciidoc/common-patterns.adoc @@ -382,7 +382,7 @@ from `read`, an `Integer` is returned. This number can then be used to query for image::{batch-asciidoc}images/drivingQueryJob.png[Driving Query Example, scaledwidth="60%"] An `ItemProcessor` should be used to transform the key obtained from the driving query -into a full 'Foo' object. An existing DAO can be used to query for the full object based +into a full `Foo` object. An existing DAO can be used to query for the full object based on the key. [[multiLineRecords]] @@ -602,7 +602,7 @@ public class NoWorkFoundStepExecutionListener extends StepExecutionListenerSuppo The preceding `StepExecutionListener` inspects the `readCount` property of the `StepExecution` during the 'afterStep' phase to determine if no items were read. If that -is the case, an exit code of FAILED is returned, indicating that the `Step` should fail. +is the case, an exit code `FAILED` is returned, indicating that the `Step` should fail. Otherwise, `null` is returned, which does not affect the status of the `Step`. [[passingDataToFutureSteps]] @@ -699,7 +699,7 @@ public Step step1() { public ExecutionContextPromotionListener promotionListener() { ExecutionContextPromotionListener listener = new ExecutionContextPromotionListener(); - listener.setKeys(new String[] {"someKey" }); + listener.setKeys(new String[] {"someKey"}); return listener; } diff --git a/spring-batch-docs/asciidoc/images/drivingQueryJob.png b/spring-batch-docs/asciidoc/images/drivingQueryJob.png index 175269eedc1b105db5973997aa6ae5a64100ab85..878e4b895934f6442effde0193a545ff1476c8c4 100644 GIT binary patch literal 4748 zcmY+IcTm&8)`lsGl8BhZKtKfo1f)riB0ZFlNbd*;p^4HF)X?>((gdU0#pU&JnbHAN4v$OBM=b70v`_~(;ud8_$dI3sDM|YM;P&cHbV*u#r z=tGzo|0?5VFv{NpgTA)0#>vS^O7GwLE7NUNm!5P9?6$Y4NI_d$TQdXLNm?weiI-+) zXGtUy_k|0YnVACv1Hr+;`}_MVD=W2e(dW*c+uYn#kd%1w;sqLw?&|8Q4h591%c9uW zd~IzcBqYkp%JlX1Ra8_ST9}QEjlFsECNwluSziA1=~F_2f^~IuWHQ;+*ib?2iXadA z&Ye3q&CLfh)4V)A2?WB|;=JVK2I{_!!!nmZ+@6P5sQkj$kt(x?Kru| z;s$xv)@Eh#`8NH(S^e*N4hqb+1lb-+n8h{ zhHwFLFCz|p1%c6N;9Yj8vG^^<^j}E1?eNJpHlWYbewJAp(LBR(8{^k3-Anl4=kzj` z_OoAtZ*c9EEk0*VzCBXC>|qE;xb^0Lj9)#*%Vv<73F7OQZOG_l$PONO>ZPF_5At=~)J{lc0wffEg|f3U@<5)ST7dH# zsNE37AbIQd1Dj8Z$NkxBJs(&14)68vnK?YbMknU9Or~sn>m_%}KpEysI2>%a z0Dv;4K?RN*STyNO%G2u&VESOzkI;7|04NKZ6eqL-kov*&r2s)6{IN3uE=h(pMS`dX65q1DsXLNx&FE{q(WGUt3Dr=_aYRNQ z8&zNcPMktATbk%sA*+}?^q+7n3RJC~O>q!;c^54%)Glg7C&McyR9ck3$X$|Z8u2;{-{I&e z4F2}s1SSf8%$r2H>QXZqe`?$HP{!k;dX%|DMB)fMNR~n0`@I%8tp*h({_!It1%%tm z*7{zj>-~wJ0XQDn*%|7zavKy(E=qVD^y1~68JDJ3t>vgj`I6D%Ri7sJnwE#NU^h_@ zY(_!Yg3-`D)`0rACN|eMf|QDm#Y>tuLicE2K2r>)L|%RcHydo(+RLo2ubYYw{5mc_ zHoxN2_(t2$eWhzZY*Ufz{#fxI`8q{>RuUSl$ML|h^M$yVm@8*1WitQ%!Ia>;9l(w? zpw{RK`&puk#KuDnWW8}+zBmlQ*wf!;nuz*kXEGO^>-0K~WJ7&1M%f|e1GZ|OACbHPv8N3Z$PTLUeIvEaE;~85OCNC;Xu;4w&D3#TtzXlr8+0`+V!M z>|w$iqO>{LBc6Eno!u$E~SC= zIrIpbD^`i3#pxa9W*okJB22r1lX~)xTJMcpz?gWO{J=6a*xk|8$JEv)v`34>K^=e=ym#^23*gZp-B-qpw5GLQCc4wsp zDtk%0?pS5$z?wtItLg zCRFBJ%?_dZ6}XEbzW0tO9+ykI4U*)svqu;}8NAvv&iENrIFWz&X<>Sus;s zIPkk63+0QmyIWn;YU|BBbG=kq>hM!bE9vPx>2Wk&Q}>w=QKes_Gm`;E6}Xi(ucJ}L zcvRaH4Zbtc|60#6diB10T}Kbh&+scu(Y`aE8w~av_}V4))t?c6q?rA9BzXy$m^gFN2essiaChA zkJ+c*+JkspqRc<{TUb|u6oPmbe7{@cVhpyj9Y(}W9Tn+rv2?_0TPIL{bq(?JLCxj~ z2a8(HlhPSe*c=kZ(HN&k7Il$$P%D?iSYe*z5Y9BoqM^(|Rf=dZ5zdGArqa%0G%s><=XSedMU3B95H}s-ja}X0Bza zrMAwK71c1c(#$z?!(J4Pcih77nS0N(qxmGErxkuE`Fw)D31dlWbiv)TSFB!rRiy;0 z->kf#=Rv!_@Ezo0jg1;m(C$g#FL1I7TT4*HDjxP*Fl)Ns-R3nNCu}k90@sFJ`F8-qP4YPztIk?^!H8ac@`# zg0E7JfJ{JyA*Z|*!XXVPyON)`%f0eOJ3F~jAfx`u3vGTEk1ocdd%Sq?m=uWArEuDY z4)X`?7-CA8q04+LEOz;B>HCrHZVhSU=Ut*1ZDc3_%i|w;r!P;V%bXMKy=*4>JcMi&~`lkP*&5+ zXnq3hHPgkdc=V0^M$BKuod--27+)Q;;6Mg;XYo_hZn`@tr4Hgv4U=_=Em5GgEU9PK zW6Lk#_yXr006{e%ECh7RUm?ODL$hc_?GrxLR4ax(#L&JxKUsIQ;xBkI<&^ZNMJ}LT!GPYH zThi}#Yrn9FYM-zAbVj)OrB~#{a~N{>pNkQH(#d}U28XvlQ*w$Ht9(4S$7k0L4m2_| zWt8siwQ@@yBTca03x-E(0af<|f~y{iH5Rt3uyg&KEzepI;8jr#&3RNWs*)u}4&6N- z@Scl#AlHe9P}j9rJz~etUuM`1m+i(BQnJ!fju}0UmyjaQrRqDO5e+dWI$fN#4i~YC zH}!Dy(^0p03ZYMdmeGxfBDqp|Y!D$Q|1!7HmMRv!bYm=avo-1(WEyHH&NoE+)*XsO zenhX@f;}*c<>PMN+BLwaB zMqRX(QMC}5SgpopGVDbCmJCqI(WOqzS63?59ztejKZvFxFNsR!j9C|#9mf~(U7X~s zpdH#KugzOF_FQ&z)l+!am`|Z9hjrRSsLuGh!E4^CCm>xJ$l<4G-yGDNf0ho36*4)= zdsCPihyzlm7}UWSi!dSF2$tkMZs1w2P+Duu=9`_w`opPQMP^0LY>I74#SEcJd>aw> z#!XQ6CQRqSlHO4Te@-tbE@MgRn==6yFTX_9*IO>42UjhwR_8`M+O?SzWW z1lDzRWiH$=-C`k&)fY>T*niAFQ)KZAIvBF|6HGqo&`f zoq6B8$M|{aD(cEWW79P@&_U)WqnJER)?UBe#BXUFy_Nbq_;Puub&Xx$+=SwDLlbaS z-%bum>tnsF!LtK-yF$|ZvJtC-ZHvwxe~+*^;Q$Ff{e1eZR<48cmOlrLoes<@D#;cg zgk|gfdbid4=Y8eM07e~qnx4sTW@<&&eptOA0ldi#7tjCE?W)XmZSl{KK9WBg3}XF} ziBeb;CZ9Bs&e5#(j_!w96d^j#yRnuDc4`H_v!@<&wS^VbSZsd2mGn!$Ld!1#$mZOh zdn)an)4RcG2|1kzWn-C9Z?v~!H{{)xJ_J5qKYqPXFOr@3L8v%>FbJx6eF5?;KyB2= zvU_RksqV1A#^sSBh_|Dvxn+P2dC(_p3%F*HN1h4SE6mM%Cd9-=;iBnZ&PhWkWt6=-a-m2h- z_*{}t+o*5Qz-JHW&)&d{j}2d}P4m2SdZ>>Ih}7Wk)0WQd5=adLDu>#N@<{$%j`dcQ z3nF&Rf}7{me1L;}IYLVu!(ksxO#h0eT3O8oRx^LWNK?5_v?aQ&0b&wAnTML_e5+Aw z0iy$8!%8fAg%Iyp4PS literal 5981 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 diff --git a/spring-batch-docs/asciidoc/images/job-launcher-sequence-async.png b/spring-batch-docs/asciidoc/images/job-launcher-sequence-async.png index e993c4ad78a5ea10acb1c08639dd577cee4f0c4d..d2a7a40e3ba00d8bc706eb915e4e11eefa318241 100644 GIT binary patch literal 13701 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 literal 14154 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 bheVsD>?$wtY^J-!MZd(6LrAA`2Ndvc6v{3j diff --git a/spring-batch-docs/asciidoc/images/jobTier.png b/spring-batch-docs/asciidoc/images/jobTier.png deleted file mode 100644 index ddae9cb160036f3da14a9024d3d3a5877ea9b133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4730 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 diff --git a/spring-batch-docs/asciidoc/job.adoc b/spring-batch-docs/asciidoc/job.adoc index e35819e88..79222c54b 100644 --- a/spring-batch-docs/asciidoc/job.adoc +++ b/spring-batch-docs/asciidoc/job.adoc @@ -274,10 +274,10 @@ It should be noted that `afterJob` will be [source, java] ---- public void afterJob(JobExecution jobExecution){ - if( jobExecution.getStatus() == BatchStatus.COMPLETED ){ + if (jobExecution.getStatus() == BatchStatus.COMPLETED ) { //job success } - else if(jobExecution.getStatus() == BatchStatus.FAILED){ + else if (jobExecution.getStatus() == BatchStatus.FAILED) { //job failure } } diff --git a/spring-batch-docs/asciidoc/readersAndWriters.adoc b/spring-batch-docs/asciidoc/readersAndWriters.adoc index f791663ee..fba836b8d 100644 --- a/spring-batch-docs/asciidoc/readersAndWriters.adoc +++ b/spring-batch-docs/asciidoc/readersAndWriters.adoc @@ -60,7 +60,7 @@ However, if the underlying resource is transactional (such as a JMS queue) then `read` may return the same logical item on subsequent calls in a rollback scenario. It is also worth noting that a lack of items to process by an `ItemReader` does not cause an exception to be thrown. For example, a database `ItemReader` that is configured with a -query that returns 0 results returns `null` on the first invocation of read. +query that returns 0 results returns `null` on the first invocation of `read`. [[itemWriter]] === `ItemWriter` @@ -155,14 +155,14 @@ public class Bar { public Bar(Foo foo) {} } -public class FooProcessor implements ItemProcessor{ +public class FooProcessor implements ItemProcessor { public Bar process(Foo foo) throws Exception { //Perform simple transformation, convert a Foo to a Bar return new Bar(foo); } } -public class BarWriter implements ItemWriter{ +public class BarWriter implements ItemWriter { public void write(List bars) throws Exception { //write bars } @@ -232,14 +232,14 @@ public class Foobar { public Foobar(Bar bar) {} } -public class FooProcessor implements ItemProcessor{ +public class FooProcessor implements ItemProcessor { public Bar process(Foo foo) throws Exception { //Perform simple transformation, convert a Foo to a Bar return new Bar(foo); } } -public class BarProcessor implements ItemProcessor{ +public class BarProcessor implements ItemProcessor { public Foobar process(Bar bar) throws Exception { return new Foobar(bar); } @@ -261,8 +261,8 @@ A `FooProcessor` and a `BarProcessor` can be 'chained' together to give the resu CompositeItemProcessor compositeProcessor = new CompositeItemProcessor(); List itemProcessors = new ArrayList(); -itemProcessors.add(new FooTransformer()); -itemProcessors.add(new BarTransformer()); +itemProcessors.add(new FooProcessor()); +itemProcessors.add(new BarProcessor()); compositeProcessor.setDelegates(itemProcessors); ---- @@ -528,7 +528,7 @@ creating `Resource` objects beyond showing the following simple example: Resource resource = new FileSystemResource("resources/trades.csv"); ---- -In complex batch environments, the directory structures are often managed by the EAI +In complex batch environments, the directory structures are often managed by the Enterprise Application Integration (EAI) infrastructure, where drop zones for external interfaces are established for moving files from FTP locations to batch processing locations and vice versa. File moving utilities are beyond the scope of the Spring Batch architecture, but it is not unusual for batch @@ -749,8 +749,8 @@ The file can then be read by correctly constructing a `FlatFileItemReader` and c ---- FlatFileItemReader itemReader = new FlatFileItemReader<>(); itemReader.setResource(new FileSystemResource("resources/players.csv")); -//DelimitedLineTokenizer defaults to comma as its delimiter DefaultLineMapper lineMapper = new DefaultLineMapper<>(); +//DelimitedLineTokenizer defaults to comma as its delimiter lineMapper.setLineTokenizer(new DelimitedLineTokenizer()); lineMapper.setFieldSetMapper(new PlayerFieldSetMapper()); itemReader.setLineMapper(lineMapper); @@ -774,7 +774,7 @@ as shown in the following example: [source, java] ---- -tokenizer.setNames(new String[] {"ID", "lastName","firstName","position","birthYear","debutYear"}); +tokenizer.setNames(new String[] {"ID", "lastName", "firstName", "position", "birthYear", "debutYear"}); ---- A `FieldSetMapper` can use this information as follows: @@ -785,7 +785,7 @@ A `FieldSetMapper` can use this information as follows: public class PlayerMapper implements FieldSetMapper { public Player mapFieldSet(FieldSet fs) { - if(fs == null){ + if (fs == null) { return null; } @@ -878,7 +878,7 @@ in the form of ranges, as shown in the following example: [source, xml, role="xmlContent"] ---- + class="org.springframework.batch.item.file.transform.FixedLengthTokenizer"> @@ -905,10 +905,10 @@ public FixedLengthTokenizer fixedLengthTokenizer() { FixedLengthTokenizer tokenizer = new FixedLengthTokenizer(); tokenizer.setNames("ISIN", "Quantity", "Price", "Customer"); - tokenizer.setColumns(new Range(1-12), - new Range(13-15), - new Range(16-20), - new Range(21-29)); + tokenizer.setColumns(new Range(1, 12), + new Range(13, 15), + new Range(16, 20), + new Range(21, 29)); return tokenizer; } @@ -1054,7 +1054,7 @@ tokenizer.setNames(new String[] {"A", "B", "C", "D"}); try { tokenizer.tokenize("a,b,c"); } -catch(IncorrectTokenCountException e){ +catch (IncorrectTokenCountException e) { assertEquals(4, e.getExpectedCount()); assertEquals(3, e.getActualCount()); } @@ -2816,7 +2816,7 @@ reads from a provided list. We start by implementing the most basic contract of [source, java] ---- -public class CustomItemReader implements ItemReader{ +public class CustomItemReader implements ItemReader { List items; @@ -2890,10 +2890,10 @@ public class CustomItemReader implements ItemReader, ItemStream { } public void open(ExecutionContext executionContext) throws ItemStreamException { - if(executionContext.containsKey(CURRENT_INDEX)){ + if (executionContext.containsKey(CURRENT_INDEX)) { currentIndex = new Long(executionContext.getLong(CURRENT_INDEX)).intValue(); } - else{ + else { currentIndex = 0; } } @@ -3221,7 +3221,7 @@ an instance of the `MappingLdifReader`. ===== `AvroItemReader` The `AvroItemReader` reads serialized Avro data from a Resource. Each read returns an instance of the type specified by a Java class or Avro Schema. -The reader may be optionnally configured for input that embeds an Avro schema or not. +The reader may be optionally configured for input that embeds an Avro schema or not. Spring Batch provides an `AvroItemReaderBuilder` to construct an instance of the `AvroItemReader`. [[specializedWriters]] diff --git a/spring-batch-docs/asciidoc/scalability.adoc b/spring-batch-docs/asciidoc/scalability.adoc index 3369ae5e7..ff29b946c 100644 --- a/spring-batch-docs/asciidoc/scalability.adoc +++ b/spring-batch-docs/asciidoc/scalability.adoc @@ -59,7 +59,7 @@ as shown in the following example: [source, java, role="javaContent"] ---- @Bean -public TaskExecutor taskExecutor(){ +public TaskExecutor taskExecutor() { return new SimpleAsyncTaskExecutor("spring_batch"); } @@ -214,7 +214,7 @@ public Flow flow2() { } @Bean -public TaskExecutor taskExecutor(){ +public TaskExecutor taskExecutor() { return new SimpleAsyncTaskExecutor("spring_batch"); } ---- diff --git a/spring-batch-docs/asciidoc/spring-batch-intro.adoc b/spring-batch-docs/asciidoc/spring-batch-intro.adoc index 23619728a..1b0e6649d 100644 --- a/spring-batch-docs/asciidoc/spring-batch-intro.adoc +++ b/spring-batch-docs/asciidoc/spring-batch-intro.adoc @@ -33,7 +33,7 @@ Spring Batch provides reusable functions that are essential in processing large of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advanced technical services and features that enable extremely high-volume and high performance batch jobs -though optimization and partitioning techniques. Spring Batch can be used in both simple +through optimization and partitioning techniques. Spring Batch can be used in both simple use cases (such as reading a file into a database or running a stored procedure) as well as complex, high volume use cases (such as moving high volumes of data between databases, transforming it, and so on). High-volume batch jobs can leverage the framework in a diff --git a/spring-batch-docs/asciidoc/step.adoc b/spring-batch-docs/asciidoc/step.adoc index d87360a5b..b744c073b 100644 --- a/spring-batch-docs/asciidoc/step.adoc +++ b/spring-batch-docs/asciidoc/step.adoc @@ -495,7 +495,7 @@ the `playerLoad` step contains no additional configuration. It can be started an of times, and, if complete, is skipped. The `gameLoad` step, however, needs to be run every time in case extra files have been added since it last ran. It has 'allow-start-if-complete' set to 'true' in order to always be started. (It is assumed -that the database tables games are loaded into has a process indicator on it, to ensure +that the database table games are loaded into has a process indicator on it, to ensure new games can be properly found by the summarization step). The summarization step, which is the most important in the job, is configured to have a start limit of 2. This is useful because if the step continually fails, a new exit code is returned to the diff --git a/spring-batch-docs/asciidoc/testing.adoc b/spring-batch-docs/asciidoc/testing.adoc index e355e184f..916ec7a5f 100644 --- a/spring-batch-docs/asciidoc/testing.adoc +++ b/spring-batch-docs/asciidoc/testing.adoc @@ -159,7 +159,7 @@ public class SkipSampleFunctionalTests { === Testing Individual Steps For complex batch jobs, test cases in the end-to-end testing - approach may become unmanageable. It these cases, it may be more useful to + approach may become unmanageable. In these cases, it may be more useful to have test cases to test individual steps on their own. The `JobLauncherTestUtils` class contains a method called `launchStep`, which takes a step name and runs just