@@ -501,39 +501,38 @@ public double unpackDouble() throws IOException
501
501
throw new Unexpected ( "Expected a double, but got: " + toHexString ( markerByte ));
502
502
}
503
503
504
- public String unpackString () throws IOException
504
+ public byte [] unpackBytes () throws IOException
505
505
{
506
506
final byte markerByte = in .readByte ();
507
- if ( markerByte == TINY_STRING ) // Note no mask, so we compare to 0x80.
507
+ switch ( markerByte )
508
508
{
509
- return EMPTY_STRING ;
509
+ case BYTES_8 : return unpackRawBytes ( unpackUINT8 () );
510
+ case BYTES_16 : return unpackRawBytes ( unpackUINT16 () );
511
+ case BYTES_32 :
512
+ {
513
+ long size = unpackUINT32 ();
514
+ if ( size <= Integer .MAX_VALUE )
515
+ {
516
+ return unpackRawBytes ( (int ) size );
517
+ }
518
+ else
519
+ {
520
+ throw new Overflow ( "BYTES_32 too long for Java" );
521
+ }
522
+ }
523
+ default : throw new Unexpected ( "Expected bytes, but got: 0x" + toHexString ( markerByte & 0xFF ));
510
524
}
511
-
512
- return new String (unpackUtf8 (markerByte ), UTF_8 );
513
525
}
514
526
515
- public byte [] unpackBytes () throws IOException
527
+ public String unpackString () throws IOException
516
528
{
517
529
final byte markerByte = in .readByte ();
518
-
519
- switch (markerByte )
530
+ if ( markerByte == TINY_STRING ) // Note no mask, so we compare to 0x80.
520
531
{
521
- case BYTES_8 : return unpackBytes ( unpackUINT8 () );
522
- case BYTES_16 : return unpackBytes ( unpackUINT16 () );
523
- case BYTES_32 :
524
- {
525
- long size = unpackUINT32 ();
526
- if ( size <= Integer .MAX_VALUE )
527
- {
528
- return unpackBytes ( (int ) size );
529
- }
530
- else
531
- {
532
- throw new Overflow ( "BYTES_32 too long for Java" );
533
- }
534
- }
535
- default : throw new Unexpected ( "Expected binary data, but got: 0x" + toHexString ( markerByte & 0xFF ));
532
+ return EMPTY_STRING ;
536
533
}
534
+
535
+ return new String (unpackUtf8 (markerByte ), UTF_8 );
537
536
}
538
537
539
538
/**
@@ -558,17 +557,17 @@ private byte[] unpackUtf8(byte markerByte) throws IOException
558
557
final byte markerHighNibble = (byte ) (markerByte & 0xF0 );
559
558
final byte markerLowNibble = (byte ) (markerByte & 0x0F );
560
559
561
- if ( markerHighNibble == TINY_STRING ) { return unpackBytes ( markerLowNibble ); }
560
+ if ( markerHighNibble == TINY_STRING ) { return unpackRawBytes ( markerLowNibble ); }
562
561
switch (markerByte )
563
562
{
564
- case STRING_8 : return unpackBytes ( unpackUINT8 () );
565
- case STRING_16 : return unpackBytes ( unpackUINT16 () );
563
+ case STRING_8 : return unpackRawBytes ( unpackUINT8 () );
564
+ case STRING_16 : return unpackRawBytes ( unpackUINT16 () );
566
565
case STRING_32 :
567
566
{
568
567
long size = unpackUINT32 ();
569
568
if ( size <= Integer .MAX_VALUE )
570
569
{
571
- return unpackBytes ( (int ) size );
570
+ return unpackRawBytes ( (int ) size );
572
571
}
573
572
else
574
573
{
@@ -608,7 +607,7 @@ private long unpackUINT32() throws IOException
608
607
return in .readInt () & 0xFFFFFFFFL ;
609
608
}
610
609
611
- private byte [] unpackBytes ( int size ) throws IOException
610
+ private byte [] unpackRawBytes ( int size ) throws IOException
612
611
{
613
612
byte [] heapBuffer = new byte [size ];
614
613
in .readBytes ( heapBuffer , 0 , heapBuffer .length );
@@ -711,5 +710,4 @@ public UnPackable( String message )
711
710
super ( message );
712
711
}
713
712
}
714
-
715
713
}
0 commit comments