Skip to content

Commit 9fa06c6

Browse files
committed
feat(api): optimize api compatibility
1 parent 1a33965 commit 9fa06c6

13 files changed

+130
-42
lines changed

chainbase/src/main/java/org/tron/core/capsule/TransactionCapsule.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ public static byte[] getOwner(Transaction.Contract contract) {
346346
}
347347
}
348348
return owner.toByteArray();
349+
} catch (InvalidProtocolBufferException invalidProtocolBufferException) {
350+
logger.warn("InvalidProtocolBufferException occurred because {}, please verify the interface "
351+
+ "input parameters", invalidProtocolBufferException.getMessage());
352+
return new byte[0];
349353
} catch (Exception ex) {
350354
logger.error(ex.getMessage());
351355
return new byte[0];

chainbase/src/main/java/org/tron/core/db/ResourceProcessor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.tron.core.db;
22

3-
import static java.lang.Math.ceil;
4-
import static java.lang.Math.round;
53
import static org.tron.core.config.Parameter.ChainConstant.BLOCK_PRODUCED_INTERVAL;
64
import static org.tron.core.config.Parameter.ChainConstant.WINDOW_SIZE_PRECISION;
75

framework/src/main/java/org/tron/core/services/http/GetAccountServlet.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ public class GetAccountServlet extends RateLimiterServlet {
1717
@Autowired
1818
private Wallet wallet;
1919

20+
@Override
2021
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2122
try {
2223
boolean visible = Util.getVisible(request);
2324
String address = request.getParameter("address");
25+
if (visible) {
26+
address = Util.getHexAddress(address);
27+
}
2428
Account.Builder build = Account.newBuilder();
2529
JSONObject jsonObject = new JSONObject();
2630
jsonObject.put("address", address);
@@ -31,6 +35,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
3135
}
3236
}
3337

38+
@Override
3439
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3540
try {
3641
PostParams params = PostParams.getPostParams(request);
Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.tron.core.services.http;
22

3+
import java.io.IOException;
34
import javax.servlet.http.HttpServletRequest;
45
import javax.servlet.http.HttpServletResponse;
56
import lombok.extern.slf4j.Slf4j;
@@ -8,29 +9,40 @@
89
import org.tron.api.GrpcAPI.AssetIssueList;
910
import org.tron.core.Wallet;
1011

11-
1212
@Component
1313
@Slf4j(topic = "API")
1414
public class GetAssetIssueListServlet extends RateLimiterServlet {
1515

1616
@Autowired
1717
private Wallet wallet;
1818

19+
@Override
1920
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2021
try {
2122
boolean visible = Util.getVisible(request);
22-
AssetIssueList reply = wallet.getAssetIssueList();
23-
if (reply != null) {
24-
response.getWriter().println(JsonFormat.printToString(reply, visible));
25-
} else {
26-
response.getWriter().println("{}");
27-
}
23+
response(response, visible);
2824
} catch (Exception e) {
2925
Util.processError(e, response);
3026
}
3127
}
3228

29+
@Override
3330
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34-
doGet(request, response);
31+
try {
32+
PostParams params = PostParams.getPostParams(request);
33+
boolean visible = params.isVisible();
34+
response(response, visible);
35+
} catch (Exception e) {
36+
Util.processError(e, response);
37+
}
38+
}
39+
40+
public void response(HttpServletResponse response, boolean visible) throws IOException {
41+
AssetIssueList reply = wallet.getAssetIssueList();
42+
if (reply != null) {
43+
response.getWriter().println(JsonFormat.printToString(reply, visible));
44+
} else {
45+
response.getWriter().println("{}");
46+
}
3547
}
3648
}

