Skip to content

Commit

Permalink
Merge pull request tronprotocol#3696 from tronprotocol/modify-tx-retu…
Browse files Browse the repository at this point in the history
…rn-value

modify the transaction return value to string
  • Loading branch information
lvs007 authored Mar 17, 2021
2 parents d05d180 + 25d222d commit 65f5b44
Showing 8 changed files with 45 additions and 24 deletions.
8 changes: 4 additions & 4 deletions framework/src/main/java/org/tron/core/db/Manager.java
Original file line number Diff line number Diff line change
@@ -1824,13 +1824,13 @@ public TransactionCapsule getTxFromPending(String txId) {
return transactionCapsule.get();
}

public Collection<Transaction> getTxListFromPending() {
Set<Transaction> result = new HashSet<>();
public Collection<String> getTxListFromPending() {
Set<String> result = new HashSet<>();
pendingTransactions.forEach(tx -> {
result.add(tx.getInstance());
result.add(tx.getTransactionId().toString());
});
rePushTransactions.forEach(tx -> {
result.add(tx.getInstance());
result.add(tx.getTransactionId().toString());
});
return result;
}
Original file line number Diff line number Diff line change
@@ -74,6 +74,7 @@
import org.tron.api.GrpcAPI.SpendResult;
import org.tron.api.GrpcAPI.TransactionApprovedList;
import org.tron.api.GrpcAPI.TransactionExtention;
import org.tron.api.GrpcAPI.TransactionIdList;
import org.tron.api.GrpcAPI.TransactionInfoList;
import org.tron.api.GrpcAPI.TransactionList;
import org.tron.api.GrpcAPI.TransactionListExtention;
@@ -2636,7 +2637,7 @@ public void getTransactionFromPending(BytesMessage request,

@Override
public void getTransactionListFromPending(EmptyMessage request,
StreamObserver<TransactionList> responseObserver) {
StreamObserver<TransactionIdList> responseObserver) {
getTransactionListFromPendingCommon(request, responseObserver);
}

@@ -2740,10 +2741,10 @@ public void getTransactionFromPendingCommon(BytesMessage request,
}

public void getTransactionListFromPendingCommon(EmptyMessage request,
StreamObserver<TransactionList> responseObserver) {
StreamObserver<TransactionIdList> responseObserver) {
try {
TransactionList.Builder builder = TransactionList.newBuilder();
builder.addAllTransaction(dbManager.getTxListFromPending());
TransactionIdList.Builder builder = TransactionIdList.newBuilder();
builder.addAllTxId(dbManager.getTxListFromPending());
responseObserver.onNext(builder.build());
} catch (Exception e) {
responseObserver.onError(e);
Original file line number Diff line number Diff line change
@@ -524,8 +524,10 @@ public void start() {
context.addServlet(new ServletHolder(getBlockBalanceServlet),
"/wallet/getblockbalance");
context.addServlet(new ServletHolder(getBurnTrxServlet), "/wallet/getburntrx");
context.addServlet(new ServletHolder(getTransactionFromPendingServlet), "/wallet/gettransactionfrompending");
context.addServlet(new ServletHolder(getTransactionListFromPendingServlet), "/wallet/gettransactionlistfrompending");
context.addServlet(new ServletHolder(getTransactionFromPendingServlet),
"/wallet/gettransactionfrompending");
context.addServlet(new ServletHolder(getTransactionListFromPendingServlet),
"/wallet/gettransactionlistfrompending");
context.addServlet(new ServletHolder(getPendingSizeServlet), "/wallet/getpendingsize");

int maxHttpConnectNumber = Args.getInstance().getMaxHttpConnectNumber();
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package org.tron.core.services.http;

import com.google.protobuf.ByteString;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.TransactionIdList;
import org.tron.api.GrpcAPI.TransactionList;
import org.tron.core.db.Manager;
import org.tron.protos.Protocol.Transaction;
@@ -21,9 +23,9 @@ public class GetTransactionListFromPendingServlet extends RateLimiterServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
boolean visible = Util.getVisible(request);
Collection<Transaction> result = manager.getTxListFromPending();
TransactionList.Builder builder = TransactionList.newBuilder();
builder.addAllTransaction(result);
Collection<String> result = manager.getTxListFromPending();
TransactionIdList.Builder builder = TransactionIdList.newBuilder();
builder.addAllTxId(result);
response.getWriter().println(Util.printTransactionList(builder.build(), visible));
} catch (Exception e) {
Util.processError(e, response);
@@ -33,9 +35,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
PostParams params = PostParams.getPostParams(request);
Collection<Transaction> result = manager.getTxListFromPending();
TransactionList.Builder builder = TransactionList.newBuilder();
builder.addAllTransaction(result);
Collection<String> result = manager.getTxListFromPending();
TransactionIdList.Builder builder = TransactionIdList.newBuilder();
builder.addAllTxId(result);
response.getWriter()
.println(Util.printTransactionList(builder.build(), params.isVisible()));
} catch (Exception e) {
13 changes: 13 additions & 0 deletions framework/src/main/java/org/tron/core/services/http/Util.java
Original file line number Diff line number Diff line change
@@ -29,6 +29,7 @@
import org.tron.api.GrpcAPI.EasyTransferResponse;
import org.tron.api.GrpcAPI.TransactionApprovedList;
import org.tron.api.GrpcAPI.TransactionExtention;
import org.tron.api.GrpcAPI.TransactionIdList;
import org.tron.api.GrpcAPI.TransactionList;
import org.tron.api.GrpcAPI.TransactionSignWeight;
import org.tron.common.crypto.Hash;
@@ -57,6 +58,7 @@ public class Util {
public static final String PERMISSION_ID = "Permission_id";
public static final String VISIBLE = "visible";
public static final String TRANSACTION = "transaction";
public static final String TRANSACTION_ID = "transactionId";
public static final String VALUE = "value";
public static final String CONTRACT_TYPE = "contractType";
public static final String EXTRA_DATA = "extra_data";
@@ -112,6 +114,17 @@ public static String printTransactionList(TransactionList list, boolean selfType
return jsonObject.toJSONString();
}

public static String printTransactionList(TransactionIdList list, boolean selfType) {
List<String> transactions = list.getTxIdList();
JSONObject jsonObject = JSONObject.parseObject(JsonFormat.printToString(list, selfType));
JSONArray jsonArray = new JSONArray();
transactions.stream()
.forEach(transaction -> jsonArray.add(transaction));
jsonObject.put(TRANSACTION_ID, jsonArray);

return jsonObject.toJSONString();
}

public static JSONArray printTransactionListToJSON(List<TransactionCapsule> list,
boolean selfType) {
JSONArray transactions = new JSONArray();
Original file line number Diff line number Diff line change
@@ -88,13 +88,13 @@ public void validWitnessProductTwoBlockTest() {
Assert.assertEquals(block.getBlockCapsuleSet().contains(blockCapsule2), true);

Iterator<BlockCapsule> iterator = block.getBlockCapsuleSet()
.iterator();
.iterator();
boolean isInner = false;
while (iterator.hasNext()) {
BlockCapsule blockCapsule = iterator.next();
blockCapsule.getBlockId();
if (blockCapsule.getBlockId().equals(blockCapsule1.getBlockId())) {
isInner = true;
isInner = true;
}
}
Assert.assertTrue(isInner);
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import org.tron.api.GrpcAPI.EmptyMessage;
import org.tron.api.GrpcAPI.TransactionIdList;
import org.tron.api.GrpcAPI.TransactionList;
import org.tron.api.WalletGrpc;
import org.tron.api.WalletSolidityGrpc;
@@ -98,19 +99,18 @@ public void test01GetPendingSize() {
@Test(enabled = true, description = "Test get pending transaction list")
public void test02GetPendingTransactionList() {
int retryTimes = 100;
TransactionList transactionList = blockingStubFull
TransactionIdList transactionList = blockingStubFull
.getTransactionListFromPending(EmptyMessage.newBuilder().build());
while (transactionList.getTransactionCount() == 0 && retryTimes-- > 0) {
while (transactionList.getTxIdCount() == 0 && retryTimes-- > 0) {
PublicMethed.sendcoin(receiverAddress,1L,fromAddress,testKey002,blockingStubFull);
if (retryTimes % 5 == 0) {
transactionList = blockingStubFull
.getTransactionListFromPending(EmptyMessage.newBuilder().build());
}
}
Assert.assertNotEquals(transactionList.getTransactionCount(),0);
Assert.assertNotEquals(transactionList.getTxIdCount(),0);

txid = ByteArray.toHexString(Sha256Hash
.hash(true, transactionList.getTransaction(0).getRawData().toByteArray()));
txid = transactionList.getTxId(0);

logger.info("txid:" + txid);

5 changes: 4 additions & 1 deletion protocol/src/main/protos/api/api.proto
Original file line number Diff line number Diff line change
@@ -784,7 +784,7 @@ service Wallet {
rpc GetTransactionFromPending (BytesMessage) returns (Transaction) {
}

rpc GetTransactionListFromPending (EmptyMessage) returns (TransactionList) {
rpc GetTransactionListFromPending (EmptyMessage) returns (TransactionIdList) {
}

rpc GetPendingSize (EmptyMessage) returns (NumberMessage) {
@@ -1084,6 +1084,9 @@ message BlockList {
message TransactionList {
repeated Transaction transaction = 1;
}
message TransactionIdList {
repeated string txId = 1;
}
message DelegatedResourceMessage {
bytes fromAddress = 1;
bytes toAddress = 2;

0 comments on commit 65f5b44

Please sign in to comment.