Skip to content

Commit 25f3c3d

Browse files
committed
Slightly better type errors for Unpackers.
1 parent 10a2dcd commit 25f3c3d

File tree

11 files changed

+60
-17
lines changed

11 files changed

+60
-17
lines changed

src/main/java/org/msgpack/unpacker/Accept.java

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,83 +23,89 @@
2323
import org.msgpack.MessageTypeException;
2424

2525
abstract class Accept implements BufferReferer {
26+
private final String expected;
27+
28+
Accept(String expected) {
29+
this.expected = expected;
30+
}
31+
2632
void acceptBoolean(boolean v) throws IOException {
27-
throw new MessageTypeException("Unexpected boolean value");
33+
throw new MessageTypeException(String.format("Expected %s, but got boolean", expected));
2834
}
2935

3036
void acceptInteger(byte v) throws IOException {
31-
throw new MessageTypeException("Unexpected integer value");
37+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
3238
}
3339

3440
void acceptInteger(short v) throws IOException {
35-
throw new MessageTypeException("Unexpected integer value");
41+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
3642
}
3743

3844
void acceptInteger(int v) throws IOException {
39-
throw new MessageTypeException("Unexpected integer value");
45+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
4046
}
4147

4248
void acceptInteger(long v) throws IOException {
43-
throw new MessageTypeException("Unexpected integer value");
49+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
4450
}
4551

4652
void acceptUnsignedInteger(byte v) throws IOException {
47-
throw new MessageTypeException("Unexpected integer value");
53+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
4854
}
4955

5056
void acceptUnsignedInteger(short v) throws IOException {
51-
throw new MessageTypeException("Unexpected integer value");
57+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
5258
}
5359

5460
void acceptUnsignedInteger(int v) throws IOException {
55-
throw new MessageTypeException("Unexpected integer value");
61+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
5662
}
5763

5864
void acceptUnsignedInteger(long v) throws IOException {
59-
throw new MessageTypeException("Unexpected integer value");
65+
throw new MessageTypeException(String.format("Expected %s, but got integer value", expected));
6066
}
6167

6268
// void checkRawAcceptable() throws IOException {
6369
// throw new MessageTypeException("Unexpected raw value");
6470
// }
6571

6672
void acceptRaw(byte[] raw) throws IOException {
67-
throw new MessageTypeException("Unexpected raw value");
73+
throw new MessageTypeException(String.format("Expected %s, but got raw value", expected));
6874
}
6975

7076
void acceptEmptyRaw() throws IOException {
71-
throw new MessageTypeException("Unexpected raw value");
77+
throw new MessageTypeException(String.format("Expected %s, but got raw value", expected));
7278
}
7379

7480
// void checkArrayAcceptable(int size) throws IOException {
7581
// throw new MessageTypeException("Unexpected array value");
7682
// }
7783

7884
void acceptArray(int size) throws IOException {
79-
throw new MessageTypeException("Unexpected array value");
85+
throw new MessageTypeException(String.format("Expected %s, but got array value", expected));
8086
}
8187

8288
// void checkMapAcceptable(int size) throws IOException {
8389
// throw new MessageTypeException("Unexpected map value");
8490
// }
8591

8692
void acceptMap(int size) throws IOException {
87-
throw new MessageTypeException("Unexpected map value");
93+
throw new MessageTypeException(String.format("Expected %s, but got map value", expected));
8894
}
8995

9096
void acceptNil() throws IOException {
91-
throw new MessageTypeException("Unexpected nil value");
97+
throw new MessageTypeException(String.format("Expected %s, but got nil value", expected));
9298
}
9399

94100
void acceptFloat(float v) throws IOException {
95-
throw new MessageTypeException("Unexpected float value");
101+
throw new MessageTypeException(String.format("Expected %s, but got float value", expected));
96102
}
97103

98104
void acceptDouble(double v) throws IOException {
99-
throw new MessageTypeException("Unexpected float value");
105+
throw new MessageTypeException(String.format("Expected %s, but got float value", expected));
100106
}
101107

102108
public void refer(ByteBuffer bb, boolean gift) throws IOException {
103-
throw new MessageTypeException("Unexpected raw value");
109+
throw new MessageTypeException(String.format("Expected %s, but got raw value", expected));
104110
}
105111
}

src/main/java/org/msgpack/unpacker/ArrayAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
final class ArrayAccept extends Accept {
2121
int size;
2222

23+
ArrayAccept() {
24+
super("array");
25+
}
26+
2327
@Override
2428
void acceptArray(int size) {
2529
this.size = size;

src/main/java/org/msgpack/unpacker/BigIntegerAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
final class BigIntegerAccept extends Accept {
2323
BigInteger value;
2424

25+
BigIntegerAccept() {
26+
super("integer");
27+
}
28+
2529
@Override
2630
void acceptInteger(byte v) {
2731
this.value = BigInteger.valueOf((long) v);

src/main/java/org/msgpack/unpacker/ByteArrayAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
final class ByteArrayAccept extends Accept {
2424
byte[] value;
2525

26+
ByteArrayAccept() {
27+
super("raw value");
28+
}
29+
2630
@Override
2731
void acceptRaw(byte[] raw) {
2832
this.value = raw;

src/main/java/org/msgpack/unpacker/DoubleAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
final class DoubleAccept extends Accept {
2121
double value;
2222

23+
DoubleAccept() {
24+
super("float");
25+
}
26+
2327
void acceptFloat(float v) {
2428
this.value = (double) v;
2529
}

src/main/java/org/msgpack/unpacker/IntAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
final class IntAccept extends Accept {
2323
int value;
2424

25+
IntAccept() {
26+
super("integer");
27+
}
28+
2529
@Override
2630
void acceptInteger(byte v) {
2731
this.value = (int) v;

src/main/java/org/msgpack/unpacker/LongAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
final class LongAccept extends Accept {
2323
long value;
2424

25+
LongAccept() {
26+
super("integer");
27+
}
28+
2529
@Override
2630
void acceptInteger(byte v) {
2731
this.value = (long) v;

src/main/java/org/msgpack/unpacker/MapAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
final class MapAccept extends Accept {
2121
int size;
2222

23+
MapAccept() {
24+
super("map");
25+
}
26+
2327
@Override
2428
void acceptMap(int size) {
2529
this.size = size;

src/main/java/org/msgpack/unpacker/SkipAccept.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
import java.nio.ByteBuffer;
2222

2323
final class SkipAccept extends Accept {
24+
SkipAccept() {
25+
super(null);
26+
}
27+
2428
@Override
2529
void acceptBoolean(boolean v) {
2630
}

src/main/java/org/msgpack/unpacker/StringAccept.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ final class StringAccept extends Accept {
3030
private CharsetDecoder decoder;
3131

3232
public StringAccept() {
33+
super("raw value");
3334
this.decoder = Charset.forName("UTF-8").newDecoder()
3435
.onMalformedInput(CodingErrorAction.REPORT)
3536
.onUnmappableCharacter(CodingErrorAction.REPORT);

0 commit comments

Comments
 (0)