framework/src/main/java/org/tron/core/services/http/GetAvailableUnfreezeCountServlet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class GetAvailableUnfreezeCountServlet extends RateLimiterServlet {
2222
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2323
try {
2424
boolean visible = Util.getVisible(request);
25-
String ownerAddress = request.getParameter("ownerAddress");
25+
String ownerAddress = request.getParameter("owner_address");
2626
if (visible) {
2727
ownerAddress = Util.getHexAddress(ownerAddress);
2828
}

framework/src/main/java/org/tron/core/services/http/GetBlockByNumServlet.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package org.tron.core.services.http;
22

3+
import com.alibaba.fastjson.JSON;
4+
import com.alibaba.fastjson.JSONObject;
35
import java.io.IOException;
46
import javax.servlet.http.HttpServletRequest;
57
import javax.servlet.http.HttpServletResponse;
68
import lombok.extern.slf4j.Slf4j;
9+
import org.apache.commons.lang3.StringUtils;
710
import org.springframework.beans.factory.annotation.Autowired;
811
import org.springframework.stereotype.Component;
912
import org.tron.api.GrpcAPI.NumberMessage;
@@ -18,6 +21,9 @@ public class GetBlockByNumServlet extends RateLimiterServlet {
1821
@Autowired
1922
private Wallet wallet;
2023

24+
private static final String NUM = "num";
25+
26+
@Override
2127
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2228
try {
2329
fillResponse(Util.getVisible(request), Long.parseLong(request.getParameter("num")), response);
@@ -26,11 +32,18 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2632
}
2733
}
2834

35+
@Override
2936
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3037
try {
3138
PostParams params = PostParams.getPostParams(request);
3239
NumberMessage.Builder build = NumberMessage.newBuilder();
33-
JsonFormat.merge(params.getParams(), build, params.isVisible());
40+
String input = params.getParams();
41+
if (StringUtils.isNotBlank(input)) {
42+
JSONObject jsonObject = JSON.parseObject(input);
43+
String num = jsonObject.getString(NUM);
44+
Long.parseLong(num);
45+
}
46+
JsonFormat.merge(input, build, params.isVisible());
3447
fillResponse(params.isVisible(), build.getNum(), response);
3548
} catch (Exception e) {
3649
Util.processError(e, response);

framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@ public class GetBrokerageServlet extends RateLimiterServlet {
1717
@Autowired
1818
private Manager manager;
1919

20+
@Override
2021
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2122
try {
2223
int value = 0;
2324
byte[] address = Util.getAddress(request);
2425
long cycle = manager.getDynamicPropertiesStore().getCurrentCycleNumber();
2526
if (address != null) {
2627
value = manager.getDelegationStore().getBrokerage(cycle, address);
28+
} else {
29+
throw new IllegalArgumentException();
2730
}
2831
response.getWriter().println("{\"brokerage\": " + value + "}");
2932
} catch (DecoderException | IllegalArgumentException e) {
@@ -38,6 +41,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
3841
}
3942
}
4043

44+
@Override
4145
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
4246
doGet(request, response);
4347
}

framework/src/main/java/org/tron/core/services/http/GetCanDelegatedMaxSizeServlet.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@ public class GetCanDelegatedMaxSizeServlet extends RateLimiterServlet {
1818
@Autowired
1919
private Wallet wallet;
2020

21+
@Override
2122
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2223
try {
2324
boolean visible = Util.getVisible(request);
24-
int type = Integer.parseInt(request.getParameter("type"));
25+
int type = 0;
26+
String typeStr = request.getParameter("type");
27+
if (typeStr != null) {
28+
type = Integer.parseInt(typeStr);
29+
}
2530
String ownerAddress = request.getParameter("owner_address");
2631
if (visible) {
2732
ownerAddress = Util.getHexAddress(ownerAddress);
@@ -34,6 +39,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
3439
}
3540
}
3641

42+
@Override
3743
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3844
try {
3945
PostParams params = PostParams.getPostParams(request);

framework/src/main/java/org/tron/core/services/http/GetCanWithdrawUnfreezeAmountServlet.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,29 @@ public class GetCanWithdrawUnfreezeAmountServlet extends RateLimiterServlet {
1818
@Autowired
1919
private Wallet wallet;
2020

21+
@Override
2122
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2223
try {
2324
boolean visible = Util.getVisible(request);
2425
String ownerAddress = request.getParameter("owner_address");
25-
long timestamp = Long.valueOf(request.getParameter("timestamp"));
26+
long timestamp = 0;
27+
String timestampStr = request.getParameter("timestamp");
28+
if (timestampStr != null) {
29+
timestamp = Long.parseLong(timestampStr);
30+
}
2631
if (visible) {
2732
ownerAddress = Util.getHexAddress(ownerAddress);
2833
}
2934
fillResponse(visible,
30-
ByteString.copyFrom(ByteArray.fromHexString(ownerAddress)),
31-
timestamp,
32-
response);
35+
ByteString.copyFrom(ByteArray.fromHexString(ownerAddress)),
36+
timestamp,
37+
response);
3338
} catch (Exception e) {
3439
Util.processError(e, response);
3540
}
3641
}
3742

43+
@Override
3844
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3945
try {
4046
PostParams params = PostParams.getPostParams(request);
Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.tron.core.services.http;
22

3+
import java.io.IOException;
34
import javax.servlet.http.HttpServletRequest;
45
import javax.servlet.http.HttpServletResponse;
56
import lombok.extern.slf4j.Slf4j;
@@ -8,29 +9,40 @@
89
import org.tron.core.Wallet;
910
import org.tron.protos.Protocol.Block;
1011

11-
1212
@Component
1313
@Slf4j(topic = "API")
1414
public class GetNowBlockServlet extends RateLimiterServlet {
1515

1616
@Autowired
1717
private Wallet wallet;
1818

19+
@Override
1920
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2021
try {
2122
boolean visible = Util.getVisible(request);
22-
Block reply = wallet.getNowBlock();
23-
if (reply != null) {
24-
response.getWriter().println(Util.printBlock(reply, visible));
25-
} else {
26-
response.getWriter().println("{}");
27-
}
23+
response(response, visible);
2824
} catch (Exception e) {
2925
Util.processError(e, response);
3026
}
3127
}
3228

29+
@Override
3330
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34-
doGet(request, response);
31+
try {
32+
PostParams params = PostParams.getPostParams(request);
33+
boolean visible = params.isVisible();
34+
response(response, visible);
35+
} catch (Exception e) {
36+
Util.processError(e, response);
37+
}
38+
}
39+
40+
private void response(HttpServletResponse response, boolean visible) throws IOException {
41+
Block reply = wallet.getNowBlock();
42+
if (reply != null) {
43+
response.getWriter().println(Util.printBlock(reply, visible));
44+
} else {
45+
response.getWriter().println("{}");
46+
}
3547
}
3648
}

0 commit comments

Comments
 (0)