Skip to content

Commit 1c27a8b

Browse files
committed
feat(api): add note and test
1 parent 63bd97c commit 1c27a8b

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

framework/src/main/java/org/tron/core/services/jsonrpc/JsonRpcErrorResolver.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public JsonError resolveError(
2828
}
2929

3030
String message = hasErrorMessage(resolver) ? resolver.message() : thrownException.getMessage();
31+
32+
// data priority: exception > annotation > default ErrorData
3133
Object data = hasErrorData(resolver)
3234
? resolver.data()
3335
: new ErrorData(resolver.exception().getName(), message);
Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.tron.core.services.jsonrpc;
22

33
import com.fasterxml.jackson.databind.JsonNode;
4+
import com.googlecode.jsonrpc4j.ErrorData;
45
import com.googlecode.jsonrpc4j.ErrorResolver.JsonError;
56
import com.googlecode.jsonrpc4j.JsonRpcError;
67
import com.googlecode.jsonrpc4j.JsonRpcErrors;
@@ -9,35 +10,66 @@
910
import java.util.List;
1011
import org.junit.Assert;
1112
import org.junit.Test;
13+
import org.tron.core.exception.JsonRpcInternalException;
14+
import org.tron.core.exception.JsonRpcInvalidParamsException;
15+
import org.tron.core.exception.JsonRpcInvalidRequestException;
1216
import org.tron.core.exception.TronException;
1317

1418
public class JsonRpcErrorResolverTest {
1519

1620
private final JsonRpcErrorResolver resolver = JsonRpcErrorResolver.INSTANCE;
17-
private final int errorCode = -32000;
1821

1922
@JsonRpcErrors({
20-
@JsonRpcError(exception = TronException.class, code = errorCode, data = "{}")
23+
@JsonRpcError(exception = JsonRpcInvalidRequestException.class, code = -32600, data = "{}"),
24+
@JsonRpcError(exception = JsonRpcInvalidParamsException.class, code = -32602, data = "{}"),
25+
@JsonRpcError(exception = JsonRpcInternalException.class, code = -32000, data = "{}"),
26+
@JsonRpcError(exception = TronException.class, code = -1)
2127
})
2228
public void dummyMethod() {
2329
}
2430

2531
@Test
2632
public void testResolveErrorWithTronException() throws Exception {
2733

28-
String message = "JsonRPC ErrorMessage";
29-
String data = "JsonRPC ErrorData";
34+
String message = "JsonRpcInvalidRequestException";
3035

31-
TronException exception = new TronException(message, data);
36+
TronException exception = new JsonRpcInvalidRequestException(message);
3237
Method method = this.getClass().getMethod("dummyMethod");
3338
List<JsonNode> arguments = new ArrayList<>();
3439

3540
JsonError error = resolver.resolveError(exception, method, arguments);
41+
Assert.assertNotNull(error);
42+
Assert.assertEquals(-32600, error.code);
43+
Assert.assertEquals(message, error.message);
44+
Assert.assertEquals("{}", error.data);
45+
46+
message = "JsonRpcInternalException";
47+
String data = "JsonRpcInternalException data";
48+
exception = new JsonRpcInternalException(message, data);
49+
error = resolver.resolveError(exception, method, arguments);
3650

3751
Assert.assertNotNull(error);
38-
Assert.assertEquals(errorCode, error.code);
52+
Assert.assertEquals(-32000, error.code);
3953
Assert.assertEquals(message, error.message);
4054
Assert.assertEquals(data, error.data);
55+
56+
exception = new JsonRpcInternalException(message, null);
57+
error = resolver.resolveError(exception, method, arguments);
58+
59+
Assert.assertNotNull(error);
60+
Assert.assertEquals(-32000, error.code);
61+
Assert.assertEquals(message, error.message);
62+
Assert.assertEquals("{}", error.data);
63+
64+
message = "TronException";
65+
exception = new TronException(message, null);
66+
error = resolver.resolveError(exception, method, arguments);
67+
68+
Assert.assertNotNull(error);
69+
Assert.assertEquals(-1, error.code);
70+
Assert.assertEquals(message, error.message);
71+
Assert.assertTrue(error.data instanceof ErrorData);
72+
4173
}
4274

4375
}

0 commit comments

Comments
 (0)