Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-6891

IOUtils.isEmpty() doesn't reinclude byte in stream.

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.6
    • Fix Version/s: 3.0.10, 3.1.7, 3.2.0
    • Component/s: JAX-RS, Tooling
    • Labels:
      None
    • Estimated Complexity:
      Unknown
    • Flags:
      Important

      Description

      While trying to integrate Katharsis with CXF I faced a problem related to IOUtils.isEmpty() method.

      When isEmpty is invoked with an InputStream that:
      1. Is not 'mark supported' and
      2. The 'available()' method returns '0'.

      The byte that is read from the stream (used to determine whether the stream is empty or not) is not re-included back to the stream. When I explored the code inside PushbackInputStream class, I found that the byte is only being included inside the PushbackInputStream.buf (using unread(byte[], int, int) method).

      Find attached Maven Project containing 2 test cases.

      References:
      > IOUtils: https://cxf.apache.org/javadoc/latest/org/apache/cxf/helpers/IOUtils.html
      > PushbackInputStream: https://docs.oracle.com/javase/7/docs/api/java/io/PushbackInputStream.html
      > Katharsis.io: http://katharsis.io

        Attachments

        1. cxf-bug.zip
          6 kB
          Luca Tabone

          Activity

            People

            • Assignee:
              sergey_beryozkin Sergey Beryozkin
              Reporter:
              tabone Luca Tabone
            • Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: