title: Spring Batch: ReadListener afterRead gets called even when the reader returns null
body: <p>As far as I understand, the reader is supposed to return 'null' if there are no more items to be read, indicating 'end-of-read'. If that is the contract for reader, I assumed the framework would understand this 'null' and will not call 'afterRead' of ReadListener. However, it seems to be calling 'afterRead' with 'null' parameter.</p>
  
  <p>We are using spring-batch 2.1.7. Please let us know if this is expected behavior or is there something that I'm missing here.</p>
  
  <p>The following is the job configuration we have:</p>
  
  <pre><code>&lt;batch:job id="job"&gt;
      &lt;batch:listeners&gt;
          &lt;batch:listener ref="jobExecutionListener"&gt;&lt;/batch:listener&gt;
      &lt;/batch:listeners&gt;
      &lt;batch:step id="myStep"&gt;
          &lt;batch:tasklet&gt;
              &lt;batch:listeners&gt;
                &lt;batch:listener ref="myReadListener" /&gt;
                &lt;batch:listener ref="myTransformerListener" /&gt;
                &lt;batch:listener ref="myWriteListener" /&gt;
              &lt;/batch:listeners&gt;
              &lt;batch:chunk reader="myReader" processor="myTransformer"
                  writer="myWriter" commit-interval="1000" /&gt;
          &lt;/batch:tasklet&gt;
      &lt;/batch:step&gt;
  &lt;/batch:job&gt;
  </code></pre>