getFilterPaths() {
filterPaths.add("/walletpbft/getblockbylatestnum");
filterPaths.add("/walletpbft/getblockbylimitnext");
filterPaths.add("/walletpbft/getblockbynum");
- filterPaths.add("/walletpbft/getmerkletreevoucherinfo");
filterPaths.add("/walletpbft/gettransactionbyid");
filterPaths.add("/walletpbft/gettransactioncountbyblocknum");
filterPaths.add("/walletpbft/gettransactioninfobyid");
- filterPaths.add("/walletpbft/isspend");
- filterPaths.add("/walletpbft/scanandmarknotebyivk");
- filterPaths.add("/walletpbft/scannotebyivk");
- filterPaths.add("/walletpbft/scannotebyovk");
+ filterPaths.add("/walletpbft/gettransactioninfobyblocknum");
filterPaths.add("/walletpbft/getmarketorderbyaccount");
filterPaths.add("/walletpbft/getmarketorderbyid");
filterPaths.add("/walletpbft/getmarketpricebypair");
diff --git a/framework/src/main/java/org/tron/core/services/filter/PbftCursorFilter.java b/framework/src/main/java/org/tron/core/services/filter/PbftCursorFilter.java
new file mode 100644
index 00000000000..7bc7f4fa712
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/filter/PbftCursorFilter.java
@@ -0,0 +1,15 @@
+package org.tron.core.services.filter;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.tron.core.db.Manager;
+import org.tron.core.db2.core.Chainbase;
+
+@Component
+public class PbftCursorFilter extends WalletCursorFilter {
+
+ @Autowired
+ public PbftCursorFilter(Manager dbManager) {
+ super(dbManager, Chainbase.Cursor.PBFT);
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/filter/SolidityCursorFilter.java b/framework/src/main/java/org/tron/core/services/filter/SolidityCursorFilter.java
new file mode 100644
index 00000000000..992b1a7548c
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/filter/SolidityCursorFilter.java
@@ -0,0 +1,15 @@
+package org.tron.core.services.filter;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.tron.core.db.Manager;
+import org.tron.core.db2.core.Chainbase;
+
+@Component
+public class SolidityCursorFilter extends WalletCursorFilter {
+
+ @Autowired
+ public SolidityCursorFilter(Manager dbManager) {
+ super(dbManager, Chainbase.Cursor.SOLIDITY);
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/filter/WalletCursorFilter.java b/framework/src/main/java/org/tron/core/services/filter/WalletCursorFilter.java
new file mode 100644
index 00000000000..d7a8f43b696
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/filter/WalletCursorFilter.java
@@ -0,0 +1,56 @@
+package org.tron.core.services.filter;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import org.tron.core.db.Manager;
+import org.tron.core.db2.core.Chainbase;
+
+/**
+ * Selects which state view (HEAD / SOLIDITY / PBFT) the http servlets on this port read from.
+ *
+ * The read cursor is a per-thread setting ({@code ThreadLocal} in {@code Chainbase}): it only
+ * decides from which snapshot the current thread starts its reads, and has no effect on any
+ * other thread. This filter sets the cursor before the servlet runs, so the same stateless
+ * servlet beans can serve {@code /wallet} (HEAD), {@code /walletsolidity} (SOLIDITY) and
+ * {@code /walletpbft} (PBFT) without per-port subclasses.
+ *
+ *
The cursor is always reset to HEAD in a finally block: jetty pools its worker threads, and
+ * a leftover cursor would leak into the next request served by the same thread. Only read-only
+ * endpoints may be mounted behind this filter — write paths must run with the HEAD cursor.
+ */
+public abstract class WalletCursorFilter implements Filter {
+
+ private final Manager dbManager;
+ private final Chainbase.Cursor cursor;
+
+ protected WalletCursorFilter(Manager dbManager, Chainbase.Cursor cursor) {
+ this.dbManager = dbManager;
+ this.cursor = cursor;
+ }
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // do nothing
+ }
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
+ FilterChain filterChain) throws IOException, ServletException {
+ try {
+ dbManager.setCursor(cursor);
+ filterChain.doFilter(servletRequest, servletResponse);
+ } finally {
+ dbManager.resetCursor();
+ }
+ }
+
+ @Override
+ public void destroy() {
+ // do nothing
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/http/FullNodeHttpApiService.java b/framework/src/main/java/org/tron/core/services/http/FullNodeHttpApiService.java
index 5a3b86cb396..240b2b8e7f2 100644
--- a/framework/src/main/java/org/tron/core/services/http/FullNodeHttpApiService.java
+++ b/framework/src/main/java/org/tron/core/services/http/FullNodeHttpApiService.java
@@ -9,289 +9,28 @@
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.tron.common.application.HttpService;
import org.tron.core.config.args.Args;
import org.tron.core.services.filter.HttpApiAccessFilter;
import org.tron.core.services.filter.HttpInterceptor;
import org.tron.core.services.filter.LiteFnQueryHttpFilter;
-
+import org.tron.core.services.http.servlets.GetNodeInfoServlet;
+import org.tron.core.services.http.servlets.ListNodesServlet;
+import org.tron.core.services.http.servlets.MetricsServlet;
@Component("fullNodeHttpApiService")
@Slf4j(topic = "API")
public class FullNodeHttpApiService extends HttpService {
- @Autowired
- private GetAccountServlet getAccountServlet;
- @Autowired
- private TransferServlet transferServlet;
- @Autowired
- private BroadcastServlet broadcastServlet;
- @Autowired
- private UpdateAccountServlet updateAccountServlet;
- @Autowired
- private VoteWitnessAccountServlet voteWitnessAccountServlet;
- @Autowired
- private CreateAssetIssueServlet createAssetIssueServlet;
- @Autowired
- private UpdateWitnessServlet updateWitnessServlet;
- @Autowired
- private CreateAccountServlet createAccountServlet;
- @Autowired
- private CreateWitnessServlet createWitnessServlet;
- @Autowired
- private TransferAssetServlet transferAssetServlet;
- @Autowired
- private ParticipateAssetIssueServlet participateAssetIssueServlet;
- @Autowired
- private FreezeBalanceServlet freezeBalanceServlet;
- @Autowired
- private UnFreezeBalanceServlet unFreezeBalanceServlet;
- @Autowired
- private UnFreezeAssetServlet unFreezeAssetServlet;
- @Autowired
- private WithdrawBalanceServlet withdrawBalanceServlet;
- @Autowired
- private UpdateAssetServlet updateAssetServlet;
- @Autowired
- private ListNodesServlet listNodesServlet;
- @Autowired
- private GetAssetIssueByAccountServlet getAssetIssueByAccountServlet;
- @Autowired
- private GetAccountNetServlet getAccountNetServlet;
- @Autowired
- private GetAssetIssueByNameServlet getAssetIssueByNameServlet;
- @Autowired
- private GetAssetIssueListByNameServlet getAssetIssueListByNameServlet;
- @Autowired
- private GetAssetIssueByIdServlet getAssetIssueByIdServlet;
- @Autowired
- private GetNowBlockServlet getNowBlockServlet;
- @Autowired
- private GetBlockByNumServlet getBlockByNumServlet;
- @Autowired
- private GetBlockByIdServlet getBlockByIdServlet;
- @Autowired
- private GetBlockByLimitNextServlet getBlockByLimitNextServlet;
- @Autowired
- private GetBlockByLatestNumServlet getBlockByLatestNumServlet;
- @Autowired
- private GetTransactionByIdServlet getTransactionByIdServlet;
- @Autowired
- private GetTransactionInfoByIdServlet getTransactionInfoByIdServlet;
- @Autowired
- private GetTransactionReceiptByIdServlet getTransactionReceiptByIdServlet;
- @Autowired
- private GetTransactionCountByBlockNumServlet getTransactionCountByBlockNumServlet;
- @Autowired
- private ListWitnessesServlet listWitnessesServlet;
- @Autowired
- private GetPaginatedNowWitnessListServlet getPaginatedNowWitnessListServlet;
- @Autowired
- private GetAssetIssueListServlet getAssetIssueListServlet;
- @Autowired
- private GetPaginatedAssetIssueListServlet getPaginatedAssetIssueListServlet;
- @Autowired
- private GetPaginatedProposalListServlet getPaginatedProposalListServlet;
- @Autowired
- private GetPaginatedExchangeListServlet getPaginatedExchangeListServlet;
- @Autowired
- private TotalTransactionServlet totalTransactionServlet;
- @Autowired
- private GetNextMaintenanceTimeServlet getNextMaintenanceTimeServlet;
- @Autowired
- private ValidateAddressServlet validateAddressServlet;
- @Autowired
- private DeployContractServlet deployContractServlet;
- @Autowired
- private TriggerSmartContractServlet triggerSmartContractServlet;
- @Autowired
- private TriggerConstantContractServlet triggerConstantContractServlet;
- @Autowired
- private EstimateEnergyServlet estimateEnergyServlet;
- @Autowired
- private GetContractServlet getContractServlet;
- @Autowired
- private GetContractInfoServlet getContractInfoServlet;
- @Autowired
- private ClearABIServlet clearABIServlet;
- @Autowired
- private ProposalCreateServlet proposalCreateServlet;
- @Autowired
- private ProposalApproveServlet proposalApproveServlet;
- @Autowired
- private ProposalDeleteServlet proposalDeleteServlet;
- @Autowired
- private ListProposalsServlet listProposalsServlet;
- @Autowired
- private GetProposalByIdServlet getProposalByIdServlet;
- @Autowired
- private ExchangeCreateServlet exchangeCreateServlet;
- @Autowired
- private ExchangeInjectServlet exchangeInjectServlet;
- @Autowired
- private ExchangeTransactionServlet exchangeTransactionServlet;
- @Autowired
- private ExchangeWithdrawServlet exchangeWithdrawServlet;
- @Autowired
- private GetExchangeByIdServlet getExchangeByIdServlet;
- @Autowired
- private ListExchangesServlet listExchangesServlet;
- @Autowired
- private GetChainParametersServlet getChainParametersServlet;
- @Autowired
- private GetAccountResourceServlet getAccountResourceServlet;
- @Autowired
- private GetNodeInfoServlet getNodeInfoServlet;
- @Autowired
- private GetTransactionSignWeightServlet getTransactionSignWeightServlet;
- @Autowired
- private GetTransactionApprovedListServlet getTransactionApprovedListServlet;
- @Autowired
- private AccountPermissionUpdateServlet accountPermissionUpdateServlet;
- @Autowired
- private UpdateSettingServlet updateSettingServlet;
- @Autowired
- private UpdateEnergyLimitServlet updateEnergyLimitServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexServlet getDelegatedResourceAccountIndexServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexV2Servlet getDelegatedResourceAccountIndexV2Servlet;
- @Autowired
- private GetDelegatedResourceServlet getDelegatedResourceServlet;
- @Autowired
- private GetDelegatedResourceV2Servlet getDelegatedResourceV2Servlet;
- @Autowired
- private GetCanDelegatedMaxSizeServlet getCanDelegatedMaxSizeServlet;
- @Autowired
- private GetAvailableUnfreezeCountServlet getAvailableUnfreezeCountServlet;
- @Autowired
- private GetCanWithdrawUnfreezeAmountServlet getCanWithdrawUnfreezeAmountServlet;
- @Autowired
- private SetAccountIdServlet setAccountServlet;
- @Autowired
- private GetAccountByIdServlet getAccountByIdServlet;
- @Autowired
- private GetExpandedSpendingKeyServlet getExpandedSpendingKeyServlet;
- @Autowired
- private GetAkFromAskServlet getAkFromAskServlet;
- @Autowired
- private GetNkFromNskServlet getNkFromNskServlet;
- @Autowired
- private GetSpendingKeyServlet getSpendingKeyServlet;
- @Autowired
- private GetNewShieldedAddressServlet getNewShieldedAddressServlet;
- @Autowired
- private GetDiversifierServlet getDiversifierServlet;
- @Autowired
- private GetIncomingViewingKeyServlet getIncomingViewingKeyServlet;
- @Autowired
- private GetZenPaymentAddressServlet getZenPaymentAddressServlet;
- @Autowired
- private CreateShieldedTransactionServlet createShieldedTransactionServlet;
- @Autowired
- private ScanNoteByIvkServlet scanNoteByIvkServlet;
- @Autowired
- private ScanAndMarkNoteByIvkServlet scanAndMarkNoteByIvkServlet;
- @Autowired
- private ScanNoteByOvkServlet scanNoteByOvkServlet;
- @Autowired
- private GetRcmServlet getRcmServlet;
- @Autowired
- private CreateSpendAuthSigServlet createSpendAuthSigServlet;
- @Autowired
- private CreateShieldNullifierServlet createShieldNullifierServlet;
- @Autowired
- private GetShieldTransactionHashServlet getShieldTransactionHashServlet;
- @Autowired
- private GetMerkleTreeVoucherInfoServlet getMerkleTreeVoucherInfoServlet;
- @Autowired
- private IsSpendServlet isSpendServlet;
- @Autowired
- private CreateShieldedTransactionWithoutSpendAuthSigServlet
- createShieldedTransactionWithoutSpendAuthSigServlet;
- @Autowired
- private BroadcastHexServlet broadcastHexServlet;
- @Autowired
- private GetBurnTrxServlet getBurnTrxServlet;
- @Autowired
- private GetBrokerageServlet getBrokerageServlet;
- @Autowired
- private GetRewardServlet getRewardServlet;
- @Autowired
- private UpdateBrokerageServlet updateBrokerageServlet;
- @Autowired
- private CreateCommonTransactionServlet createCommonTransactionServlet;
- @Autowired
- private GetTransactionInfoByBlockNumServlet getTransactionInfoByBlockNumServlet;
- @Autowired
- private IsShieldedTRC20ContractNoteSpentServlet isShieldedTRC20ContractNoteSpentServlet;
- @Autowired
- private CreateShieldedContractParametersServlet createShieldedContractParametersServlet;
- @Autowired
- private CreateShieldedContractParametersWithoutAskServlet
- createShieldedContractParametersWithoutAskServlet;
- @Autowired
- private ScanShieldedTRC20NotesByIvkServlet scanShieldedTRC20NotesByIvkServlet;
- @Autowired
- private ScanShieldedTRC20NotesByOvkServlet scanShieldedTRC20NotesByOvkServlet;
- @Autowired
- private GetTriggerInputForShieldedTRC20ContractServlet
- getTriggerInputForShieldedTRC20ContractServlet;
- @Autowired
- private MetricsServlet metricsServlet;
- @Autowired
- private MarketSellAssetServlet marketSellAssetServlet;
- @Autowired
- private MarketCancelOrderServlet marketCancelOrderServlet;
- @Autowired
- private GetMarketOrderByAccountServlet getMarketOrderByAccountServlet;
- @Autowired
- private GetMarketOrderByIdServlet getMarketOrderByIdServlet;
- @Autowired
- private GetMarketPriceByPairServlet getMarketPriceByPairServlet;
- @Autowired
- private GetMarketOrderListByPairServlet getMarketOrderListByPairServlet;
- @Autowired
- private GetMarketPairListServlet getMarketPairListServlet;
-
- @Autowired
- private GetAccountBalanceServlet getAccountBalanceServlet;
-
- @Autowired
- private GetBlockBalanceServlet getBlockBalanceServlet;
-
@Autowired
private LiteFnQueryHttpFilter liteFnQueryHttpFilter;
@Autowired
private HttpApiAccessFilter httpApiAccessFilter;
- @Autowired
- private GetTransactionFromPendingServlet getTransactionFromPendingServlet;
- @Autowired
- private GetTransactionListFromPendingServlet getTransactionListFromPendingServlet;
- @Autowired
- private GetPendingSizeServlet getPendingSizeServlet;
- @Autowired
- private GetEnergyPricesServlet getEnergyPricesServlet;
- @Autowired
- private GetBandwidthPricesServlet getBandwidthPricesServlet;
- @Autowired
- private GetBlockServlet getBlockServlet;
- @Autowired
- private GetMemoFeePricesServlet getMemoFeePricesServlet;
@Autowired
- private FreezeBalanceV2Servlet freezeBalanceV2Servlet;
- @Autowired
- private UnFreezeBalanceV2Servlet unFreezeBalanceV2Servlet;
- @Autowired
- private WithdrawExpireUnfreezeServlet withdrawExpireUnfreezeServlet;
- @Autowired
- private DelegateResourceServlet delegateResourceServlet;
- @Autowired
- private UnDelegateResourceServlet unDelegateResourceServlet;
- @Autowired
- private CancelAllUnfreezeV2Servlet cancelAllUnfreezeV2Servlet;
+ private ApplicationContext appContext;
public FullNodeHttpApiService() {
port = Args.getInstance().getFullNodeHttpPort();
@@ -302,219 +41,28 @@ public FullNodeHttpApiService() {
@Override
protected void addServlet(ServletContextHandler context) {
- context.addServlet(new ServletHolder(getAccountServlet), "/wallet/getaccount");
- context.addServlet(new ServletHolder(transferServlet), "/wallet/createtransaction");
- context.addServlet(new ServletHolder(broadcastServlet), "/wallet/broadcasttransaction");
- context.addServlet(new ServletHolder(updateAccountServlet), "/wallet/updateaccount");
- context.addServlet(new ServletHolder(voteWitnessAccountServlet),
- "/wallet/votewitnessaccount");
- context.addServlet(new ServletHolder(createAssetIssueServlet), "/wallet/createassetissue");
- context.addServlet(new ServletHolder(updateWitnessServlet), "/wallet/updatewitness");
- context.addServlet(new ServletHolder(createAccountServlet), "/wallet/createaccount");
- context.addServlet(new ServletHolder(createWitnessServlet), "/wallet/createwitness");
- context.addServlet(new ServletHolder(transferAssetServlet), "/wallet/transferasset");
- context.addServlet(new ServletHolder(participateAssetIssueServlet),
- "/wallet/participateassetissue");
- context.addServlet(new ServletHolder(freezeBalanceServlet), "/wallet/freezebalance");
- context.addServlet(new ServletHolder(unFreezeBalanceServlet), "/wallet/unfreezebalance");
- context.addServlet(new ServletHolder(unFreezeAssetServlet), "/wallet/unfreezeasset");
- context.addServlet(new ServletHolder(withdrawBalanceServlet), "/wallet/withdrawbalance");
- context.addServlet(new ServletHolder(updateAssetServlet), "/wallet/updateasset");
- context.addServlet(new ServletHolder(listNodesServlet), "/wallet/listnodes");
- context.addServlet(
- new ServletHolder(getAssetIssueByAccountServlet), "/wallet/getassetissuebyaccount");
- context.addServlet(new ServletHolder(getAccountNetServlet), "/wallet/getaccountnet");
- context.addServlet(new ServletHolder(getAssetIssueByNameServlet),
- "/wallet/getassetissuebyname");
- context.addServlet(new ServletHolder(getAssetIssueListByNameServlet),
- "/wallet/getassetissuelistbyname");
- context.addServlet(new ServletHolder(getAssetIssueByIdServlet), "/wallet/getassetissuebyid");
- context.addServlet(new ServletHolder(getNowBlockServlet), "/wallet/getnowblock");
- context.addServlet(new ServletHolder(getBlockByNumServlet), "/wallet/getblockbynum");
- context.addServlet(new ServletHolder(getBlockByIdServlet), "/wallet/getblockbyid");
- context.addServlet(new ServletHolder(getBlockByLimitNextServlet),
- "/wallet/getblockbylimitnext");
- context.addServlet(new ServletHolder(getBlockByLatestNumServlet),
- "/wallet/getblockbylatestnum");
- context.addServlet(new ServletHolder(getTransactionByIdServlet),
- "/wallet/gettransactionbyid");
- context.addServlet(
- new ServletHolder(getTransactionInfoByIdServlet), "/wallet/gettransactioninfobyid");
- context.addServlet(
- new ServletHolder(getTransactionReceiptByIdServlet), "/wallet/gettransactionreceiptbyid");
- context.addServlet(
- new ServletHolder(getTransactionCountByBlockNumServlet),
- "/wallet/gettransactioncountbyblocknum");
- // Get the list of witnesses info with contains vote counts for last epoch/maintenance
- context.addServlet(new ServletHolder(listWitnessesServlet), "/wallet/listwitnesses");
- // Get the paged list of witnesses info with realtime vote counts
- context.addServlet(new ServletHolder(getPaginatedNowWitnessListServlet),
- "/wallet/getpaginatednowwitnesslist");
- context.addServlet(new ServletHolder(getAssetIssueListServlet), "/wallet/getassetissuelist");
- context.addServlet(
- new ServletHolder(getPaginatedAssetIssueListServlet),
- "/wallet/getpaginatedassetissuelist");
- context.addServlet(
- new ServletHolder(getPaginatedProposalListServlet), "/wallet/getpaginatedproposallist");
- context.addServlet(
- new ServletHolder(getPaginatedExchangeListServlet), "/wallet/getpaginatedexchangelist");
- context.addServlet(new ServletHolder(totalTransactionServlet), "/wallet/totaltransaction");
- context.addServlet(
- new ServletHolder(getNextMaintenanceTimeServlet), "/wallet/getnextmaintenancetime");
- context.addServlet(new ServletHolder(validateAddressServlet), "/wallet/validateaddress");
- context.addServlet(new ServletHolder(deployContractServlet), "/wallet/deploycontract");
- context.addServlet(new ServletHolder(triggerSmartContractServlet),
- "/wallet/triggersmartcontract");
- context.addServlet(new ServletHolder(triggerConstantContractServlet),
- "/wallet/triggerconstantcontract");
- context.addServlet(new ServletHolder(estimateEnergyServlet), "/wallet/estimateenergy");
- context.addServlet(new ServletHolder(getContractServlet), "/wallet/getcontract");
- context.addServlet(new ServletHolder(getContractInfoServlet), "/wallet/getcontractinfo");
- context.addServlet(new ServletHolder(clearABIServlet), "/wallet/clearabi");
- context.addServlet(new ServletHolder(proposalCreateServlet), "/wallet/proposalcreate");
- context.addServlet(new ServletHolder(proposalApproveServlet), "/wallet/proposalapprove");
- context.addServlet(new ServletHolder(proposalDeleteServlet), "/wallet/proposaldelete");
- context.addServlet(new ServletHolder(listProposalsServlet), "/wallet/listproposals");
- context.addServlet(new ServletHolder(getProposalByIdServlet), "/wallet/getproposalbyid");
- context.addServlet(new ServletHolder(exchangeCreateServlet), "/wallet/exchangecreate");
- context.addServlet(new ServletHolder(exchangeInjectServlet), "/wallet/exchangeinject");
- context.addServlet(new ServletHolder(exchangeTransactionServlet),
- "/wallet/exchangetransaction");
- context.addServlet(new ServletHolder(exchangeWithdrawServlet), "/wallet/exchangewithdraw");
- context.addServlet(new ServletHolder(getExchangeByIdServlet), "/wallet/getexchangebyid");
- context.addServlet(new ServletHolder(listExchangesServlet), "/wallet/listexchanges");
- context.addServlet(new ServletHolder(getChainParametersServlet),
- "/wallet/getchainparameters");
- context.addServlet(new ServletHolder(getAccountResourceServlet),
- "/wallet/getaccountresource");
- context.addServlet(new ServletHolder(getTransactionSignWeightServlet),
- "/wallet/getsignweight");
- context.addServlet(new ServletHolder(getTransactionApprovedListServlet),
- "/wallet/getapprovedlist");
- context.addServlet(new ServletHolder(accountPermissionUpdateServlet),
- "/wallet/accountpermissionupdate");
- context.addServlet(new ServletHolder(getNodeInfoServlet), "/wallet/getnodeinfo");
- context.addServlet(new ServletHolder(updateSettingServlet), "/wallet/updatesetting");
- context.addServlet(new ServletHolder(updateEnergyLimitServlet), "/wallet/updateenergylimit");
- context.addServlet(new ServletHolder(getDelegatedResourceServlet),
- "/wallet/getdelegatedresource");
- context.addServlet(new ServletHolder(getDelegatedResourceV2Servlet),
- "/wallet/getdelegatedresourcev2");
- context.addServlet(new ServletHolder(getCanDelegatedMaxSizeServlet),
- "/wallet/getcandelegatedmaxsize");
- context.addServlet(new ServletHolder(getAvailableUnfreezeCountServlet),
- "/wallet/getavailableunfreezecount");
- context.addServlet(new ServletHolder(getCanWithdrawUnfreezeAmountServlet),
- "/wallet/getcanwithdrawunfreezeamount");
- context.addServlet(
- new ServletHolder(getDelegatedResourceAccountIndexServlet),
- "/wallet/getdelegatedresourceaccountindex");
- context.addServlet(
- new ServletHolder(getDelegatedResourceAccountIndexV2Servlet),
- "/wallet/getdelegatedresourceaccountindexv2");
- context.addServlet(new ServletHolder(setAccountServlet), "/wallet/setaccountid");
- context.addServlet(new ServletHolder(getAccountByIdServlet), "/wallet/getaccountbyid");
- context
- .addServlet(new ServletHolder(getExpandedSpendingKeyServlet),
- "/wallet/getexpandedspendingkey");
- context.addServlet(new ServletHolder(getAkFromAskServlet), "/wallet/getakfromask");
- context.addServlet(new ServletHolder(getNkFromNskServlet), "/wallet/getnkfromnsk");
- context.addServlet(new ServletHolder(getSpendingKeyServlet), "/wallet/getspendingkey");
- context
- .addServlet(new ServletHolder(getNewShieldedAddressServlet),
- "/wallet/getnewshieldedaddress");
- context.addServlet(new ServletHolder(getDiversifierServlet), "/wallet/getdiversifier");
- context.addServlet(new ServletHolder(getIncomingViewingKeyServlet),
- "/wallet/getincomingviewingkey");
- context.addServlet(new ServletHolder(getZenPaymentAddressServlet),
- "/wallet/getzenpaymentaddress");
- // context.addServlet(new ServletHolder(createShieldedTransactionServlet),
- // "/wallet/createshieldedtransaction");
- // context.addServlet(new ServletHolder(createShieldedTransactionWithoutSpendAuthSigServlet),
- // "/wallet/createshieldedtransactionwithoutspendauthsig");
- // context.addServlet(new ServletHolder(scanNoteByIvkServlet), "/wallet/scannotebyivk");
- // context.addServlet(new ServletHolder(scanAndMarkNoteByIvkServlet),
- // "/wallet/scanandmarknotebyivk");
- // context.addServlet(new ServletHolder(scanNoteByOvkServlet), "/wallet/scannotebyovk");
- context.addServlet(new ServletHolder(getRcmServlet), "/wallet/getrcm");
- // context.addServlet(new ServletHolder(getMerkleTreeVoucherInfoServlet),
- // "/wallet/getmerkletreevoucherinfo");
- // context.addServlet(new ServletHolder(isSpendServlet), "/wallet/isspend");
- context.addServlet(new ServletHolder(createSpendAuthSigServlet),
- "/wallet/createspendauthsig");
- // context.addServlet(new ServletHolder(createShieldNullifierServlet),
- // "/wallet/createshieldnullifier");
- // context.addServlet(new ServletHolder(getShieldTransactionHashServlet),
- // "/wallet/getshieldtransactionhash");
-
- context
- .addServlet(new ServletHolder(isShieldedTRC20ContractNoteSpentServlet),
- "/wallet/isshieldedtrc20contractnotespent");
- context.addServlet(new ServletHolder(createShieldedContractParametersServlet),
- "/wallet/createshieldedcontractparameters");
- context.addServlet(new ServletHolder(createShieldedContractParametersWithoutAskServlet),
- "/wallet/createshieldedcontractparameterswithoutask");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByIvkServlet),
- "/wallet/scanshieldedtrc20notesbyivk");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByOvkServlet),
- "/wallet/scanshieldedtrc20notesbyovk");
- context.addServlet(new ServletHolder(getTriggerInputForShieldedTRC20ContractServlet),
- "/wallet/gettriggerinputforshieldedtrc20contract");
-
- context.addServlet(new ServletHolder(broadcastHexServlet), "/wallet/broadcasthex");
- context.addServlet(new ServletHolder(getBrokerageServlet), "/wallet/getBrokerage");
- context.addServlet(new ServletHolder(getRewardServlet), "/wallet/getReward");
- context.addServlet(new ServletHolder(updateBrokerageServlet), "/wallet/updateBrokerage");
- context.addServlet(new ServletHolder(createCommonTransactionServlet),
- "/wallet/createCommonTransaction");
- context.addServlet(new ServletHolder(getTransactionInfoByBlockNumServlet),
- "/wallet/gettransactioninfobyblocknum");
- context.addServlet(new ServletHolder(listNodesServlet), "/net/listnodes");
-
- context.addServlet(new ServletHolder(metricsServlet), "/monitor/getstatsinfo");
- context.addServlet(new ServletHolder(getNodeInfoServlet), "/monitor/getnodeinfo");
- context.addServlet(new ServletHolder(marketSellAssetServlet), "/wallet/marketsellasset");
- context.addServlet(new ServletHolder(marketCancelOrderServlet), "/wallet/marketcancelorder");
- context.addServlet(new ServletHolder(getMarketOrderByAccountServlet),
- "/wallet/getmarketorderbyaccount");
- context.addServlet(new ServletHolder(getMarketOrderByIdServlet),
- "/wallet/getmarketorderbyid");
- context.addServlet(new ServletHolder(getMarketPriceByPairServlet),
- "/wallet/getmarketpricebypair");
- context.addServlet(new ServletHolder(getMarketOrderListByPairServlet),
- "/wallet/getmarketorderlistbypair");
- context.addServlet(new ServletHolder(getMarketPairListServlet),
- "/wallet/getmarketpairlist");
-
- context.addServlet(new ServletHolder(getAccountBalanceServlet),
- "/wallet/getaccountbalance");
- 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(getPendingSizeServlet), "/wallet/getpendingsize");
- context.addServlet(new ServletHolder(getEnergyPricesServlet), "/wallet/getenergyprices");
- context.addServlet(new ServletHolder(getBandwidthPricesServlet),
- "/wallet/getbandwidthprices");
- context.addServlet(new ServletHolder(getBlockServlet), "/wallet/getblock");
- context.addServlet(new ServletHolder(getMemoFeePricesServlet), "/wallet/getmemofee");
-
- context.addServlet(new ServletHolder(freezeBalanceV2Servlet),
- "/wallet/freezebalancev2");
- context.addServlet(new ServletHolder(unFreezeBalanceV2Servlet),
- "/wallet/unfreezebalancev2");
- context.addServlet(new ServletHolder(withdrawExpireUnfreezeServlet),
- "/wallet/withdrawexpireunfreeze");
- context.addServlet(new ServletHolder(delegateResourceServlet),
- "/wallet/delegateresource");
- context.addServlet(new ServletHolder(unDelegateResourceServlet),
- "/wallet/undelegateresource");
- context.addServlet(new ServletHolder(cancelAllUnfreezeV2Servlet),
- "/wallet/cancelallunfreezev2");
+ addServletsFromRegistry(context);
+ }
+ /**
+ * Registry-driven registration: mounts every endpoint the registry declares for the FULL
+ * surface under the /wallet prefix, resolving servlet beans from the application context.
+ * The three root-mounted endpoints (net / monitor) are not under /wallet and are mounted
+ * explicitly; their paths must stay listed in the access-filter pathSpecs in
+ * {@link #addFilter}.
+ */
+ protected void addServletsFromRegistry(ServletContextHandler context) {
+ for (HttpApiRegistry.Entry def : HttpApiRegistry.forSurface(HttpApi.Surface.FULL)) {
+ context.addServlet(new ServletHolder(appContext.getBean(def.getServlet())),
+ "/wallet/" + def.getSuffix());
+ }
+ // root-mounted endpoints, not under the /wallet prefix
+ context.addServlet(new ServletHolder(appContext.getBean(ListNodesServlet.class)),
+ "/net/listnodes");
+ context.addServlet(new ServletHolder(appContext.getBean(MetricsServlet.class)),
+ "/monitor/getstatsinfo");
+ context.addServlet(new ServletHolder(appContext.getBean(GetNodeInfoServlet.class)),
+ "/monitor/getnodeinfo");
}
@Override
diff --git a/framework/src/main/java/org/tron/core/services/http/HttpApi.java b/framework/src/main/java/org/tron/core/services/http/HttpApi.java
new file mode 100644
index 00000000000..f064fb0ea20
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/http/HttpApi.java
@@ -0,0 +1,58 @@
+package org.tron.core.services.http;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Declares one http endpoint on the servlet that serves it: the path suffix it is mounted under,
+ * whether it mutates state, and the surfaces (http services) it is exposed on.
+ *
+ *
This annotation is the single declaration of an endpoint's exposure. {@link HttpApiRegistry}
+ * derives a read-only registry and the audit matrix from it, so no hand-maintained table repeats
+ * the information and an endpoint cannot drift between its implementation and its registration.
+ *
+ *
Deliberately not {@code @Inherited}, and read only via
+ * {@link Class#getDeclaredAnnotation}. Servlets in this code base have historically been
+ * subclassed to vary behaviour. If the annotation were inheritable, or were looked up with a
+ * superclass-walking helper such as Spring's {@code AnnotatedElementUtils#findMergedAnnotation},
+ * any future subclass would silently inherit its parent's suffix, access and surfaces: a
+ * {@code WRITE} endpoint could reach a cursor surface without anyone declaring it.
+ * {@link HttpApiRegistry} asserts both properties at startup so the guarantee cannot be removed
+ * by accident.
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface HttpApi {
+
+ /** Path suffix the endpoint is mounted under, with no leading slash and no {@code '/'}. */
+ String value();
+
+ /** Whether the endpoint mutates chain state. */
+ Access access();
+
+ /** Http services the endpoint is exposed on; must not be empty. */
+ Surface[] surfaces();
+
+ /**
+ * Http services an endpoint can be exposed on. FULL / SOLIDITY / PBFT are the three
+ * services run by the FullNode process (its HEAD, solidified and PBFT-finalized views);
+ * SOLIDITY_NODE is run only when a node starts as a standalone SolidityNode process.
+ */
+ enum Surface {
+ FULL, SOLIDITY, PBFT, SOLIDITY_NODE
+ }
+
+ /**
+ * READ: no state mutation — queries, crypto derivation and constant VM calls.
+ * BUILD: no state mutation — composes an unsigned transaction, or the parameters for one,
+ * for the client to sign and broadcast.
+ * WRITE: pushes a transaction into the chain.
+ */
+ enum Access {
+ READ, BUILD, WRITE
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/http/HttpApiExcluded.java b/framework/src/main/java/org/tron/core/services/http/HttpApiExcluded.java
new file mode 100644
index 00000000000..1f126b6511b
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/http/HttpApiExcluded.java
@@ -0,0 +1,27 @@
+package org.tron.core.services.http;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Marks a concrete servlet under the registry-managed package as deliberately not exposed through
+ * {@link HttpApiRegistry}, with the reason recorded on the class itself.
+ *
+ *
{@link HttpApiRegistry} requires every concrete servlet in that package to carry either
+ * {@link HttpApi} or this annotation. Without that rule a servlet could be added and simply never
+ * registered — the silent-omission failure this refactor exists to remove, only moved from the
+ * registration lists to the annotations. Opting out is therefore an explicit, reviewable act.
+ *
+ *
Like {@link HttpApi} this is not {@code @Inherited} and is read only as a declared annotation.
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface HttpApiExcluded {
+
+ /** Why the servlet is not registered; must not be blank. */
+ String value();
+}
diff --git a/framework/src/main/java/org/tron/core/services/http/HttpApiRegistry.java b/framework/src/main/java/org/tron/core/services/http/HttpApiRegistry.java
new file mode 100644
index 00000000000..90dd579d641
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/http/HttpApiRegistry.java
@@ -0,0 +1,238 @@
+package org.tron.core.services.http;
+
+import java.lang.annotation.Inherited;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
+import javax.servlet.http.HttpServlet;
+import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
+import org.springframework.core.annotation.AnnotatedElementUtils;
+import org.springframework.core.type.filter.AssignableTypeFilter;
+import org.springframework.stereotype.Component;
+import org.tron.core.exception.TronError;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/**
+ * Read-only view of the node's http endpoints, derived at class-load from the {@link HttpApi}
+ * annotation declared on each servlet. No hand-maintained table repeats the metadata: the
+ * annotation is the single declaration and this registry is computed from it, so an endpoint
+ * cannot drift between its implementation and its registration.
+ *
+ *
The whole table is built and validated when this class is first touched — which happens
+ * while a service mounts its servlets, before any Jetty bind, and covers every surface whether
+ * or not that surface is enabled on the node. A table that breaks an invariant aborts the boot
+ * with {@link TronError.ErrCode#API_SERVER_INIT}. Invariants:
+ *
+ *
+ * - every concrete top-level servlet under {@value #PACKAGE} declares exactly one of
+ * {@link HttpApi} or {@link HttpApiExcluded} — a servlet cannot be added and silently left
+ * unmounted;
+ * - conversely a servlet that could never be mounted (abstract, or nested inside another
+ * class) must declare neither — otherwise its endpoint would be silently dropped;
+ * - each {@code (surface, suffix)} pair is unique;
+ * - suffixes are a single path token — {@value #SUFFIX_SYNTAX} — so a suffix can never turn
+ * into a Jetty wildcard or otherwise malformed path spec;
+ * - every {@link HttpApi} servlet is a Spring {@link Component} bean;
+ * - every endpoint whose access is not {@link Access#READ} is exposed on the FULL surface
+ * only — a cursor surface (SOLIDITY / PBFT) must never run a write path on a
+ * cursor-switched thread, and the standalone SolidityNode surface cannot propagate
+ * transactions.
+ *
+ *
+ * Annotations are read with {@link Class#getDeclaredAnnotation} and {@link HttpApi} is not
+ * {@link Inherited}, asserted below, so a servlet subclass can never inherit its parent's
+ * exposure — the failure mode the removed cursor-wrapper subclasses would otherwise reintroduce.
+ */
+public final class HttpApiRegistry {
+
+ static final String PACKAGE = "org.tron.core.services.http.servlets";
+
+ /** Human-readable form of {@link #SUFFIX_PATTERN}, quoted in the boot failure message. */
+ static final String SUFFIX_SYNTAX = "[A-Za-z0-9_.-]+";
+
+ /**
+ * A suffix is concatenated into a jetty path spec ("/wallet/" + suffix), so it must be a single
+ * path token. Anything outside this set could change how jetty matches the mapping — {@code *}
+ * in particular turns the mount into a prefix wildcard that swallows every sibling endpoint —
+ * or produce a path that cannot be requested at all.
+ */
+ private static final Pattern SUFFIX_PATTERN = Pattern.compile(SUFFIX_SYNTAX);
+
+ private static final List ENTRIES = init();
+
+ private HttpApiRegistry() {
+ }
+
+ /** One declared endpoint: its suffix, servlet type and exposed surfaces. */
+ public static final class Entry {
+
+ private final String suffix;
+ private final Class extends HttpServlet> servlet;
+ private final EnumSet surfaces;
+
+ private Entry(String suffix, Class extends HttpServlet> servlet,
+ EnumSet surfaces) {
+ this.suffix = suffix;
+ this.servlet = servlet;
+ this.surfaces = surfaces;
+ }
+
+ public String getSuffix() {
+ return suffix;
+ }
+
+ public Class extends HttpServlet> getServlet() {
+ return servlet;
+ }
+
+ public Set getSurfaces() {
+ return Collections.unmodifiableSet(surfaces);
+ }
+ }
+
+ /** Endpoints exposed on {@code surface}, ordered by suffix. */
+ public static List forSurface(Surface surface) {
+ List result = new ArrayList<>();
+ for (Entry entry : ENTRIES) {
+ if (entry.surfaces.contains(surface)) {
+ result.add(entry);
+ }
+ }
+ return Collections.unmodifiableList(result);
+ }
+
+ private static List init() {
+ try {
+ List entries = buildFromPackage(PACKAGE);
+ if (entries.isEmpty()) {
+ // a broken classpath scan (packaging / classloader) would otherwise leave the node with
+ // no http api and no error; fail the boot loudly instead
+ throw new IllegalStateException("no http endpoints discovered in " + PACKAGE);
+ }
+ return entries;
+ } catch (RuntimeException | Error e) {
+ // any failure building the table — an invariant violation (IllegalStateException), a broken
+ // classpath scan, or a servlet's own static init blowing up in Class.forName — means the
+ // http api surface is not serviceable. Route every such failure through the standard exit
+ // (logged, System.exit) rather than let it escape this static initializer as an
+ // ExceptionInInitializerError that carries no TronError for ExitManager to unwrap.
+ throw new TronError(e, TronError.ErrCode.API_SERVER_INIT);
+ }
+ }
+
+ /**
+ * Every {@link HttpServlet} class in {@code pkg}, including the abstract and nested ones that
+ * cannot be mounted. Those are still scanned so {@link #buildFromPackage} can reject one that
+ * declares an endpoint, rather than dropping it silently.
+ */
+ private static List> scanAllServlets(String pkg) {
+ ClassPathScanningCandidateComponentProvider scanner =
+ new ClassPathScanningCandidateComponentProvider(false) {
+ @Override
+ protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
+ return true;
+ }
+ };
+ scanner.addIncludeFilter(new AssignableTypeFilter(HttpServlet.class));
+ List> classes = new ArrayList<>();
+ for (BeanDefinition bean : scanner.findCandidateComponents(pkg)) {
+ classes.add(load(bean.getBeanClassName()));
+ }
+ return classes;
+ }
+
+ /** Whether {@code clazz} can be resolved as a bean and mounted as an endpoint servlet. */
+ private static boolean isMountable(Class> clazz) {
+ return clazz.getEnclosingClass() == null && !Modifier.isAbstract(clazz.getModifiers());
+ }
+
+ /** Builds and validates the registry from the servlets in {@code pkg}; visible for testing. */
+ static List buildFromPackage(String pkg) {
+ if (HttpApi.class.isAnnotationPresent(Inherited.class)) {
+ throw new IllegalStateException(
+ "@HttpApi must not be @Inherited: a subclass would inherit its parent's exposure");
+ }
+ List entries = new ArrayList<>();
+ Set mounts = new TreeSet<>();
+ for (Class> clazz : scanAllServlets(pkg)) {
+ HttpApi api = clazz.getDeclaredAnnotation(HttpApi.class);
+ HttpApiExcluded excluded = clazz.getDeclaredAnnotation(HttpApiExcluded.class);
+ if (!isMountable(clazz)) {
+ // an abstract base or a nested helper is not an endpoint; it may hold neither annotation,
+ // because declaring one would promise an endpoint that can never be mounted
+ if (api != null || excluded != null) {
+ throw new IllegalStateException(clazz.getName()
+ + " cannot be mounted and must declare neither @HttpApi nor @HttpApiExcluded:"
+ + " an endpoint servlet must be a concrete top-level class");
+ }
+ continue;
+ }
+ if ((api == null) == (excluded == null)) {
+ throw new IllegalStateException(clazz.getName()
+ + " must declare exactly one of @HttpApi or @HttpApiExcluded");
+ }
+ if (api == null) {
+ continue;
+ }
+ Entry entry = validate(clazz, api);
+ for (Surface surface : entry.surfaces) {
+ if (!mounts.add(surface + " " + entry.suffix)) {
+ throw new IllegalStateException(
+ "duplicate endpoint (" + surface + ", " + entry.suffix + ")");
+ }
+ }
+ entries.add(entry);
+ }
+ entries.sort(Comparator.comparing(Entry::getSuffix));
+ return Collections.unmodifiableList(entries);
+ }
+
+ private static Entry validate(Class> clazz, HttpApi api) {
+ // get semantics: a direct @Component or any Spring stereotype meta-annotated with it, but
+ // never one inherited from a superclass
+ if (!AnnotatedElementUtils.isAnnotated(clazz, Component.class)) {
+ throw new IllegalStateException(clazz.getName() + " with @HttpApi must be a @Component bean");
+ }
+ // validate api path suffix value
+ String suffix = api.value();
+ if (suffix == null || suffix.trim().isEmpty()) {
+ throw new IllegalStateException(clazz.getName() + " has a blank @HttpApi suffix");
+ }
+ if (suffix.contains("/")) {
+ throw new IllegalStateException(clazz.getName() + " suffix must not contain '/': " + suffix);
+ }
+ if (!SUFFIX_PATTERN.matcher(suffix).matches()) {
+ throw new IllegalStateException(clazz.getName() + " suffix must be a single path token ("
+ + SUFFIX_SYNTAX + "), found: '" + suffix + "'");
+ }
+ // validate surface
+ if (api.surfaces().length == 0) {
+ throw new IllegalStateException(clazz.getName() + " must declare at least one surface");
+ }
+ EnumSet surfaces = EnumSet.copyOf(Arrays.asList(api.surfaces()));
+ if (api.access() != Access.READ && !surfaces.equals(EnumSet.of(Surface.FULL))) {
+ throw new IllegalStateException(String.format(
+ "%s is %s and may only be exposed on the FULL surface, found %s",
+ clazz.getName(), api.access(), surfaces));
+ }
+ return new Entry(suffix, clazz.asSubclass(HttpServlet.class), surfaces);
+ }
+
+ private static Class> load(String name) {
+ try {
+ return Class.forName(name);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalStateException("cannot load servlet " + name, e);
+ }
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/http/AccountPermissionUpdateServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/AccountPermissionUpdateServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/AccountPermissionUpdateServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/AccountPermissionUpdateServlet.java
index 6fe83eff8be..8b45a7bff5f 100644
--- a/framework/src/main/java/org/tron/core/services/http/AccountPermissionUpdateServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/AccountPermissionUpdateServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AccountContract.AccountPermissionUpdateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "accountpermissionupdate", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class AccountPermissionUpdateServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/BroadcastHexServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/BroadcastHexServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/BroadcastHexServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/BroadcastHexServlet.java
index 5d59df59678..42ed9d5a168 100644
--- a/framework/src/main/java/org/tron/core/services/http/BroadcastHexServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/BroadcastHexServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -10,11 +10,16 @@
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
import org.tron.core.capsule.TransactionCapsule;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "broadcasthex", access = Access.WRITE,
+ surfaces = {Surface.FULL})
public class BroadcastHexServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/BroadcastServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/BroadcastServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/BroadcastServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/BroadcastServlet.java
index 370a81eef4e..706467569e0 100644
--- a/framework/src/main/java/org/tron/core/services/http/BroadcastServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/BroadcastServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,12 +9,16 @@
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
import org.tron.core.capsule.TransactionCapsule;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "broadcasttransaction", access = Access.WRITE,
+ surfaces = {Surface.FULL})
public class BroadcastServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CancelAllUnfreezeV2Servlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CancelAllUnfreezeV2Servlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/CancelAllUnfreezeV2Servlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CancelAllUnfreezeV2Servlet.java
index a2d4571be27..3e0099c57b4 100644
--- a/framework/src/main/java/org/tron/core/services/http/CancelAllUnfreezeV2Servlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CancelAllUnfreezeV2Servlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,6 +6,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
@@ -14,6 +17,8 @@
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "cancelallunfreezev2", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CancelAllUnfreezeV2Servlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ClearABIServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ClearABIServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/ClearABIServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ClearABIServlet.java
index e0833052ce8..9543c342c23 100644
--- a/framework/src/main/java/org/tron/core/services/http/ClearABIServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ClearABIServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.SmartContractOuterClass.ClearABIContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "clearabi", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ClearABIServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateAccountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateAccountServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/CreateAccountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateAccountServlet.java
index b547fd00364..c0c23400b55 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateAccountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateAccountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AccountContract.AccountCreateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createaccount", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CreateAccountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateAssetIssueServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateAssetIssueServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/CreateAssetIssueServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateAssetIssueServlet.java
index bc1a33509e0..6d35b5c2763 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateAssetIssueServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateAssetIssueServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AssetIssueContractOuterClass.AssetIssueContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createassetissue", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CreateAssetIssueServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateCommonTransactionServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateCommonTransactionServlet.java
similarity index 88%
rename from framework/src/main/java/org/tron/core/services/http/CreateCommonTransactionServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateCommonTransactionServlet.java
index f4b5e03db82..b4f083afb38 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateCommonTransactionServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateCommonTransactionServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.GeneratedMessageV3;
import com.google.protobuf.Message;
@@ -12,13 +12,17 @@
import org.tron.core.Wallet;
import org.tron.core.actuator.TransactionFactory;
import org.tron.core.exception.ContractValidateException;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createCommonTransaction", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CreateCommonTransactionServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateShieldNullifierServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldNullifierServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/CreateShieldNullifierServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldNullifierServlet.java
index cfbc1eb48c4..31dbc0554df 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateShieldNullifierServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldNullifierServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -8,10 +8,11 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.api.GrpcAPI.NfParameters;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApiExcluded;
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("shielded note API disabled on every surface (commented out upstream)")
public class CreateShieldNullifierServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateShieldedContractParametersServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedContractParametersServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/CreateShieldedContractParametersServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedContractParametersServlet.java
index 2b5afbbd8e2..d7a706e062a 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateShieldedContractParametersServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedContractParametersServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.PrivateShieldedTRC20Parameters;
import org.tron.api.GrpcAPI.ShieldedTRC20Parameters;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createshieldedcontractparameters", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CreateShieldedContractParametersServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateShieldedContractParametersWithoutAskServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedContractParametersWithoutAskServlet.java
similarity index 81%
rename from framework/src/main/java/org/tron/core/services/http/CreateShieldedContractParametersWithoutAskServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedContractParametersWithoutAskServlet.java
index 80a8ba53bbc..f2caa0b3896 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateShieldedContractParametersWithoutAskServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedContractParametersWithoutAskServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.PrivateShieldedTRC20ParametersWithoutAsk;
import org.tron.api.GrpcAPI.ShieldedTRC20Parameters;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createshieldedcontractparameterswithoutask", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CreateShieldedContractParametersWithoutAskServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateShieldedTransactionServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedTransactionServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/CreateShieldedTransactionServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedTransactionServlet.java
index 2a90e2f704c..bd158e925c5 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateShieldedTransactionServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedTransactionServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,11 +7,12 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.PrivateParameters;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("shielded note API disabled on every surface (commented out upstream)")
public class CreateShieldedTransactionServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateShieldedTransactionWithoutSpendAuthSigServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedTransactionWithoutSpendAuthSigServlet.java
similarity index 88%
rename from framework/src/main/java/org/tron/core/services/http/CreateShieldedTransactionWithoutSpendAuthSigServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedTransactionWithoutSpendAuthSigServlet.java
index eb870bd1721..58a5e7538eb 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateShieldedTransactionWithoutSpendAuthSigServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateShieldedTransactionWithoutSpendAuthSigServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,13 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.PrivateParametersWithoutAsk;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("shielded note API disabled on every surface (commented out upstream)")
public class CreateShieldedTransactionWithoutSpendAuthSigServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateSpendAuthSigServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateSpendAuthSigServlet.java
similarity index 79%
rename from framework/src/main/java/org/tron/core/services/http/CreateSpendAuthSigServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateSpendAuthSigServlet.java
index b2b57c9cb9d..3c6ba93cf7f 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateSpendAuthSigServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateSpendAuthSigServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -8,10 +8,14 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.api.GrpcAPI.SpendAuthSigParameters;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createspendauthsig", access = Access.READ,
+ surfaces = {Surface.FULL})
public class CreateSpendAuthSigServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/CreateWitnessServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/CreateWitnessServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/CreateWitnessServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/CreateWitnessServlet.java
index 3258dbbe6b9..6a3047ae8ee 100644
--- a/framework/src/main/java/org/tron/core/services/http/CreateWitnessServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/CreateWitnessServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.WitnessContract.WitnessCreateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createwitness", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class CreateWitnessServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/DelegateResourceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/DelegateResourceServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/DelegateResourceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/DelegateResourceServlet.java
index 25641ff093c..69d5a68af45 100644
--- a/framework/src/main/java/org/tron/core/services/http/DelegateResourceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/DelegateResourceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,6 +6,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
@@ -14,6 +17,8 @@
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "delegateresource", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class DelegateResourceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/DeployContractServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/DeployContractServlet.java
similarity index 89%
rename from framework/src/main/java/org/tron/core/services/http/DeployContractServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/DeployContractServlet.java
index 45a5be961e9..8aed6f71306 100644
--- a/framework/src/main/java/org/tron/core/services/http/DeployContractServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/DeployContractServlet.java
@@ -1,7 +1,7 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
-import static org.tron.core.services.http.Util.getHexAddress;
-import static org.tron.core.services.http.Util.setTransactionPermissionId;
+import static org.tron.core.services.http.servlets.Util.getHexAddress;
+import static org.tron.core.services.http.servlets.Util.setTransactionPermissionId;
import com.google.common.base.Strings;
import com.google.protobuf.ByteString;
@@ -13,6 +13,9 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
@@ -20,9 +23,10 @@
import org.tron.protos.contract.SmartContractOuterClass.SmartContract;
import org.tron.protos.contract.SmartContractOuterClass.SmartContract.ABI;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "deploycontract", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class DeployContractServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/EstimateEnergyServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/EstimateEnergyServlet.java
similarity index 90%
rename from framework/src/main/java/org/tron/core/services/http/EstimateEnergyServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/EstimateEnergyServlet.java
index 91d673a2d08..c39dc23b2ec 100644
--- a/framework/src/main/java/org/tron/core/services/http/EstimateEnergyServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/EstimateEnergyServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import io.netty.util.internal.StringUtil;
@@ -16,12 +16,17 @@
import org.tron.core.Wallet;
import org.tron.core.capsule.TransactionCapsule;
import org.tron.core.exception.ContractValidateException;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol;
import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "estimateenergy", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class EstimateEnergyServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ExchangeCreateServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeCreateServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/ExchangeCreateServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ExchangeCreateServlet.java
index 84707c5586f..6ef1b773766 100644
--- a/framework/src/main/java/org/tron/core/services/http/ExchangeCreateServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeCreateServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ExchangeContract.ExchangeCreateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "exchangecreate", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ExchangeCreateServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ExchangeInjectServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeInjectServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/ExchangeInjectServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ExchangeInjectServlet.java
index b4b2b31221e..30d6f0f0def 100644
--- a/framework/src/main/java/org/tron/core/services/http/ExchangeInjectServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeInjectServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ExchangeContract.ExchangeInjectContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "exchangeinject", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ExchangeInjectServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ExchangeTransactionServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeTransactionServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/ExchangeTransactionServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ExchangeTransactionServlet.java
index a143cd45c70..073b37b50ad 100644
--- a/framework/src/main/java/org/tron/core/services/http/ExchangeTransactionServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeTransactionServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ExchangeContract.ExchangeTransactionContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "exchangetransaction", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ExchangeTransactionServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ExchangeWithdrawServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeWithdrawServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/ExchangeWithdrawServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ExchangeWithdrawServlet.java
index 159f23abb22..f778ee52d1f 100644
--- a/framework/src/main/java/org/tron/core/services/http/ExchangeWithdrawServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ExchangeWithdrawServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ExchangeContract.ExchangeWithdrawContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "exchangewithdraw", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ExchangeWithdrawServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/FreezeBalanceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/FreezeBalanceServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/FreezeBalanceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/FreezeBalanceServlet.java
index 2990755b928..b42dc6c1302 100644
--- a/framework/src/main/java/org/tron/core/services/http/FreezeBalanceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/FreezeBalanceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.BalanceContract.FreezeBalanceContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "freezebalance", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class FreezeBalanceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/FreezeBalanceV2Servlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/FreezeBalanceV2Servlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/FreezeBalanceV2Servlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/FreezeBalanceV2Servlet.java
index 95d20233898..567429c32c2 100644
--- a/framework/src/main/java/org/tron/core/services/http/FreezeBalanceV2Servlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/FreezeBalanceV2Servlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,6 +6,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
@@ -13,6 +16,8 @@
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "freezebalancev2", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class FreezeBalanceV2Servlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAccountBalanceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountBalanceServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetAccountBalanceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAccountBalanceServlet.java
index db48fc11340..52007015aa8 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAccountBalanceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountBalanceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,11 +6,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.contract.BalanceContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getaccountbalance", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetAccountBalanceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAccountByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountByIdServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetAccountByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAccountByIdServlet.java
index 96243327c70..aa7b3b5839e 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAccountByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -7,12 +7,16 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Account;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getaccountbyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAccountByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAccountNetServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountNetServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetAccountNetServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAccountNetServlet.java
index 121a23c61ab..68507b1a6d3 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAccountNetServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountNetServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -9,11 +9,15 @@
import org.tron.api.GrpcAPI.AccountNetMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Account;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getaccountnet", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetAccountNetServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAccountResourceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountResourceServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/GetAccountResourceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAccountResourceServlet.java
index 0e26a526a12..a50c331664b 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAccountResourceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountResourceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -9,10 +9,15 @@
import org.tron.api.GrpcAPI.AccountResourceMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getaccountresource", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetAccountResourceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAccountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetAccountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAccountServlet.java
index ee5bbdf3d3a..00a8e78f106 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAccountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAccountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,12 +6,16 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Account;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getaccount", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAccountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAkFromAskServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAkFromAskServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetAkFromAskServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAkFromAskServlet.java
index c31692413a9..e57062241e1 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAkFromAskServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAkFromAskServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getakfromask", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetAkFromAskServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueByAccountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByAccountServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetAssetIssueByAccountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByAccountServlet.java
index e9e85af2e81..c781d8755c5 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueByAccountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByAccountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -9,11 +9,15 @@
import org.tron.api.GrpcAPI.AssetIssueList;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Account;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getassetissuebyaccount", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetAssetIssueByAccountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByIdServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetAssetIssueByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByIdServlet.java
index b705c4ed0cd..85b712a3277 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,12 +6,16 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.contract.AssetIssueContractOuterClass.AssetIssueContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getassetissuebyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAssetIssueByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueByNameServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByNameServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetAssetIssueByNameServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByNameServlet.java
index da6a7243f41..7d51cf31f36 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueByNameServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueByNameServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -8,13 +8,17 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.contract.AssetIssueContractOuterClass.AssetIssueContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getassetissuebyname", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAssetIssueByNameServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueListByNameServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueListByNameServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/GetAssetIssueListByNameServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueListByNameServlet.java
index 2c203ed983e..0c61732a51e 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueListByNameServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueListByNameServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,12 +10,16 @@
import org.tron.api.GrpcAPI.AssetIssueList;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getassetissuelistbyname", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAssetIssueListByNameServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueListServlet.java
similarity index 75%
rename from framework/src/main/java/org/tron/core/services/http/GetAssetIssueListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueListServlet.java
index 3968554a671..49dea552c11 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAssetIssueListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAssetIssueListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.AssetIssueList;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getassetissuelist", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAssetIssueListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetAvailableUnfreezeCountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetAvailableUnfreezeCountServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetAvailableUnfreezeCountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetAvailableUnfreezeCountServlet.java
index 51f78fc4390..b1f420f2f6b 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetAvailableUnfreezeCountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetAvailableUnfreezeCountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,9 +10,14 @@
import org.tron.api.GrpcAPI;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getavailableunfreezecount", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetAvailableUnfreezeCountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBandwidthPricesServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBandwidthPricesServlet.java
similarity index 73%
rename from framework/src/main/java/org/tron/core/services/http/GetBandwidthPricesServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBandwidthPricesServlet.java
index 09d51cc8635..dab3de8f397 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBandwidthPricesServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBandwidthPricesServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.PricesResponseMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getbandwidthprices", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBandwidthPricesServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockBalanceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockBalanceServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetBlockBalanceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBlockBalanceServlet.java
index 5217b37907a..3fa5343eecc 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBlockBalanceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockBalanceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,11 +6,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.contract.BalanceContract.BlockBalanceTrace;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getblockbalance", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetBlockBalanceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByIdServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetBlockByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByIdServlet.java
index f7e6ac0ff7d..c069cec104f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBlockByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,11 +10,15 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Block;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getblockbyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBlockByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockByLatestNumServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByLatestNumServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetBlockByLatestNumServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByLatestNumServlet.java
index 1f2eabdd8dc..7a723444a8f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBlockByLatestNumServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByLatestNumServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -9,10 +9,14 @@
import org.tron.api.GrpcAPI.BlockList;
import org.tron.api.GrpcAPI.NumberMessage;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getblockbylatestnum", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBlockByLatestNumServlet extends RateLimiterServlet {
private static final long BLOCK_LIMIT_NUM = 100;
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockByLimitNextServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByLimitNextServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/GetBlockByLimitNextServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByLimitNextServlet.java
index 3e6700a1fae..2b7e5555fe7 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBlockByLimitNextServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByLimitNextServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -9,10 +9,14 @@
import org.tron.api.GrpcAPI.BlockLimit;
import org.tron.api.GrpcAPI.BlockList;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getblockbylimitnext", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBlockByLimitNextServlet extends RateLimiterServlet {
private static final long BLOCK_LIMIT_NUM = 100;
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockByNumServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByNumServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetBlockByNumServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByNumServlet.java
index 800b421ace0..8530a3e7227 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBlockByNumServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockByNumServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -8,11 +8,15 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.NumberMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Block;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getblockbynum", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBlockByNumServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockServlet.java
similarity index 89%
rename from framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBlockServlet.java
index a953ae11802..32bcf3a3122 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBlockServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.common.base.Strings;
import java.io.IOException;
@@ -10,13 +10,17 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.BlockReq;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Block;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getblock", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBlockServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBrokerageServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBrokerageServlet.java
index b735878d1e1..a5d89967da6 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBrokerageServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.db.Manager;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getBrokerage", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBrokerageServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetBurnTrxServlet.java
similarity index 74%
rename from framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetBurnTrxServlet.java
index 3a19825ba75..8d1a9504cab 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetBurnTrxServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,10 +6,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.db.Manager;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getburntrx", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetBurnTrxServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetCanDelegatedMaxSizeServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetCanDelegatedMaxSizeServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/GetCanDelegatedMaxSizeServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetCanDelegatedMaxSizeServlet.java
index 924306a6a3f..ab7a8836429 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetCanDelegatedMaxSizeServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetCanDelegatedMaxSizeServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,9 +10,14 @@
import org.tron.api.GrpcAPI;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getcandelegatedmaxsize", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetCanDelegatedMaxSizeServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetCanWithdrawUnfreezeAmountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetCanWithdrawUnfreezeAmountServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/GetCanWithdrawUnfreezeAmountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetCanWithdrawUnfreezeAmountServlet.java
index 435cca9e5fb..3b14599d05e 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetCanWithdrawUnfreezeAmountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetCanWithdrawUnfreezeAmountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,9 +10,14 @@
import org.tron.api.GrpcAPI;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getcanwithdrawunfreezeamount", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetCanWithdrawUnfreezeAmountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetChainParametersServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetChainParametersServlet.java
similarity index 74%
rename from framework/src/main/java/org/tron/core/services/http/GetChainParametersServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetChainParametersServlet.java
index 18c96f4d64e..7ea45f751ca 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetChainParametersServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetChainParametersServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,10 +6,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getchainparameters", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetChainParametersServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetContractInfoServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetContractInfoServlet.java
similarity index 90%
rename from framework/src/main/java/org/tron/core/services/http/GetContractInfoServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetContractInfoServlet.java
index 6a1549bd398..bada0ae6007 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetContractInfoServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetContractInfoServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,12 +7,16 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.contract.SmartContractOuterClass.SmartContractDataWrapper;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getcontractinfo", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetContractInfoServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetContractServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetContractServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/GetContractServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetContractServlet.java
index 3565d3121f6..8bb2add9f01 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetContractServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetContractServlet.java
@@ -1,6 +1,6 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
-import static org.tron.core.services.http.PostParams.S_VALUE;
+import static org.tron.core.services.http.servlets.PostParams.S_VALUE;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,12 +9,16 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.contract.SmartContractOuterClass.SmartContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getcontract", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetContractServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexServlet.java
index e022c523548..744df1d63d0 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,12 +10,16 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.DelegatedResourceAccountIndex;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getdelegatedresourceaccountindex", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetDelegatedResourceAccountIndexServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexV2Servlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexV2Servlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexV2Servlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexV2Servlet.java
index 7ff517256f9..5ec1c7d738d 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexV2Servlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexV2Servlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -10,12 +10,16 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.DelegatedResourceAccountIndex;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getdelegatedresourceaccountindexv2", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetDelegatedResourceAccountIndexV2Servlet extends RateLimiterServlet {
private static final String VALUE_FIELD_NAME = "value";
diff --git a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceServlet.java
index 5787aba3c93..aa5f11604e6 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -12,10 +12,14 @@
import org.tron.api.GrpcAPI.DelegatedResourceMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getdelegatedresource", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetDelegatedResourceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceV2Servlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceV2Servlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceV2Servlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceV2Servlet.java
index 632bb4f8033..a7daf26587f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetDelegatedResourceV2Servlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetDelegatedResourceV2Servlet.java
@@ -1,8 +1,7 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@@ -12,11 +11,14 @@
import org.tron.api.GrpcAPI.DelegatedResourceMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
-
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getdelegatedresourcev2", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetDelegatedResourceV2Servlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetDiversifierServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetDiversifierServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetDiversifierServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetDiversifierServlet.java
index e37a1d6a785..6dc1b38ed80 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetDiversifierServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetDiversifierServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -8,10 +8,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getdiversifier", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetDiversifierServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetEnergyPricesServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetEnergyPricesServlet.java
similarity index 73%
rename from framework/src/main/java/org/tron/core/services/http/GetEnergyPricesServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetEnergyPricesServlet.java
index b9b6ba0d893..47823238b7f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetEnergyPricesServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetEnergyPricesServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.PricesResponseMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getenergyprices", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetEnergyPricesServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetExchangeByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetExchangeByIdServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetExchangeByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetExchangeByIdServlet.java
index 1e87a4f188f..abd0007d640 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetExchangeByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetExchangeByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -9,11 +9,15 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getexchangebyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetExchangeByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetExpandedSpendingKeyServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetExpandedSpendingKeyServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetExpandedSpendingKeyServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetExpandedSpendingKeyServlet.java
index a71f5db56e1..2cb50d82fdf 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetExpandedSpendingKeyServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetExpandedSpendingKeyServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.util.stream.Collectors;
@@ -11,9 +11,14 @@
import org.tron.api.GrpcAPI.ExpandedSpendingKeyMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getexpandedspendingkey", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetExpandedSpendingKeyServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetIncomingViewingKeyServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetIncomingViewingKeyServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetIncomingViewingKeyServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetIncomingViewingKeyServlet.java
index 4eb3a01693e..f81a151a7ba 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetIncomingViewingKeyServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetIncomingViewingKeyServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -8,11 +8,15 @@
import org.tron.api.GrpcAPI;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getincomingviewingkey", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetIncomingViewingKeyServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMarketOrderByAccountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderByAccountServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/GetMarketOrderByAccountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderByAccountServlet.java
index 1f011bb88ce..ae2be9d672f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMarketOrderByAccountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderByAccountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -9,13 +9,17 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.MarketOrderList;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getmarketorderbyaccount", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetMarketOrderByAccountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMarketOrderByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderByIdServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/GetMarketOrderByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderByIdServlet.java
index bdb8a4b6d3c..df4a39a8497 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMarketOrderByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.util.stream.Collectors;
@@ -10,11 +10,15 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.MarketOrder;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getmarketorderbyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetMarketOrderByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMarketOrderListByPairServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderListByPairServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetMarketOrderListByPairServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderListByPairServlet.java
index 963ea880033..cef376dc603 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMarketOrderListByPairServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketOrderListByPairServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -8,12 +8,16 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.MarketOrderList;
import org.tron.protos.Protocol.MarketOrderPair;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getmarketorderlistbypair", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetMarketOrderListByPairServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMarketPairListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketPairListServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetMarketPairListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMarketPairListServlet.java
index 6cb9c5d868f..1bea1cc23f7 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMarketPairListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketPairListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,11 +7,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.MarketOrderPairList;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getmarketpairlist", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetMarketPairListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMarketPriceByPairServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketPriceByPairServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetMarketPriceByPairServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMarketPriceByPairServlet.java
index b6d31e10936..74ee421384f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMarketPriceByPairServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMarketPriceByPairServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -8,12 +8,16 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.MarketOrderPair;
import org.tron.protos.Protocol.MarketPriceList;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getmarketpricebypair", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetMarketPriceByPairServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMemoFeePricesServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMemoFeePricesServlet.java
similarity index 77%
rename from framework/src/main/java/org/tron/core/services/http/GetMemoFeePricesServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMemoFeePricesServlet.java
index 0da52bf9d35..64b2feb4532 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMemoFeePricesServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMemoFeePricesServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.PricesResponseMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getmemofee", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetMemoFeePricesServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetMerkleTreeVoucherInfoServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetMerkleTreeVoucherInfoServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/GetMerkleTreeVoucherInfoServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetMerkleTreeVoucherInfoServlet.java
index 5c4d8895c50..8a6fc6177b6 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetMerkleTreeVoucherInfoServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetMerkleTreeVoucherInfoServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,12 +6,13 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.protos.contract.ShieldContract.IncrementalMerkleVoucherInfo;
import org.tron.protos.contract.ShieldContract.OutputPointInfo;
-
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("sapling shielded note-scan API, disabled on every surface")
public class GetMerkleTreeVoucherInfoServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetNewShieldedAddressServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetNewShieldedAddressServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetNewShieldedAddressServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetNewShieldedAddressServlet.java
index 853268b7c8c..1bbae9bcad2 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetNewShieldedAddressServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetNewShieldedAddressServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.ShieldedAddressInfo;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getnewshieldedaddress", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetNewShieldedAddressServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetNextMaintenanceTimeServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetNextMaintenanceTimeServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/GetNextMaintenanceTimeServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetNextMaintenanceTimeServlet.java
index c93244f5782..15f658771ef 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetNextMaintenanceTimeServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetNextMaintenanceTimeServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.NumberMessage;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getnextmaintenancetime", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetNextMaintenanceTimeServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetNkFromNskServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetNkFromNskServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetNkFromNskServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetNkFromNskServlet.java
index 6ec2f525e1b..cb9eecdd314 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetNkFromNskServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetNkFromNskServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getnkfromnsk", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetNkFromNskServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetNodeInfoServlet.java
similarity index 73%
rename from framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetNodeInfoServlet.java
index c8b4aa39785..7a08bbab2ec 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetNodeInfoServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,11 +7,15 @@
import org.springframework.stereotype.Component;
import org.tron.common.entity.NodeInfo;
import org.tron.core.services.NodeInfoService;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getnodeinfo", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetNodeInfoServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetNowBlockServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetNowBlockServlet.java
similarity index 75%
rename from framework/src/main/java/org/tron/core/services/http/GetNowBlockServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetNowBlockServlet.java
index 56e01d557f5..bbbaca633b4 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetNowBlockServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetNowBlockServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,10 +6,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Block;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getnowblock", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetNowBlockServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetPaginatedAssetIssueListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedAssetIssueListServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetPaginatedAssetIssueListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedAssetIssueListServlet.java
index 0246979e279..00af72a8b7c 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetPaginatedAssetIssueListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedAssetIssueListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.AssetIssueList;
import org.tron.api.GrpcAPI.PaginatedMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getpaginatedassetissuelist", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetPaginatedAssetIssueListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetPaginatedExchangeListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedExchangeListServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetPaginatedExchangeListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedExchangeListServlet.java
index 28018497952..f10f13bf91e 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetPaginatedExchangeListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedExchangeListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.ExchangeList;
import org.tron.api.GrpcAPI.PaginatedMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getpaginatedexchangelist", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetPaginatedExchangeListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetPaginatedNowWitnessListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedNowWitnessListServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/GetPaginatedNowWitnessListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedNowWitnessListServlet.java
index e53ab6610ec..00d9b45eb8b 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetPaginatedNowWitnessListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedNowWitnessListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
@@ -9,10 +9,15 @@
import org.tron.api.GrpcAPI;
import org.tron.core.Wallet;
import org.tron.core.exception.MaintenanceUnavailableException;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
// Get the paged list of witnesses info with realtime vote counts
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getpaginatednowwitnesslist", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetPaginatedNowWitnessListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetPaginatedProposalListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedProposalListServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetPaginatedProposalListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedProposalListServlet.java
index 11b2c57ff48..8808e67d3c1 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetPaginatedProposalListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetPaginatedProposalListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import java.util.stream.Collectors;
@@ -10,9 +10,14 @@
import org.tron.api.GrpcAPI.PaginatedMessage;
import org.tron.api.GrpcAPI.ProposalList;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getpaginatedproposallist", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetPaginatedProposalListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetPendingSizeServlet.java
similarity index 77%
rename from framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetPendingSizeServlet.java
index 41a47c49001..1742e32ad72 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetPendingSizeServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,10 +6,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.db.Manager;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getpendingsize", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetPendingSizeServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetProposalByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetProposalByIdServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetProposalByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetProposalByIdServlet.java
index f57bc8b1b3f..2f8d9573e3b 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetProposalByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetProposalByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -9,12 +9,16 @@
import org.springframework.stereotype.Component;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Proposal;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getproposalbyid", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetProposalByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetRcmServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetRcmServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/GetRcmServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetRcmServlet.java
index 091867455f5..8fe6276c931 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetRcmServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetRcmServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getrcm", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetRcmServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetRewardServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetRewardServlet.java
index 780bab6ac94..e3ddccbcb9e 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetRewardServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.db.Manager;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getReward", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetRewardServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetShieldTransactionHashServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetShieldTransactionHashServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetShieldTransactionHashServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetShieldTransactionHashServlet.java
index 64f0c7e7b28..0e5070c168f 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetShieldTransactionHashServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetShieldTransactionHashServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -8,11 +8,12 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("shielded note API disabled on every surface (commented out upstream)")
public class GetShieldTransactionHashServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetSpendingKeyServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetSpendingKeyServlet.java
similarity index 82%
rename from framework/src/main/java/org/tron/core/services/http/GetSpendingKeyServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetSpendingKeyServlet.java
index 23c274566ca..3ffa2122db0 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetSpendingKeyServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetSpendingKeyServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -8,9 +8,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getspendingkey", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetSpendingKeyServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionApprovedListServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionApprovedListServlet.java
similarity index 81%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionApprovedListServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionApprovedListServlet.java
index d4d123b7efe..252889cf6e2 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionApprovedListServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionApprovedListServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,11 +7,15 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.TransactionApprovedList;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getapprovedlist", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetTransactionApprovedListServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionByIdServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionByIdServlet.java
index 49343da9070..260029bc620 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.io.IOException;
@@ -11,11 +11,15 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactionbyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetTransactionByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionCountByBlockNumServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionCountByBlockNumServlet.java
similarity index 81%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionCountByBlockNumServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionCountByBlockNumServlet.java
index 81c1ece73fb..a3d56ec3f7c 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionCountByBlockNumServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionCountByBlockNumServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import java.util.stream.Collectors;
@@ -9,10 +9,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.NumberMessage;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactioncountbyblocknum", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetTransactionCountByBlockNumServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionFromPendingServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionFromPendingServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionFromPendingServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionFromPendingServlet.java
index 276eff62af8..d7fd07522c1 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionFromPendingServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionFromPendingServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,10 +9,14 @@
import org.tron.common.utils.ByteArray;
import org.tron.core.capsule.TransactionCapsule;
import org.tron.core.db.Manager;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactionfrompending", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetTransactionFromPendingServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionInfoByBlockNumServlet.java
similarity index 88%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionInfoByBlockNumServlet.java
index 25998c909b6..6472ff737cb 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionInfoByBlockNumServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
@@ -9,6 +9,9 @@
import org.tron.api.GrpcAPI.NumberMessage;
import org.tron.api.GrpcAPI.TransactionInfoList;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONArray;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.TransactionInfo;
@@ -16,6 +19,8 @@
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactioninfobyblocknum", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetTransactionInfoByBlockNumServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionInfoByIdServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionInfoByIdServlet.java
index 580cb4a5b66..52be3ef3f56 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionInfoByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import java.util.List;
@@ -11,12 +11,16 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.TransactionInfo;
import org.tron.protos.Protocol.TransactionInfo.Log;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactioninfobyid", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class GetTransactionInfoByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionListFromPendingServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionListFromPendingServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionListFromPendingServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionListFromPendingServlet.java
index 0a70b22eebf..93601cf1b76 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionListFromPendingServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionListFromPendingServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
@@ -8,10 +8,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.TransactionIdList;
import org.tron.core.db.Manager;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactionlistfrompending", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetTransactionListFromPendingServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionReceiptByIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionReceiptByIdServlet.java
similarity index 86%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionReceiptByIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionReceiptByIdServlet.java
index bdd46d85a88..3bf2f9eb1a3 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionReceiptByIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionReceiptByIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.servlet.http.HttpServletRequest;
@@ -9,11 +9,15 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.protos.Protocol.TransactionInfo;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettransactionreceiptbyid", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetTransactionReceiptByIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionSignWeightServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionSignWeightServlet.java
similarity index 81%
rename from framework/src/main/java/org/tron/core/services/http/GetTransactionSignWeightServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionSignWeightServlet.java
index bbd819d4e6d..6ae5373f665 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTransactionSignWeightServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTransactionSignWeightServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,12 +6,16 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.TransactionSignWeight;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.core.utils.TransactionUtil;
import org.tron.protos.Protocol.Transaction;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getsignweight", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetTransactionSignWeightServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetTriggerInputForShieldedTRC20ContractServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetTriggerInputForShieldedTRC20ContractServlet.java
similarity index 80%
rename from framework/src/main/java/org/tron/core/services/http/GetTriggerInputForShieldedTRC20ContractServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetTriggerInputForShieldedTRC20ContractServlet.java
index 3a0bc4ed282..5bedddb2ddd 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetTriggerInputForShieldedTRC20ContractServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetTriggerInputForShieldedTRC20ContractServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.BytesMessage;
import org.tron.api.GrpcAPI.ShieldedTRC20TriggerContractParameters;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "gettriggerinputforshieldedtrc20contract", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetTriggerInputForShieldedTRC20ContractServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/GetZenPaymentAddressServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/GetZenPaymentAddressServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/GetZenPaymentAddressServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/GetZenPaymentAddressServlet.java
index c4f81ea7f87..b750a86f094 100644
--- a/framework/src/main/java/org/tron/core/services/http/GetZenPaymentAddressServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/GetZenPaymentAddressServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -9,13 +9,17 @@
import org.tron.api.GrpcAPI;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.core.zen.address.DiversifierT;
import org.tron.core.zen.address.IncomingViewingKey;
import org.tron.json.JSONObject;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "getzenpaymentaddress", access = Access.READ,
+ surfaces = {Surface.FULL})
public class GetZenPaymentAddressServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/IsShieldedTRC20ContractNoteSpentServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/IsShieldedTRC20ContractNoteSpentServlet.java
similarity index 77%
rename from framework/src/main/java/org/tron/core/services/http/IsShieldedTRC20ContractNoteSpentServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/IsShieldedTRC20ContractNoteSpentServlet.java
index 9e01ec8fda1..ff68577f4c2 100644
--- a/framework/src/main/java/org/tron/core/services/http/IsShieldedTRC20ContractNoteSpentServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/IsShieldedTRC20ContractNoteSpentServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI;
import org.tron.api.GrpcAPI.NfTRC20Parameters;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "isshieldedtrc20contractnotespent", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class IsShieldedTRC20ContractNoteSpentServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/IsSpendServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/IsSpendServlet.java
similarity index 87%
rename from framework/src/main/java/org/tron/core/services/http/IsSpendServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/IsSpendServlet.java
index 46120a6611d..e3aee4f902e 100644
--- a/framework/src/main/java/org/tron/core/services/http/IsSpendServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/IsSpendServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -9,10 +9,11 @@
import org.tron.api.GrpcAPI.NoteParameters;
import org.tron.api.GrpcAPI.SpendResult;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApiExcluded;
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("sapling shielded note-scan API, disabled on every surface")
public class IsSpendServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/JsonFormat.java b/framework/src/main/java/org/tron/core/services/http/servlets/JsonFormat.java
similarity index 99%
rename from framework/src/main/java/org/tron/core/services/http/JsonFormat.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/JsonFormat.java
index 2fa7d9fbb42..0561b9de564 100644
--- a/framework/src/main/java/org/tron/core/services/http/JsonFormat.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/JsonFormat.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
/*
Copyright (c) 2009, Orbitz World Wide
@@ -58,6 +58,7 @@ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
import org.tron.common.utils.Commons;
import org.tron.common.utils.StringUtil;
import org.tron.core.Constant;
+import org.tron.core.services.http.HttpSelfFormatFieldName;
import org.tron.protos.contract.BalanceContract;
/**
diff --git a/framework/src/main/java/org/tron/core/services/http/ListExchangesServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ListExchangesServlet.java
similarity index 71%
rename from framework/src/main/java/org/tron/core/services/http/ListExchangesServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ListExchangesServlet.java
index ff349ecefab..3f26bbbc905 100644
--- a/framework/src/main/java/org/tron/core/services/http/ListExchangesServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ListExchangesServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,10 +6,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "listexchanges", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class ListExchangesServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ListNodesServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ListNodesServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/ListNodesServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ListNodesServlet.java
index 6b7b2b251a8..d61df490b93 100644
--- a/framework/src/main/java/org/tron/core/services/http/ListNodesServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ListNodesServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.NodeList;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "listnodes", access = Access.READ,
+ surfaces = {Surface.FULL})
public class ListNodesServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ListProposalsServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ListProposalsServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/ListProposalsServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ListProposalsServlet.java
index a3b26d4afc6..cc3b9eae312 100644
--- a/framework/src/main/java/org/tron/core/services/http/ListProposalsServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ListProposalsServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,9 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.ProposalList;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "listproposals", access = Access.READ,
+ surfaces = {Surface.FULL})
public class ListProposalsServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ListWitnessesServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ListWitnessesServlet.java
similarity index 75%
rename from framework/src/main/java/org/tron/core/services/http/ListWitnessesServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ListWitnessesServlet.java
index 5274d07992b..a789e10d0cd 100644
--- a/framework/src/main/java/org/tron/core/services/http/ListWitnessesServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ListWitnessesServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.WitnessList;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "listwitnesses", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class ListWitnessesServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/MarketCancelOrderServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/MarketCancelOrderServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/MarketCancelOrderServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/MarketCancelOrderServlet.java
index a9e27bfb8e3..b1ad8509a9b 100644
--- a/framework/src/main/java/org/tron/core/services/http/MarketCancelOrderServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/MarketCancelOrderServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.MarketContract.MarketCancelOrderContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "marketcancelorder", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class MarketCancelOrderServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/MarketSellAssetServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/MarketSellAssetServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/MarketSellAssetServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/MarketSellAssetServlet.java
index 12bb7e3e078..b34f3e8a4c6 100644
--- a/framework/src/main/java/org/tron/core/services/http/MarketSellAssetServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/MarketSellAssetServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.MarketContract.MarketSellAssetContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "marketsellasset", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class MarketSellAssetServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/MetricsServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/MetricsServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/MetricsServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/MetricsServlet.java
index aaaebb22146..d7a66488964 100644
--- a/framework/src/main/java/org/tron/core/services/http/MetricsServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/MetricsServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,12 @@
import org.springframework.stereotype.Component;
import org.tron.core.metrics.MetricsApiService;
import org.tron.core.metrics.MetricsInfo;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.json.JSON;
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("root-mounted at /monitor/getstatsinfo, not a wallet endpoint")
public class MetricsServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ParticipateAssetIssueServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ParticipateAssetIssueServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/ParticipateAssetIssueServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ParticipateAssetIssueServlet.java
index ec5e3d956f6..b79d9ab4b88 100644
--- a/framework/src/main/java/org/tron/core/services/http/ParticipateAssetIssueServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ParticipateAssetIssueServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AssetIssueContractOuterClass.ParticipateAssetIssueContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "participateassetissue", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ParticipateAssetIssueServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/PostParams.java b/framework/src/main/java/org/tron/core/services/http/servlets/PostParams.java
similarity index 88%
rename from framework/src/main/java/org/tron/core/services/http/PostParams.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/PostParams.java
index 7dcb0be6ae3..c9611effda8 100644
--- a/framework/src/main/java/org/tron/core/services/http/PostParams.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/PostParams.java
@@ -1,7 +1,7 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.apache.http.entity.ContentType.APPLICATION_FORM_URLENCODED;
-import static org.tron.core.services.http.Util.getJsonString;
+import static org.tron.core.services.http.servlets.Util.getJsonString;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
diff --git a/framework/src/main/java/org/tron/core/services/http/ProposalApproveServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ProposalApproveServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/ProposalApproveServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ProposalApproveServlet.java
index dfeeb1acde5..39145400f8e 100644
--- a/framework/src/main/java/org/tron/core/services/http/ProposalApproveServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ProposalApproveServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ProposalContract.ProposalApproveContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "proposalapprove", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ProposalApproveServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ProposalCreateServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ProposalCreateServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/ProposalCreateServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ProposalCreateServlet.java
index f1055e00396..86a2ca4d4a4 100644
--- a/framework/src/main/java/org/tron/core/services/http/ProposalCreateServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ProposalCreateServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ProposalContract.ProposalCreateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "proposalcreate", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ProposalCreateServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ProposalDeleteServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ProposalDeleteServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/ProposalDeleteServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ProposalDeleteServlet.java
index 8e7163f490b..2793fa47d59 100644
--- a/framework/src/main/java/org/tron/core/services/http/ProposalDeleteServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ProposalDeleteServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.ProposalContract.ProposalDeleteContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "proposaldelete", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class ProposalDeleteServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/RateLimiterServlet.java
similarity index 99%
rename from framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/RateLimiterServlet.java
index 6f67aba3020..c96abc5d693 100644
--- a/framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/RateLimiterServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.common.base.Strings;
import io.prometheus.client.Histogram;
diff --git a/framework/src/main/java/org/tron/core/services/http/ScanAndMarkNoteByIvkServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ScanAndMarkNoteByIvkServlet.java
similarity index 94%
rename from framework/src/main/java/org/tron/core/services/http/ScanAndMarkNoteByIvkServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ScanAndMarkNoteByIvkServlet.java
index b91fd394442..567d35e6f6e 100644
--- a/framework/src/main/java/org/tron/core/services/http/ScanAndMarkNoteByIvkServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ScanAndMarkNoteByIvkServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,11 +9,13 @@
import org.tron.api.GrpcAPI.IvkDecryptAndMarkParameters;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.json.JSONArray;
import org.tron.json.JSONObject;
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("sapling shielded note-scan API, disabled on every surface")
public class ScanAndMarkNoteByIvkServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ScanNoteByIvkServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ScanNoteByIvkServlet.java
similarity index 93%
rename from framework/src/main/java/org/tron/core/services/http/ScanNoteByIvkServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ScanNoteByIvkServlet.java
index c8e25a2fc37..e9e8cb19ead 100644
--- a/framework/src/main/java/org/tron/core/services/http/ScanNoteByIvkServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ScanNoteByIvkServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -10,11 +10,13 @@
import org.tron.api.GrpcAPI.IvkDecryptParameters;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
import org.tron.json.JSONArray;
import org.tron.json.JSONObject;
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("sapling shielded note-scan API, disabled on every surface")
public class ScanNoteByIvkServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ScanNoteByOvkServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ScanNoteByOvkServlet.java
similarity index 91%
rename from framework/src/main/java/org/tron/core/services/http/ScanNoteByOvkServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ScanNoteByOvkServlet.java
index 1cf6363ba98..bd7491c64c9 100644
--- a/framework/src/main/java/org/tron/core/services/http/ScanNoteByOvkServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ScanNoteByOvkServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -10,9 +10,11 @@
import org.tron.api.GrpcAPI.OvkDecryptParameters;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApiExcluded;
@Component
@Slf4j(topic = "API")
+@HttpApiExcluded("sapling shielded note-scan API, disabled on every surface")
public class ScanNoteByOvkServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ScanShieldedTRC20NotesByIvkServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesByIvkServlet.java
similarity index 91%
rename from framework/src/main/java/org/tron/core/services/http/ScanShieldedTRC20NotesByIvkServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesByIvkServlet.java
index d9da2453c9b..fbc82f20238 100644
--- a/framework/src/main/java/org/tron/core/services/http/ScanShieldedTRC20NotesByIvkServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesByIvkServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,11 +9,16 @@
import org.tron.api.GrpcAPI.IvkDecryptTRC20Parameters;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONArray;
import org.tron.json.JSONObject;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "scanshieldedtrc20notesbyivk", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class ScanShieldedTRC20NotesByIvkServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/ScanShieldedTRC20NotesByOvkServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesByOvkServlet.java
similarity index 89%
rename from framework/src/main/java/org/tron/core/services/http/ScanShieldedTRC20NotesByOvkServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesByOvkServlet.java
index 33893347d8f..14d02f7345c 100644
--- a/framework/src/main/java/org/tron/core/services/http/ScanShieldedTRC20NotesByOvkServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesByOvkServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -9,9 +9,14 @@
import org.tron.api.GrpcAPI.OvkDecryptTRC20Parameters;
import org.tron.common.utils.ByteArray;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "scanshieldedtrc20notesbyovk", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class ScanShieldedTRC20NotesByOvkServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/SetAccountIdServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/SetAccountIdServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/SetAccountIdServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/SetAccountIdServlet.java
index 2f5b9fd9cd4..4486c0b6fc5 100644
--- a/framework/src/main/java/org/tron/core/services/http/SetAccountIdServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/SetAccountIdServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,13 +7,17 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol;
import org.tron.protos.contract.AccountContract.SetAccountIdContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "setaccountid", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class SetAccountIdServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/TotalTransactionServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/TotalTransactionServlet.java
similarity index 78%
rename from framework/src/main/java/org/tron/core/services/http/TotalTransactionServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/TotalTransactionServlet.java
index 6af40232e8f..c7171996fb8 100644
--- a/framework/src/main/java/org/tron/core/services/http/TotalTransactionServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/TotalTransactionServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -7,10 +7,14 @@
import org.springframework.stereotype.Component;
import org.tron.api.GrpcAPI.NumberMessage;
import org.tron.core.Wallet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "totaltransaction", access = Access.READ,
+ surfaces = {Surface.FULL})
public class TotalTransactionServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/TransferAssetServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/TransferAssetServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/TransferAssetServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/TransferAssetServlet.java
index c8becdb9fde..f20cc4f713a 100644
--- a/framework/src/main/java/org/tron/core/services/http/TransferAssetServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/TransferAssetServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AssetIssueContractOuterClass.TransferAssetContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "transferasset", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class TransferAssetServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/TransferServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/TransferServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/TransferServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/TransferServlet.java
index 11b2179800a..fc67cf24d91 100644
--- a/framework/src/main/java/org/tron/core/services/http/TransferServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/TransferServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.BalanceContract.TransferContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "createtransaction", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class TransferServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/TriggerConstantContractServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/TriggerConstantContractServlet.java
similarity index 90%
rename from framework/src/main/java/org/tron/core/services/http/TriggerConstantContractServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/TriggerConstantContractServlet.java
index 634165911d1..79fd4fd4e8e 100644
--- a/framework/src/main/java/org/tron/core/services/http/TriggerConstantContractServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/TriggerConstantContractServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import io.netty.util.internal.StringUtil;
@@ -16,14 +16,18 @@
import org.tron.core.Wallet;
import org.tron.core.capsule.TransactionCapsule;
import org.tron.core.exception.ContractValidateException;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "triggerconstantcontract", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY, Surface.PBFT, Surface.SOLIDITY_NODE})
public class TriggerConstantContractServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/TriggerSmartContractServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/TriggerSmartContractServlet.java
similarity index 93%
rename from framework/src/main/java/org/tron/core/services/http/TriggerSmartContractServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/TriggerSmartContractServlet.java
index bc4d9dc5f66..21fdf8580d2 100644
--- a/framework/src/main/java/org/tron/core/services/http/TriggerSmartContractServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/TriggerSmartContractServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import io.netty.util.internal.StringUtil;
@@ -17,14 +17,18 @@
import org.tron.core.Wallet;
import org.tron.core.capsule.TransactionCapsule;
import org.tron.core.exception.ContractValidateException;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.SmartContractOuterClass.TriggerSmartContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "triggersmartcontract", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class TriggerSmartContractServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UnDelegateResourceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UnDelegateResourceServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UnDelegateResourceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UnDelegateResourceServlet.java
index 140129d4e34..7743041aabe 100644
--- a/framework/src/main/java/org/tron/core/services/http/UnDelegateResourceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UnDelegateResourceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,6 +6,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
@@ -13,6 +16,8 @@
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "undelegateresource", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UnDelegateResourceServlet extends RateLimiterServlet {
@Autowired
private Wallet wallet;
diff --git a/framework/src/main/java/org/tron/core/services/http/UnFreezeAssetServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeAssetServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UnFreezeAssetServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeAssetServlet.java
index a2218547b4a..d585c348e5d 100644
--- a/framework/src/main/java/org/tron/core/services/http/UnFreezeAssetServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeAssetServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AssetIssueContractOuterClass.UnfreezeAssetContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "unfreezeasset", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UnFreezeAssetServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UnFreezeBalanceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeBalanceServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UnFreezeBalanceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeBalanceServlet.java
index 1f893003c20..d2236c9603d 100644
--- a/framework/src/main/java/org/tron/core/services/http/UnFreezeBalanceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeBalanceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.BalanceContract.UnfreezeBalanceContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "unfreezebalance", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UnFreezeBalanceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UnFreezeBalanceV2Servlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeBalanceV2Servlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UnFreezeBalanceV2Servlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeBalanceV2Servlet.java
index 05644c0b941..762836ed09d 100644
--- a/framework/src/main/java/org/tron/core/services/http/UnFreezeBalanceV2Servlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UnFreezeBalanceV2Servlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,6 +6,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
@@ -13,6 +16,8 @@
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "unfreezebalancev2", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UnFreezeBalanceV2Servlet extends RateLimiterServlet {
@Autowired
private Wallet wallet;
diff --git a/framework/src/main/java/org/tron/core/services/http/UpdateAccountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateAccountServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UpdateAccountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UpdateAccountServlet.java
index 532d7acf658..4ef015c8593 100644
--- a/framework/src/main/java/org/tron/core/services/http/UpdateAccountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateAccountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AccountContract.AccountUpdateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "updateaccount", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UpdateAccountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UpdateAssetServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateAssetServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UpdateAssetServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UpdateAssetServlet.java
index e7e8179b1a4..f516c49896d 100644
--- a/framework/src/main/java/org/tron/core/services/http/UpdateAssetServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateAssetServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AssetIssueContractOuterClass.UpdateAssetContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "updateasset", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UpdateAssetServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UpdateBrokerageServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateBrokerageServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UpdateBrokerageServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UpdateBrokerageServlet.java
index e1073354ddc..82d0fa9279d 100644
--- a/framework/src/main/java/org/tron/core/services/http/UpdateBrokerageServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateBrokerageServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.StorageContract.UpdateBrokerageContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "updateBrokerage", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UpdateBrokerageServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UpdateEnergyLimitServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateEnergyLimitServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UpdateEnergyLimitServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UpdateEnergyLimitServlet.java
index cd349c7e153..217c9615061 100644
--- a/framework/src/main/java/org/tron/core/services/http/UpdateEnergyLimitServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateEnergyLimitServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.SmartContractOuterClass.UpdateEnergyLimitContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "updateenergylimit", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UpdateEnergyLimitServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UpdateSettingServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateSettingServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UpdateSettingServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UpdateSettingServlet.java
index e58f02df157..36311d05170 100644
--- a/framework/src/main/java/org/tron/core/services/http/UpdateSettingServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateSettingServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.SmartContractOuterClass.UpdateSettingContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "updatesetting", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UpdateSettingServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/UpdateWitnessServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateWitnessServlet.java
similarity index 83%
rename from framework/src/main/java/org/tron/core/services/http/UpdateWitnessServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/UpdateWitnessServlet.java
index 6b0c4449e88..151f919dc4a 100644
--- a/framework/src/main/java/org/tron/core/services/http/UpdateWitnessServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/UpdateWitnessServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -6,14 +6,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.WitnessContract.WitnessUpdateContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "updatewitness", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class UpdateWitnessServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/Util.java b/framework/src/main/java/org/tron/core/services/http/servlets/Util.java
similarity index 92%
rename from framework/src/main/java/org/tron/core/services/http/Util.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/Util.java
index ca20902c4d8..e0723d4e9c9 100644
--- a/framework/src/main/java/org/tron/core/services/http/Util.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/Util.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.apache.commons.lang3.StringUtils.EMPTY;
import static org.tron.common.utils.Commons.decodeFromBase58Check;
@@ -48,9 +48,7 @@
import org.tron.core.capsule.TransactionCapsule;
import org.tron.core.config.args.Args;
import org.tron.core.db.TransactionTrace;
-import org.tron.core.exception.ContractValidateException;
-import org.tron.core.exception.MaintenanceUnavailableException;
-import org.tron.core.services.http.JsonFormat.ParseException;
+import org.tron.core.services.http.servlets.JsonFormat.ParseException;
import org.tron.json.JSON;
import org.tron.json.JSONArray;
import org.tron.json.JSONException;
@@ -67,10 +65,6 @@
@Slf4j(topic = "API")
public class Util {
- private static final String INTERNAL_SERVER_ERROR = "internal server error";
- public static final String RATE_LIMITER_ERROR_MSG = "lack of computing resources";
- static final String INVALID_ADDRESS_MSG = "INVALID address";
-
public static final String EVENTS_DEPRECATED_MSG =
"'events' field is deprecated and no longer supported";
@@ -120,31 +114,12 @@ public static String printTransactionFee(String transactionFee) {
return jsonObject.toJSONString();
}
- private static String printErrorMsg(String msg) {
+ public static String printErrorMsg(Exception e) {
JSONObject jsonObject = new JSONObject();
- jsonObject.put("Error", msg);
+ jsonObject.put("Error", e.getClass() + " : " + e.getMessage());
return jsonObject.toJSONString();
}
- private static String clientMessage(Exception e) {
- if (e == null) {
- return INTERNAL_SERVER_ERROR;
- }
-
- Class> type = e.getClass();
- if (type == IllegalArgumentException.class) {
- return EVENTS_DEPRECATED_MSG.equals(e.getMessage())
- ? EVENTS_DEPRECATED_MSG : INTERNAL_SERVER_ERROR;
- }
- if (type == ParseException.class
- || type == ContractValidateException.class
- || type == MaintenanceUnavailableException.class) {
- String message = e.getMessage();
- return StringUtils.isBlank(message) ? INTERNAL_SERVER_ERROR : message;
- }
- return INTERNAL_SERVER_ERROR;
- }
-
public static String printBlockList(BlockList list, boolean selfType) {
List blocks = list.getBlockList();
JSONObject jsonObject = new JSONObject();
@@ -551,24 +526,11 @@ public static String getMemo(byte[] memo) {
}
public static void processError(Exception e, HttpServletResponse response) {
- logger.debug("HTTP request failed", e);
- writeAuditedError(clientMessage(e), response);
- }
-
- // For catch blocks that cover server-side work only, so the failure stays visible at the
- // default log level. The Exception entry point above keeps debug because its callers also
- // cover request parsing, which an unauthenticated client can fail cheaply and repeatedly.
- static void processServerError(Exception e, HttpServletResponse response) {
- logger.error("HTTP request failed", e);
- writeAuditedError(clientMessage(e), response);
- }
-
- // Bypasses clientMessage: callers must pass audited fixed or pre-existing client texts only.
- static void writeAuditedError(String msg, HttpServletResponse response) {
+ logger.debug(e.getMessage(), e);
try {
- response.getWriter().println(Util.printErrorMsg(msg));
+ response.getWriter().println(Util.printErrorMsg(e));
} catch (IOException ioe) {
- logger.debug("Failed to write HTTP error response", ioe);
+ logger.debug("IOException: {}", ioe.getMessage());
}
}
diff --git a/framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/ValidateAddressServlet.java
similarity index 89%
rename from framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/ValidateAddressServlet.java
index 3ef45b42a7e..bddb224c8d2 100644
--- a/framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/ValidateAddressServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.IOException;
import java.util.Base64;
@@ -10,12 +10,16 @@
import org.tron.common.utils.ByteArray;
import org.tron.common.utils.Commons;
import org.tron.common.utils.DecodeUtil;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "validateaddress", access = Access.READ,
+ surfaces = {Surface.FULL})
public class ValidateAddressServlet extends RateLimiterServlet {
private String validAddress(String input) {
diff --git a/framework/src/main/java/org/tron/core/services/http/VoteWitnessAccountServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/VoteWitnessAccountServlet.java
similarity index 84%
rename from framework/src/main/java/org/tron/core/services/http/VoteWitnessAccountServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/VoteWitnessAccountServlet.java
index f3695b83de8..ef47f033700 100644
--- a/framework/src/main/java/org/tron/core/services/http/VoteWitnessAccountServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/VoteWitnessAccountServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.WitnessContract.VoteWitnessContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "votewitnessaccount", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class VoteWitnessAccountServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/WithdrawBalanceServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/WithdrawBalanceServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/WithdrawBalanceServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/WithdrawBalanceServlet.java
index 33faa01866c..7452ce8ade9 100644
--- a/framework/src/main/java/org/tron/core/services/http/WithdrawBalanceServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/WithdrawBalanceServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,14 +7,18 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.BalanceContract.WithdrawBalanceContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "withdrawbalance", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class WithdrawBalanceServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/WithdrawExpireUnfreezeServlet.java b/framework/src/main/java/org/tron/core/services/http/servlets/WithdrawExpireUnfreezeServlet.java
similarity index 85%
rename from framework/src/main/java/org/tron/core/services/http/WithdrawExpireUnfreezeServlet.java
rename to framework/src/main/java/org/tron/core/services/http/servlets/WithdrawExpireUnfreezeServlet.java
index 7e5f3f96c57..15b0294bfa5 100644
--- a/framework/src/main/java/org/tron/core/services/http/WithdrawExpireUnfreezeServlet.java
+++ b/framework/src/main/java/org/tron/core/services/http/servlets/WithdrawExpireUnfreezeServlet.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -7,15 +7,19 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.tron.core.Wallet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.BalanceContract.WithdrawExpireUnfreezeContract;
-
@Component
@Slf4j(topic = "API")
+@HttpApi(value = "withdrawexpireunfreeze", access = Access.BUILD,
+ surfaces = {Surface.FULL})
public class WithdrawExpireUnfreezeServlet extends RateLimiterServlet {
@Autowired
diff --git a/framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServlet.java b/framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServlet.java
deleted file mode 100644
index 5998bc0850f..00000000000
--- a/framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServlet.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.tron.core.services.http.solidity;
-
-import com.google.protobuf.ByteString;
-import java.io.IOException;
-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.BytesMessage;
-import org.tron.common.utils.ByteArray;
-import org.tron.core.Wallet;
-import org.tron.core.services.http.JsonFormat;
-import org.tron.core.services.http.PostParams;
-import org.tron.core.services.http.RateLimiterServlet;
-import org.tron.core.services.http.Util;
-import org.tron.protos.Protocol.Transaction;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionByIdSolidityServlet extends RateLimiterServlet {
-
- @Autowired
- private Wallet wallet;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- try {
- boolean visible = Util.getVisible(request);
- String input = request.getParameter("value");
- fillResponse(ByteString.copyFrom(ByteArray.fromHexString(input)), visible, response);
- } catch (Exception e) {
- Util.processError(e, response);
- }
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- try {
- PostParams params = PostParams.getPostParams(request);
- BytesMessage.Builder build = BytesMessage.newBuilder();
- JsonFormat.merge(params.getParams(), build, params.isVisible());
- fillResponse(build.build().getValue(), params.isVisible(), response);
- } catch (Exception e) {
- Util.processError(e, response);
- }
- }
-
- private void fillResponse(ByteString txId, boolean visible, HttpServletResponse response)
- throws IOException {
- Transaction reply = wallet.getTransactionById(txId);
- if (reply != null) {
- response.getWriter().println(Util.printTransaction(reply, visible));
- } else {
- response.getWriter().println("{}");
- }
- }
-
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServlet.java b/framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServlet.java
deleted file mode 100644
index 197f5aaec0d..00000000000
--- a/framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServlet.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.tron.core.services.http.solidity;
-
-import com.google.protobuf.ByteString;
-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.BytesMessage;
-import org.tron.common.utils.ByteArray;
-import org.tron.core.Wallet;
-import org.tron.core.services.http.JsonFormat;
-import org.tron.core.services.http.PostParams;
-import org.tron.core.services.http.RateLimiterServlet;
-import org.tron.core.services.http.Util;
-import org.tron.protos.Protocol.TransactionInfo;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionInfoByIdSolidityServlet extends RateLimiterServlet {
-
- @Autowired
- private Wallet wallet;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- try {
- boolean visible = Util.getVisible(request);
- String input = request.getParameter("value");
- TransactionInfo transInfo = wallet
- .getTransactionInfoById(ByteString.copyFrom(ByteArray.fromHexString(input)));
- if (transInfo == null) {
- response.getWriter().println("{}");
- } else {
- response.getWriter().println(JsonFormat.printToString(transInfo, visible));
- }
- } catch (Exception e) {
- Util.processError(e, response);
- }
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- try {
- PostParams params = PostParams.getPostParams(request);
-
- BytesMessage.Builder build = BytesMessage.newBuilder();
- JsonFormat.merge(params.getParams(), build, params.isVisible());
- TransactionInfo transInfo = wallet.getTransactionInfoById(build.build().getValue());
- if (transInfo == null) {
- response.getWriter().println("{}");
- } else {
- response.getWriter().println(JsonFormat.printToString(transInfo, params.isVisible()));
- }
- } catch (Exception e) {
- Util.processError(e, response);
- }
- }
-
-}
diff --git a/framework/src/main/java/org/tron/core/services/http/solidity/SolidityNodeHttpApiService.java b/framework/src/main/java/org/tron/core/services/http/solidity/SolidityNodeHttpApiService.java
index 0c4843c0550..1af4ec0dc34 100644
--- a/framework/src/main/java/org/tron/core/services/http/solidity/SolidityNodeHttpApiService.java
+++ b/framework/src/main/java/org/tron/core/services/http/solidity/SolidityNodeHttpApiService.java
@@ -7,164 +7,24 @@
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.tron.common.application.HttpService;
import org.tron.core.config.args.Args;
import org.tron.core.services.filter.HttpApiAccessFilter;
-import org.tron.core.services.http.EstimateEnergyServlet;
-import org.tron.core.services.http.GetAccountByIdServlet;
-import org.tron.core.services.http.GetAccountServlet;
-import org.tron.core.services.http.GetAssetIssueByIdServlet;
-import org.tron.core.services.http.GetAssetIssueByNameServlet;
-import org.tron.core.services.http.GetAssetIssueListByNameServlet;
-import org.tron.core.services.http.GetAssetIssueListServlet;
-import org.tron.core.services.http.GetAvailableUnfreezeCountServlet;
-import org.tron.core.services.http.GetBandwidthPricesServlet;
-import org.tron.core.services.http.GetBlockByIdServlet;
-import org.tron.core.services.http.GetBlockByLatestNumServlet;
-import org.tron.core.services.http.GetBlockByLimitNextServlet;
-import org.tron.core.services.http.GetBlockByNumServlet;
-import org.tron.core.services.http.GetBlockServlet;
-import org.tron.core.services.http.GetBrokerageServlet;
-import org.tron.core.services.http.GetBurnTrxServlet;
-import org.tron.core.services.http.GetCanDelegatedMaxSizeServlet;
-import org.tron.core.services.http.GetCanWithdrawUnfreezeAmountServlet;
-import org.tron.core.services.http.GetDelegatedResourceAccountIndexServlet;
-import org.tron.core.services.http.GetDelegatedResourceAccountIndexV2Servlet;
-import org.tron.core.services.http.GetDelegatedResourceServlet;
-import org.tron.core.services.http.GetDelegatedResourceV2Servlet;
-import org.tron.core.services.http.GetEnergyPricesServlet;
-import org.tron.core.services.http.GetExchangeByIdServlet;
-import org.tron.core.services.http.GetMarketOrderByAccountServlet;
-import org.tron.core.services.http.GetMarketOrderByIdServlet;
-import org.tron.core.services.http.GetMarketOrderListByPairServlet;
-import org.tron.core.services.http.GetMarketPairListServlet;
-import org.tron.core.services.http.GetMarketPriceByPairServlet;
-import org.tron.core.services.http.GetMerkleTreeVoucherInfoServlet;
-import org.tron.core.services.http.GetNodeInfoServlet;
-import org.tron.core.services.http.GetNowBlockServlet;
-import org.tron.core.services.http.GetPaginatedAssetIssueListServlet;
-import org.tron.core.services.http.GetPaginatedNowWitnessListServlet;
-import org.tron.core.services.http.GetRewardServlet;
-import org.tron.core.services.http.GetTransactionCountByBlockNumServlet;
-import org.tron.core.services.http.GetTransactionInfoByBlockNumServlet;
-import org.tron.core.services.http.IsShieldedTRC20ContractNoteSpentServlet;
-import org.tron.core.services.http.IsSpendServlet;
-import org.tron.core.services.http.ListExchangesServlet;
-import org.tron.core.services.http.ListWitnessesServlet;
-import org.tron.core.services.http.ScanAndMarkNoteByIvkServlet;
-import org.tron.core.services.http.ScanNoteByIvkServlet;
-import org.tron.core.services.http.ScanNoteByOvkServlet;
-import org.tron.core.services.http.ScanShieldedTRC20NotesByIvkServlet;
-import org.tron.core.services.http.ScanShieldedTRC20NotesByOvkServlet;
-import org.tron.core.services.http.TriggerConstantContractServlet;
-
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApiRegistry;
+import org.tron.core.services.http.servlets.GetNodeInfoServlet;
@Component
@Slf4j(topic = "API")
public class SolidityNodeHttpApiService extends HttpService {
- @Autowired
- private GetAccountServlet getAccountServlet;
- @Autowired
- private GetTransactionByIdSolidityServlet getTransactionByIdServlet;
- @Autowired
- private GetTransactionInfoByIdSolidityServlet getTransactionInfoByIdServlet;
- @Autowired
- private GetTransactionCountByBlockNumServlet getTransactionCountByBlockNumServlet;
- @Autowired
- private GetDelegatedResourceServlet getDelegatedResourceServlet;
- @Autowired
- private GetDelegatedResourceV2Servlet getDelegatedResourceV2Servlet;
- @Autowired
- private GetCanDelegatedMaxSizeServlet getCanDelegatedMaxSizeServlet;
- @Autowired
- private GetAvailableUnfreezeCountServlet getAvailableUnfreezeCountServlet;
- @Autowired
- private GetCanWithdrawUnfreezeAmountServlet getCanWithdrawUnfreezeAmountServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexServlet getDelegatedResourceAccountIndexServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexV2Servlet getDelegatedResourceAccountIndexV2Servlet;
- @Autowired
- private GetExchangeByIdServlet getExchangeByIdServlet;
- @Autowired
- private ListExchangesServlet listExchangesServlet;
- @Autowired
- private ListWitnessesServlet listWitnessesServlet;
- @Autowired
- private GetPaginatedNowWitnessListServlet getPaginatedNowWitnessListServlet;
- @Autowired
- private GetAssetIssueListServlet getAssetIssueListServlet;
- @Autowired
- private GetPaginatedAssetIssueListServlet getPaginatedAssetIssueListServlet;
- @Autowired
- private GetAssetIssueByNameServlet getAssetIssueByNameServlet;
- @Autowired
- private GetAssetIssueByIdServlet getAssetIssueByIdServlet;
- @Autowired
- private GetAssetIssueListByNameServlet getAssetIssueListByNameServlet;
- @Autowired
- private GetNowBlockServlet getNowBlockServlet;
- @Autowired
- private GetBlockByNumServlet getBlockByNumServlet;
- @Autowired
- private GetNodeInfoServlet getNodeInfoServlet;
- @Autowired
- private GetAccountByIdServlet getAccountByIdServlet;
- @Autowired
- private GetBlockByIdServlet getBlockByIdServlet;
- @Autowired
- private GetBlockByLimitNextServlet getBlockByLimitNextServlet;
- @Autowired
- private GetBlockByLatestNumServlet getBlockByLatestNumServlet;
- @Autowired
- private ScanAndMarkNoteByIvkServlet scanAndMarkNoteByIvkServlet;
- @Autowired
- private ScanNoteByIvkServlet scanNoteByIvkServlet;
- @Autowired
- private ScanNoteByOvkServlet scanNoteByOvkServlet;
- @Autowired
- private GetMerkleTreeVoucherInfoServlet getMerkleTreeVoucherInfoServlet;
- @Autowired
- private IsSpendServlet isSpendServlet;
- @Autowired
- private ScanShieldedTRC20NotesByIvkServlet scanShieldedTRC20NotesByIvkServlet;
- @Autowired
- private ScanShieldedTRC20NotesByOvkServlet scanShieldedTRC20NotesByOvkServlet;
- @Autowired
- private IsShieldedTRC20ContractNoteSpentServlet isShieldedTRC20ContractNoteSpentServlet;
- @Autowired
- private GetMarketOrderByAccountServlet getMarketOrderByAccountServlet;
- @Autowired
- private GetMarketOrderByIdServlet getMarketOrderByIdServlet;
- @Autowired
- private GetMarketPriceByPairServlet getMarketPriceByPairServlet;
- @Autowired
- private GetMarketOrderListByPairServlet getMarketOrderListByPairServlet;
- @Autowired
- private GetMarketPairListServlet getMarketPairListServlet;
- @Autowired
- private GetBurnTrxServlet getBurnTrxServlet;
- @Autowired
- private GetBrokerageServlet getBrokerageServlet;
- @Autowired
- private GetRewardServlet getRewardServlet;
- @Autowired
- private TriggerConstantContractServlet triggerConstantContractServlet;
- @Autowired
- private EstimateEnergyServlet estimateEnergyServlet;
- @Autowired
- private GetTransactionInfoByBlockNumServlet getTransactionInfoByBlockNumServlet;
@Autowired
private HttpApiAccessFilter httpApiAccessFilter;
- @Autowired
- private GetBlockServlet getBlockServlet;
- @Autowired
- private GetBandwidthPricesServlet getBandwidthPricesServlet;
- @Autowired
- private GetEnergyPricesServlet getEnergyPricesServlet;
+ @Autowired
+ private ApplicationContext appContext;
public SolidityNodeHttpApiService() {
port = Args.getInstance().getSolidityHttpPort();
@@ -175,108 +35,22 @@ public SolidityNodeHttpApiService() {
@Override
protected void addServlet(ServletContextHandler context) {
- // same as FullNode
- context.addServlet(new ServletHolder(getAccountServlet), "/walletsolidity/getaccount");
- context.addServlet(new ServletHolder(listWitnessesServlet), "/walletsolidity/listwitnesses");
- context.addServlet(new ServletHolder(getPaginatedNowWitnessListServlet),
- "/walletsolidity/getpaginatednowwitnesslist");
- context.addServlet(new ServletHolder(getAssetIssueListServlet),
- "/walletsolidity/getassetissuelist");
- context.addServlet(new ServletHolder(getPaginatedAssetIssueListServlet),
- "/walletsolidity/getpaginatedassetissuelist");
- context.addServlet(new ServletHolder(getAssetIssueByNameServlet),
- "/walletsolidity/getassetissuebyname");
- context.addServlet(new ServletHolder(getAssetIssueByIdServlet),
- "/walletsolidity/getassetissuebyid");
- context.addServlet(new ServletHolder(getAssetIssueListByNameServlet),
- "/walletsolidity/getassetissuelistbyname");
- context.addServlet(new ServletHolder(getNowBlockServlet), "/walletsolidity/getnowblock");
- context.addServlet(new ServletHolder(getBlockByNumServlet), "/walletsolidity/getblockbynum");
- context.addServlet(new ServletHolder(getDelegatedResourceServlet),
- "/walletsolidity/getdelegatedresource");
- context.addServlet(new ServletHolder(getDelegatedResourceV2Servlet),
- "/walletsolidity/getdelegatedresourcev2");
- context.addServlet(new ServletHolder(getCanDelegatedMaxSizeServlet),
- "/walletsolidity/getcandelegatedmaxsize");
- context.addServlet(new ServletHolder(getAvailableUnfreezeCountServlet),
- "/walletsolidity/getavailableunfreezecount");
- context.addServlet(new ServletHolder(getCanWithdrawUnfreezeAmountServlet),
- "/walletsolidity/getcanwithdrawunfreezeamount");
- context.addServlet(new ServletHolder(getDelegatedResourceAccountIndexServlet),
- "/walletsolidity/getdelegatedresourceaccountindex");
- context.addServlet(new ServletHolder(getDelegatedResourceAccountIndexV2Servlet),
- "/walletsolidity/getdelegatedresourceaccountindexv2");
- context
- .addServlet(new ServletHolder(getExchangeByIdServlet),
- "/walletsolidity/getexchangebyid");
- context.addServlet(new ServletHolder(listExchangesServlet),
- "/walletsolidity/listexchanges");
-
- context.addServlet(new ServletHolder(getAccountByIdServlet),
- "/walletsolidity/getaccountbyid");
- context.addServlet(new ServletHolder(getBlockByIdServlet),
- "/walletsolidity/getblockbyid");
- context.addServlet(new ServletHolder(getBlockByLimitNextServlet),
- "/walletsolidity/getblockbylimitnext");
- context.addServlet(new ServletHolder(getBlockByLatestNumServlet),
- "/walletsolidity/getblockbylatestnum");
-
- // context.addServlet(new ServletHolder(getMerkleTreeVoucherInfoServlet),
- // "/walletsolidity/getmerkletreevoucherinfo");
- // context.addServlet(new ServletHolder(scanAndMarkNoteByIvkServlet),
- // "/walletsolidity/scanandmarknotebyivk");
- // context.addServlet(new ServletHolder(scanNoteByIvkServlet),
- // "/walletsolidity/scannotebyivk");
- // context.addServlet(new ServletHolder(scanNoteByOvkServlet),
- // "/walletsolidity/scannotebyovk");
- // context.addServlet(new ServletHolder(isSpendServlet),
- // "/walletsolidity/isspend");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByIvkServlet),
- "/walletsolidity/scanshieldedtrc20notesbyivk");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByOvkServlet),
- "/walletsolidity/scanshieldedtrc20notesbyovk");
- context.addServlet(new ServletHolder(isShieldedTRC20ContractNoteSpentServlet),
- "/walletsolidity/isshieldedtrc20contractnotespent");
-
- context.addServlet(new ServletHolder(getTransactionInfoByBlockNumServlet),
- "/walletsolidity/gettransactioninfobyblocknum");
-
- context.addServlet(new ServletHolder(getMarketOrderByAccountServlet),
- "/walletsolidity/getmarketorderbyaccount");
- context.addServlet(new ServletHolder(getMarketOrderByIdServlet),
- "/walletsolidity/getmarketorderbyid");
- context.addServlet(new ServletHolder(getMarketPriceByPairServlet),
- "/walletsolidity/getmarketpricebypair");
- context.addServlet(new ServletHolder(getMarketOrderListByPairServlet),
- "/walletsolidity/getmarketorderlistbypair");
- context.addServlet(new ServletHolder(getMarketPairListServlet),
- "/walletsolidity/getmarketpairlist");
-
- // only for SolidityNode
- context.addServlet(new ServletHolder(getTransactionByIdServlet),
- "/walletsolidity/gettransactionbyid");
-
- context
- .addServlet(new ServletHolder(getTransactionInfoByIdServlet),
- "/walletsolidity/gettransactioninfobyid");
- context
- .addServlet(new ServletHolder(getTransactionCountByBlockNumServlet),
- "/walletsolidity/gettransactioncountbyblocknum");
- context.addServlet(new ServletHolder(triggerConstantContractServlet),
- "/walletsolidity/triggerconstantcontract");
- context.addServlet(new ServletHolder(estimateEnergyServlet),
- "/walletsolidity/estimateenergy");
+ addServletsFromRegistry(context);
+ }
- context.addServlet(new ServletHolder(getNodeInfoServlet), "/wallet/getnodeinfo");
- context.addServlet(new ServletHolder(getNodeInfoServlet), "/walletsolidity/getnodeinfo");
- context.addServlet(new ServletHolder(getBrokerageServlet), "/walletsolidity/getBrokerage");
- context.addServlet(new ServletHolder(getRewardServlet), "/walletsolidity/getReward");
- context.addServlet(new ServletHolder(getBurnTrxServlet), "/walletsolidity/getburntrx");
- context.addServlet(new ServletHolder(getBlockServlet), "/walletsolidity/getblock");
- context.addServlet(new ServletHolder(getBandwidthPricesServlet),
- "/walletsolidity/getbandwidthprices");
- context.addServlet(new ServletHolder(getEnergyPricesServlet),
- "/walletsolidity/getenergyprices");
+ /**
+ * Registry-driven registration: mounts every endpoint the registry declares for the
+ * SOLIDITY_NODE surface under the /walletsolidity prefix, resolving servlet beans from the
+ * application context; getnodeinfo is additionally reachable under the fullnode prefix.
+ */
+ protected void addServletsFromRegistry(ServletContextHandler context) {
+ for (HttpApiRegistry.Entry def : HttpApiRegistry.forSurface(HttpApi.Surface.SOLIDITY_NODE)) {
+ context.addServlet(new ServletHolder(appContext.getBean(def.getServlet())),
+ "/walletsolidity/" + def.getSuffix());
+ }
+ // surface-specific alias kept for compatibility: /wallet/getnodeinfo answers on this port
+ context.addServlet(new ServletHolder(appContext.getBean(GetNodeInfoServlet.class)),
+ "/wallet/getnodeinfo");
}
@Override
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/HttpApiOnPBFTService.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/HttpApiOnPBFTService.java
new file mode 100644
index 00000000000..37b20aba0e5
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/HttpApiOnPBFTService.java
@@ -0,0 +1,69 @@
+package org.tron.core.services.interfaceOnPBFT;
+
+import java.util.EnumSet;
+import javax.servlet.DispatcherType;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.tron.common.application.HttpService;
+import org.tron.core.config.args.Args;
+import org.tron.core.services.filter.HttpApiAccessFilter;
+import org.tron.core.services.filter.LiteFnQueryHttpFilter;
+import org.tron.core.services.filter.PbftCursorFilter;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApiRegistry;
+
+@Slf4j(topic = "API")
+public class HttpApiOnPBFTService extends HttpService {
+
+ @Autowired
+ private LiteFnQueryHttpFilter liteFnQueryHttpFilter;
+ @Autowired
+ private HttpApiAccessFilter httpApiAccessFilter;
+ @Autowired
+ private PbftCursorFilter pbftCursorFilter;
+ @Autowired
+ private ApplicationContext appContext;
+
+ public HttpApiOnPBFTService() {
+ port = Args.getInstance().getPBFTHttpPort();
+ enable = isFullNode() && Args.getInstance().isPBFTHttpEnable();
+ contextPath = "/walletpbft";
+ maxRequestSize = Args.getInstance().getHttpMaxMessageSize();
+ }
+
+ @Override
+ protected void addServlet(ServletContextHandler context) {
+ addServletsFromRegistry(context);
+ }
+
+ /**
+ * Registry-driven registration: mounts every endpoint the registry declares for the PBFT
+ * surface, resolving servlet beans from the application context.
+ */
+ protected void addServletsFromRegistry(ServletContextHandler context) {
+ for (HttpApiRegistry.Entry def : HttpApiRegistry.forSurface(HttpApi.Surface.PBFT)) {
+ context.addServlet(new ServletHolder(appContext.getBean(def.getServlet())),
+ "/" + def.getSuffix());
+ }
+ }
+
+ @Override
+ protected void addFilter(ServletContextHandler context) {
+ // filters the specified APIs
+ // when node is lite fullnode and openHistoryQueryWhenLiteFN is false
+ context.addFilter(new FilterHolder(liteFnQueryHttpFilter), "/*",
+ EnumSet.allOf(DispatcherType.class));
+
+ // api access filter
+ context.addFilter(new FilterHolder(httpApiAccessFilter), "/*",
+ EnumSet.allOf(DispatcherType.class));
+
+ // every request on this port reads the PBFT state view
+ context.addFilter(new FilterHolder(pbftCursorFilter), "/*",
+ EnumSet.allOf(DispatcherType.class));
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/EstimateEnergyOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/EstimateEnergyOnPBFTServlet.java
deleted file mode 100644
index 825e2bf79e8..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/EstimateEnergyOnPBFTServlet.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-import java.io.IOException;
-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.core.services.http.EstimateEnergyServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class EstimateEnergyOnPBFTServlet extends EstimateEnergyServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> {
- try {
- super.doPost(request, response);
- } catch (IOException e) {
- logger.error("EstimateEnergyOnPBFTServlet Exception", e);
- }
- });
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountByIdOnPBFTServlet.java
deleted file mode 100644
index 1506b98ee96..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAccountByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAccountByIdOnPBFTServlet extends GetAccountByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountOnPBFTServlet.java
deleted file mode 100644
index 1db7d2fbd02..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAccountServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetAccountOnPBFTServlet extends GetAccountServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByIdOnPBFTServlet.java
deleted file mode 100644
index 497ac775731..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAssetIssueByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueByIdOnPBFTServlet extends GetAssetIssueByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByNameOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByNameOnPBFTServlet.java
deleted file mode 100644
index 9da748921ab..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByNameOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAssetIssueByNameServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueByNameOnPBFTServlet extends GetAssetIssueByNameServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListByNameOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListByNameOnPBFTServlet.java
deleted file mode 100644
index 4f781051cc1..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListByNameOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAssetIssueListByNameServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueListByNameOnPBFTServlet extends GetAssetIssueListByNameServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListOnPBFTServlet.java
deleted file mode 100644
index 18f414c04b1..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAssetIssueListServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueListOnPBFTServlet extends GetAssetIssueListServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAvailableUnfreezeCountOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAvailableUnfreezeCountOnPBFTServlet.java
deleted file mode 100644
index bb393f92efc..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAvailableUnfreezeCountOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetAvailableUnfreezeCountServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAvailableUnfreezeCountOnPBFTServlet extends GetAvailableUnfreezeCountServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServlet.java
deleted file mode 100644
index c89bc5f9646..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServlet.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBandwidthPricesServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBandwidthPricesOnPBFTServlet extends GetBandwidthPricesServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByIdOnPBFTServlet.java
deleted file mode 100644
index 59e186ab4e0..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBlockByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByIdOnPBFTServlet extends GetBlockByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLatestNumOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLatestNumOnPBFTServlet.java
deleted file mode 100644
index 536d6c7bcce..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLatestNumOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBlockByLatestNumServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByLatestNumOnPBFTServlet extends GetBlockByLatestNumServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLimitNextOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLimitNextOnPBFTServlet.java
deleted file mode 100644
index f04d8820cbf..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLimitNextOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBlockByLimitNextServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByLimitNextOnPBFTServlet extends GetBlockByLimitNextServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByNumOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByNumOnPBFTServlet.java
deleted file mode 100644
index bc19befc9c0..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByNumOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBlockByNumServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByNumOnPBFTServlet extends GetBlockByNumServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBrokerageOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBrokerageOnPBFTServlet.java
deleted file mode 100644
index c0bcc8de6b5..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBrokerageOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBrokerageServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetBrokerageOnPBFTServlet extends GetBrokerageServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBurnTrxOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBurnTrxOnPBFTServlet.java
deleted file mode 100644
index fb1654062c8..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBurnTrxOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetBurnTrxServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetBurnTrxOnPBFTServlet extends GetBurnTrxServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanDelegatedMaxSizeOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanDelegatedMaxSizeOnPBFTServlet.java
deleted file mode 100644
index 8b3b47462e8..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanDelegatedMaxSizeOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetCanDelegatedMaxSizeServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetCanDelegatedMaxSizeOnPBFTServlet extends GetCanDelegatedMaxSizeServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanWithdrawUnfreezeAmountOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanWithdrawUnfreezeAmountOnPBFTServlet.java
deleted file mode 100644
index c8b20c4eef7..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanWithdrawUnfreezeAmountOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetCanWithdrawUnfreezeAmountServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetCanWithdrawUnfreezeAmountOnPBFTServlet
- extends GetCanWithdrawUnfreezeAmountServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexOnPBFTServlet.java
deleted file mode 100644
index febee663796..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetDelegatedResourceAccountIndexServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceAccountIndexOnPBFTServlet extends
- GetDelegatedResourceAccountIndexServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexV2OnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexV2OnPBFTServlet.java
deleted file mode 100644
index 07541905300..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexV2OnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetDelegatedResourceAccountIndexV2Servlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceAccountIndexV2OnPBFTServlet extends
- GetDelegatedResourceAccountIndexV2Servlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceOnPBFTServlet.java
deleted file mode 100644
index 04b4a0436aa..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetDelegatedResourceServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceOnPBFTServlet extends GetDelegatedResourceServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceV2OnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceV2OnPBFTServlet.java
deleted file mode 100644
index 6429c90eec5..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceV2OnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetDelegatedResourceV2Servlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceV2OnPBFTServlet extends GetDelegatedResourceV2Servlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServlet.java
deleted file mode 100644
index 11c1dcaa0e8..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServlet.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetEnergyPricesServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetEnergyPricesOnPBFTServlet extends GetEnergyPricesServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetExchangeByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetExchangeByIdOnPBFTServlet.java
deleted file mode 100644
index ecdbd5228d2..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetExchangeByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetExchangeByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetExchangeByIdOnPBFTServlet extends GetExchangeByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByAccountOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByAccountOnPBFTServlet.java
deleted file mode 100644
index 7fa308c3abc..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByAccountOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetMarketOrderByAccountServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketOrderByAccountOnPBFTServlet extends GetMarketOrderByAccountServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByIdOnPBFTServlet.java
deleted file mode 100644
index 63809fd032c..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetMarketOrderByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketOrderByIdOnPBFTServlet extends GetMarketOrderByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderListByPairOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderListByPairOnPBFTServlet.java
deleted file mode 100644
index b18dde73651..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderListByPairOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetMarketOrderListByPairServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketOrderListByPairOnPBFTServlet extends GetMarketOrderListByPairServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPairListOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPairListOnPBFTServlet.java
deleted file mode 100644
index 4d3f69c9132..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPairListOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetMarketPairListServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketPairListOnPBFTServlet extends GetMarketPairListServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPriceByPairOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPriceByPairOnPBFTServlet.java
deleted file mode 100644
index 330cf2c2552..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPriceByPairOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetMarketPriceByPairServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketPriceByPairOnPBFTServlet extends GetMarketPriceByPairServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMerkleTreeVoucherInfoOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMerkleTreeVoucherInfoOnPBFTServlet.java
deleted file mode 100644
index 0e92ccf2d92..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMerkleTreeVoucherInfoOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetMerkleTreeVoucherInfoServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMerkleTreeVoucherInfoOnPBFTServlet extends GetMerkleTreeVoucherInfoServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNodeInfoOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNodeInfoOnPBFTServlet.java
deleted file mode 100644
index 0149d29326d..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNodeInfoOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetNodeInfoServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetNodeInfoOnPBFTServlet extends GetNodeInfoServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNowBlockOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNowBlockOnPBFTServlet.java
deleted file mode 100644
index e37ff729433..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNowBlockOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetNowBlockServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetNowBlockOnPBFTServlet extends GetNowBlockServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetPaginatedAssetIssueListOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetPaginatedAssetIssueListOnPBFTServlet.java
deleted file mode 100644
index 900c75d34af..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetPaginatedAssetIssueListOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetPaginatedAssetIssueListServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetPaginatedAssetIssueListOnPBFTServlet extends GetPaginatedAssetIssueListServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetRewardOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetRewardOnPBFTServlet.java
deleted file mode 100644
index 98c20c7d5eb..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetRewardOnPBFTServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetRewardServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetRewardOnPBFTServlet extends GetRewardServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> {
- super.doPost(request, response);
- });
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetTransactionCountByBlockNumOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetTransactionCountByBlockNumOnPBFTServlet.java
deleted file mode 100644
index b79f6001d27..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetTransactionCountByBlockNumOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.GetTransactionCountByBlockNumServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionCountByBlockNumOnPBFTServlet extends
- GetTransactionCountByBlockNumServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsShieldedTRC20ContractNoteSpentOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsShieldedTRC20ContractNoteSpentOnPBFTServlet.java
deleted file mode 100644
index afdb6dfc71e..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsShieldedTRC20ContractNoteSpentOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.IsShieldedTRC20ContractNoteSpentServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class IsShieldedTRC20ContractNoteSpentOnPBFTServlet extends
- IsShieldedTRC20ContractNoteSpentServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsSpendOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsSpendOnPBFTServlet.java
deleted file mode 100644
index 82fb6fb72a7..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsSpendOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.IsSpendServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class IsSpendOnPBFTServlet extends IsSpendServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListExchangesOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListExchangesOnPBFTServlet.java
deleted file mode 100644
index 234db10b7ac..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListExchangesOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ListExchangesServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ListExchangesOnPBFTServlet extends ListExchangesServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListWitnessesOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListWitnessesOnPBFTServlet.java
deleted file mode 100644
index 940f072a709..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListWitnessesOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ListWitnessesServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ListWitnessesOnPBFTServlet extends ListWitnessesServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetBlockOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetBlockOnPBFTServlet.java
deleted file mode 100644
index 3207ebcf161..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetBlockOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http.PBFT;
-
-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.core.services.http.GetBlockServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockOnPBFTServlet extends GetBlockServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionByIdOnPBFTServlet.java
deleted file mode 100644
index fc7a8a47257..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http.PBFT;
-
-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.core.services.http.GetTransactionByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionByIdOnPBFTServlet extends GetTransactionByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionInfoByIdOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionInfoByIdOnPBFTServlet.java
deleted file mode 100644
index f96720123fd..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionInfoByIdOnPBFTServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http.PBFT;
-
-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.core.services.http.GetTransactionInfoByIdServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionInfoByIdOnPBFTServlet extends GetTransactionInfoByIdServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/HttpApiOnPBFTService.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/HttpApiOnPBFTService.java
deleted file mode 100644
index c0616c2ae78..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/HttpApiOnPBFTService.java
+++ /dev/null
@@ -1,278 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http.PBFT;
-
-import java.util.EnumSet;
-import javax.servlet.DispatcherType;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.tron.common.application.HttpService;
-import org.tron.core.config.args.Args;
-import org.tron.core.services.filter.HttpApiAccessFilter;
-import org.tron.core.services.filter.LiteFnQueryHttpFilter;
-import org.tron.core.services.interfaceOnPBFT.http.EstimateEnergyOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAccountByIdOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAccountOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAssetIssueByIdOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAssetIssueByNameOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAssetIssueListByNameOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAssetIssueListOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetAvailableUnfreezeCountOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBandwidthPricesOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBlockByIdOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBlockByLatestNumOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBlockByLimitNextOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBlockByNumOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBrokerageOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetBurnTrxOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetCanDelegatedMaxSizeOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetCanWithdrawUnfreezeAmountOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetDelegatedResourceAccountIndexOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetDelegatedResourceAccountIndexV2OnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetDelegatedResourceOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetDelegatedResourceV2OnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetEnergyPricesOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetExchangeByIdOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetMarketOrderByAccountOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetMarketOrderByIdOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetMarketOrderListByPairOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetMarketPairListOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetMarketPriceByPairOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetMerkleTreeVoucherInfoOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetNodeInfoOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetNowBlockOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetPaginatedAssetIssueListOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetRewardOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.GetTransactionCountByBlockNumOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.IsShieldedTRC20ContractNoteSpentOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.IsSpendOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ListExchangesOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ListWitnessesOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ScanAndMarkNoteByIvkOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ScanNoteByIvkOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ScanNoteByOvkOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ScanShieldedTRC20NotesByIvkOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.ScanShieldedTRC20NotesByOvkOnPBFTServlet;
-import org.tron.core.services.interfaceOnPBFT.http.TriggerConstantContractOnPBFTServlet;
-
-@Slf4j(topic = "API")
-public class HttpApiOnPBFTService extends HttpService {
-
- @Autowired
- private GetAccountOnPBFTServlet accountOnPBFTServlet;
-
- @Autowired
- private GetTransactionByIdOnPBFTServlet getTransactionByIdOnPBFTServlet;
- @Autowired
- private GetTransactionInfoByIdOnPBFTServlet getTransactionInfoByIdOnPBFTServlet;
- @Autowired
- private ListWitnessesOnPBFTServlet listWitnessesOnPBFTServlet;
- @Autowired
- private GetAssetIssueListOnPBFTServlet getAssetIssueListOnPBFTServlet;
- @Autowired
- private GetPaginatedAssetIssueListOnPBFTServlet getPaginatedAssetIssueListOnPBFTServlet;
- @Autowired
- private GetNowBlockOnPBFTServlet getNowBlockOnPBFTServlet;
- @Autowired
- private GetBlockByNumOnPBFTServlet getBlockByNumOnPBFTServlet;
-
- @Autowired
- private GetNodeInfoOnPBFTServlet getNodeInfoOnPBFTServlet;
-
- @Autowired
- private GetDelegatedResourceOnPBFTServlet getDelegatedResourceOnPBFTServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexOnPBFTServlet
- getDelegatedResourceAccountIndexOnPBFTServlet;
- @Autowired
- private GetExchangeByIdOnPBFTServlet getExchangeByIdOnPBFTServlet;
- @Autowired
- private ListExchangesOnPBFTServlet listExchangesOnPBFTServlet;
- @Autowired
- private GetTransactionCountByBlockNumOnPBFTServlet
- getTransactionCountByBlockNumOnPBFTServlet;
- @Autowired
- private GetAssetIssueByNameOnPBFTServlet getAssetIssueByNameOnPBFTServlet;
- @Autowired
- private GetAssetIssueByIdOnPBFTServlet getAssetIssueByIdOnPBFTServlet;
- @Autowired
- private GetAssetIssueListByNameOnPBFTServlet getAssetIssueListByNameOnPBFTServlet;
- @Autowired
- private GetAccountByIdOnPBFTServlet getAccountByIdOnPBFTServlet;
- @Autowired
- private GetBlockByIdOnPBFTServlet getBlockByIdOnPBFTServlet;
- @Autowired
- private GetBlockByLimitNextOnPBFTServlet getBlockByLimitNextOnPBFTServlet;
- @Autowired
- private GetBlockByLatestNumOnPBFTServlet getBlockByLatestNumOnPBFTServlet;
- @Autowired
- private GetMerkleTreeVoucherInfoOnPBFTServlet getMerkleTreeVoucherInfoOnPBFTServlet;
- @Autowired
- private ScanNoteByIvkOnPBFTServlet scanNoteByIvkOnPBFTServlet;
- @Autowired
- private ScanAndMarkNoteByIvkOnPBFTServlet scanAndMarkNoteByIvkOnPBFTServlet;
- @Autowired
- private ScanNoteByOvkOnPBFTServlet scanNoteByOvkOnPBFTServlet;
- @Autowired
- private IsSpendOnPBFTServlet isSpendOnPBFTServlet;
- @Autowired
- private GetBrokerageOnPBFTServlet getBrokerageServlet;
- @Autowired
- private GetRewardOnPBFTServlet getRewardServlet;
- @Autowired
- private TriggerConstantContractOnPBFTServlet triggerConstantContractOnPBFTServlet;
- @Autowired
- private EstimateEnergyOnPBFTServlet estimateEnergyOnPBFTServlet;
- @Autowired
- private LiteFnQueryHttpFilter liteFnQueryHttpFilter;
- @Autowired
- private HttpApiAccessFilter httpApiAccessFilter;
-
- @Autowired
- private GetMarketOrderByAccountOnPBFTServlet getMarketOrderByAccountOnPBFTServlet;
- @Autowired
- private GetMarketOrderByIdOnPBFTServlet getMarketOrderByIdOnPBFTServlet;
- @Autowired
- private GetMarketPriceByPairOnPBFTServlet getMarketPriceByPairOnPBFTServlet;
- @Autowired
- private GetMarketOrderListByPairOnPBFTServlet getMarketOrderListByPairOnPBFTServlet;
- @Autowired
- private GetMarketPairListOnPBFTServlet getMarketPairListOnPBFTServlet;
-
- @Autowired
- private ScanShieldedTRC20NotesByIvkOnPBFTServlet scanShieldedTRC20NotesByIvkOnPBFTServlet;
- @Autowired
- private ScanShieldedTRC20NotesByOvkOnPBFTServlet scanShieldedTRC20NotesByOvkOnPBFTServlet;
- @Autowired
- private IsShieldedTRC20ContractNoteSpentOnPBFTServlet
- isShieldedTRC20ContractNoteSpentOnPBFTServlet;
- @Autowired
- private GetBurnTrxOnPBFTServlet getBurnTrxOnPBFTServlet;
- @Autowired
- private GetBandwidthPricesOnPBFTServlet getBandwidthPricesOnPBFTServlet;
- @Autowired
- private GetEnergyPricesOnPBFTServlet getEnergyPricesOnPBFTServlet;
-
- @Autowired
- private GetBlockOnPBFTServlet getBlockOnPBFTServlet;
-
- @Autowired
- private GetAvailableUnfreezeCountOnPBFTServlet getAvailableUnfreezeCountOnPBFTServlet;
- @Autowired
- private GetCanDelegatedMaxSizeOnPBFTServlet getCanDelegatedMaxSizeOnPBFTServlet;
- @Autowired
- private GetCanWithdrawUnfreezeAmountOnPBFTServlet getCanWithdrawUnfreezeAmountOnPBFTServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexV2OnPBFTServlet
- getDelegatedResourceAccountIndexV2OnPBFTServlet;
- @Autowired
- private GetDelegatedResourceV2OnPBFTServlet getDelegatedResourceV2OnPBFTServlet;
-
- public HttpApiOnPBFTService() {
- port = Args.getInstance().getPBFTHttpPort();
- enable = isFullNode() && Args.getInstance().isPBFTHttpEnable();
- contextPath = "/walletpbft";
- maxRequestSize = Args.getInstance().getHttpMaxMessageSize();
- }
-
- @Override
- protected void addServlet(ServletContextHandler context) {
- // same as FullNode
- context.addServlet(new ServletHolder(accountOnPBFTServlet), "/getaccount");
- context.addServlet(new ServletHolder(listWitnessesOnPBFTServlet), "/listwitnesses");
- context.addServlet(new ServletHolder(getAssetIssueListOnPBFTServlet), "/getassetissuelist");
- context.addServlet(new ServletHolder(getPaginatedAssetIssueListOnPBFTServlet),
- "/getpaginatedassetissuelist");
- context
- .addServlet(new ServletHolder(getAssetIssueByNameOnPBFTServlet), "/getassetissuebyname");
- context.addServlet(new ServletHolder(getAssetIssueByIdOnPBFTServlet), "/getassetissuebyid");
- context.addServlet(new ServletHolder(getAssetIssueListByNameOnPBFTServlet),
- "/getassetissuelistbyname");
- context.addServlet(new ServletHolder(getNowBlockOnPBFTServlet), "/getnowblock");
- context.addServlet(new ServletHolder(getBlockByNumOnPBFTServlet), "/getblockbynum");
- context.addServlet(new ServletHolder(getDelegatedResourceOnPBFTServlet),
- "/getdelegatedresource");
- context.addServlet(new ServletHolder(getDelegatedResourceAccountIndexOnPBFTServlet),
- "/getdelegatedresourceaccountindex");
- context.addServlet(new ServletHolder(getExchangeByIdOnPBFTServlet), "/getexchangebyid");
- context.addServlet(new ServletHolder(listExchangesOnPBFTServlet), "/listexchanges");
- context.addServlet(new ServletHolder(getAccountByIdOnPBFTServlet), "/getaccountbyid");
- context.addServlet(new ServletHolder(getBlockByIdOnPBFTServlet), "/getblockbyid");
- context
- .addServlet(new ServletHolder(getBlockByLimitNextOnPBFTServlet), "/getblockbylimitnext");
- context
- .addServlet(new ServletHolder(getBlockByLatestNumOnPBFTServlet), "/getblockbylatestnum");
- context.addServlet(new ServletHolder(getMerkleTreeVoucherInfoOnPBFTServlet),
- "/getmerkletreevoucherinfo");
- context.addServlet(new ServletHolder(scanAndMarkNoteByIvkOnPBFTServlet),
- "/scanandmarknotebyivk");
- context.addServlet(new ServletHolder(scanNoteByIvkOnPBFTServlet), "/scannotebyivk");
- context.addServlet(new ServletHolder(scanNoteByOvkOnPBFTServlet), "/scannotebyovk");
- context.addServlet(new ServletHolder(isSpendOnPBFTServlet), "/isspend");
- context.addServlet(new ServletHolder(triggerConstantContractOnPBFTServlet),
- "/triggerconstantcontract");
- context.addServlet(new ServletHolder(estimateEnergyOnPBFTServlet), "/estimateenergy");
-
- // only for PBFTNode
- context.addServlet(new ServletHolder(getTransactionByIdOnPBFTServlet), "/gettransactionbyid");
- context.addServlet(new ServletHolder(getTransactionInfoByIdOnPBFTServlet),
- "/gettransactioninfobyid");
-
- context.addServlet(new ServletHolder(getTransactionCountByBlockNumOnPBFTServlet),
- "/gettransactioncountbyblocknum");
-
- context.addServlet(new ServletHolder(getNodeInfoOnPBFTServlet), "/getnodeinfo");
- context.addServlet(new ServletHolder(getBrokerageServlet), "/getBrokerage");
- context.addServlet(new ServletHolder(getRewardServlet), "/getReward");
-
- context.addServlet(new ServletHolder(getMarketOrderByAccountOnPBFTServlet),
- "/getmarketorderbyaccount");
- context.addServlet(new ServletHolder(getMarketOrderByIdOnPBFTServlet),
- "/getmarketorderbyid");
- context.addServlet(new ServletHolder(getMarketPriceByPairOnPBFTServlet),
- "/getmarketpricebypair");
- context.addServlet(new ServletHolder(getMarketOrderListByPairOnPBFTServlet),
- "/getmarketorderlistbypair");
- context.addServlet(new ServletHolder(getMarketPairListOnPBFTServlet),
- "/getmarketpairlist");
-
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByIvkOnPBFTServlet),
- "/scanshieldedtrc20notesbyivk");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByOvkOnPBFTServlet),
- "/scanshieldedtrc20notesbyovk");
- context.addServlet(new ServletHolder(isShieldedTRC20ContractNoteSpentOnPBFTServlet),
- "/isshieldedtrc20contractnotespent");
- context.addServlet(new ServletHolder(getBurnTrxOnPBFTServlet),
- "/getburntrx");
- context.addServlet(new ServletHolder(getBandwidthPricesOnPBFTServlet),
- "/getbandwidthprices");
- context.addServlet(new ServletHolder(getEnergyPricesOnPBFTServlet),
- "/getenergyprices");
- context.addServlet(new ServletHolder(getBlockOnPBFTServlet),
- "/getblock");
-
- context.addServlet(new ServletHolder(getAvailableUnfreezeCountOnPBFTServlet),
- "/getavailableunfreezecount");
- context.addServlet(new ServletHolder(getCanDelegatedMaxSizeOnPBFTServlet),
- "/getcandelegatedmaxsize");
- context.addServlet(new ServletHolder(getCanWithdrawUnfreezeAmountOnPBFTServlet),
- "/getcanwithdrawunfreezeamount");
- context.addServlet(new ServletHolder(getDelegatedResourceAccountIndexV2OnPBFTServlet),
- "/getdelegatedresourceaccountindexv2");
- context.addServlet(new ServletHolder(getDelegatedResourceV2OnPBFTServlet),
- "/getdelegatedresourcev2");
- }
-
- @Override
- protected void addFilter(ServletContextHandler context) {
- // filters the specified APIs
- // when node is lite fullnode and openHistoryQueryWhenLiteFN is false
- context.addFilter(new FilterHolder(liteFnQueryHttpFilter), "/*",
- EnumSet.allOf(DispatcherType.class));
-
- // api access filter
- context.addFilter(new FilterHolder(httpApiAccessFilter), "/*",
- EnumSet.allOf(DispatcherType.class));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanAndMarkNoteByIvkOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanAndMarkNoteByIvkOnPBFTServlet.java
deleted file mode 100644
index aa0d94796a0..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanAndMarkNoteByIvkOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ScanAndMarkNoteByIvkServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanAndMarkNoteByIvkOnPBFTServlet extends ScanAndMarkNoteByIvkServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByIvkOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByIvkOnPBFTServlet.java
deleted file mode 100644
index 6382c0f4cf6..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByIvkOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ScanNoteByIvkServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanNoteByIvkOnPBFTServlet extends ScanNoteByIvkServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByOvkOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByOvkOnPBFTServlet.java
deleted file mode 100644
index e05445c0c66..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByOvkOnPBFTServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ScanNoteByOvkServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanNoteByOvkOnPBFTServlet extends ScanNoteByOvkServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByIvkOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByIvkOnPBFTServlet.java
deleted file mode 100644
index bf0b70a3a9b..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByIvkOnPBFTServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ScanShieldedTRC20NotesByIvkServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class ScanShieldedTRC20NotesByIvkOnPBFTServlet extends ScanShieldedTRC20NotesByIvkServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByOvkOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByOvkOnPBFTServlet.java
deleted file mode 100644
index 2bc65ef27c4..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByOvkOnPBFTServlet.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-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.core.services.http.ScanShieldedTRC20NotesByOvkServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-@Component
-@Slf4j(topic = "API")
-public class ScanShieldedTRC20NotesByOvkOnPBFTServlet extends ScanShieldedTRC20NotesByOvkServlet {
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/TriggerConstantContractOnPBFTServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/TriggerConstantContractOnPBFTServlet.java
deleted file mode 100644
index 2859326464d..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/TriggerConstantContractOnPBFTServlet.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.tron.core.services.interfaceOnPBFT.http;
-
-import java.io.IOException;
-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.core.services.http.TriggerConstantContractServlet;
-import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
-
-
-@Component
-@Slf4j(topic = "API")
-public class TriggerConstantContractOnPBFTServlet extends TriggerConstantContractServlet {
-
- @Autowired
- private WalletOnPBFT walletOnPBFT;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnPBFT.futureGet(() -> {
- try {
- super.doPost(request, response);
- } catch (IOException e) {
- logger.error("TriggerConstantContractOnPBFTServlet Exception", e);
- }
- });
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/HttpApiOnSolidityService.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/HttpApiOnSolidityService.java
new file mode 100644
index 00000000000..be19716b360
--- /dev/null
+++ b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/HttpApiOnSolidityService.java
@@ -0,0 +1,80 @@
+package org.tron.core.services.interfaceOnSolidity;
+
+import java.util.EnumSet;
+import javax.servlet.DispatcherType;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.tron.common.application.HttpService;
+import org.tron.core.config.args.Args;
+import org.tron.core.services.filter.HttpApiAccessFilter;
+import org.tron.core.services.filter.LiteFnQueryHttpFilter;
+import org.tron.core.services.filter.SolidityCursorFilter;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApiRegistry;
+import org.tron.core.services.http.servlets.GetNodeInfoServlet;
+
+@Slf4j(topic = "API")
+public class HttpApiOnSolidityService extends HttpService {
+
+ @Autowired
+ private LiteFnQueryHttpFilter liteFnQueryHttpFilter;
+
+ @Autowired
+ private HttpApiAccessFilter httpApiAccessFilter;
+
+ @Autowired
+ private SolidityCursorFilter solidityCursorFilter;
+
+ @Autowired
+ private ApplicationContext appContext;
+
+ public HttpApiOnSolidityService() {
+ port = Args.getInstance().getSolidityHttpPort();
+ enable = isFullNode() && Args.getInstance().isSolidityNodeHttpEnable();
+ contextPath = "/";
+ maxRequestSize = Args.getInstance().getHttpMaxMessageSize();
+ }
+
+ @Override
+ protected void addServlet(ServletContextHandler context) {
+ addServletsFromRegistry(context);
+ }
+
+ /**
+ * Registry-driven registration: mounts every endpoint the registry declares for the SOLIDITY
+ * surface under the /walletsolidity prefix, resolving servlet beans from the application
+ * context; getnodeinfo is additionally reachable under the fullnode prefix on this port.
+ */
+ protected void addServletsFromRegistry(ServletContextHandler context) {
+ for (HttpApiRegistry.Entry def : HttpApiRegistry.forSurface(HttpApi.Surface.SOLIDITY)) {
+ context.addServlet(new ServletHolder(appContext.getBean(def.getServlet())),
+ "/walletsolidity/" + def.getSuffix());
+ }
+ // surface-specific alias kept for compatibility: /wallet/getnodeinfo answers on this port
+ context.addServlet(new ServletHolder(appContext.getBean(GetNodeInfoServlet.class)),
+ "/wallet/getnodeinfo");
+ }
+
+ @Override
+ protected void addFilter(ServletContextHandler context) {
+ // filters the specified APIs
+ // when node is lite fullnode and openHistoryQueryWhenLiteFN is false
+ context.addFilter(new FilterHolder(liteFnQueryHttpFilter), "/*",
+ EnumSet.allOf(DispatcherType.class));
+
+ // api access filter
+ context.addFilter(new FilterHolder(httpApiAccessFilter), "/walletsolidity/*",
+ EnumSet.allOf(DispatcherType.class));
+ context.getServletHandler().getFilterMappings()[1]
+ .setPathSpecs(new String[] {"/walletsolidity/*",
+ "/wallet/getnodeinfo"});
+
+ // every request on this port reads the SOLIDITY state view
+ context.addFilter(new FilterHolder(solidityCursorFilter), "/*",
+ EnumSet.allOf(DispatcherType.class));
+ }
+}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/EstimateEnergyOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/EstimateEnergyOnSolidityServlet.java
deleted file mode 100644
index e9e403c776b..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/EstimateEnergyOnSolidityServlet.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-import java.io.IOException;
-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.core.services.http.EstimateEnergyServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class EstimateEnergyOnSolidityServlet extends EstimateEnergyServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> {
- try {
- super.doPost(request, response);
- } catch (IOException e) {
- logger.error("EstimateEnergyOnSolidityServlet Exception", e);
- }
- });
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountByIdOnSolidityServlet.java
deleted file mode 100644
index ce47e679d0a..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetAccountByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAccountByIdOnSolidityServlet extends GetAccountByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountOnSolidityServlet.java
deleted file mode 100644
index 1cb02b77336..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetAccountServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetAccountOnSolidityServlet extends GetAccountServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByIdOnSolidityServlet.java
deleted file mode 100644
index f3173972407..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetAssetIssueByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueByIdOnSolidityServlet extends GetAssetIssueByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByNameOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByNameOnSolidityServlet.java
deleted file mode 100644
index 101e0f1e4ae..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByNameOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetAssetIssueByNameServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueByNameOnSolidityServlet extends GetAssetIssueByNameServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListByNameOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListByNameOnSolidityServlet.java
deleted file mode 100644
index d21cc9c940d..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListByNameOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetAssetIssueListByNameServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueListByNameOnSolidityServlet extends GetAssetIssueListByNameServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListOnSolidityServlet.java
deleted file mode 100644
index 76a2e70d70c..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetAssetIssueListServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetAssetIssueListOnSolidityServlet extends GetAssetIssueListServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAvailableUnfreezeCountOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAvailableUnfreezeCountOnSolidityServlet.java
deleted file mode 100644
index 218164fffb0..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAvailableUnfreezeCountOnSolidityServlet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.Wallet;
-import org.tron.core.services.http.GetAvailableUnfreezeCountServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetAvailableUnfreezeCountOnSolidityServlet extends GetAvailableUnfreezeCountServlet {
-
- @Autowired
- private Wallet wallet;
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServlet.java
deleted file mode 100644
index bb2fca37a97..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBandwidthPricesServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBandwidthPricesOnSolidityServlet extends GetBandwidthPricesServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
-
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByIdOnSolidityServlet.java
deleted file mode 100644
index 16192e2f484..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBlockByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByIdOnSolidityServlet extends GetBlockByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLatestNumOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLatestNumOnSolidityServlet.java
deleted file mode 100644
index 34b5f37dcf5..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLatestNumOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBlockByLatestNumServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByLatestNumOnSolidityServlet extends GetBlockByLatestNumServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLimitNextOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLimitNextOnSolidityServlet.java
deleted file mode 100644
index 36de59a9e7e..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLimitNextOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBlockByLimitNextServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByLimitNextOnSolidityServlet extends GetBlockByLimitNextServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByNumOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByNumOnSolidityServlet.java
deleted file mode 100644
index e79da51ee7b..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByNumOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBlockByNumServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockByNumOnSolidityServlet extends GetBlockByNumServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockOnSolidityServlet.java
deleted file mode 100644
index e00f8e91e62..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBlockServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetBlockOnSolidityServlet extends GetBlockServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBrokerageOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBrokerageOnSolidityServlet.java
deleted file mode 100644
index b6b6a9ca993..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBrokerageOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBrokerageServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetBrokerageOnSolidityServlet extends GetBrokerageServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBurnTrxOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBurnTrxOnSolidityServlet.java
deleted file mode 100644
index 46435a92668..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBurnTrxOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetBurnTrxServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetBurnTrxOnSolidityServlet extends GetBurnTrxServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanDelegatedMaxSizeOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanDelegatedMaxSizeOnSolidityServlet.java
deleted file mode 100644
index f2a2fb394e4..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanDelegatedMaxSizeOnSolidityServlet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.Wallet;
-import org.tron.core.services.http.GetCanDelegatedMaxSizeServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetCanDelegatedMaxSizeOnSolidityServlet extends GetCanDelegatedMaxSizeServlet {
-
- @Autowired
- private Wallet wallet;
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanWithdrawUnfreezeAmountOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanWithdrawUnfreezeAmountOnSolidityServlet.java
deleted file mode 100644
index 3f0b487fbe6..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanWithdrawUnfreezeAmountOnSolidityServlet.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.Wallet;
-import org.tron.core.services.http.GetCanWithdrawUnfreezeAmountServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetCanWithdrawUnfreezeAmountOnSolidityServlet
- extends GetCanWithdrawUnfreezeAmountServlet {
-
- @Autowired
- private Wallet wallet;
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexOnSolidityServlet.java
deleted file mode 100644
index 1ad23e35a2a..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetDelegatedResourceAccountIndexServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceAccountIndexOnSolidityServlet extends
- GetDelegatedResourceAccountIndexServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexV2OnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexV2OnSolidityServlet.java
deleted file mode 100644
index edfaaf56c8b..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexV2OnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetDelegatedResourceAccountIndexV2Servlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceAccountIndexV2OnSolidityServlet extends
- GetDelegatedResourceAccountIndexV2Servlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceOnSolidityServlet.java
deleted file mode 100644
index c5a5cc9cb64..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceOnSolidityServlet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.Wallet;
-import org.tron.core.services.http.GetDelegatedResourceServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceOnSolidityServlet extends GetDelegatedResourceServlet {
-
- @Autowired
- private Wallet wallet;
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceV2OnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceV2OnSolidityServlet.java
deleted file mode 100644
index f481def86ea..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceV2OnSolidityServlet.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.Wallet;
-import org.tron.core.services.http.GetDelegatedResourceV2Servlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetDelegatedResourceV2OnSolidityServlet extends GetDelegatedResourceV2Servlet {
-
- @Autowired
- private Wallet wallet;
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServlet.java
deleted file mode 100644
index a867fc3596a..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetEnergyPricesServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetEnergyPricesOnSolidityServlet extends GetEnergyPricesServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
-
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetExchangeByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetExchangeByIdOnSolidityServlet.java
deleted file mode 100644
index 1da31a0674b..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetExchangeByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetExchangeByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetExchangeByIdOnSolidityServlet extends GetExchangeByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByAccountOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByAccountOnSolidityServlet.java
deleted file mode 100644
index 0f77006c867..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByAccountOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetMarketOrderByAccountServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketOrderByAccountOnSolidityServlet extends GetMarketOrderByAccountServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByIdOnSolidityServlet.java
deleted file mode 100644
index 5956a638573..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetMarketOrderByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketOrderByIdOnSolidityServlet extends GetMarketOrderByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderListByPairOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderListByPairOnSolidityServlet.java
deleted file mode 100644
index 8452accc3d3..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderListByPairOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetMarketOrderListByPairServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketOrderListByPairOnSolidityServlet extends GetMarketOrderListByPairServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPairListOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPairListOnSolidityServlet.java
deleted file mode 100644
index b0ee51fec1e..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPairListOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetMarketPairListServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketPairListOnSolidityServlet extends GetMarketPairListServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPriceByPairOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPriceByPairOnSolidityServlet.java
deleted file mode 100644
index ceccf215b19..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPriceByPairOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetMarketPriceByPairServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMarketPriceByPairOnSolidityServlet extends GetMarketPriceByPairServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMerkleTreeVoucherInfoOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMerkleTreeVoucherInfoOnSolidityServlet.java
deleted file mode 100644
index 041a711da12..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMerkleTreeVoucherInfoOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetMerkleTreeVoucherInfoServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetMerkleTreeVoucherInfoOnSolidityServlet extends GetMerkleTreeVoucherInfoServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNodeInfoOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNodeInfoOnSolidityServlet.java
deleted file mode 100644
index ec16a010632..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNodeInfoOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetNodeInfoServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetNodeInfoOnSolidityServlet extends GetNodeInfoServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNowBlockOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNowBlockOnSolidityServlet.java
deleted file mode 100644
index e888e8a5101..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNowBlockOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetNowBlockServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetNowBlockOnSolidityServlet extends GetNowBlockServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedAssetIssueListOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedAssetIssueListOnSolidityServlet.java
deleted file mode 100644
index fcb5ff90842..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedAssetIssueListOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetPaginatedAssetIssueListServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetPaginatedAssetIssueListOnSolidityServlet extends GetPaginatedAssetIssueListServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedNowWitnessListOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedNowWitnessListOnSolidityServlet.java
deleted file mode 100644
index 4578393ec76..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedNowWitnessListOnSolidityServlet.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetPaginatedNowWitnessListServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetPaginatedNowWitnessListOnSolidityServlet extends GetPaginatedNowWitnessListServlet {
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetRewardOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetRewardOnSolidityServlet.java
deleted file mode 100644
index f125557d1bf..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetRewardOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetRewardServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetRewardOnSolidityServlet extends GetRewardServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> {
- super.doPost(request, response);
- });
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionCountByBlockNumOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionCountByBlockNumOnSolidityServlet.java
deleted file mode 100644
index 10e5d5a9b29..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionCountByBlockNumOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetTransactionCountByBlockNumServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionCountByBlockNumOnSolidityServlet extends
- GetTransactionCountByBlockNumServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionInfoByBlockNumOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionInfoByBlockNumOnSolidityServlet.java
deleted file mode 100644
index 40e88afa1e0..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionInfoByBlockNumOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.GetTransactionInfoByBlockNumServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionInfoByBlockNumOnSolidityServlet extends
- GetTransactionInfoByBlockNumServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsShieldedTRC20ContractNoteSpentOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsShieldedTRC20ContractNoteSpentOnSolidityServlet.java
deleted file mode 100644
index 12055c2db8b..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsShieldedTRC20ContractNoteSpentOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.IsShieldedTRC20ContractNoteSpentServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class IsShieldedTRC20ContractNoteSpentOnSolidityServlet extends
- IsShieldedTRC20ContractNoteSpentServlet {
-
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsSpendOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsSpendOnSolidityServlet.java
deleted file mode 100644
index 98cb96dd136..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsSpendOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.IsSpendServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class IsSpendOnSolidityServlet extends IsSpendServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListExchangesOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListExchangesOnSolidityServlet.java
deleted file mode 100644
index 87fc546913d..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListExchangesOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ListExchangesServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ListExchangesOnSolidityServlet extends ListExchangesServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListWitnessesOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListWitnessesOnSolidityServlet.java
deleted file mode 100644
index 9025b360d0d..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListWitnessesOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ListWitnessesServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ListWitnessesOnSolidityServlet extends ListWitnessesServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanAndMarkNoteByIvkOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanAndMarkNoteByIvkOnSolidityServlet.java
deleted file mode 100644
index b661913b011..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanAndMarkNoteByIvkOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ScanAndMarkNoteByIvkServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanAndMarkNoteByIvkOnSolidityServlet extends ScanAndMarkNoteByIvkServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByIvkOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByIvkOnSolidityServlet.java
deleted file mode 100644
index b1719181673..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByIvkOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ScanNoteByIvkServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanNoteByIvkOnSolidityServlet extends ScanNoteByIvkServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByOvkOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByOvkOnSolidityServlet.java
deleted file mode 100644
index b1874203ca8..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByOvkOnSolidityServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ScanNoteByOvkServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanNoteByOvkOnSolidityServlet extends ScanNoteByOvkServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByIvkOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByIvkOnSolidityServlet.java
deleted file mode 100644
index 19a8d545502..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByIvkOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ScanShieldedTRC20NotesByIvkServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanShieldedTRC20NotesByIvkOnSolidityServlet extends
- ScanShieldedTRC20NotesByIvkServlet {
-
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByOvkOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByOvkOnSolidityServlet.java
deleted file mode 100644
index 30055b41a90..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByOvkOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-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.core.services.http.ScanShieldedTRC20NotesByOvkServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class ScanShieldedTRC20NotesByOvkOnSolidityServlet extends
- ScanShieldedTRC20NotesByOvkServlet {
-
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/TriggerConstantContractOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/TriggerConstantContractOnSolidityServlet.java
deleted file mode 100644
index 75f602272b4..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/TriggerConstantContractOnSolidityServlet.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http;
-
-import java.io.IOException;
-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.core.services.http.TriggerConstantContractServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class TriggerConstantContractOnSolidityServlet extends TriggerConstantContractServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> {
- try {
- super.doPost(request, response);
- } catch (IOException e) {
- logger.error("TriggerConstantContractOnSolidityServlet Exception", e);
- }
- });
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionByIdOnSolidityServlet.java
deleted file mode 100644
index db56a4cc1f1..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http.solidity;
-
-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.core.services.http.GetTransactionByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionByIdOnSolidityServlet extends GetTransactionByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
\ No newline at end of file
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionInfoByIdOnSolidityServlet.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionInfoByIdOnSolidityServlet.java
deleted file mode 100644
index 96422e1b60f..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionInfoByIdOnSolidityServlet.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http.solidity;
-
-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.core.services.http.GetTransactionInfoByIdServlet;
-import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
-
-
-@Component
-@Slf4j(topic = "API")
-public class GetTransactionInfoByIdOnSolidityServlet extends GetTransactionInfoByIdServlet {
-
- @Autowired
- private WalletOnSolidity walletOnSolidity;
-
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doGet(request, response));
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) {
- walletOnSolidity.futureGet(() -> super.doPost(request, response));
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/HttpApiOnSolidityService.java b/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/HttpApiOnSolidityService.java
deleted file mode 100644
index b7e96a36b45..00000000000
--- a/framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/HttpApiOnSolidityService.java
+++ /dev/null
@@ -1,307 +0,0 @@
-package org.tron.core.services.interfaceOnSolidity.http.solidity;
-
-import java.util.EnumSet;
-import javax.servlet.DispatcherType;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.tron.common.application.HttpService;
-import org.tron.core.config.args.Args;
-import org.tron.core.services.filter.HttpApiAccessFilter;
-import org.tron.core.services.filter.LiteFnQueryHttpFilter;
-import org.tron.core.services.interfaceOnSolidity.http.EstimateEnergyOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAccountByIdOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAccountOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAssetIssueByIdOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAssetIssueByNameOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAssetIssueListByNameOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAssetIssueListOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetAvailableUnfreezeCountOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBandwidthPricesOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBlockByIdOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBlockByLatestNumOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBlockByLimitNextOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBlockByNumOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBlockOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBrokerageOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetBurnTrxOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetCanDelegatedMaxSizeOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetCanWithdrawUnfreezeAmountOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetDelegatedResourceAccountIndexOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetDelegatedResourceAccountIndexV2OnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetDelegatedResourceOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetDelegatedResourceV2OnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetEnergyPricesOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetExchangeByIdOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetMarketOrderByAccountOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetMarketOrderByIdOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetMarketOrderListByPairOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetMarketPairListOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetMarketPriceByPairOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetMerkleTreeVoucherInfoOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetNodeInfoOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetNowBlockOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetPaginatedAssetIssueListOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetPaginatedNowWitnessListOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetRewardOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetTransactionCountByBlockNumOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.GetTransactionInfoByBlockNumOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.IsShieldedTRC20ContractNoteSpentOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.IsSpendOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ListExchangesOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ListWitnessesOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ScanAndMarkNoteByIvkOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ScanNoteByIvkOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ScanNoteByOvkOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ScanShieldedTRC20NotesByIvkOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.ScanShieldedTRC20NotesByOvkOnSolidityServlet;
-import org.tron.core.services.interfaceOnSolidity.http.TriggerConstantContractOnSolidityServlet;
-
-@Slf4j(topic = "API")
-public class HttpApiOnSolidityService extends HttpService {
-
- @Autowired
- private GetAccountOnSolidityServlet accountOnSolidityServlet;
-
- @Autowired
- private GetTransactionByIdOnSolidityServlet getTransactionByIdOnSolidityServlet;
- @Autowired
- private GetTransactionInfoByIdOnSolidityServlet getTransactionInfoByIdOnSolidityServlet;
- @Autowired
- private ListWitnessesOnSolidityServlet listWitnessesOnSolidityServlet;
- @Autowired
- private GetPaginatedNowWitnessListOnSolidityServlet getPaginatedNowWitnessListOnSolidityServlet;
- @Autowired
- private GetAssetIssueListOnSolidityServlet getAssetIssueListOnSolidityServlet;
- @Autowired
- private GetPaginatedAssetIssueListOnSolidityServlet getPaginatedAssetIssueListOnSolidityServlet;
- @Autowired
- private GetNowBlockOnSolidityServlet getNowBlockOnSolidityServlet;
- @Autowired
- private GetBlockByNumOnSolidityServlet getBlockByNumOnSolidityServlet;
-
- @Autowired
- private GetNodeInfoOnSolidityServlet getNodeInfoOnSolidityServlet;
-
- @Autowired
- private GetDelegatedResourceOnSolidityServlet getDelegatedResourceOnSolidityServlet;
- @Autowired
- private GetDelegatedResourceV2OnSolidityServlet getDelegatedResourceV2OnSolidityServlet;
- @Autowired
- private GetCanDelegatedMaxSizeOnSolidityServlet getCanDelegatedMaxSizeOnSolidityServlet;
- @Autowired
- private GetAvailableUnfreezeCountOnSolidityServlet getAvailableUnfreezeCountOnSolidityServlet;
- @Autowired
- private GetCanWithdrawUnfreezeAmountOnSolidityServlet
- getCanWithdrawUnfreezeAmountOnSolidityServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexOnSolidityServlet
- getDelegatedResourceAccountIndexOnSolidityServlet;
- @Autowired
- private GetDelegatedResourceAccountIndexV2OnSolidityServlet
- getDelegatedResourceAccountIndexV2OnSolidityServlet;
- @Autowired
- private GetExchangeByIdOnSolidityServlet getExchangeByIdOnSolidityServlet;
- @Autowired
- private ListExchangesOnSolidityServlet listExchangesOnSolidityServlet;
- @Autowired
- private GetTransactionCountByBlockNumOnSolidityServlet
- getTransactionCountByBlockNumOnSolidityServlet;
- @Autowired
- private GetAssetIssueByNameOnSolidityServlet getAssetIssueByNameOnSolidityServlet;
- @Autowired
- private GetAssetIssueByIdOnSolidityServlet getAssetIssueByIdOnSolidityServlet;
- @Autowired
- private GetAssetIssueListByNameOnSolidityServlet getAssetIssueListByNameOnSolidityServlet;
- @Autowired
- private GetAccountByIdOnSolidityServlet getAccountByIdOnSolidityServlet;
- @Autowired
- private GetBlockByIdOnSolidityServlet getBlockByIdOnSolidityServlet;
- @Autowired
- private GetBlockByLimitNextOnSolidityServlet getBlockByLimitNextOnSolidityServlet;
- @Autowired
- private GetBlockByLatestNumOnSolidityServlet getBlockByLatestNumOnSolidityServlet;
- @Autowired
- private GetMerkleTreeVoucherInfoOnSolidityServlet getMerkleTreeVoucherInfoOnSolidityServlet;
- @Autowired
- private ScanNoteByIvkOnSolidityServlet scanNoteByIvkOnSolidityServlet;
- @Autowired
- private ScanAndMarkNoteByIvkOnSolidityServlet scanAndMarkNoteByIvkOnSolidityServlet;
- @Autowired
- private ScanNoteByOvkOnSolidityServlet scanNoteByOvkOnSolidityServlet;
- @Autowired
- private IsSpendOnSolidityServlet isSpendOnSolidityServlet;
- @Autowired
- private ScanShieldedTRC20NotesByIvkOnSolidityServlet scanShieldedTRC20NotesByIvkOnSolidityServlet;
- @Autowired
- private ScanShieldedTRC20NotesByOvkOnSolidityServlet scanShieldedTRC20NotesByOvkOnSolidityServlet;
- @Autowired
- private IsShieldedTRC20ContractNoteSpentOnSolidityServlet
- isShieldedTRC20ContractNoteSpentOnSolidityServlet;
- @Autowired
- private GetBrokerageOnSolidityServlet getBrokerageServlet;
- @Autowired
- private GetRewardOnSolidityServlet getRewardServlet;
- @Autowired
- private GetBurnTrxOnSolidityServlet getBurnTrxOnSolidityServlet;
- @Autowired
- private TriggerConstantContractOnSolidityServlet triggerConstantContractOnSolidityServlet;
- @Autowired
- private EstimateEnergyOnSolidityServlet estimateEnergyOnSolidityServlet;
- @Autowired
- private GetTransactionInfoByBlockNumOnSolidityServlet
- getTransactionInfoByBlockNumOnSolidityServlet;
- @Autowired
- private GetMarketOrderByAccountOnSolidityServlet getMarketOrderByAccountOnSolidityServlet;
- @Autowired
- private GetMarketOrderByIdOnSolidityServlet getMarketOrderByIdOnSolidityServlet;
- @Autowired
- private GetMarketPriceByPairOnSolidityServlet getMarketPriceByPairOnSolidityServlet;
- @Autowired
- private GetMarketOrderListByPairOnSolidityServlet getMarketOrderListByPairOnSolidityServlet;
- @Autowired
- private GetMarketPairListOnSolidityServlet getMarketPairListOnSolidityServlet;
- @Autowired
- private GetBandwidthPricesOnSolidityServlet getBandwidthPricesOnSolidityServlet;
- @Autowired
- private GetEnergyPricesOnSolidityServlet getEnergyPricesOnSolidityServlet;
-
- @Autowired
- private LiteFnQueryHttpFilter liteFnQueryHttpFilter;
-
- @Autowired
- private HttpApiAccessFilter httpApiAccessFilter;
-
- @Autowired
- private GetBlockOnSolidityServlet getBlockOnSolidityServlet;
-
- public HttpApiOnSolidityService() {
- port = Args.getInstance().getSolidityHttpPort();
- enable = isFullNode() && Args.getInstance().isSolidityNodeHttpEnable();
- contextPath = "/";
- maxRequestSize = Args.getInstance().getHttpMaxMessageSize();
- }
-
- @Override
- protected void addServlet(ServletContextHandler context) {
- // same as FullNode
- context.addServlet(new ServletHolder(accountOnSolidityServlet), "/walletsolidity/getaccount");
- context.addServlet(new ServletHolder(listWitnessesOnSolidityServlet),
- "/walletsolidity/listwitnesses");
- context.addServlet(new ServletHolder(getPaginatedNowWitnessListOnSolidityServlet),
- "/walletsolidity/getpaginatednowwitnesslist");
- context.addServlet(new ServletHolder(getAssetIssueListOnSolidityServlet),
- "/walletsolidity/getassetissuelist");
- context.addServlet(new ServletHolder(getPaginatedAssetIssueListOnSolidityServlet),
- "/walletsolidity/getpaginatedassetissuelist");
- context.addServlet(new ServletHolder(getAssetIssueByNameOnSolidityServlet),
- "/walletsolidity/getassetissuebyname");
- context.addServlet(new ServletHolder(getAssetIssueByIdOnSolidityServlet),
- "/walletsolidity/getassetissuebyid");
- context.addServlet(new ServletHolder(getAssetIssueListByNameOnSolidityServlet),
- "/walletsolidity/getassetissuelistbyname");
- context.addServlet(new ServletHolder(getNowBlockOnSolidityServlet),
- "/walletsolidity/getnowblock");
- context.addServlet(new ServletHolder(getBlockByNumOnSolidityServlet),
- "/walletsolidity/getblockbynum");
- context.addServlet(new ServletHolder(getDelegatedResourceOnSolidityServlet),
- "/walletsolidity/getdelegatedresource");
- context.addServlet(new ServletHolder(getDelegatedResourceV2OnSolidityServlet),
- "/walletsolidity/getdelegatedresourcev2");
- context.addServlet(new ServletHolder(getCanDelegatedMaxSizeOnSolidityServlet),
- "/walletsolidity/getcandelegatedmaxsize");
- context.addServlet(new ServletHolder(getAvailableUnfreezeCountOnSolidityServlet),
- "/walletsolidity/getavailableunfreezecount");
- context.addServlet(new ServletHolder(getCanWithdrawUnfreezeAmountOnSolidityServlet),
- "/walletsolidity/getcanwithdrawunfreezeamount");
- context.addServlet(new ServletHolder(getDelegatedResourceAccountIndexOnSolidityServlet),
- "/walletsolidity/getdelegatedresourceaccountindex");
- context.addServlet(new ServletHolder(getDelegatedResourceAccountIndexV2OnSolidityServlet),
- "/walletsolidity/getdelegatedresourceaccountindexv2");
- context.addServlet(new ServletHolder(getExchangeByIdOnSolidityServlet),
- "/walletsolidity/getexchangebyid");
- context.addServlet(new ServletHolder(listExchangesOnSolidityServlet),
- "/walletsolidity/listexchanges");
- context.addServlet(new ServletHolder(getAccountByIdOnSolidityServlet),
- "/walletsolidity/getaccountbyid");
- context.addServlet(new ServletHolder(getBlockByIdOnSolidityServlet),
- "/walletsolidity/getblockbyid");
- context.addServlet(new ServletHolder(getBlockByLimitNextOnSolidityServlet),
- "/walletsolidity/getblockbylimitnext");
- context.addServlet(new ServletHolder(getBlockByLatestNumOnSolidityServlet),
- "/walletsolidity/getblockbylatestnum");
- // context.addServlet(new ServletHolder(getMerkleTreeVoucherInfoOnSolidityServlet),
- // "/walletsolidity/getmerkletreevoucherinfo");
- // context.addServlet(new ServletHolder(scanAndMarkNoteByIvkOnSolidityServlet),
- // "/walletsolidity/scanandmarknotebyivk");
- // context.addServlet(new ServletHolder(scanNoteByIvkOnSolidityServlet),
- // "/walletsolidity/scannotebyivk");
- // context.addServlet(new ServletHolder(scanNoteByOvkOnSolidityServlet),
- // "/walletsolidity/scannotebyovk");
- // context.addServlet(new ServletHolder(isSpendOnSolidityServlet),
- // "/walletsolidity/isspend");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByIvkOnSolidityServlet),
- "/walletsolidity/scanshieldedtrc20notesbyivk");
- context.addServlet(new ServletHolder(scanShieldedTRC20NotesByOvkOnSolidityServlet),
- "/walletsolidity/scanshieldedtrc20notesbyovk");
- context.addServlet(new ServletHolder(isShieldedTRC20ContractNoteSpentOnSolidityServlet),
- "/walletsolidity/isshieldedtrc20contractnotespent");
- context.addServlet(new ServletHolder(triggerConstantContractOnSolidityServlet),
- "/walletsolidity/triggerconstantcontract");
- context.addServlet(new ServletHolder(estimateEnergyOnSolidityServlet),
- "/walletsolidity/estimateenergy");
- context.addServlet(new ServletHolder(getTransactionInfoByBlockNumOnSolidityServlet),
- "/walletsolidity/gettransactioninfobyblocknum");
- context.addServlet(new ServletHolder(getMarketOrderByAccountOnSolidityServlet),
- "/walletsolidity/getmarketorderbyaccount");
- context.addServlet(new ServletHolder(getMarketOrderByIdOnSolidityServlet),
- "/walletsolidity/getmarketorderbyid");
- context.addServlet(new ServletHolder(getMarketPriceByPairOnSolidityServlet),
- "/walletsolidity/getmarketpricebypair");
- context.addServlet(new ServletHolder(getMarketOrderListByPairOnSolidityServlet),
- "/walletsolidity/getmarketorderlistbypair");
- context.addServlet(new ServletHolder(getMarketPairListOnSolidityServlet),
- "/walletsolidity/getmarketpairlist");
-
- context.addServlet(new ServletHolder(getTransactionByIdOnSolidityServlet),
- "/walletsolidity/gettransactionbyid");
- context.addServlet(new ServletHolder(getTransactionInfoByIdOnSolidityServlet),
- "/walletsolidity/gettransactioninfobyid");
-
- context.addServlet(new ServletHolder(getTransactionCountByBlockNumOnSolidityServlet),
- "/walletsolidity/gettransactioncountbyblocknum");
-
- context.addServlet(new ServletHolder(getNodeInfoOnSolidityServlet), "/wallet/getnodeinfo");
- context.addServlet(new ServletHolder(getNodeInfoOnSolidityServlet),
- "/walletsolidity/getnodeinfo");
- context.addServlet(new ServletHolder(getBrokerageServlet), "/walletsolidity/getBrokerage");
- context.addServlet(new ServletHolder(getRewardServlet), "/walletsolidity/getReward");
- context
- .addServlet(new ServletHolder(getBurnTrxOnSolidityServlet), "/walletsolidity/getburntrx");
- context.addServlet(new ServletHolder(getBandwidthPricesOnSolidityServlet),
- "/walletsolidity/getbandwidthprices");
- context.addServlet(new ServletHolder(getEnergyPricesOnSolidityServlet),
- "/walletsolidity/getenergyprices");
-
- context.addServlet(new ServletHolder(getBlockOnSolidityServlet),
- "/walletsolidity/getblock");
-
- }
-
- @Override
- protected void addFilter(ServletContextHandler context) {
- // filters the specified APIs
- // when node is lite fullnode and openHistoryQueryWhenLiteFN is false
- context.addFilter(new FilterHolder(liteFnQueryHttpFilter), "/*",
- EnumSet.allOf(DispatcherType.class));
-
- // api access filter
- context.addFilter(new FilterHolder(httpApiAccessFilter), "/walletsolidity/*",
- EnumSet.allOf(DispatcherType.class));
- context.getServletHandler().getFilterMappings()[1]
- .setPathSpecs(new String[] {"/walletsolidity/*",
- "/wallet/getnodeinfo"});
- }
-}
diff --git a/framework/src/main/java/org/tron/core/services/jsonrpc/JsonRpcServlet.java b/framework/src/main/java/org/tron/core/services/jsonrpc/JsonRpcServlet.java
index ca249da4e5d..c6f14797c46 100644
--- a/framework/src/main/java/org/tron/core/services/jsonrpc/JsonRpcServlet.java
+++ b/framework/src/main/java/org/tron/core/services/jsonrpc/JsonRpcServlet.java
@@ -28,7 +28,7 @@
import org.tron.core.Constant;
import org.tron.core.services.filter.BufferedResponseWrapper;
import org.tron.core.services.filter.CachedBodyRequestWrapper;
-import org.tron.core.services.http.RateLimiterServlet;
+import org.tron.core.services.http.servlets.RateLimiterServlet;
@Component
@Slf4j(topic = "API")
diff --git a/framework/src/main/java/org/tron/core/services/jsonrpc/TronJsonRpcImpl.java b/framework/src/main/java/org/tron/core/services/jsonrpc/TronJsonRpcImpl.java
index 6be47886117..f5ad4ab23d2 100644
--- a/framework/src/main/java/org/tron/core/services/jsonrpc/TronJsonRpcImpl.java
+++ b/framework/src/main/java/org/tron/core/services/jsonrpc/TronJsonRpcImpl.java
@@ -1,8 +1,8 @@
package org.tron.core.services.jsonrpc;
import static org.tron.core.Wallet.CONTRACT_VALIDATE_ERROR;
-import static org.tron.core.services.http.Util.setTransactionExtraData;
-import static org.tron.core.services.http.Util.setTransactionPermissionId;
+import static org.tron.core.services.http.servlets.Util.setTransactionExtraData;
+import static org.tron.core.services.http.servlets.Util.setTransactionPermissionId;
import static org.tron.core.services.jsonrpc.JsonRpcApiUtil.FINALIZED_STR;
import static org.tron.core.services.jsonrpc.JsonRpcApiUtil.HASH_REGEX;
import static org.tron.core.services.jsonrpc.JsonRpcApiUtil.LATEST_STR;
@@ -77,8 +77,8 @@
import org.tron.core.exception.jsonrpc.JsonRpcMethodNotFoundException;
import org.tron.core.exception.jsonrpc.JsonRpcTooManyResultException;
import org.tron.core.services.NodeInfoService;
-import org.tron.core.services.http.JsonFormat;
-import org.tron.core.services.http.Util;
+import org.tron.core.services.http.servlets.JsonFormat;
+import org.tron.core.services.http.servlets.Util;
import org.tron.core.services.jsonrpc.filters.BlockFilterAndResult;
import org.tron.core.services.jsonrpc.filters.LogBlockQuery;
import org.tron.core.services.jsonrpc.filters.LogFilter;
diff --git a/framework/src/test/java/org/tron/common/utils/client/utils/TransactionUtils.java b/framework/src/test/java/org/tron/common/utils/client/utils/TransactionUtils.java
index 63ffe1b58ff..7fa9fa71fa0 100644
--- a/framework/src/test/java/org/tron/common/utils/client/utils/TransactionUtils.java
+++ b/framework/src/test/java/org/tron/common/utils/client/utils/TransactionUtils.java
@@ -30,7 +30,7 @@
import org.tron.core.capsule.TransactionCapsule;
import org.tron.core.exception.PermissionException;
import org.tron.core.exception.SignatureFormatException;
-import org.tron.core.services.http.JsonFormat;
+import org.tron.core.services.http.servlets.JsonFormat;
import org.tron.core.store.AccountStore;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract;
diff --git a/framework/src/test/java/org/tron/core/ShieldWalletTest.java b/framework/src/test/java/org/tron/core/ShieldWalletTest.java
index 0353d260eff..988364bb3c4 100644
--- a/framework/src/test/java/org/tron/core/ShieldWalletTest.java
+++ b/framework/src/test/java/org/tron/core/ShieldWalletTest.java
@@ -26,8 +26,8 @@
import org.tron.core.exception.ContractExeException;
import org.tron.core.exception.ContractValidateException;
import org.tron.core.exception.ZksnarkException;
-import org.tron.core.services.http.JsonFormat;
-import org.tron.core.services.http.JsonFormat.ParseException;
+import org.tron.core.services.http.servlets.JsonFormat;
+import org.tron.core.services.http.servlets.JsonFormat.ParseException;
public class ShieldWalletTest extends BaseTest {
diff --git a/framework/src/test/java/org/tron/core/exception/TronErrorTest.java b/framework/src/test/java/org/tron/core/exception/TronErrorTest.java
index 91559d86362..647df1f7db1 100644
--- a/framework/src/test/java/org/tron/core/exception/TronErrorTest.java
+++ b/framework/src/test/java/org/tron/core/exception/TronErrorTest.java
@@ -38,11 +38,10 @@
import org.tron.common.utils.ReflectUtils;
import org.tron.common.zksnark.JLibrustzcash;
import org.tron.core.config.args.Args;
-import org.tron.core.services.http.GetBlockServlet;
-import org.tron.core.services.http.RateLimiterServlet;
+import org.tron.core.services.http.servlets.GetBlockServlet;
+import org.tron.core.services.http.servlets.RateLimiterServlet;
import org.tron.core.zen.ZksnarkInitService;
-
@RunWith(MockitoJUnitRunner.class)
public class TronErrorTest {
diff --git a/framework/src/test/java/org/tron/core/pbft/PbftApiTest.java b/framework/src/test/java/org/tron/core/pbft/PbftApiTest.java
index 36253333a4e..f3d5636a207 100755
--- a/framework/src/test/java/org/tron/core/pbft/PbftApiTest.java
+++ b/framework/src/test/java/org/tron/core/pbft/PbftApiTest.java
@@ -25,7 +25,7 @@
import org.tron.core.config.args.Args;
import org.tron.core.db.CommonDataBase;
import org.tron.core.db2.ISession;
-import org.tron.core.services.interfaceOnPBFT.http.PBFT.HttpApiOnPBFTService;
+import org.tron.core.services.interfaceOnPBFT.HttpApiOnPBFTService;
import org.tron.core.store.DynamicPropertiesStore;
import org.tron.json.JSON;
import org.tron.json.JSONObject;
diff --git a/framework/src/test/java/org/tron/core/services/filter/HttpApiAccessFilterTest.java b/framework/src/test/java/org/tron/core/services/filter/HttpApiAccessFilterTest.java
index c99b6064d15..bcd8cda6441 100644
--- a/framework/src/test/java/org/tron/core/services/filter/HttpApiAccessFilterTest.java
+++ b/framework/src/test/java/org/tron/core/services/filter/HttpApiAccessFilterTest.java
@@ -21,8 +21,8 @@
import org.tron.common.utils.PublicMethod;
import org.tron.core.config.args.Args;
import org.tron.core.services.http.FullNodeHttpApiService;
-import org.tron.core.services.interfaceOnPBFT.http.PBFT.HttpApiOnPBFTService;
-import org.tron.core.services.interfaceOnSolidity.http.solidity.HttpApiOnSolidityService;
+import org.tron.core.services.interfaceOnPBFT.HttpApiOnPBFTService;
+import org.tron.core.services.interfaceOnSolidity.HttpApiOnSolidityService;
public class HttpApiAccessFilterTest extends BaseTest {
diff --git a/framework/src/test/java/org/tron/core/services/filter/WalletCursorFilterTest.java b/framework/src/test/java/org/tron/core/services/filter/WalletCursorFilterTest.java
new file mode 100644
index 00000000000..22e56633489
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/filter/WalletCursorFilterTest.java
@@ -0,0 +1,74 @@
+package org.tron.core.services.filter;
+
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import org.junit.Test;
+import org.mockito.InOrder;
+import org.tron.core.db.Manager;
+import org.tron.core.db2.core.Chainbase;
+
+/**
+ * Behaviour of the cursor filters that replaced the per-servlet OnSolidity / OnPBFT wrappers.
+ * The route tests only prove which paths are mounted; these prove the cursor is actually switched
+ * for the request and always reset, so a solidity/pbft read cannot silently serve HEAD state and a
+ * cursor cannot leak onto a pooled jetty thread.
+ */
+public class WalletCursorFilterTest {
+
+ @Test
+ public void testSolidityFilterSetsCursorBeforeChainAndResetsAfter() throws Exception {
+ Manager manager = mock(Manager.class);
+ FilterChain chain = mock(FilterChain.class);
+ ServletRequest req = mock(ServletRequest.class);
+ ServletResponse resp = mock(ServletResponse.class);
+
+ new SolidityCursorFilter(manager).doFilter(req, resp, chain);
+
+ // cursor is set to SOLIDITY before the servlet runs and reset only after it returns
+ InOrder order = inOrder(manager, chain);
+ order.verify(manager).setCursor(Chainbase.Cursor.SOLIDITY);
+ order.verify(chain).doFilter(req, resp);
+ order.verify(manager).resetCursor();
+ }
+
+ @Test
+ public void testPbftFilterSetsCursorBeforeChainAndResetsAfter() throws Exception {
+ Manager manager = mock(Manager.class);
+ FilterChain chain = mock(FilterChain.class);
+ ServletRequest req = mock(ServletRequest.class);
+ ServletResponse resp = mock(ServletResponse.class);
+
+ new PbftCursorFilter(manager).doFilter(req, resp, chain);
+
+ InOrder order = inOrder(manager, chain);
+ order.verify(manager).setCursor(Chainbase.Cursor.PBFT);
+ order.verify(chain).doFilter(req, resp);
+ order.verify(manager).resetCursor();
+ }
+
+ @Test
+ public void testCursorIsResetWhenChainThrows() throws Exception {
+ Manager manager = mock(Manager.class);
+ FilterChain chain = mock(FilterChain.class);
+ ServletRequest req = mock(ServletRequest.class);
+ ServletResponse resp = mock(ServletResponse.class);
+ doThrow(new ServletException("boom")).when(chain).doFilter(req, resp);
+
+ try {
+ new SolidityCursorFilter(manager).doFilter(req, resp, chain);
+ fail("expected the chain exception to propagate");
+ } catch (ServletException expected) {
+ // expected
+ }
+ // the finally block must still restore HEAD, or the next request on this thread reads SOLIDITY
+ verify(manager).resetCursor();
+ }
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/CursorFilterInstallationTest.java b/framework/src/test/java/org/tron/core/services/http/CursorFilterInstallationTest.java
new file mode 100644
index 00000000000..7af802617e3
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/CursorFilterInstallationTest.java
@@ -0,0 +1,109 @@
+package org.tron.core.services.http;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.withSettings;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import javax.servlet.Filter;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.FilterMapping;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Answers;
+import org.tron.core.db.Manager;
+import org.tron.core.services.filter.PbftCursorFilter;
+import org.tron.core.services.filter.SolidityCursorFilter;
+import org.tron.core.services.http.solidity.SolidityNodeHttpApiService;
+import org.tron.core.services.interfaceOnPBFT.HttpApiOnPBFTService;
+import org.tron.core.services.interfaceOnSolidity.HttpApiOnSolidityService;
+
+/**
+ * Guards that each http service installs (or omits) its read-cursor filter. The route tests cannot
+ * catch a dropped cursor filter — the paths would still mount, but a solidity/pbft read would
+ * silently serve HEAD state. This pins the filter to its port so that regression fails a test.
+ */
+public class CursorFilterInstallationTest {
+
+ @Test
+ public void testSolidityServiceInstallsSolidityCursorFilterOnAllPaths() throws Exception {
+ Map> cursor = cursorFilterMappings(HttpApiOnSolidityService.class);
+ Assert.assertEquals(Collections.singleton("/*"), cursor.get("SolidityCursorFilter"));
+ Assert.assertEquals(1, cursor.size());
+ }
+
+ @Test
+ public void testPbftServiceInstallsPbftCursorFilterOnAllPaths() throws Exception {
+ Map> cursor = cursorFilterMappings(HttpApiOnPBFTService.class);
+ Assert.assertEquals(Collections.singleton("/*"), cursor.get("PbftCursorFilter"));
+ Assert.assertEquals(1, cursor.size());
+ }
+
+ @Test
+ public void testFullNodeServiceInstallsNoCursorFilter() throws Exception {
+ // the fullnode port reads HEAD; a cursor filter here would switch it off HEAD
+ Assert.assertTrue(cursorFilterMappings(FullNodeHttpApiService.class).isEmpty());
+ }
+
+ @Test
+ public void testSolidityNodeServiceInstallsNoCursorFilter() throws Exception {
+ // the standalone solidity node's db head already is the solidified view
+ Assert.assertTrue(cursorFilterMappings(SolidityNodeHttpApiService.class).isEmpty());
+ }
+
+ /**
+ * Runs a service's real addFilter against a jetty context with its filter fields injected, and
+ * returns each installed cursor filter's simple class name mapped to its path specs.
+ */
+ private static Map> cursorFilterMappings(Class> serviceClass)
+ throws Exception {
+ Manager manager = mock(Manager.class);
+ Object service = mock(serviceClass, withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS));
+ for (Field field : serviceClass.getDeclaredFields()) {
+ if (!Filter.class.isAssignableFrom(field.getType())) {
+ continue;
+ }
+ field.setAccessible(true);
+ if (field.getType() == SolidityCursorFilter.class) {
+ field.set(service, new SolidityCursorFilter(manager));
+ } else if (field.getType() == PbftCursorFilter.class) {
+ field.set(service, new PbftCursorFilter(manager));
+ } else {
+ field.set(service, mock(field.getType()));
+ }
+ }
+
+ ServletContextHandler context = new ServletContextHandler();
+ Method addFilter = serviceClass.getDeclaredMethod("addFilter", ServletContextHandler.class);
+ addFilter.setAccessible(true);
+ addFilter.invoke(service, context);
+
+ // identify cursor filters by held class name (an instance holder's getFilter() is null before
+ // start, but its class name is set in the constructor)
+ Map cursorFilterNames = new HashMap<>();
+ for (FilterHolder holder : context.getServletHandler().getFilters()) {
+ String className = holder.getClassName();
+ if (SolidityCursorFilter.class.getName().equals(className)
+ || PbftCursorFilter.class.getName().equals(className)) {
+ cursorFilterNames.put(holder.getName(),
+ className.substring(className.lastIndexOf('.') + 1));
+ }
+ }
+ Map> result = new HashMap<>();
+ for (FilterMapping mapping : context.getServletHandler().getFilterMappings()) {
+ String simpleName = cursorFilterNames.get(mapping.getFilterName());
+ if (simpleName != null) {
+ result.computeIfAbsent(simpleName, k -> new HashSet<>())
+ .addAll(Arrays.asList(mapping.getPathSpecs()));
+ }
+ }
+ return result;
+ }
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/HttpApiRegistryTest.java b/framework/src/test/java/org/tron/core/services/http/HttpApiRegistryTest.java
new file mode 100644
index 00000000000..a235c38dd8b
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/HttpApiRegistryTest.java
@@ -0,0 +1,184 @@
+package org.tron.core.services.http;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.withSettings;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletMapping;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Answers;
+import org.springframework.context.ApplicationContext;
+import org.tron.core.services.http.HttpApi.Surface;
+import org.tron.core.services.http.solidity.SolidityNodeHttpApiService;
+import org.tron.core.services.interfaceOnPBFT.HttpApiOnPBFTService;
+import org.tron.core.services.interfaceOnSolidity.HttpApiOnSolidityService;
+
+public class HttpApiRegistryTest {
+
+ private static final String REGTEST = "org.tron.core.services.http.regtest.";
+
+ @Test
+ public void testValidFixturePackageBuilds() {
+ List entries =
+ HttpApiRegistry.buildFromPackage(REGTEST + "valid");
+ Set suffixes = new TreeSet<>();
+ for (HttpApiRegistry.Entry entry : entries) {
+ suffixes.add(entry.getSuffix());
+ }
+ Assert.assertEquals(new TreeSet<>(Arrays.asList("validread", "validwrite")), suffixes);
+ }
+
+ @Test
+ public void testUnannotatedServletRejected() {
+ assertBuildFails(REGTEST + "noanno", "must declare exactly one");
+ }
+
+ @Test
+ public void testBothAnnotationsRejected() {
+ assertBuildFails(REGTEST + "both", "must declare exactly one");
+ }
+
+ @Test
+ public void testWriteOnCursorSurfaceRejected() {
+ assertBuildFails(REGTEST + "writecursor", "may only be exposed on the FULL surface");
+ }
+
+ @Test
+ public void testBuildOnCursorSurfaceRejected() {
+ assertBuildFails(REGTEST + "buildcursor", "may only be exposed on the FULL surface");
+ }
+
+ @Test
+ public void testDuplicateSuffixRejected() {
+ assertBuildFails(REGTEST + "dupsuffix", "duplicate endpoint");
+ }
+
+ @Test
+ public void testSlashInSuffixRejected() {
+ assertBuildFails(REGTEST + "slash", "must not contain '/'");
+ }
+
+ @Test
+ public void testBlankSuffixRejected() {
+ assertBuildFails(REGTEST + "blank", "blank");
+ }
+
+ @Test
+ public void testMissingComponentRejected() {
+ assertBuildFails(REGTEST + "notcomponent", "must be a @Component");
+ }
+
+ @Test
+ public void testEmptySurfacesRejected() {
+ assertBuildFails(REGTEST + "emptysurface", "at least one surface");
+ }
+
+ /**
+ * A suffix is concatenated into a jetty path spec, so {@code *} would mount the servlet as a
+ * prefix wildcard swallowing every sibling endpoint under the same prefix.
+ */
+ @Test
+ public void testWildcardSuffixRejected() {
+ assertBuildFails(REGTEST + "wildcard", "single path token");
+ }
+
+ /** A suffix carrying whitespace mounts an endpoint at a path no client can request. */
+ @Test
+ public void testWhitespaceInSuffixRejected() {
+ assertBuildFails(REGTEST + "whitespace", "single path token");
+ }
+
+ /**
+ * A nested class can never be mounted, so declaring an endpoint on one must fail loudly rather
+ * than drop the endpoint silently — the omission this registry exists to prevent.
+ */
+ @Test
+ public void testNestedEndpointDeclarationRejected() {
+ assertBuildFails(REGTEST + "nested", "must be a concrete top-level class");
+ }
+
+ private void assertBuildFails(String pkg, String fragment) {
+ try {
+ HttpApiRegistry.buildFromPackage(pkg);
+ Assert.fail("expected build to fail for " + pkg);
+ } catch (IllegalStateException e) {
+ Assert.assertTrue("message '" + e.getMessage() + "' should contain '" + fragment + "'",
+ e.getMessage() != null && e.getMessage().contains(fragment));
+ }
+ }
+
+ @Test
+ public void testFullNodeServiceMountsExactlyTheRegistry() throws Exception {
+ Set expected = pathsOf(Surface.FULL, "/wallet/");
+ expected.add("/net/listnodes");
+ expected.add("/monitor/getstatsinfo");
+ expected.add("/monitor/getnodeinfo");
+ Assert.assertEquals(expected, mountedPaths(FullNodeHttpApiService.class));
+ }
+
+ @Test
+ public void testSolidityServiceMountsExactlyTheRegistry() throws Exception {
+ Set expected = pathsOf(Surface.SOLIDITY, "/walletsolidity/");
+ expected.add("/wallet/getnodeinfo");
+ Assert.assertEquals(expected, mountedPaths(HttpApiOnSolidityService.class));
+ }
+
+ @Test
+ public void testPbftServiceMountsExactlyTheRegistry() throws Exception {
+ Set expected = pathsOf(Surface.PBFT, "/");
+ Assert.assertEquals(expected, mountedPaths(HttpApiOnPBFTService.class));
+ }
+
+ @Test
+ public void testSolidityNodeServiceMountsExactlyTheRegistry() throws Exception {
+ Set expected = pathsOf(Surface.SOLIDITY_NODE, "/walletsolidity/");
+ expected.add("/wallet/getnodeinfo");
+ Assert.assertEquals(expected, mountedPaths(SolidityNodeHttpApiService.class));
+ }
+
+ private static Set pathsOf(Surface surface, String prefix) {
+ Set paths = new HashSet<>();
+ for (HttpApiRegistry.Entry entry : HttpApiRegistry.forSurface(surface)) {
+ paths.add(prefix + entry.getSuffix());
+ }
+ return paths;
+ }
+
+ /**
+ * Instantiates the service without running its constructor, injects a mock application
+ * context whose beans are mocks, runs the registry-driven registration against a real
+ * jetty context and returns every mounted path spec.
+ */
+ private static Set mountedPaths(Class> serviceClass) throws Exception {
+ ApplicationContext ctx = mock(ApplicationContext.class);
+ given(ctx.getBean(any(Class.class))).willAnswer(inv -> mock((Class>) inv.getArgument(0)));
+
+ Object service = mock(serviceClass,
+ withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS));
+ Field appContext = serviceClass.getDeclaredField("appContext");
+ appContext.setAccessible(true);
+ appContext.set(service, ctx);
+
+ ServletContextHandler context = new ServletContextHandler();
+ Method register = serviceClass
+ .getDeclaredMethod("addServletsFromRegistry", ServletContextHandler.class);
+ register.setAccessible(true);
+ register.invoke(service, context);
+
+ Set mounted = new HashSet<>();
+ for (ServletMapping mapping : context.getServletHandler().getServletMappings()) {
+ mounted.addAll(Arrays.asList(mapping.getPathSpecs()));
+ }
+ return mounted;
+ }
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/RateLimiterServletInt64Test.java b/framework/src/test/java/org/tron/core/services/http/RateLimiterServletInt64Test.java
index 882c5f99833..62266051aa9 100644
--- a/framework/src/test/java/org/tron/core/services/http/RateLimiterServletInt64Test.java
+++ b/framework/src/test/java/org/tron/core/services/http/RateLimiterServletInt64Test.java
@@ -13,6 +13,9 @@
import org.tron.common.BaseTest;
import org.tron.common.TestConstants;
import org.tron.core.config.args.Args;
+import org.tron.core.services.http.servlets.GetBurnTrxServlet;
+import org.tron.core.services.http.servlets.GetNowBlockServlet;
+import org.tron.core.services.http.servlets.JsonFormat;
/**
* End-to-end integration tests for {@link RateLimiterServlet#service} wiring of the
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/blank/BlankServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/blank/BlankServlet.java
new file mode 100644
index 00000000000..bb226bb0a4b
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/blank/BlankServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.blank;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Blank suffix. */
+@Component
+@HttpApi(value = "", access = Access.READ, surfaces = {Surface.FULL})
+public class BlankServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/both/BothServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/both/BothServlet.java
new file mode 100644
index 00000000000..1ecb2906c4d
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/both/BothServlet.java
@@ -0,0 +1,15 @@
+package org.tron.core.services.http.regtest.both;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+import org.tron.core.services.http.HttpApiExcluded;
+
+/** Declares both annotations. */
+@Component
+@HttpApiExcluded("conflicting")
+@HttpApi(value = "both", access = Access.READ, surfaces = {Surface.FULL})
+public class BothServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/buildcursor/BuildOnPbftServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/buildcursor/BuildOnPbftServlet.java
new file mode 100644
index 00000000000..ce63244a91c
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/buildcursor/BuildOnPbftServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.buildcursor;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** BUILD on a cursor surface. */
+@Component
+@HttpApi(value = "buildcursor", access = Access.BUILD, surfaces = {Surface.PBFT})
+public class BuildOnPbftServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupOneServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupOneServlet.java
new file mode 100644
index 00000000000..b5126f5ec28
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupOneServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.dupsuffix;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Duplicate suffix, one. */
+@Component
+@HttpApi(value = "dup", access = Access.READ, surfaces = {Surface.FULL})
+public class DupOneServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupTwoServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupTwoServlet.java
new file mode 100644
index 00000000000..96061b55133
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupTwoServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.dupsuffix;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Duplicate suffix, two. */
+@Component
+@HttpApi(value = "dup", access = Access.READ, surfaces = {Surface.FULL})
+public class DupTwoServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/emptysurface/EmptySurfaceServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/emptysurface/EmptySurfaceServlet.java
new file mode 100644
index 00000000000..2cfbdd0da60
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/emptysurface/EmptySurfaceServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.emptysurface;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** No surfaces. */
+@Component
+@HttpApi(value = "empty", access = Access.READ, surfaces = {})
+public class EmptySurfaceServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/nested/NestedHolder.java b/framework/src/test/java/org/tron/core/services/http/regtest/nested/NestedHolder.java
new file mode 100644
index 00000000000..c6332f3b2dd
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/nested/NestedHolder.java
@@ -0,0 +1,16 @@
+package org.tron.core.services.http.regtest.nested;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Probe: a NESTED servlet that declares @HttpApi — is it silently dropped? */
+public class NestedHolder {
+
+ @Component
+ @HttpApi(value = "nestedendpoint", access = Access.READ, surfaces = {Surface.FULL})
+ public static class NestedEndpointServlet extends HttpServlet {
+ }
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/noanno/NoAnnoServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/noanno/NoAnnoServlet.java
new file mode 100644
index 00000000000..53093610e99
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/noanno/NoAnnoServlet.java
@@ -0,0 +1,8 @@
+package org.tron.core.services.http.regtest.noanno;
+
+import javax.servlet.http.HttpServlet;
+
+/** Servlet with no registry annotation. */
+
+public class NoAnnoServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/notcomponent/NotComponentServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/notcomponent/NotComponentServlet.java
new file mode 100644
index 00000000000..e4ac3eb7a68
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/notcomponent/NotComponentServlet.java
@@ -0,0 +1,11 @@
+package org.tron.core.services.http.regtest.notcomponent;
+
+import javax.servlet.http.HttpServlet;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** @HttpApi without @Component. */
+@HttpApi(value = "notcomp", access = Access.READ, surfaces = {Surface.FULL})
+public class NotComponentServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/slash/SlashServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/slash/SlashServlet.java
new file mode 100644
index 00000000000..47481168fb0
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/slash/SlashServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.slash;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Suffix with a slash. */
+@Component
+@HttpApi(value = "a/b", access = Access.READ, surfaces = {Surface.FULL})
+public class SlashServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidExcludedServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidExcludedServlet.java
new file mode 100644
index 00000000000..9db7a4b52a5
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidExcludedServlet.java
@@ -0,0 +1,9 @@
+package org.tron.core.services.http.regtest.valid;
+
+import javax.servlet.http.HttpServlet;
+import org.tron.core.services.http.HttpApiExcluded;
+
+/** Excluded fixture, skipped by the registry. */
+@HttpApiExcluded("excluded fixture")
+public class ValidExcludedServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidReadServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidReadServlet.java
new file mode 100644
index 00000000000..2dc5b0065b0
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidReadServlet.java
@@ -0,0 +1,14 @@
+package org.tron.core.services.http.regtest.valid;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Valid READ fixture. */
+@Component
+@HttpApi(value = "validread", access = Access.READ,
+ surfaces = {Surface.FULL, Surface.SOLIDITY})
+public class ValidReadServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidWriteServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidWriteServlet.java
new file mode 100644
index 00000000000..97cfe624028
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidWriteServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.valid;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Valid WRITE fixture. */
+@Component
+@HttpApi(value = "validwrite", access = Access.WRITE, surfaces = {Surface.FULL})
+public class ValidWriteServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/whitespace/WhitespaceServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/whitespace/WhitespaceServlet.java
new file mode 100644
index 00000000000..349d6ce6dc6
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/whitespace/WhitespaceServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.whitespace;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Probe: suffix with surrounding whitespace — stored untrimmed. */
+@Component
+@HttpApi(value = " getaccount ", access = Access.READ, surfaces = {Surface.FULL})
+public class WhitespaceServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/wildcard/WildcardServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/wildcard/WildcardServlet.java
new file mode 100644
index 00000000000..270d27945ec
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/wildcard/WildcardServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.wildcard;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** Probe: suffix "*" — would mount as the Jetty prefix wildcard /wallet/*. */
+@Component
+@HttpApi(value = "*", access = Access.READ, surfaces = {Surface.FULL})
+public class WildcardServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/regtest/writecursor/WriteOnSolidityServlet.java b/framework/src/test/java/org/tron/core/services/http/regtest/writecursor/WriteOnSolidityServlet.java
new file mode 100644
index 00000000000..add471f2fff
--- /dev/null
+++ b/framework/src/test/java/org/tron/core/services/http/regtest/writecursor/WriteOnSolidityServlet.java
@@ -0,0 +1,13 @@
+package org.tron.core.services.http.regtest.writecursor;
+
+import javax.servlet.http.HttpServlet;
+import org.springframework.stereotype.Component;
+import org.tron.core.services.http.HttpApi;
+import org.tron.core.services.http.HttpApi.Access;
+import org.tron.core.services.http.HttpApi.Surface;
+
+/** WRITE on a cursor surface. */
+@Component
+@HttpApi(value = "writecursor", access = Access.WRITE, surfaces = {Surface.SOLIDITY})
+public class WriteOnSolidityServlet extends HttpServlet {
+}
diff --git a/framework/src/test/java/org/tron/core/services/http/AccountPermissionUpdateServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/AccountPermissionUpdateServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/AccountPermissionUpdateServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/AccountPermissionUpdateServletTest.java
index e93c41397a2..413ee37700b 100644
--- a/framework/src/test/java/org/tron/core/services/http/AccountPermissionUpdateServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/AccountPermissionUpdateServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/BaseHttpTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/BaseHttpTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/BaseHttpTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/BaseHttpTest.java
index 47710a8ca93..f1019abad55 100644
--- a/framework/src/test/java/org/tron/core/services/http/BaseHttpTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/BaseHttpTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/BroadcastServletTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/BroadcastServletTest.java
index 532ddcd5521..83a9c88f72e 100644
--- a/framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/BroadcastServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock;
diff --git a/framework/src/test/java/org/tron/core/services/http/CancelAllUnfreezeV2ServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/CancelAllUnfreezeV2ServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/CancelAllUnfreezeV2ServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/CancelAllUnfreezeV2ServletTest.java
index 59a3f02256c..0ebc0984c9a 100644
--- a/framework/src/test/java/org/tron/core/services/http/CancelAllUnfreezeV2ServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/CancelAllUnfreezeV2ServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ClearABIServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ClearABIServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/ClearABIServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ClearABIServletTest.java
index 9d75226aa42..6da52cfe751 100644
--- a/framework/src/test/java/org/tron/core/services/http/ClearABIServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ClearABIServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertTrue;
diff --git a/framework/src/test/java/org/tron/core/services/http/CreateAccountServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/CreateAccountServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/CreateAccountServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/CreateAccountServletTest.java
index c9d6a4f2a63..4df55141b70 100644
--- a/framework/src/test/java/org/tron/core/services/http/CreateAccountServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/CreateAccountServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.fail;
@@ -21,7 +21,6 @@
import org.tron.json.JSONObject;
import org.tron.protos.Protocol;
-
public class CreateAccountServletTest extends BaseTest {
static {
diff --git a/framework/src/test/java/org/tron/core/services/http/CreateAssetIssueServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/CreateAssetIssueServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/CreateAssetIssueServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/CreateAssetIssueServletTest.java
index 9a53814ea11..e4e34b78d01 100644
--- a/framework/src/test/java/org/tron/core/services/http/CreateAssetIssueServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/CreateAssetIssueServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/CreateSpendAuthSigServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/CreateSpendAuthSigServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/CreateSpendAuthSigServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/CreateSpendAuthSigServletTest.java
index 2253fecfb52..fadc417f6c4 100644
--- a/framework/src/test/java/org/tron/core/services/http/CreateSpendAuthSigServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/CreateSpendAuthSigServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/CreateWitnessServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/CreateWitnessServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/CreateWitnessServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/CreateWitnessServletTest.java
index bd8145fed7b..b677e050902 100644
--- a/framework/src/test/java/org/tron/core/services/http/CreateWitnessServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/CreateWitnessServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/DelegateResourceServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/DelegateResourceServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/DelegateResourceServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/DelegateResourceServletTest.java
index 07ca6750e31..aba05e1b4b2 100644
--- a/framework/src/test/java/org/tron/core/services/http/DelegateResourceServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/DelegateResourceServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/DeployContractServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/DeployContractServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/DeployContractServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/DeployContractServletTest.java
index 703f278c890..8a866869b56 100644
--- a/framework/src/test/java/org/tron/core/services/http/DeployContractServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/DeployContractServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
diff --git a/framework/src/test/java/org/tron/core/services/http/ExchangeCreateServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeCreateServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/ExchangeCreateServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ExchangeCreateServletTest.java
index 11840a895bd..c3371bcb620 100644
--- a/framework/src/test/java/org/tron/core/services/http/ExchangeCreateServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeCreateServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ExchangeInjectServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeInjectServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ExchangeInjectServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ExchangeInjectServletTest.java
index f2f661732d2..4a4a26474c1 100644
--- a/framework/src/test/java/org/tron/core/services/http/ExchangeInjectServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeInjectServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ExchangeTransactionServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeTransactionServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/ExchangeTransactionServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ExchangeTransactionServletTest.java
index 6e986288b3c..1cbf2c10575 100644
--- a/framework/src/test/java/org/tron/core/services/http/ExchangeTransactionServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeTransactionServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ExchangeWithdrawServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeWithdrawServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ExchangeWithdrawServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ExchangeWithdrawServletTest.java
index b1147b819dd..2dddaba915a 100644
--- a/framework/src/test/java/org/tron/core/services/http/ExchangeWithdrawServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ExchangeWithdrawServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/FreezeBalanceServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/FreezeBalanceServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/FreezeBalanceServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/FreezeBalanceServletTest.java
index 9d56381f9a8..c652c405303 100644
--- a/framework/src/test/java/org/tron/core/services/http/FreezeBalanceServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/FreezeBalanceServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/FreezeBalanceV2ServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/FreezeBalanceV2ServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/FreezeBalanceV2ServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/FreezeBalanceV2ServletTest.java
index 414054501e6..65e63cdb390 100644
--- a/framework/src/test/java/org/tron/core/services/http/FreezeBalanceV2ServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/FreezeBalanceV2ServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAccountByIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAccountByIdServletTest.java
similarity index 96%
rename from framework/src/test/java/org/tron/core/services/http/GetAccountByIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAccountByIdServletTest.java
index 885e5b2a1cf..8afee18f6e0 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAccountByIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAccountByIdServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.apache.commons.lang3.StringUtils.isNotEmpty;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAccountResourceServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAccountResourceServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetAccountResourceServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAccountResourceServletTest.java
index cc5ed97b94b..49b499d0a55 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAccountResourceServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAccountResourceServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAccountServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAccountServletTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/GetAccountServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAccountServletTest.java
index 1c1d42c9a5c..8401bc3045e 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAccountServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAccountServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueByIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueByIdServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetAssetIssueByIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueByIdServletTest.java
index b87331d6d61..dea33eebea8 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueByIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueByIdServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueByNameServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueByNameServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetAssetIssueByNameServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueByNameServletTest.java
index ccfa3af2e56..adc5ff8e064 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueByNameServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueByNameServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueListByNameServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueListByNameServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetAssetIssueListByNameServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueListByNameServletTest.java
index e3055e21f99..9d73bc4c812 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueListByNameServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueListByNameServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueListServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueListServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetAssetIssueListServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueListServletTest.java
index 2b9e997cf80..71b8d754590 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetAssetIssueListServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetAssetIssueListServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetBandwidthPricesServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetBandwidthPricesServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetBandwidthPricesServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetBandwidthPricesServletTest.java
index 2ddfda17bef..b47e19b6762 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetBandwidthPricesServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetBandwidthPricesServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetBlockByIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetBlockByIdServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetBlockByIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetBlockByIdServletTest.java
index 8e04713922a..83adb0d73b7 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetBlockByIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetBlockByIdServletTest.java
@@ -1,10 +1,9 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
import javax.annotation.Resource;
-
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.junit.Assert;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetBlockByNumServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetBlockByNumServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetBlockByNumServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetBlockByNumServletTest.java
index b28e1d33308..14248be2484 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetBlockByNumServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetBlockByNumServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertTrue;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetBlockServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetBlockServletTest.java
similarity index 96%
rename from framework/src/test/java/org/tron/core/services/http/GetBlockServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetBlockServletTest.java
index f48f9eb0fbc..3965bd55c1d 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetBlockServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetBlockServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetBrokerageServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetBrokerageServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetBrokerageServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetBrokerageServletTest.java
index 9b37c2e4205..5a778d077a2 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetBrokerageServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetBrokerageServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import java.io.UnsupportedEncodingException;
import javax.annotation.Resource;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetContractInfoServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetContractInfoServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetContractInfoServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetContractInfoServletTest.java
index 532bb42706f..887a884aae4 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetContractInfoServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetContractInfoServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetContractServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetContractServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetContractServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetContractServletTest.java
index 074093de2a1..620010f87ed 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetContractServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetContractServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexServletTest.java
index 21a455c108f..29c50ce0cc3 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexV2ServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexV2ServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexV2ServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexV2ServletTest.java
index 41be6db4d5a..3f0d6385275 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetDelegatedResourceAccountIndexV2ServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetDelegatedResourceAccountIndexV2ServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetEnergyPricesServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetEnergyPricesServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetEnergyPricesServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetEnergyPricesServletTest.java
index f0fe69fe450..e7bfc0380e1 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetEnergyPricesServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetEnergyPricesServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetExchangeByIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetExchangeByIdServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetExchangeByIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetExchangeByIdServletTest.java
index f67072e9856..e62cef02608 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetExchangeByIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetExchangeByIdServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetMarketOrderByAccountServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetMarketOrderByAccountServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetMarketOrderByAccountServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetMarketOrderByAccountServletTest.java
index a1895231f8a..bcb30e51ca2 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetMarketOrderByAccountServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetMarketOrderByAccountServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetMemoFeePricesServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetMemoFeePricesServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/GetMemoFeePricesServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetMemoFeePricesServletTest.java
index b9440aa948f..102ceab2458 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetMemoFeePricesServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetMemoFeePricesServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetNowBlockServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetNowBlockServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetNowBlockServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetNowBlockServletTest.java
index 1179e914d32..43442f20e17 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetNowBlockServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetNowBlockServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.commons.lang3.StringUtils.EMPTY;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetProposalByIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetProposalByIdServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetProposalByIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetProposalByIdServletTest.java
index cf64adcb1a1..24ee48a8826 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetProposalByIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetProposalByIdServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetRewardServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetRewardServletTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/GetRewardServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetRewardServletTest.java
index 9afa5607a66..10920c4fb8b 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetRewardServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetRewardServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.tron.common.utils.Commons.decodeFromBase58Check;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionInfoByBlockNumServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionInfoByBlockNumServletTest.java
index 1763e440b48..44fc9f63e5e 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionInfoByBlockNumServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetTransactionInfoByIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionInfoByIdServletTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/GetTransactionInfoByIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionInfoByIdServletTest.java
index 6793433371d..b80310da18a 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetTransactionInfoByIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionInfoByIdServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
diff --git a/framework/src/test/java/org/tron/core/services/http/GetTransactionListFromPendingServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionListFromPendingServletTest.java
similarity index 95%
rename from framework/src/test/java/org/tron/core/services/http/GetTransactionListFromPendingServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionListFromPendingServletTest.java
index 52277992850..0b7054c9e41 100644
--- a/framework/src/test/java/org/tron/core/services/http/GetTransactionListFromPendingServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/GetTransactionListFromPendingServletTest.java
@@ -1,10 +1,9 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
import javax.annotation.Resource;
-
import org.apache.http.client.methods.HttpGet;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
@@ -13,7 +12,6 @@
import org.tron.common.TestConstants;
import org.tron.core.config.args.Args;
-
public class GetTransactionListFromPendingServletTest extends BaseTest {
@Resource
diff --git a/framework/src/test/java/org/tron/core/services/http/HttpServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/HttpServletTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/HttpServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/HttpServletTest.java
index 03cf11f39a1..ef03cef1920 100644
--- a/framework/src/test/java/org/tron/core/services/http/HttpServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/HttpServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
diff --git a/framework/src/test/java/org/tron/core/services/http/JsonFormatEscapeTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatEscapeTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/JsonFormatEscapeTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatEscapeTest.java
index a5c74cc434d..c522d29af03 100644
--- a/framework/src/test/java/org/tron/core/services/http/JsonFormatEscapeTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatEscapeTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -16,6 +16,7 @@
import org.junit.Test;
import org.tron.common.utils.ByteArray;
import org.tron.core.capsule.TransactionCapsule;
+import org.tron.core.services.http.HttpSelfFormatFieldName;
import org.tron.protos.Protocol.Transaction;
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
import org.tron.protos.contract.AssetIssueContractOuterClass.AssetIssueContract;
diff --git a/framework/src/test/java/org/tron/core/services/http/JsonFormatInt64AsStringTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatInt64AsStringTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/JsonFormatInt64AsStringTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatInt64AsStringTest.java
index 77ea73999d1..4c0805b4536 100644
--- a/framework/src/test/java/org/tron/core/services/http/JsonFormatInt64AsStringTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatInt64AsStringTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
diff --git a/framework/src/test/java/org/tron/core/services/http/JsonFormatTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/JsonFormatTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatTest.java
index 46d1743c5b9..a5bf388e74c 100644
--- a/framework/src/test/java/org/tron/core/services/http/JsonFormatTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/JsonFormatTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -8,13 +8,11 @@
import com.google.protobuf.ByteString;
import com.google.protobuf.UnknownFieldSet;
-
import java.io.CharArrayReader;
import java.io.IOException;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-
import org.junit.After;
import org.junit.Test;
import org.mockito.Mockito;
diff --git a/framework/src/test/java/org/tron/core/services/http/ListNodesServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ListNodesServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/ListNodesServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ListNodesServletTest.java
index 767d89c6e2f..a371cf5b468 100644
--- a/framework/src/test/java/org/tron/core/services/http/ListNodesServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ListNodesServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertNotNull;
diff --git a/framework/src/test/java/org/tron/core/services/http/ListProposalsServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ListProposalsServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/ListProposalsServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ListProposalsServletTest.java
index f600f704aa7..2d4604f60a2 100644
--- a/framework/src/test/java/org/tron/core/services/http/ListProposalsServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ListProposalsServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.fail;
diff --git a/framework/src/test/java/org/tron/core/services/http/MarketCancelOrderServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/MarketCancelOrderServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/MarketCancelOrderServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/MarketCancelOrderServletTest.java
index 7c8e529b275..8f0131c6e64 100644
--- a/framework/src/test/java/org/tron/core/services/http/MarketCancelOrderServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/MarketCancelOrderServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/MarketSellAssetServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/MarketSellAssetServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/MarketSellAssetServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/MarketSellAssetServletTest.java
index e82178b909a..79240798fa6 100644
--- a/framework/src/test/java/org/tron/core/services/http/MarketSellAssetServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/MarketSellAssetServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ParticipateAssetIssueServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ParticipateAssetIssueServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/ParticipateAssetIssueServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ParticipateAssetIssueServletTest.java
index 0fbfe73d6fc..50c24d9ca43 100644
--- a/framework/src/test/java/org/tron/core/services/http/ParticipateAssetIssueServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ParticipateAssetIssueServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ProposalApproveServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ProposalApproveServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ProposalApproveServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ProposalApproveServletTest.java
index f017b06de24..c2d679d5961 100644
--- a/framework/src/test/java/org/tron/core/services/http/ProposalApproveServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ProposalApproveServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ProposalCreateServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ProposalCreateServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ProposalCreateServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ProposalCreateServletTest.java
index 0057aa7bd2d..a4cc5809420 100644
--- a/framework/src/test/java/org/tron/core/services/http/ProposalCreateServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ProposalCreateServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/ProposalDeleteServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ProposalDeleteServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ProposalDeleteServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ProposalDeleteServletTest.java
index 90a25e5bb68..0b9f67e5eb2 100644
--- a/framework/src/test/java/org/tron/core/services/http/ProposalDeleteServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ProposalDeleteServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/RateLimiterServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/RateLimiterServletTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/RateLimiterServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/RateLimiterServletTest.java
index 26826c5709d..bb4da26a046 100644
--- a/framework/src/test/java/org/tron/core/services/http/RateLimiterServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/RateLimiterServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
diff --git a/framework/src/test/java/org/tron/core/services/http/ScanShieldedTRC20NotesServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ScanShieldedTRC20NotesServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesServletTest.java
index c53274897e7..22654be47b9 100644
--- a/framework/src/test/java/org/tron/core/services/http/ScanShieldedTRC20NotesServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ScanShieldedTRC20NotesServletTest.java
@@ -1,8 +1,8 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
-import static org.tron.core.services.http.Util.EVENTS_DEPRECATED_MSG;
+import static org.tron.core.services.http.servlets.Util.EVENTS_DEPRECATED_MSG;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
diff --git a/framework/src/test/java/org/tron/core/services/http/SetAccountIdServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/SetAccountIdServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/SetAccountIdServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/SetAccountIdServletTest.java
index 6967372c9ac..7c2007212d1 100644
--- a/framework/src/test/java/org/tron/core/services/http/SetAccountIdServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/SetAccountIdServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/TransferAssetServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/TransferAssetServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/TransferAssetServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/TransferAssetServletTest.java
index 49652f3361d..75e8ad7bbc3 100644
--- a/framework/src/test/java/org/tron/core/services/http/TransferAssetServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/TransferAssetServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/TransferServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/TransferServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/TransferServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/TransferServletTest.java
index b04c6255dac..96875375fb8 100644
--- a/framework/src/test/java/org/tron/core/services/http/TransferServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/TransferServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/TriggerConstantContractServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/TriggerConstantContractServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/TriggerConstantContractServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/TriggerConstantContractServletTest.java
index 2a139f8a158..d6d71e41a7a 100644
--- a/framework/src/test/java/org/tron/core/services/http/TriggerConstantContractServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/TriggerConstantContractServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
diff --git a/framework/src/test/java/org/tron/core/services/http/TriggerSmartContractServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/TriggerSmartContractServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/TriggerSmartContractServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/TriggerSmartContractServletTest.java
index bae9523401b..c5389e681da 100644
--- a/framework/src/test/java/org/tron/core/services/http/TriggerSmartContractServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/TriggerSmartContractServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.gson.JsonObject;
import lombok.extern.slf4j.Slf4j;
diff --git a/framework/src/test/java/org/tron/core/services/http/UnDelegateResourceServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UnDelegateResourceServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/UnDelegateResourceServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UnDelegateResourceServletTest.java
index fbdb0138c41..9dfa957ed07 100644
--- a/framework/src/test/java/org/tron/core/services/http/UnDelegateResourceServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UnDelegateResourceServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UnFreezeAssetServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeAssetServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/UnFreezeAssetServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeAssetServletTest.java
index a9c784c38e8..f57fe9c07d3 100644
--- a/framework/src/test/java/org/tron/core/services/http/UnFreezeAssetServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeAssetServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UnFreezeBalanceServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeBalanceServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/UnFreezeBalanceServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeBalanceServletTest.java
index 800e5e957dc..b9bcbe03bc1 100644
--- a/framework/src/test/java/org/tron/core/services/http/UnFreezeBalanceServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeBalanceServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UnFreezeBalanceV2ServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeBalanceV2ServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/UnFreezeBalanceV2ServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeBalanceV2ServletTest.java
index cb27bc0df69..46ed8779465 100644
--- a/framework/src/test/java/org/tron/core/services/http/UnFreezeBalanceV2ServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UnFreezeBalanceV2ServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UpdateAccountServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateAccountServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/UpdateAccountServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UpdateAccountServletTest.java
index 4d60a39d0b8..114f62b624a 100644
--- a/framework/src/test/java/org/tron/core/services/http/UpdateAccountServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateAccountServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
diff --git a/framework/src/test/java/org/tron/core/services/http/UpdateAssetServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateAssetServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/UpdateAssetServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UpdateAssetServletTest.java
index 18fbdb84a28..0522cef9e41 100644
--- a/framework/src/test/java/org/tron/core/services/http/UpdateAssetServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateAssetServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UpdateBrokerageServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateBrokerageServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/UpdateBrokerageServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UpdateBrokerageServletTest.java
index 378690e9bdc..2c8e05670af 100644
--- a/framework/src/test/java/org/tron/core/services/http/UpdateBrokerageServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateBrokerageServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UpdateEnergyLimitServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateEnergyLimitServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/UpdateEnergyLimitServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UpdateEnergyLimitServletTest.java
index b54407c7ab0..9cc2d36c31f 100644
--- a/framework/src/test/java/org/tron/core/services/http/UpdateEnergyLimitServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateEnergyLimitServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UpdateSettingServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateSettingServletTest.java
similarity index 98%
rename from framework/src/test/java/org/tron/core/services/http/UpdateSettingServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UpdateSettingServletTest.java
index cd33306f50c..1068443cdba 100644
--- a/framework/src/test/java/org/tron/core/services/http/UpdateSettingServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateSettingServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UpdateWitnessServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateWitnessServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/UpdateWitnessServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UpdateWitnessServletTest.java
index 52c0e5ede91..527a4825cf8 100644
--- a/framework/src/test/java/org/tron/core/services/http/UpdateWitnessServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UpdateWitnessServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/UtilMockTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UtilMockTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/UtilMockTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UtilMockTest.java
index d4124c90adf..b7b6faa46a5 100644
--- a/framework/src/test/java/org/tron/core/services/http/UtilMockTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UtilMockTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import com.google.protobuf.Descriptors;
diff --git a/framework/src/test/java/org/tron/core/services/http/UtilTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UtilTest.java
similarity index 99%
rename from framework/src/test/java/org/tron/core/services/http/UtilTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/UtilTest.java
index c619fd0de54..715c66ba888 100644
--- a/framework/src/test/java/org/tron/core/services/http/UtilTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/UtilTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import com.google.protobuf.ByteString;
import javax.annotation.Resource;
diff --git a/framework/src/test/java/org/tron/core/services/http/ValidateAddressServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/ValidateAddressServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/ValidateAddressServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/ValidateAddressServletTest.java
index a74f04765a8..ffeadf0e4f5 100644
--- a/framework/src/test/java/org/tron/core/services/http/ValidateAddressServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/ValidateAddressServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
diff --git a/framework/src/test/java/org/tron/core/services/http/VoteWitnessAccountServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/VoteWitnessAccountServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/VoteWitnessAccountServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/VoteWitnessAccountServletTest.java
index 8166a001ce7..622ef36a0d4 100644
--- a/framework/src/test/java/org/tron/core/services/http/VoteWitnessAccountServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/VoteWitnessAccountServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/WithdrawBalanceServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/WithdrawBalanceServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/WithdrawBalanceServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/WithdrawBalanceServletTest.java
index f793265f9bc..2cdadef53cd 100644
--- a/framework/src/test/java/org/tron/core/services/http/WithdrawBalanceServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/WithdrawBalanceServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/WithdrawExpireUnfreezeServletTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/WithdrawExpireUnfreezeServletTest.java
similarity index 97%
rename from framework/src/test/java/org/tron/core/services/http/WithdrawExpireUnfreezeServletTest.java
rename to framework/src/test/java/org/tron/core/services/http/servlets/WithdrawExpireUnfreezeServletTest.java
index 9e733018452..e9c5dfda164 100644
--- a/framework/src/test/java/org/tron/core/services/http/WithdrawExpireUnfreezeServletTest.java
+++ b/framework/src/test/java/org/tron/core/services/http/servlets/WithdrawExpireUnfreezeServletTest.java
@@ -1,4 +1,4 @@
-package org.tron.core.services.http;
+package org.tron.core.services.http.servlets;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
diff --git a/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServletTest.java b/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServletTest.java
deleted file mode 100644
index cacb904d9b9..00000000000
--- a/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServletTest.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.tron.core.services.http.solidity;
-
-import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoInteractions;
-import static org.mockito.Mockito.when;
-
-import com.google.protobuf.ByteString;
-import java.util.Arrays;
-import java.util.Collection;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.util.ReflectionTestUtils;
-import org.tron.common.utils.ByteArray;
-import org.tron.common.utils.Sha256Hash;
-import org.tron.core.Wallet;
-import org.tron.core.config.args.Args;
-import org.tron.json.JSONObject;
-import org.tron.protos.Protocol.Transaction;
-
-@RunWith(Parameterized.class)
-public class GetTransactionByIdSolidityServletTest {
-
- private static final String TRANSACTION_ID =
- "309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef213f2c55225a8bd2";
- private static final ByteString TRANSACTION_ID_BYTES =
- ByteString.copyFrom(ByteArray.fromHexString(TRANSACTION_ID));
-
- @Parameter
- public String method;
-
- private GetTransactionByIdSolidityServlet servlet;
- private Wallet wallet;
- private long savedMaxMessageSize;
-
- @Parameters(name = "{0}")
- public static Collection