db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3770) Create a utility class for skipping data in an InputStream
Date Thu, 21 Aug 2008 09:54:44 GMT

    [ 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

  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

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:
>            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
> 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.

View raw message