[ 
https://issues.apache.org/jira/browse/DERBY-3770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12624304#action_12624304
 ] 

Knut Anders Hatlen commented on DERBY-3770:
-------------------------------------------

The handling of unexpected exceptions looks fine to me. Since they are not 
caught explicitly, they will propagate out to the JUnit framework and be 
reported correctly there.

It may be slightly clearer, though, if we replace assertTrue(true) with just a 
comment like this:

  catch (NullPointerException npe) {
      // ignoring expected exception
  }

The StreamUtil class imports sun.tools.tree.NullExpression, which seems wrong. 
Also, the javadoc comments in that class say "@throws NullExpression", whereas 
they should have said "@throws NullPointerException".

It's probably also a good idea to move the code from UTF8Util.skipPersistent() 
into the StreamUtil class, since that method doesn't have anything to do with 
UTF-8 and therefore making it non-private in the UTF8Util class may cause some 
confusion.

> Create a utility class for skipping data in an InputStream
> ----------------------------------------------------------
>
>                 Key: DERBY-3770
>                 URL: https://issues.apache.org/jira/browse/DERBY-3770
>             Project: Derby
>          Issue Type: Improvement
>          Components: Miscellaneous
>    Affects Versions: 10.5.0.0
>            Reporter: Kristian Waagan
>            Assignee: Junjie Peng
>            Priority: Minor
>         Attachments: derby-3770-1.patch, derby-3770-1.stat, 
> derby-3770-2.patch, derby-3770-2.stat
>
>
> The contract of InputStream.skip is somewhat difficult, some would even say 
> broken.
> See http://java.sun.com/javase/6/docs/api/java/io/InputStream.html#skip(long))
> A utility class should be created to ensure that we use the same skip 
> procedure throughout the Derby code base.
> Suggested functionality:
>  - long skipFully(InputStream) : skips until EOF, returns number of bytes 
> skipped
>  - void skipFully(InputStream,long) : skips requested number of bytes, throws 
> EOFException if there is too few bytes in the stream
> I know of two different approaches, both skipping in a loop:
>  a) Verify EOF with a read call when skip returns zero.
>  b) Throw EOFException if skip returns zero before requested number of bytes 
> have been skipped.
> There's related code in iapi.util.UTF8Util. Maybe this class, say StreamUtil, 
> could be put in the same package?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to