From a219222bbd019d9787a90ce8791000e1c2b76117 Mon Sep 17 00:00:00 2001 From: halibobo1205 <82020050+halibobo1205@users.noreply.github.com> Date: Mon, 14 Sep 2026 14:41:49 +0800 Subject: [PATCH 1/4] chore(deps): upgrade grpc, jackson, logback, commons and drop joda-time (#6950) * chore(deps): upgrade grpc-java from 1.83.0 to 1.83.1 1. bump grpcVersion to 1.83.1 to pick up the upstream fix for grpc/grpc-java#12930 (PR grpc/grpc-java#12942), which enforces connection.remote().maxActiveStreams(maxStreams) at handler startup 2. drop GrpcNettyMaxConcurrentStreamsLimiter, the local protocol-negotiator shim that applied the same limit while 1.83.0 left the remote endpoint unbounded until the client acknowledged SETTINGS * chore(deps): upgrade jackson from 2.18.6 to 2.18.10 bump jackson-databind from 2.18.6 to 2.18.10 to pick up cumulative fixes from the 2.18.x line * chore(deps): upgrade logback to 1.3.16 and slf4j to 2.0.17 1. bump logback-classic from 1.2.13 to 1.3.16 and slf4j-api, jcl-over-slf4j, jul-to-slf4j from 1.7.36 to 2.0.17; logback 1.3 requires the slf4j 2.0 provider model, and 1.3.16 is the last 1.3.x release and the ceiling for the x86_64 JDK 8 build, since 1.5.x requires JDK 11 2. rename DelayingShutdownHook to DefaultShutdownHook in the toolkit logback.xml; logback 1.3 removed the old class and only auto-maps the legacy name with a startup warning 3. drop the CONSOLE appender from the toolkit logback.xml; no logger ever referenced it, so it never emitted output on 1.2 either, and logback 1.3 now flags it with an unreferenced-appender warning 4. accept one known 1.3.x behavior change: SizeAndTimeBasedRollingPolicy now throttles its maxFileSize comparison to once per 60s (SimpleInvocationGate) instead of the adaptive ~100-800ms gate of 1.2.13, so under sustained heavy logging a file can overshoot the 500MB cap by up to 60s of writes before the %i rollover fires; time-based rollover and totalSizeCap/maxHistory cleanup are ungated and unaffected 5. note for operators running a custom --log-config file: well-formed 1.2-era configs using standard elements keep working unchanged (jmxConfigurator degrades to an ignored-property warning, the legacy shutdown hook name is auto-mapped), and malformed XML still fails fast via TronError(LOG_LOAD) exactly as on 1.2; however, a config that references an uninstantiable class (e.g. a custom appender missing from the classpath) now aborts the whole appender-ref phase instead of losing just that one appender, so the node starts with no log output while the ERROR statuses are printed to stdout by LogService * chore(deps): upgrade commons-lang3/collections4 and drop commons-math 1. bump commons-lang3 from 3.4 to 3.20.0; the runtime classpath already resolved 3.18.0 through libp2p 2.2.9's transitive requirement, so align the declaration with what actually ships and move past the CVE-2025-48924 range that the nominal 3.4 still sits in 2. bump commons-collections4 from 4.1 to 4.6.0 3. remove commons-math 2.2; no source file imports org.apache.commons.math and nothing else in the dependency graph requests it * chore(deps): remove joda-time and use JDK time APIs 1. drop the joda-time 2.3 dependency. 2. replace the six new DateTime(millis) log-formatting call sites in DynamicPropertiesStore, DposTask and DposService with a new Time.getIsoTimeString helper backed by java.time; its formatter (yyyy-MM-dd'T'HH:mm:ss.SSSXXX in the system zone) reproduces joda's DateTime.toString() output byte for byte where the JDK and joda 2.3 time-zone databases agree (UTC nodes are unaffected); zones whose rules changed after joda's 2013-era tzdb, e.g. Europe/Moscow, now render the corrected offset for the same instant. 3. replace DateTime.now() day arithmetic in four test classes with the java.time equivalent, ZonedDateTime.now().minusDays(n)/plusDays(n) .toInstant().toEpochMilli(), keeping joda's calendar semantics one-to-one, and map plain DateTime.now().getMillis() to System.currentTimeMillis() --- build.gradle | 16 +- .../core/store/DynamicPropertiesStore.java | 6 +- common/build.gradle | 4 +- .../main/java/org/tron/common/utils/Time.java | 12 + .../org/tron/consensus/dpos/DposService.java | 6 +- .../org/tron/consensus/dpos/DposTask.java | 4 +- .../GrpcNettyMaxConcurrentStreamsLimiter.java | 79 ----- .../tron/common/application/RpcService.java | 3 +- ...cNettyMaxConcurrentStreamsLimiterTest.java | 108 ------ .../NettyHttp2HeaderSecurityTest.java | 53 +++ .../common/utils/RandomGeneratorTest.java | 3 +- .../org/tron/core/BandwidthProcessorTest.java | 18 +- .../test/java/org/tron/core/WalletTest.java | 30 +- .../ParticipateAssetIssueActuatorTest.java | 58 ++-- .../TransactionsMsgHandlerTest.java | 4 +- gradle/verification-metadata.xml | 323 ++++++++++-------- plugins/src/main/resources/logback.xml | 11 +- 17 files changed, 324 insertions(+), 414 deletions(-) delete mode 100644 framework/src/main/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiter.java delete mode 100644 framework/src/test/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiterTest.java create mode 100644 framework/src/test/java/org/tron/common/application/NettyHttp2HeaderSecurityTest.java diff --git a/build.gradle b/build.gradle index 65e72c0fb73..04dee79fbae 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { } ext { - grpcVersion = "1.83.0" + grpcVersion = "1.83.1" } allprojects { @@ -91,16 +91,14 @@ subprojects { } dependencies { - implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.36' - implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '1.7.36' - implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '1.7.36' - implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.13' + implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.17' + implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '2.0.17' + implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '2.0.17' + implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.16' implementation "com.google.code.findbugs:jsr305:3.0.0" implementation group: 'org.springframework', name: 'spring-context', version: "${springVersion}" - implementation "org.apache.commons:commons-lang3:3.4" - implementation group: 'org.apache.commons', name: 'commons-math', version: '2.2' - implementation "org.apache.commons:commons-collections4:4.1" - implementation group: 'joda-time', name: 'joda-time', version: '2.3' + implementation "org.apache.commons:commons-lang3:3.20.0" + implementation "org.apache.commons:commons-collections4:4.6.0" implementation group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: '1.84' compileOnly 'org.projectlombok:lombok:1.18.34' diff --git a/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java b/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java index 0f74f20d379..33bbaa4a362 100644 --- a/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java +++ b/chainbase/src/main/java/org/tron/core/store/DynamicPropertiesStore.java @@ -12,13 +12,13 @@ import java.util.stream.IntStream; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.tron.common.parameter.CommonParameter; import org.tron.common.utils.ByteArray; import org.tron.common.utils.Sha256Hash; +import org.tron.common.utils.Time; import org.tron.core.capsule.BytesCapsule; import org.tron.core.config.Parameter.ChainConstant; import org.tron.core.db.TronStoreWithRevoking; @@ -2261,8 +2261,8 @@ public void updateNextMaintenanceTime(long blockTime) { logger.info( "Do update nextMaintenanceTime, currentMaintenanceTime: {}, blockTime: {}, " + "nextMaintenanceTime: {}.", - new DateTime(currentMaintenanceTime), new DateTime(blockTime), - new DateTime(nextMaintenanceTime) + Time.getIsoTimeString(currentMaintenanceTime), Time.getIsoTimeString(blockTime), + Time.getIsoTimeString(nextMaintenanceTime) ); } diff --git a/common/build.gradle b/common/build.gradle index 14d3eb4e637..4b36d067b70 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -8,7 +8,9 @@ sourceCompatibility = 1.8 dependencies { - api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.18.6' // https://github.com/FasterXML/jackson-databind/issues/3627 + // avoid x.y.z.w micro-patches, they may ship broken Gradle module metadata: + // https://github.com/FasterXML/jackson-databind/issues/3627 + api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.18.10' api "com.cedarsoftware:java-util:3.2.0" api group: 'org.apache.httpcomponents', name: 'httpasyncclient', version: '4.1.1' api group: 'commons-codec', name: 'commons-codec', version: '1.11' diff --git a/common/src/main/java/org/tron/common/utils/Time.java b/common/src/main/java/org/tron/common/utils/Time.java index fdbfcb5f283..15e9d3d4b55 100644 --- a/common/src/main/java/org/tron/common/utils/Time.java +++ b/common/src/main/java/org/tron/common/utils/Time.java @@ -1,9 +1,17 @@ package org.tron.common.utils; import java.sql.Timestamp; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; public class Time { + // Matches joda-time's DateTime.toString() output, byte for byte: fixed + // 3-digit millis, offset as +08:00, and Z when the system zone is UTC. + private static final DateTimeFormatter ISO_MILLIS_FORMAT = + DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + public static long getCurrentMillis() { return System.currentTimeMillis(); } @@ -11,4 +19,8 @@ public static long getCurrentMillis() { public static String getTimeString(long time) { return new Timestamp(time).toString(); } + + public static String getIsoTimeString(long time) { + return Instant.ofEpochMilli(time).atZone(ZoneId.systemDefault()).format(ISO_MILLIS_FORMAT); + } } diff --git a/consensus/src/main/java/org/tron/consensus/dpos/DposService.java b/consensus/src/main/java/org/tron/consensus/dpos/DposService.java index 397c9d0835c..0a40ec8e076 100644 --- a/consensus/src/main/java/org/tron/consensus/dpos/DposService.java +++ b/consensus/src/main/java/org/tron/consensus/dpos/DposService.java @@ -14,12 +14,12 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.tron.common.args.GenesisBlock; import org.tron.common.parameter.CommonParameter; import org.tron.common.utils.ByteArray; +import org.tron.common.utils.Time; import org.tron.consensus.ConsensusDelegate; import org.tron.consensus.base.BlockHandle; import org.tron.consensus.base.ConsensusInterface; @@ -134,14 +134,14 @@ public boolean validBlock(BlockCapsule blockCapsule) { if (slot == 0 && consensusDelegate.getDynamicPropertiesStore().allowConsensusLogicOptimization()) { logger.warn("ValidBlock failed: slot error, witness: {}, timeStamp: {}", - ByteArray.toHexString(witnessAddress.toByteArray()), new DateTime(timeStamp)); + ByteArray.toHexString(witnessAddress.toByteArray()), Time.getIsoTimeString(timeStamp)); return false; } final ByteString scheduledWitness = dposSlot.getScheduledWitness(slot); if (!scheduledWitness.equals(witnessAddress)) { logger.warn("ValidBlock failed: sWitness: {}, bWitness: {}, bTimeStamp: {}, slot: {}", ByteArray.toHexString(scheduledWitness.toByteArray()), - ByteArray.toHexString(witnessAddress.toByteArray()), new DateTime(timeStamp), slot); + ByteArray.toHexString(witnessAddress.toByteArray()), Time.getIsoTimeString(timeStamp), slot); return false; } diff --git a/consensus/src/main/java/org/tron/consensus/dpos/DposTask.java b/consensus/src/main/java/org/tron/consensus/dpos/DposTask.java index 9e42552c80f..38f5614e571 100644 --- a/consensus/src/main/java/org/tron/consensus/dpos/DposTask.java +++ b/consensus/src/main/java/org/tron/consensus/dpos/DposTask.java @@ -6,7 +6,6 @@ import java.util.concurrent.ExecutorService; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; @@ -15,6 +14,7 @@ import org.tron.common.parameter.CommonParameter; import org.tron.common.utils.ByteArray; import org.tron.common.utils.Sha256Hash; +import org.tron.common.utils.Time; import org.tron.consensus.ConsensusDelegate; import org.tron.consensus.base.Param.Miner; import org.tron.consensus.base.State; @@ -123,7 +123,7 @@ private State produceBlock() { BlockHeader.raw raw = blockCapsule.getInstance().getBlockHeader().getRawData(); logger.info("Produce block successfully, num: {}, time: {}, witness: {}, ID:{}, parentID:{}", raw.getNumber(), - new DateTime(raw.getTimestamp()), + Time.getIsoTimeString(raw.getTimestamp()), ByteArray.toHexString(raw.getWitnessAddress().toByteArray()), new Sha256Hash(raw.getNumber(), Sha256Hash.of(CommonParameter .getInstance().isECKeyCryptoEngine(), raw.toByteArray())), diff --git a/framework/src/main/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiter.java b/framework/src/main/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiter.java deleted file mode 100644 index cdd71ffee3c..00000000000 --- a/framework/src/main/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiter.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * java-tron is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * java-tron is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with java-tron. If not, see . - */ - -package org.tron.common.application; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import io.grpc.netty.GrpcHttp2ConnectionHandler; -import io.grpc.netty.InternalProtocolNegotiator; -import io.grpc.netty.InternalProtocolNegotiators; -import io.grpc.netty.NettyServerBuilder; -import io.netty.channel.ChannelHandler; -import io.netty.util.AsciiString; - -/** Enforces the advertised HTTP/2 concurrent stream limit for grpc-netty servers. */ -final class GrpcNettyMaxConcurrentStreamsLimiter { - - private GrpcNettyMaxConcurrentStreamsLimiter() { - } - - static NettyServerBuilder configurePlaintext( - NettyServerBuilder builder, int maxConcurrentStreams) { - checkNotNull(builder, "builder"); - checkArgument(maxConcurrentStreams > 0, "maxConcurrentStreams must be positive"); - builder.maxConcurrentCallsPerConnection(maxConcurrentStreams); - // TODO: Remove this shim after https://github.com/grpc/grpc-java/issues/12930 is fixed. - return builder.protocolNegotiator(newPlaintextNegotiator(maxConcurrentStreams)); - } - - static InternalProtocolNegotiator.ProtocolNegotiator newPlaintextNegotiator( - int maxConcurrentStreams) { - checkArgument(maxConcurrentStreams > 0, "maxConcurrentStreams must be positive"); - return new EnforcingProtocolNegotiator( - InternalProtocolNegotiators.serverPlaintext(), maxConcurrentStreams); - } - - private static final class EnforcingProtocolNegotiator - implements InternalProtocolNegotiator.ProtocolNegotiator { - - private final InternalProtocolNegotiator.ProtocolNegotiator delegate; - private final int maxConcurrentStreams; - - private EnforcingProtocolNegotiator( - InternalProtocolNegotiator.ProtocolNegotiator delegate, int maxConcurrentStreams) { - this.delegate = checkNotNull(delegate, "delegate"); - this.maxConcurrentStreams = maxConcurrentStreams; - } - - @Override - public AsciiString scheme() { - return delegate.scheme(); - } - - @Override - public ChannelHandler newHandler(GrpcHttp2ConnectionHandler grpcHandler) { - // grpc-java builds the connection directly, bypassing Netty's builder-side enforcement. - grpcHandler.connection().remote().maxActiveStreams(maxConcurrentStreams); - return delegate.newHandler(grpcHandler); - } - - @Override - public void close() { - delegate.close(); - } - } -} diff --git a/framework/src/main/java/org/tron/common/application/RpcService.java b/framework/src/main/java/org/tron/common/application/RpcService.java index 27fcc479f4e..c398b71ae41 100644 --- a/framework/src/main/java/org/tron/common/application/RpcService.java +++ b/framework/src/main/java/org/tron/common/application/RpcService.java @@ -100,9 +100,8 @@ protected NettyServerBuilder initServerBuilder() { serverBuilder = serverBuilder.executor(this.executorService); } // Set configs from config.conf or default value - serverBuilder = GrpcNettyMaxConcurrentStreamsLimiter.configurePlaintext( - serverBuilder, parameter.getMaxConcurrentCallsPerConnection()); serverBuilder + .maxConcurrentCallsPerConnection(parameter.getMaxConcurrentCallsPerConnection()) .flowControlWindow(parameter.getFlowControlWindow()) .maxConnectionIdle(parameter.getMaxConnectionIdleInMillis(), TimeUnit.MILLISECONDS) .maxConnectionAge(parameter.getMaxConnectionAgeInMillis(), TimeUnit.MILLISECONDS) diff --git a/framework/src/test/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiterTest.java b/framework/src/test/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiterTest.java deleted file mode 100644 index fc578ca7947..00000000000 --- a/framework/src/test/java/org/tron/common/application/GrpcNettyMaxConcurrentStreamsLimiterTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * java-tron is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * java-tron is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with java-tron. If not, see . - */ - -package org.tron.common.application; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThrows; - -import io.grpc.ChannelLogger; -import io.grpc.ChannelLogger.ChannelLogLevel; -import io.grpc.netty.GrpcHttp2ConnectionHandler; -import io.grpc.netty.InternalProtocolNegotiator; -import io.netty.channel.ChannelHandler; -import io.netty.handler.codec.http2.DefaultHttp2Connection; -import io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder; -import io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder; -import io.netty.handler.codec.http2.DefaultHttp2FrameReader; -import io.netty.handler.codec.http2.DefaultHttp2FrameWriter; -import io.netty.handler.codec.http2.Http2Connection; -import io.netty.handler.codec.http2.Http2ConnectionDecoder; -import io.netty.handler.codec.http2.Http2ConnectionEncoder; -import io.netty.handler.codec.http2.Http2Error; -import io.netty.handler.codec.http2.Http2Exception; -import io.netty.handler.codec.http2.Http2FrameWriter; -import io.netty.handler.codec.http2.Http2Settings; -import org.junit.Test; - -public class GrpcNettyMaxConcurrentStreamsLimiterTest { - - private static final ChannelLogger NOOP_LOGGER = new ChannelLogger() { - @Override - public void log(ChannelLogLevel level, String message) { - } - - @Override - public void log(ChannelLogLevel level, String messageFormat, Object... args) { - } - }; - - @Test - public void shouldEnforceMaxStreamsBeforeSettingsAck() throws Exception { - Http2Connection connection = new DefaultHttp2Connection(true); - GrpcHttp2ConnectionHandler grpcHandler = newGrpcHandler(connection); - InternalProtocolNegotiator.ProtocolNegotiator negotiator = - GrpcNettyMaxConcurrentStreamsLimiter.newPlaintextNegotiator(2); - - ChannelHandler negotiationHandler = negotiator.newHandler(grpcHandler); - - assertNotNull(negotiationHandler); - assertEquals(2, connection.remote().maxActiveStreams()); - connection.remote().createStream(1, true); - connection.remote().createStream(3, true); - Http2Exception exception = assertThrows( - Http2Exception.class, () -> connection.remote().createStream(5, true)); - assertEquals(Http2Error.REFUSED_STREAM, exception.error()); - negotiator.close(); - } - - @Test - public void shouldIgnoreClientMaxHeaderListSizeOnServer() throws Exception { - Http2Connection connection = new DefaultHttp2Connection(true); - Http2FrameWriter frameWriter = new DefaultHttp2FrameWriter(); - Http2ConnectionEncoder encoder = - new DefaultHttp2ConnectionEncoder(connection, frameWriter); - long originalMaxHeaderListSize = - encoder.configuration().headersConfiguration().maxHeaderListSize(); - - encoder.remoteSettings(new Http2Settings().maxHeaderListSize(1)); - - assertEquals(originalMaxHeaderListSize, - encoder.configuration().headersConfiguration().maxHeaderListSize()); - encoder.close(); - } - - @Test - public void shouldRejectNonPositiveStreamLimit() { - IllegalArgumentException zeroLimitException = assertThrows(IllegalArgumentException.class, - () -> GrpcNettyMaxConcurrentStreamsLimiter.newPlaintextNegotiator(0)); - assertEquals("maxConcurrentStreams must be positive", zeroLimitException.getMessage()); - IllegalArgumentException negativeLimitException = assertThrows(IllegalArgumentException.class, - () -> GrpcNettyMaxConcurrentStreamsLimiter.newPlaintextNegotiator(-1)); - assertEquals("maxConcurrentStreams must be positive", negativeLimitException.getMessage()); - } - - private static GrpcHttp2ConnectionHandler newGrpcHandler(Http2Connection connection) { - Http2FrameWriter frameWriter = new DefaultHttp2FrameWriter(); - Http2ConnectionEncoder encoder = - new DefaultHttp2ConnectionEncoder(connection, frameWriter); - Http2ConnectionDecoder decoder = new DefaultHttp2ConnectionDecoder( - connection, encoder, new DefaultHttp2FrameReader()); - return new GrpcHttp2ConnectionHandler( - null, decoder, encoder, new Http2Settings(), NOOP_LOGGER) { - }; - } -} diff --git a/framework/src/test/java/org/tron/common/application/NettyHttp2HeaderSecurityTest.java b/framework/src/test/java/org/tron/common/application/NettyHttp2HeaderSecurityTest.java new file mode 100644 index 00000000000..6a4f4330f04 --- /dev/null +++ b/framework/src/test/java/org/tron/common/application/NettyHttp2HeaderSecurityTest.java @@ -0,0 +1,53 @@ +/* + * java-tron is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * java-tron is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with java-tron. If not, see . + */ + +package org.tron.common.application; + +import static org.junit.Assert.assertEquals; + +import io.netty.handler.codec.http2.DefaultHttp2Connection; +import io.netty.handler.codec.http2.DefaultHttp2ConnectionEncoder; +import io.netty.handler.codec.http2.DefaultHttp2FrameWriter; +import io.netty.handler.codec.http2.Http2Connection; +import io.netty.handler.codec.http2.Http2ConnectionEncoder; +import io.netty.handler.codec.http2.Http2FrameWriter; +import io.netty.handler.codec.http2.Http2Settings; +import org.junit.Test; + +/** Guards the netty HTTP/2 header-size behaviour the gRPC server relies on. */ +public class NettyHttp2HeaderSecurityTest { + + /** + * CVE-2026-50560: SETTINGS_MAX_HEADER_LIST_SIZE tells the server what the client is willing to + * receive, so it must not shrink the server encoder's own limit. Otherwise a hostile client can + * advertise a tiny value and make every response-header write throw, which is a Rapid-Reset-like + * denial of service. Netty enforced the client value before 4.1.135.Final / 4.2.15.Final. + */ + @Test + public void shouldIgnoreClientMaxHeaderListSizeOnServer() throws Exception { + Http2Connection connection = new DefaultHttp2Connection(true); + Http2FrameWriter frameWriter = new DefaultHttp2FrameWriter(); + Http2ConnectionEncoder encoder = + new DefaultHttp2ConnectionEncoder(connection, frameWriter); + long originalMaxHeaderListSize = + encoder.configuration().headersConfiguration().maxHeaderListSize(); + + encoder.remoteSettings(new Http2Settings().maxHeaderListSize(1)); + + assertEquals(originalMaxHeaderListSize, + encoder.configuration().headersConfiguration().maxHeaderListSize()); + encoder.close(); + } +} diff --git a/framework/src/test/java/org/tron/common/utils/RandomGeneratorTest.java b/framework/src/test/java/org/tron/common/utils/RandomGeneratorTest.java index 4de441d940d..34c7536ebd0 100644 --- a/framework/src/test/java/org/tron/common/utils/RandomGeneratorTest.java +++ b/framework/src/test/java/org/tron/common/utils/RandomGeneratorTest.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -42,7 +41,7 @@ public void shuffle() { final List witnessCapsuleListBefore = this.getWitnessList(); logger.info("updateWitnessSchedule,before: " + getWitnessStringList(witnessCapsuleListBefore)); final List witnessCapsuleListAfter = new RandomGenerator() - .shuffle(witnessCapsuleListBefore, DateTime.now().getMillis()); + .shuffle(witnessCapsuleListBefore, System.currentTimeMillis()); logger.info("updateWitnessSchedule,after: " + getWitnessStringList(witnessCapsuleListAfter)); } diff --git a/framework/src/test/java/org/tron/core/BandwidthProcessorTest.java b/framework/src/test/java/org/tron/core/BandwidthProcessorTest.java index cf652af3650..622d20ae7d2 100755 --- a/framework/src/test/java/org/tron/core/BandwidthProcessorTest.java +++ b/framework/src/test/java/org/tron/core/BandwidthProcessorTest.java @@ -5,8 +5,8 @@ import com.google.protobuf.Any; import com.google.protobuf.ByteString; import java.nio.charset.StandardCharsets; +import java.time.ZonedDateTime; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -64,8 +64,8 @@ public class BandwidthProcessorTest extends BaseTest { TO_ADDRESS = Wallet.getAddressPreFixString() + "abd4b9367799eaa3197fecb144eb71de1e049abc"; ASSET_ADDRESS = Wallet.getAddressPreFixString() + "548794500882809695a8a687866e76d4271a3456"; ASSET_ADDRESS_V2 = Wallet.getAddressPreFixString() + "548794500882809695a8a687866e76d4271a7890"; - START_TIME = DateTime.now().minusDays(1).getMillis(); - END_TIME = DateTime.now().getMillis(); + START_TIME = ZonedDateTime.now().minusDays(1).toInstant().toEpochMilli(); + END_TIME = System.currentTimeMillis(); } /** @@ -616,7 +616,7 @@ public void sameTokenNameCloseConsumeSuccess() { AccountType.Normal, chainBaseManager.getDynamicPropertiesStore().getAssetIssueFee()); ownerCapsule.setBalance(10_000_000L); - long expireTime = DateTime.now().getMillis() + 6 * 86_400_000; + long expireTime = System.currentTimeMillis() + 6 * 86_400_000; ownerCapsule.setFrozenForBandwidth(2_000_000L, expireTime); chainBaseManager.getAccountStore().put(ownerCapsule.getAddress().toByteArray(), ownerCapsule); @@ -627,7 +627,7 @@ public void sameTokenNameCloseConsumeSuccess() { AccountType.Normal, chainBaseManager.getDynamicPropertiesStore().getAssetIssueFee()); toAddressCapsule.setBalance(10_000_000L); - long expireTime2 = DateTime.now().getMillis() + 6 * 86_400_000; + long expireTime2 = System.currentTimeMillis() + 6 * 86_400_000; toAddressCapsule.setFrozenForBandwidth(2_000_000L, expireTime2); chainBaseManager.getAccountStore().put(toAddressCapsule.getAddress().toByteArray(), toAddressCapsule); @@ -731,7 +731,7 @@ public void sameTokenNameOpenConsumeSuccess() { AccountType.Normal, chainBaseManager.getDynamicPropertiesStore().getAssetIssueFee()); ownerCapsule.setBalance(10_000_000L); - long expireTime = DateTime.now().getMillis() + 6 * 86_400_000; + long expireTime = System.currentTimeMillis() + 6 * 86_400_000; ownerCapsule.setFrozenForBandwidth(2_000_000L, expireTime); chainBaseManager.getAccountStore().put(ownerCapsule.getAddress().toByteArray(), ownerCapsule); @@ -742,7 +742,7 @@ public void sameTokenNameOpenConsumeSuccess() { AccountType.Normal, chainBaseManager.getDynamicPropertiesStore().getAssetIssueFee()); toAddressCapsule.setBalance(10_000_000L); - long expireTime2 = DateTime.now().getMillis() + 6 * 86_400_000; + long expireTime2 = System.currentTimeMillis() + 6 * 86_400_000; toAddressCapsule.setFrozenForBandwidth(2_000_000L, expireTime2); chainBaseManager.getAccountStore().put(toAddressCapsule.getAddress().toByteArray(), toAddressCapsule); @@ -816,7 +816,7 @@ public void sameTokenNameCloseTransferToAccountNotExist() { AccountType.Normal, chainBaseManager.getDynamicPropertiesStore().getAssetIssueFee()); ownerCapsule.setBalance(10_000_000L); - long expireTime = DateTime.now().getMillis() + 6 * 86_400_000; + long expireTime = System.currentTimeMillis() + 6 * 86_400_000; ownerCapsule.setFrozenForBandwidth(2_000_000L, expireTime); chainBaseManager.getAccountStore().put(ownerCapsule.getAddress().toByteArray(), ownerCapsule); @@ -827,7 +827,7 @@ public void sameTokenNameCloseTransferToAccountNotExist() { AccountType.Normal, chainBaseManager.getDynamicPropertiesStore().getAssetIssueFee()); toAddressCapsule.setBalance(10_000_000L); - long expireTime2 = DateTime.now().getMillis() + 6 * 86_400_000; + long expireTime2 = System.currentTimeMillis() + 6 * 86_400_000; toAddressCapsule.setFrozenForBandwidth(2_000_000L, expireTime2); chainBaseManager.getAccountStore().delete(toAddressCapsule.getAddress().toByteArray()); diff --git a/framework/src/test/java/org/tron/core/WalletTest.java b/framework/src/test/java/org/tron/core/WalletTest.java index 9dbab338b67..7215a287912 100644 --- a/framework/src/test/java/org/tron/core/WalletTest.java +++ b/framework/src/test/java/org/tron/core/WalletTest.java @@ -30,12 +30,12 @@ import com.google.protobuf.Any; import com.google.protobuf.ByteString; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; import javax.annotation.Resource; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; @@ -113,21 +113,29 @@ public class WalletTest extends BaseTest { public static final long BLOCK_NUM_THREE = 3; public static final long BLOCK_NUM_FOUR = 4; public static final long BLOCK_NUM_FIVE = 5; - public static final long BLOCK_TIMESTAMP_ONE = DateTime.now().minusDays(4).getMillis(); - public static final long BLOCK_TIMESTAMP_TWO = DateTime.now().minusDays(3).getMillis(); - public static final long BLOCK_TIMESTAMP_THREE = DateTime.now().minusDays(2).getMillis(); - public static final long BLOCK_TIMESTAMP_FOUR = DateTime.now().minusDays(1).getMillis(); - public static final long BLOCK_TIMESTAMP_FIVE = DateTime.now().getMillis(); + public static final long BLOCK_TIMESTAMP_ONE = + ZonedDateTime.now().minusDays(4).toInstant().toEpochMilli(); + public static final long BLOCK_TIMESTAMP_TWO = + ZonedDateTime.now().minusDays(3).toInstant().toEpochMilli(); + public static final long BLOCK_TIMESTAMP_THREE = + ZonedDateTime.now().minusDays(2).toInstant().toEpochMilli(); + public static final long BLOCK_TIMESTAMP_FOUR = + ZonedDateTime.now().minusDays(1).toInstant().toEpochMilli(); + public static final long BLOCK_TIMESTAMP_FIVE = System.currentTimeMillis(); public static final long BLOCK_WITNESS_ONE = 12; public static final long BLOCK_WITNESS_TWO = 13; public static final long BLOCK_WITNESS_THREE = 14; public static final long BLOCK_WITNESS_FOUR = 15; public static final long BLOCK_WITNESS_FIVE = 16; - public static final long TRANSACTION_TIMESTAMP_ONE = DateTime.now().minusDays(4).getMillis(); - public static final long TRANSACTION_TIMESTAMP_TWO = DateTime.now().minusDays(3).getMillis(); - public static final long TRANSACTION_TIMESTAMP_THREE = DateTime.now().minusDays(2).getMillis(); - public static final long TRANSACTION_TIMESTAMP_FOUR = DateTime.now().minusDays(1).getMillis(); - public static final long TRANSACTION_TIMESTAMP_FIVE = DateTime.now().getMillis(); + public static final long TRANSACTION_TIMESTAMP_ONE = + ZonedDateTime.now().minusDays(4).toInstant().toEpochMilli(); + public static final long TRANSACTION_TIMESTAMP_TWO = + ZonedDateTime.now().minusDays(3).toInstant().toEpochMilli(); + public static final long TRANSACTION_TIMESTAMP_THREE = + ZonedDateTime.now().minusDays(2).toInstant().toEpochMilli(); + public static final long TRANSACTION_TIMESTAMP_FOUR = + ZonedDateTime.now().minusDays(1).toInstant().toEpochMilli(); + public static final long TRANSACTION_TIMESTAMP_FIVE = System.currentTimeMillis(); @Resource private Wallet wallet; private static Block block1; diff --git a/framework/src/test/java/org/tron/core/actuator/ParticipateAssetIssueActuatorTest.java b/framework/src/test/java/org/tron/core/actuator/ParticipateAssetIssueActuatorTest.java index 5c168f51bee..4af63285b1e 100755 --- a/framework/src/test/java/org/tron/core/actuator/ParticipateAssetIssueActuatorTest.java +++ b/framework/src/test/java/org/tron/core/actuator/ParticipateAssetIssueActuatorTest.java @@ -2,7 +2,7 @@ import com.google.protobuf.Any; import com.google.protobuf.ByteString; -import org.joda.time.DateTime; +import java.time.ZonedDateTime; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -403,8 +403,8 @@ public void sameTokenNameOpenRightAssetIssue() { */ @Test public void sameTokenNameCloseAssetIssueTimeRight() { - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), now.toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(1000L)); @@ -436,8 +436,8 @@ public void sameTokenNameCloseAssetIssueTimeRight() { @Test public void sameTokenNameOpenAssetIssueTimeRight() { chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), now.toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(1000L)); @@ -470,8 +470,8 @@ public void sameTokenNameOpenAssetIssueTimeRight() { */ @Test public void sameTokenNameCloseAssetIssueTimeLeft() { - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), now.toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(1000L)); @@ -504,8 +504,8 @@ public void sameTokenNameCloseAssetIssueTimeLeft() { @Test public void sameTokenNameOpenAssetIssueTimeLeft() { chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), now.toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(1000L)); @@ -605,8 +605,9 @@ public void sameTokenNameOpenExchangeDevisibleTest() { */ @Test public void sameTokenNameCloseNegativeAmountTest() { - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(-999L)); @@ -639,8 +640,9 @@ public void sameTokenNameCloseNegativeAmountTest() { @Test public void sameTokenNameOpenNegativeAmountTest() { chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(-999L)); @@ -675,8 +677,9 @@ public void sameTokenNameOpenNegativeAmountTest() { */ @Test public void sameTokenNameCloseZeroAmountTest() { - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(0)); @@ -709,8 +712,9 @@ public void sameTokenNameCloseZeroAmountTest() { @Test public void sameTokenNameOpenZeroAmountTest() { chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager).setAny(getContract(0)); @@ -746,8 +750,9 @@ public void sameTokenNameOpenZeroAmountTest() { */ @Test public void sameTokenNameCloseNoExitOwnerTest() { - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager) .setAny(getContractWithOwner(101, NOT_EXIT_ADDRESS)); @@ -782,8 +787,9 @@ public void sameTokenNameCloseNoExitOwnerTest() { @Test public void sameTokenNameOpenNoExitOwnerTest() { chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager) .setAny(getContractWithOwner(101, NOT_EXIT_ADDRESS)); @@ -1310,8 +1316,9 @@ public void sameTokenNameOpenNotEnoughAssetTest() { */ @Test public void sameTokenNameCloseNoneExistAssetTest() { - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager) .setAny(getContract(1, "TTTTTTTTTTTT")); @@ -1346,8 +1353,9 @@ public void sameTokenNameCloseNoneExistAssetTest() { @Test public void sameTokenNameOpenNoneExistAssetTest() { chainBaseManager.getDynamicPropertiesStore().saveAllowSameTokenName(1); - DateTime now = DateTime.now(); - initAssetIssue(now.minusDays(1).getMillis(), now.plusDays(1).getMillis()); + ZonedDateTime now = ZonedDateTime.now(); + initAssetIssue(now.minusDays(1).toInstant().toEpochMilli(), + now.plusDays(1).toInstant().toEpochMilli()); ParticipateAssetIssueActuator actuator = new ParticipateAssetIssueActuator(); actuator.setChainBaseManager(chainBaseManager) .setAny(getContract(1, "TTTTTTTTTTTT")); diff --git a/framework/src/test/java/org/tron/core/net/messagehandler/TransactionsMsgHandlerTest.java b/framework/src/test/java/org/tron/core/net/messagehandler/TransactionsMsgHandlerTest.java index ed2121d360f..78af06e64bc 100644 --- a/framework/src/test/java/org/tron/core/net/messagehandler/TransactionsMsgHandlerTest.java +++ b/framework/src/test/java/org/tron/core/net/messagehandler/TransactionsMsgHandlerTest.java @@ -4,6 +4,7 @@ import com.google.protobuf.ByteString; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -14,7 +15,6 @@ import java.util.concurrent.RejectedExecutionException; import lombok.Getter; -import org.joda.time.DateTime; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; @@ -67,7 +67,7 @@ public void testProcessMessage() { .setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString("121212a9cf"))) .setToAddress(ByteString.copyFrom(ByteArray.fromHexString("232323a9cf"))).build(); - long transactionTimestamp = DateTime.now().minusDays(4).getMillis(); + long transactionTimestamp = ZonedDateTime.now().minusDays(4).toInstant().toEpochMilli(); Protocol.Transaction trx = Protocol.Transaction.newBuilder().setRawData( Protocol.Transaction.raw.newBuilder().setTimestamp(transactionTimestamp) .setRefBlockNum(1) diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 6a3e641d5d6..2e30496116f 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -49,25 +49,25 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + @@ -189,9 +189,9 @@ - - - + + + @@ -199,9 +199,9 @@ - - - + + + @@ -219,15 +219,15 @@ - - - + + + - - + + - - + + @@ -235,15 +235,15 @@ - - - + + + - - + + - - + + @@ -251,15 +251,15 @@ - - - + + + - - + + - - + + @@ -1171,76 +1171,76 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -1251,18 +1251,18 @@ - - - + + + - - + + - - + + - - + + @@ -1528,14 +1528,6 @@ - - - - - - - - @@ -1684,11 +1676,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1710,36 +1728,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -1792,6 +1783,11 @@ + + + + + @@ -2408,6 +2404,14 @@ + + + + + + + + @@ -2424,6 +2428,14 @@ + + + + + + + + @@ -2448,6 +2460,11 @@ + + + + + @@ -2612,20 +2629,20 @@ - - - + + + - - + + - - - + + + - - + + @@ -2647,16 +2664,26 @@ - - - - - - + + + + + + + + + + + + + + + + diff --git a/plugins/src/main/resources/logback.xml b/plugins/src/main/resources/logback.xml index fa557f1a412..3f5eff3a1e0 100644 --- a/plugins/src/main/resources/logback.xml +++ b/plugins/src/main/resources/logback.xml @@ -3,16 +3,7 @@ - - - - - %d{HH:mm:ss.SSS} %-5level [%t] [%c{1}]\(%F:%L\) %m%n - - - INFO - - + From 0d1948531818f78a6254d4bd6c11ba7043fae318 Mon Sep 17 00:00:00 2001 From: halibobo1205 <82020050+halibobo1205@users.noreply.github.com> Date: Mon, 14 Sep 2026 15:07:22 +0800 Subject: [PATCH 2/4] feat(api): sanitize HTTP API error responses (#6954) * feat(api): sanitize HTTP API error responses Standard HTTP error paths used to expose internal details to clients: Util.processError prefixed every message with the Java exception class name, several servlets printed raw Throwable.getMessage() directly, and the two solidity query endpoints returned bare-text error bodies. Centralize the client-facing text decision in Util.processError: * keep the raw non-blank message only for the exact runtime types JsonFormat.ParseException, ContractValidateException and MaintenanceUnavailableException; a null, empty or whitespace-only message falls back to "internal server error" * preserve the events-deprecation message only for the exact IllegalArgumentException type carrying EVENTS_DEPRECATED_MSG * write the fixed rate-limit and INVALID address messages, along with existing GetBlock validation messages, through the package-private writeAuditedError helper; these audited callers bypass exception classification, and printErrorMsg is private to the shared writer * return {"Error":"internal server error"} for every other exception, with no exception class name Client-visible changes: * all processError-based error bodies lose the "class : " prefix; unclassified raw messages become "internal server error" * the rate-limit rejection body becomes {"Error":"lack of computing resources"} on every endpoint extending RateLimiterServlet, including full-node, solidity and PBFT /jsonrpc * gettransactionbyid / gettransactioninfobyid on solidity return standard {"Error":...} JSON instead of bare text * validateaddress, getBrokerage and getReward replace leaked library messages in their failure branches with existing fixed texts; the "INVALID address" body is now written via writeAuditedError and loses the space after the colon * getblock keeps its exact error bodies (refactor only) Cover Solidity transaction and transaction-info GET/POST input errors, backend failures, successful lookups and missing records directly with mocked Wallet calls and in-memory requests and responses. Replace the transaction servlet tests that accidentally exercised POST in both cases, changed global stdout and used a shared temporary response file. Verify both endpoint and global rate-limit rejections across the three JSON-RPC servlet variants, including status, response body and the absence of business dispatch on rejection. HTTP status codes, success responses, request validation rules and gRPC behavior are unchanged. JSON-RPC behavior is unchanged except for the shared HTTP rate-limit response described above. Closes #6936 * fix(api): keep server-side failure logging at error level The previous commit routed four catch-all blocks through the shared processError entry point, which logs at debug. Those four catches cover server-side work only: getburntrx, getnodeinfo and getpendingsize read no request parameters, and in getreward malformed addresses are already handled by the preceding DecoderException | IllegalArgumentException catch. Their failures therefore left no trace under the default log configuration, where the API topic is INFO. Add a dedicated processServerError entry point that logs at error and then applies the same sanitization, and use it at those four call sites. Logging the exception once inside the helper keeps a single record at any log level, instead of pairing an error log in the servlet with the debug log in the shared path. The shared Exception entry point keeps debug on purpose: its callers also cover request parsing, so an unauthenticated client can fail it cheaply and repeatedly, and an unconditional stack trace per request would amplify that into log pressure. Distinguishing client from server faults on that path is the parameter/internal split tracked as follow-up in #6936. Client-facing responses are unchanged. --- .../core/services/http/GetBlockServlet.java | 4 +- .../services/http/GetBrokerageServlet.java | 8 +- .../core/services/http/GetBurnTrxServlet.java | 8 +- .../services/http/GetNodeInfoServlet.java | 8 +- .../services/http/GetPendingSizeServlet.java | 8 +- .../core/services/http/GetRewardServlet.java | 15 +- .../GetTransactionInfoByBlockNumServlet.java | 15 +- .../services/http/RateLimiterServlet.java | 3 +- .../org/tron/core/services/http/Util.java | 48 ++- .../services/http/ValidateAddressServlet.java | 2 +- .../GetTransactionByIdSolidityServlet.java | 14 +- ...GetTransactionInfoByIdSolidityServlet.java | 15 +- .../services/http/BroadcastServletTest.java | 2 +- .../http/JsonRpcRateLimiterServletTest.java | 129 ++++++++ .../services/http/UtilProcessErrorTest.java | 107 +++++++ ...GetTransactionByIdSolidityServletTest.java | 286 +++++++----------- ...ransactionInfoByIdSolidityServletTest.java | 135 +++++++++ 17 files changed, 545 insertions(+), 262 deletions(-) create mode 100644 framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java create mode 100644 framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java create mode 100644 framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java diff --git a/framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java b/framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java index 2320fc87c7d..a953ae11802 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetBlockServlet.java @@ -77,9 +77,7 @@ private void fillResponse(boolean visible, BlockReq request, HttpServletResponse response.getWriter().println("{}"); } } catch (IllegalArgumentException e) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("Error", e.getMessage()); - response.getWriter().println(jsonObject.toJSONString()); + Util.writeAuditedError(e.getMessage(), response); } } diff --git a/framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java b/framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java index 1fbd94fe690..b735878d1e1 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetBrokerageServlet.java @@ -1,6 +1,5 @@ package org.tron.core.services.http; -import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -27,12 +26,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { } response.getWriter().println("{\"brokerage\": " + value + "}"); } catch (DecoderException | IllegalArgumentException e) { - try { - response.getWriter() - .println("{\"Error\": " + "\"INVALID address, " + e.getMessage() + "\"}"); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.writeAuditedError(Util.INVALID_ADDRESS_MSG, response); } catch (Exception e) { Util.processError(e, response); } diff --git a/framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java b/framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java index ea066a6e98c..3a19825ba75 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetBurnTrxServlet.java @@ -1,6 +1,5 @@ package org.tron.core.services.http; -import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -24,12 +23,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { : "{\"burnTrxAmount\": " + value + "}"; response.getWriter().println(out); } catch (Exception e) { - logger.error("", e); - try { - response.getWriter().println(Util.printErrorMsg(e)); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processServerError(e, response); } } diff --git a/framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java b/framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java index 0b8f7b9ce2b..c8b4aa39785 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetNodeInfoServlet.java @@ -1,6 +1,5 @@ package org.tron.core.services.http; -import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -24,12 +23,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { response.getWriter().println(JSON.toJSONString(nodeInfo)); } catch (Exception e) { - logger.error("", e); - try { - response.getWriter().println(Util.printErrorMsg(e)); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processServerError(e, response); } } diff --git a/framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java b/framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java index 9788c926586..41a47c49001 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetPendingSizeServlet.java @@ -1,6 +1,5 @@ package org.tron.core.services.http; -import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -24,12 +23,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { : "{\"pendingSize\": " + value + "}"; response.getWriter().println(out); } catch (Exception e) { - logger.error("", e); - try { - response.getWriter().println(Util.printErrorMsg(e)); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processServerError(e, response); } } diff --git a/framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java b/framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java index 61b88d1160f..780bab6ac94 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetRewardServlet.java @@ -1,6 +1,5 @@ package org.tron.core.services.http; -import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -29,19 +28,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { : "{\"reward\": " + value + "}"; response.getWriter().println(out); } catch (DecoderException | IllegalArgumentException e) { - try { - response.getWriter() - .println("{\"Error\": " + "\"INVALID address, " + e.getMessage() + "\"}"); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.writeAuditedError(Util.INVALID_ADDRESS_MSG, response); } catch (Exception e) { - logger.error("", e); - try { - response.getWriter().println(Util.printErrorMsg(e)); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processServerError(e, response); } } diff --git a/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java b/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java index 5d0a09b1a68..25998c909b6 100644 --- a/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/GetTransactionInfoByBlockNumServlet.java @@ -1,6 +1,5 @@ package org.tron.core.services.http; -import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -52,12 +51,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { response.getWriter().println("{}"); } } catch (Exception e) { - logger.debug("Exception: {}", e.getMessage()); - try { - response.getWriter().println(Util.printErrorMsg(e)); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processError(e, response); } } @@ -75,12 +69,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) response.getWriter().println("{}"); } } catch (Exception e) { - logger.debug("Exception: {}", e.getMessage()); - try { - response.getWriter().println(Util.printErrorMsg(e)); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processError(e, response); } } } diff --git a/framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java b/framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java index b5ae7d58623..6f67aba3020 100644 --- a/framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/RateLimiterServlet.java @@ -131,8 +131,7 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) super.service(req, resp); Metrics.histogramObserve(requestTimer); } else { - resp.getWriter() - .println(Util.printErrorMsg(new IllegalAccessException("lack of computing resources"))); + Util.writeAuditedError(Util.RATE_LIMITER_ERROR_MSG, resp); } } catch (ServletException | IOException | BadMessageException e) { throw e; diff --git a/framework/src/main/java/org/tron/core/services/http/Util.java b/framework/src/main/java/org/tron/core/services/http/Util.java index 5be2495e1f7..ca20902c4d8 100644 --- a/framework/src/main/java/org/tron/core/services/http/Util.java +++ b/framework/src/main/java/org/tron/core/services/http/Util.java @@ -48,6 +48,8 @@ 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.json.JSON; import org.tron.json.JSONArray; @@ -65,6 +67,10 @@ @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"; @@ -114,12 +120,31 @@ public static String printTransactionFee(String transactionFee) { return jsonObject.toJSONString(); } - public static String printErrorMsg(Exception e) { + private static String printErrorMsg(String msg) { JSONObject jsonObject = new JSONObject(); - jsonObject.put("Error", e.getClass() + " : " + e.getMessage()); + jsonObject.put("Error", msg); 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(); @@ -526,11 +551,24 @@ public static String getMemo(byte[] memo) { } public static void processError(Exception e, HttpServletResponse response) { - logger.debug(e.getMessage(), e); + 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) { try { - response.getWriter().println(Util.printErrorMsg(e)); + response.getWriter().println(Util.printErrorMsg(msg)); } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); + logger.debug("Failed to write HTTP error response", ioe); } } diff --git a/framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java b/framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java index 07eecfc5466..3ef45b42a7e 100644 --- a/framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java +++ b/framework/src/main/java/org/tron/core/services/http/ValidateAddressServlet.java @@ -47,7 +47,7 @@ private String validAddress(String input) { } } catch (Exception e) { result = false; - msg = e.getMessage(); + msg = "Invalid address"; } JSONObject jsonAddress = new JSONObject(); 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 index f98c7450afc..5998bc0850f 100644 --- 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 @@ -30,12 +30,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { String input = request.getParameter("value"); fillResponse(ByteString.copyFrom(ByteArray.fromHexString(input)), visible, response); } catch (Exception e) { - logger.debug("Exception: {}", e.getMessage()); - try { - response.getWriter().println(e.getMessage()); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processError(e, response); } } @@ -46,12 +41,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) JsonFormat.merge(params.getParams(), build, params.isVisible()); fillResponse(build.build().getValue(), params.isVisible(), response); } catch (Exception e) { - logger.debug("Exception: {}", e.getMessage()); - try { - response.getWriter().println(e.getMessage()); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processError(e, response); } } 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 index 0408215f09d..197f5aaec0d 100644 --- 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 @@ -1,7 +1,6 @@ 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; @@ -37,12 +36,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { response.getWriter().println(JsonFormat.printToString(transInfo, visible)); } } catch (Exception e) { - logger.debug("Exception: {}", e.getMessage()); - try { - response.getWriter().println(e.getMessage()); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processError(e, response); } } @@ -60,12 +54,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) response.getWriter().println(JsonFormat.printToString(transInfo, params.isVisible())); } } catch (Exception e) { - logger.debug("Exception: {}", e.getMessage()); - try { - response.getWriter().println(e.getMessage()); - } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); - } + Util.processError(e, response); } } diff --git a/framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java b/framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java index d6bf3850f30..532ddcd5521 100644 --- a/framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java +++ b/framework/src/test/java/org/tron/core/services/http/BroadcastServletTest.java @@ -156,7 +156,7 @@ public void doPostTest() throws IOException { while ((text = bufferedReader.readLine()) != null) { sb.append(text); } - Assert.assertTrue(sb.toString().contains("null")); + Assert.assertTrue(sb.toString().contains("{\"Error\":\"internal server error\"}")); httpUrlConnection.disconnect(); } } \ No newline at end of file diff --git a/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java b/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java new file mode 100644 index 00000000000..52ff23a7d2d --- /dev/null +++ b/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java @@ -0,0 +1,129 @@ +package org.tron.core.services.http; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +import com.googlecode.jsonrpc4j.JsonRpcServer; +import java.nio.charset.StandardCharsets; +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.mockito.MockedStatic; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.util.ReflectionTestUtils; +import org.tron.common.TestConstants; +import org.tron.core.config.args.Args; +import org.tron.core.services.interfaceJsonRpcOnPBFT.JsonRpcOnPBFTServlet; +import org.tron.core.services.interfaceJsonRpcOnSolidity.JsonRpcOnSolidityServlet; +import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT; +import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity; +import org.tron.core.services.jsonrpc.JsonRpcServlet; +import org.tron.core.services.ratelimiter.GlobalRateLimiter; +import org.tron.core.services.ratelimiter.RateLimiterContainer; +import org.tron.core.services.ratelimiter.RuntimeData; +import org.tron.core.services.ratelimiter.adapter.IRateLimiter; + +@RunWith(Parameterized.class) +public class JsonRpcRateLimiterServletTest { + + private final Class servletClass; + private RateLimiterServlet servlet; + private IRateLimiter perEndpoint; + private Object dispatcher; + private MockHttpServletRequest request; + private MockHttpServletResponse response; + + public JsonRpcRateLimiterServletTest(Class servletClass) { + this.servletClass = servletClass; + } + + @Parameterized.Parameters(name = "{0}") + public static Collection servlets() { + return Arrays.asList(new Object[][] { + {JsonRpcServlet.class}, + {JsonRpcOnSolidityServlet.class}, + {JsonRpcOnPBFTServlet.class} + }); + } + + @Before + public void setUp() throws Exception { + // Initialize Args before GlobalRateLimiter's static QPS limiters are loaded. + Args.setParam(new String[0], TestConstants.TEST_CONF); + servlet = servletClass.getDeclaredConstructor().newInstance(); + RateLimiterContainer container = new RateLimiterContainer(); + perEndpoint = mock(IRateLimiter.class); + container.add("http_", servletClass.getSimpleName(), perEndpoint); + ReflectionTestUtils.setField(servlet, "container", container); + + if (servlet instanceof JsonRpcOnSolidityServlet) { + dispatcher = mock(WalletOnSolidity.class); + ReflectionTestUtils.setField(servlet, "walletOnSolidity", dispatcher); + } else if (servlet instanceof JsonRpcOnPBFTServlet) { + dispatcher = mock(WalletOnPBFT.class); + ReflectionTestUtils.setField(servlet, "walletOnPBFT", dispatcher); + } else { + dispatcher = mock(JsonRpcServer.class); + ReflectionTestUtils.setField(servlet, "rpcServer", dispatcher); + } + + request = new MockHttpServletRequest("POST", "/jsonrpc"); + request.setServletPath("/jsonrpc"); + request.setRemoteAddr("10.0.0.1"); + request.setContentType("application/json"); + request.setContent("{\"jsonrpc\":\"2.0\",\"method\":\"eth_blockNumber\",\"id\":1}" + .getBytes(StandardCharsets.UTF_8)); + response = new MockHttpServletResponse(); + } + + @After + public void tearDown() { + Args.clearParam(); + } + + @Test + public void testPerEndpointRejectionReturnsSanitizedHttpError() throws Exception { + when(perEndpoint.acquirePermit(any(RuntimeData.class))).thenReturn(false); + + try (MockedStatic global = mockStatic(GlobalRateLimiter.class)) { + servlet.service(request, response); + + global.verify(() -> GlobalRateLimiter.acquirePermit(any()), never()); + assertRateLimitResponse(); + } + } + + @Test + public void testGlobalRejectionReturnsSanitizedHttpError() throws Exception { + when(perEndpoint.acquirePermit(any(RuntimeData.class))).thenReturn(true); + + try (MockedStatic global = mockStatic(GlobalRateLimiter.class)) { + global.when(() -> GlobalRateLimiter.acquirePermit(any())).thenReturn(false); + + servlet.service(request, response); + + global.verify(() -> GlobalRateLimiter.acquirePermit(any())); + assertRateLimitResponse(); + } + } + + private void assertRateLimitResponse() throws Exception { + assertEquals(200, response.getStatus()); + assertEquals("application/json; charset=utf-8", response.getContentType()); + assertEquals("{\"Error\":\"lack of computing resources\"}", + response.getContentAsString().trim()); + verify(perEndpoint).acquirePermit(any(RuntimeData.class)); + verifyNoInteractions(dispatcher); + } +} diff --git a/framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java b/framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java new file mode 100644 index 00000000000..5d4baa34c6f --- /dev/null +++ b/framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java @@ -0,0 +1,107 @@ +package org.tron.core.services.http; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; + +import com.google.protobuf.InvalidProtocolBufferException; +import org.bouncycastle.util.encoders.DecoderException; +import org.bouncycastle.util.encoders.Hex; +import org.junit.Test; +import org.springframework.mock.web.MockHttpServletResponse; +import org.tron.core.exception.ContractValidateException; +import org.tron.core.exception.HeaderNotFound; +import org.tron.core.exception.MaintenanceUnavailableException; +import org.tron.core.exception.ZkProofValidateException; +import org.tron.json.JSONException; +import org.tron.json.JSONObject; + +public class UtilProcessErrorTest { + + private static final String INTERNAL_SERVER_ERROR = "internal server error"; + private static final String RATE_LIMITER_ERROR_MSG = "lack of computing resources"; + + @Test + public void exactCompatibilityTypesPreserveNonBlankMessage() throws Exception { + assertError(new JsonFormat.ParseException("1:2: invalid \"field\"\nvalue"), + "1:2: invalid \"field\"\nvalue"); + assertError(new ContractValidateException("balance is not sufficient"), + "balance is not sufficient"); + assertError(new MaintenanceUnavailableException("maintenance in progress"), + "maintenance in progress"); + } + + @Test + public void unclassifiedTypesFailClosed() throws Exception { + DecoderException decoder = assertThrows(DecoderException.class, () -> Hex.decode("zz")); + Exception[] errors = { + new NullPointerException("internal field name"), + new JSONException("server serialization detail"), + new InvalidProtocolBufferException("stored protobuf detail"), + decoder, + new HeaderNotFound("latest block not found"), + new IllegalArgumentException("No enum constant internal.Type.VALUE"), + new IllegalAccessException(RATE_LIMITER_ERROR_MSG), + new IllegalAccessException("other access failure"), + new ZkProofValidateException("wrapped validation detail", true) + }; + + for (Exception error : errors) { + assertError(error, INTERNAL_SERVER_ERROR); + } + } + + @Test + public void onlyExactFixedControlSignalsArePreserved() throws Exception { + assertError(new IllegalArgumentException(Util.EVENTS_DEPRECATED_MSG), + Util.EVENTS_DEPRECATED_MSG); + assertError(new IllegalArgumentException("other argument failure"), INTERNAL_SERVER_ERROR); + assertError(new NumberFormatException(Util.EVENTS_DEPRECATED_MSG), INTERNAL_SERVER_ERROR); + } + + @Test + public void nullBlankAndSubclassMessagesFailClosed() throws Exception { + assertError(null, INTERNAL_SERVER_ERROR); + assertError(new JsonFormat.ParseException(null), INTERNAL_SERVER_ERROR); + assertError(new JsonFormat.ParseException(""), INTERNAL_SERVER_ERROR); + assertError(new JsonFormat.ParseException(" "), INTERNAL_SERVER_ERROR); + assertError(new ContractValidateException("subclass message") { }, INTERNAL_SERVER_ERROR); + } + + @Test + public void auditedErrorWriterPreservesTextVerbatim() throws Exception { + for (String audited : new String[] {Util.INVALID_ADDRESS_MSG, Util.RATE_LIMITER_ERROR_MSG}) { + MockHttpServletResponse response = new MockHttpServletResponse(); + Util.writeAuditedError(audited, response); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(audited, body.getString("Error")); + } + } + + @Test + public void auditedErrorWriterWithNullMessageWritesEmptyObject() throws Exception { + MockHttpServletResponse response = new MockHttpServletResponse(); + Util.writeAuditedError(null, response); + assertEquals("{}", response.getContentAsString().trim()); + } + + @Test + public void serverErrorChannelSanitizesLikeTheSharedPath() throws Exception { + assertServerError(new NullPointerException("internal field name"), INTERNAL_SERVER_ERROR); + assertServerError(new ContractValidateException("balance is not sufficient"), + "balance is not sufficient"); + } + + private static void assertServerError(Exception error, String expected) throws Exception { + MockHttpServletResponse response = new MockHttpServletResponse(); + Util.processServerError(error, response); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(expected, body.getString("Error")); + } + + private static void assertError(Exception error, String expected) throws Exception { + MockHttpServletResponse response = new MockHttpServletResponse(); + Util.processError(error, response); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(expected, body.getString("Error")); + } +} 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 index e1abb41d1e1..cacb904d9b9 100644 --- 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 @@ -1,202 +1,146 @@ package org.tron.core.services.http.solidity; -import static org.mockito.BDDMockito.given; +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 java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLStreamHandlerFactory; -import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import lombok.extern.slf4j.Slf4j; +import com.google.protobuf.ByteString; +import java.util.Arrays; +import java.util.Collection; import org.junit.After; -import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; -import org.tron.common.utils.FileUtil; -import org.tron.common.utils.PublicMethod; -import org.tron.core.services.http.solidity.mockito.HttpUrlStreamHandler; +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)); -@Slf4j -public class GetTransactionByIdSolidityServletTest { + @Parameter + public String method; - private static HttpUrlStreamHandler httpUrlStreamHandler; - private GetTransactionByIdSolidityServlet getTransactionByIdSolidityServlet; - private HttpServletRequest request; - private HttpServletResponse response; - private HttpURLConnection httpUrlConnection; - private OutputStreamWriter outputStreamWriter; - private URL url; - - /** - * . - */ - @BeforeClass - public static void init() { - // Allows for mocking URL connections - URLStreamHandlerFactory urlStreamHandlerFactory = mock(URLStreamHandlerFactory.class); - try { - URL.setURLStreamHandlerFactory(urlStreamHandlerFactory); - } catch (Error e) { - logger.info("Ignore error: {}", e.getMessage()); - } + private GetTransactionByIdSolidityServlet servlet; + private Wallet wallet; + private long savedMaxMessageSize; - httpUrlStreamHandler = new HttpUrlStreamHandler(); - given(urlStreamHandlerFactory.createURLStreamHandler("http")).willReturn(httpUrlStreamHandler); + @Parameters(name = "{0}") + public static Collection methods() { + return Arrays.asList(new Object[][] {{"GET"}, {"POST"}}); } - /** - * Init. - */ - @Before public void setUp() { - getTransactionByIdSolidityServlet = new GetTransactionByIdSolidityServlet(); - this.request = mock(HttpServletRequest.class); - this.response = mock(HttpServletResponse.class); - this.httpUrlConnection = mock(HttpURLConnection.class); - this.outputStreamWriter = mock(OutputStreamWriter.class); - httpUrlStreamHandler.resetConnections(); + savedMaxMessageSize = Args.getInstance().getHttpMaxMessageSize(); + Args.getInstance().setHttpMaxMessageSize(1024); + servlet = new GetTransactionByIdSolidityServlet(); + wallet = mock(Wallet.class); + ReflectionTestUtils.setField(servlet, "wallet", wallet); } - /** - * Release Resource. - */ @After public void tearDown() { - if (FileUtil.deleteDir(new File("temp.txt"))) { - logger.info("Release resources successful."); + Args.getInstance().setHttpMaxMessageSize(savedMaxMessageSize); + } + + @Test + public void walletFailureReturnsSanitizedJson() throws Exception { + when(wallet.getTransactionById(TRANSACTION_ID_BYTES)) + .thenThrow(new NullPointerException("internal transaction store detail")); + + MockHttpServletResponse response = request(TRANSACTION_ID); + + assertEquals("internal server error", errorMessage(response)); + verify(wallet).getTransactionById(TRANSACTION_ID_BYTES); + } + + @Test + public void invalidHexReturnsJsonWithoutCallingWallet() throws Exception { + MockHttpServletResponse response = request("zz"); + + String message = errorMessage(response); + if ("GET".equals(method)) { + assertEquals("internal server error", message); } else { - logger.info("Release resources failure."); + assertTrue(message.matches("\\d+:\\d+: INVALID hex String")); } + verifyNoInteractions(wallet); } @Test - public void doPostTest() throws IOException { - - //send Post request - - final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); - System.setOut(new PrintStream(outContent)); - String href = "http://127.0.0.1:" - + PublicMethod.chooseRandomPort() + "/walletsolidity/gettransactioninfobyid"; - httpUrlStreamHandler.addConnection(new URL(href), httpUrlConnection); - httpUrlConnection.setRequestMethod("POST"); - httpUrlConnection.setRequestProperty("Content-Type", "application/json"); - httpUrlConnection.setRequestProperty("Connection", "Keep-Alive"); - httpUrlConnection.setUseCaches(false); - httpUrlConnection.setDoOutput(true); - String postData = "{\"value\": \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef21" - + "3f2c55225a8bd2\"}"; - httpUrlConnection.setRequestProperty("Content-Length", String.valueOf(postData.length())); - - when(httpUrlConnection.getOutputStream()).thenReturn(outContent); - OutputStreamWriter out = new OutputStreamWriter(httpUrlConnection.getOutputStream(), - StandardCharsets.UTF_8); - out.write(postData); - out.flush(); - out.close(); - PrintWriter writer = new PrintWriter("temp.txt"); - when(response.getWriter()).thenReturn(writer); - - getTransactionByIdSolidityServlet.doPost(request, response); - // Get Response Body - String line; - StringBuilder result = new StringBuilder(); - - byte[] buffer = new byte[1024]; - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); - when(httpUrlConnection.getInputStream()).thenReturn(byteArrayInputStream); - BufferedReader in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(), - StandardCharsets.UTF_8)); - - while ((line = in.readLine()) != null) { - result.append(line).append("\n"); - } - Assert.assertNotNull(result); - in.close(); - writer.flush(); - FileInputStream fileInputStream = new FileInputStream("temp.txt"); - InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); - BufferedReader bufferedReader = new BufferedReader(inputStreamReader); - - StringBuilder sb = new StringBuilder(); - String text; - while ((text = bufferedReader.readLine()) != null) { - sb.append(text); - } - Assert.assertTrue(sb.toString().contains("null")); - httpUrlConnection.disconnect(); + public void missingTransactionKeepsEmptyObject() throws Exception { + MockHttpServletResponse response = request(TRANSACTION_ID); + + assertEquals(200, response.getStatus()); + assertEquals("{}", response.getContentAsString().trim()); + verify(wallet).getTransactionById(TRANSACTION_ID_BYTES); } @Test - public void doGetTest() throws IOException { - - final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); - System.setOut(new PrintStream(outContent)); - String href = "http://127.0.0.1:" - + PublicMethod.chooseRandomPort() + "/walletsolidity/gettransactioninfobyid"; - httpUrlStreamHandler.addConnection(new URL(href), httpUrlConnection); - httpUrlConnection.setRequestMethod("GET"); - httpUrlConnection.setRequestProperty("Content-Type", "application/json"); - httpUrlConnection.setRequestProperty("Connection", "Keep-Alive"); - httpUrlConnection.setUseCaches(false); - httpUrlConnection.setDoOutput(true); - String postData = "{\"value\": \"309b6fa3d01353e46f57dd8a8f27611f98e392b50d035cef21" - + "3f2c55225a8bd2\"}"; - httpUrlConnection.setRequestProperty("Content-Length", String.valueOf(postData.length())); - - when(httpUrlConnection.getOutputStream()).thenReturn(outContent); - OutputStreamWriter out = new OutputStreamWriter(httpUrlConnection.getOutputStream(), - StandardCharsets.UTF_8); - out.write(postData); - out.flush(); - out.close(); - PrintWriter writer = new PrintWriter("temp.txt"); - when(response.getWriter()).thenReturn(writer); - - getTransactionByIdSolidityServlet.doPost(request, response); - // Get Response Body - String line; - StringBuilder result = new StringBuilder(); - - byte[] buffer = new byte[1024]; - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); - when(httpUrlConnection.getInputStream()).thenReturn(byteArrayInputStream); - BufferedReader in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(), - StandardCharsets.UTF_8)); - - while ((line = in.readLine()) != null) { - result.append(line).append("\n"); - } - Assert.assertNotNull(result); - in.close(); - writer.flush(); - FileInputStream fileInputStream = new FileInputStream("temp.txt"); - InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); - BufferedReader bufferedReader = new BufferedReader(inputStreamReader); - - StringBuilder sb = new StringBuilder(); - String text; - while ((text = bufferedReader.readLine()) != null) { - sb.append(text); + public void successfulLookupKeepsTransaction() throws Exception { + ByteString signature = ByteString.copyFromUtf8("transaction signature"); + Transaction transaction = Transaction.newBuilder() + .setRawData(Transaction.raw.newBuilder().setTimestamp(123).setExpiration(456)) + .addSignature(signature).build(); + when(wallet.getTransactionById(TRANSACTION_ID_BYTES)).thenReturn(transaction); + + MockHttpServletResponse response = request(TRANSACTION_ID); + + assertEquals(200, response.getStatus()); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(4, body.size()); + JSONObject rawData = body.getJSONObject("raw_data"); + assertEquals(123L, rawData.getLongValue("timestamp")); + assertEquals(456L, rawData.getLongValue("expiration")); + assertEquals(0, rawData.getJSONArray("contract").size()); + assertEquals(ByteArray.toHexString(transaction.getRawData().toByteArray()), + body.getString("raw_data_hex")); + assertEquals(Sha256Hash.of(Args.getInstance().isECKeyCryptoEngine(), + transaction.getRawData().toByteArray()).toString(), body.getString("txID")); + assertEquals(1, body.getJSONArray("signature").size()); + assertEquals(ByteArray.toHexString(signature.toByteArray()), + body.getJSONArray("signature").getString(0)); + verify(wallet).getTransactionById(TRANSACTION_ID_BYTES); + } + + private MockHttpServletResponse request(String value) throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest(method, + "/walletsolidity/gettransactionbyid"); + MockHttpServletResponse response = new MockHttpServletResponse(); + if ("GET".equals(method)) { + request.setParameter("value", value); + servlet.doGet(request, response); + } else { + request.setContentType("application/json"); + request.setContent(("{\"value\":\"" + value + "\"}").getBytes(UTF_8)); + servlet.doPost(request, response); } - Assert.assertTrue(sb.toString().contains("null")); - httpUrlConnection.disconnect(); + return response; } -} + private static String errorMessage(MockHttpServletResponse response) throws Exception { + assertEquals(200, response.getStatus()); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(1, body.size()); + return body.getString("Error"); + } +} diff --git a/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java b/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java new file mode 100644 index 00000000000..a8810114f82 --- /dev/null +++ b/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java @@ -0,0 +1,135 @@ +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.core.Wallet; +import org.tron.core.config.args.Args; +import org.tron.json.JSONObject; +import org.tron.protos.Protocol.TransactionInfo; + +@RunWith(Parameterized.class) +public class GetTransactionInfoByIdSolidityServletTest { + + 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 GetTransactionInfoByIdSolidityServlet servlet; + private Wallet wallet; + private long savedMaxMessageSize; + + @Parameters(name = "{0}") + public static Collection methods() { + return Arrays.asList(new Object[][] {{"GET"}, {"POST"}}); + } + + @Before + public void setUp() { + savedMaxMessageSize = Args.getInstance().getHttpMaxMessageSize(); + Args.getInstance().setHttpMaxMessageSize(1024); + servlet = new GetTransactionInfoByIdSolidityServlet(); + wallet = mock(Wallet.class); + ReflectionTestUtils.setField(servlet, "wallet", wallet); + } + + @After + public void tearDown() { + Args.getInstance().setHttpMaxMessageSize(savedMaxMessageSize); + } + + @Test + public void walletFailureReturnsSanitizedJson() throws Exception { + when(wallet.getTransactionInfoById(TRANSACTION_ID_BYTES)) + .thenThrow(new NullPointerException("internal transaction store detail")); + + MockHttpServletResponse response = request(TRANSACTION_ID); + + assertEquals("internal server error", errorMessage(response)); + verify(wallet).getTransactionInfoById(TRANSACTION_ID_BYTES); + } + + @Test + public void invalidHexReturnsJsonWithoutCallingWallet() throws Exception { + MockHttpServletResponse response = request("zz"); + + String message = errorMessage(response); + if ("GET".equals(method)) { + assertEquals("internal server error", message); + } else { + assertTrue(message.matches("\\d+:\\d+: INVALID hex String")); + } + verifyNoInteractions(wallet); + } + + @Test + public void missingTransactionKeepsEmptyObject() throws Exception { + MockHttpServletResponse response = request(TRANSACTION_ID); + + assertEquals(200, response.getStatus()); + assertEquals("{}", response.getContentAsString().trim()); + verify(wallet).getTransactionInfoById(TRANSACTION_ID_BYTES); + } + + @Test + public void successfulLookupKeepsTransactionInfo() throws Exception { + TransactionInfo info = TransactionInfo.newBuilder() + .setId(TRANSACTION_ID_BYTES).setFee(7).setBlockNumber(123).build(); + when(wallet.getTransactionInfoById(TRANSACTION_ID_BYTES)).thenReturn(info); + + MockHttpServletResponse response = request(TRANSACTION_ID); + + assertEquals(200, response.getStatus()); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(3, body.size()); + assertEquals(TRANSACTION_ID, body.getString("id")); + assertEquals(7L, body.getLongValue("fee")); + assertEquals(123L, body.getLongValue("blockNumber")); + verify(wallet).getTransactionInfoById(TRANSACTION_ID_BYTES); + } + + private MockHttpServletResponse request(String value) throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest(method, + "/walletsolidity/gettransactioninfobyid"); + MockHttpServletResponse response = new MockHttpServletResponse(); + if ("GET".equals(method)) { + request.setParameter("value", value); + servlet.doGet(request, response); + } else { + request.setContentType("application/json"); + request.setContent(("{\"value\":\"" + value + "\"}").getBytes(UTF_8)); + servlet.doPost(request, response); + } + return response; + } + + private static String errorMessage(MockHttpServletResponse response) throws Exception { + assertEquals(200, response.getStatus()); + JSONObject body = JSONObject.parseObject(response.getContentAsString()); + assertEquals(1, body.size()); + return body.getString("Error"); + } +} From 87fd031d84ca733b397126b1d49d92a92f2ef856 Mon Sep 17 00:00:00 2001 From: GrapeS Date: Thu, 17 Sep 2026 14:54:01 +0800 Subject: [PATCH 3/4] refactor(http): derive http endpoint registry from @HttpApi annotations Replace the hand-maintained servlet wiring across the FullNode, solidity and PBFT HTTP surfaces with a single registry derived from @HttpApi annotations, and validate it at startup. - Introduce HttpApiRegistry as the single source of truth for which endpoint is mounted on which port, with what access level. - Drive the FullNode, solidity, SolidityNode and PBFT HTTP services from the registry instead of per-service servlet lists. - Group servlets into a subpackage and flatten the solidity and PBFT service packages. - Serve solidity, SolidityNode and PBFT endpoints with the shared base servlets; add cursor filters on the solidity and PBFT ports. - Fail fast on any registry initialisation error, and align the lite-fullnode history gate with the set of endpoints actually mounted. - Set shielded contract parameter endpoints to BUILD access, and restore the shielded transaction endpoints missing from the PBFT port. --- .../org/tron/core/config/DefaultConfig.java | 4 +- .../org/tron/core/services/RpcApiService.java | 2 +- .../filter/LiteFnQueryHttpFilter.java | 16 +- .../services/filter/PbftCursorFilter.java | 15 + .../services/filter/SolidityCursorFilter.java | 15 + .../services/filter/WalletCursorFilter.java | 56 ++ .../services/http/FullNodeHttpApiService.java | 504 +----------------- .../org/tron/core/services/http/HttpApi.java | 58 ++ .../core/services/http/HttpApiExcluded.java | 27 + .../core/services/http/HttpApiRegistry.java | 238 +++++++++ .../AccountPermissionUpdateServlet.java | 8 +- .../{ => servlets}/BroadcastHexServlet.java | 7 +- .../http/{ => servlets}/BroadcastServlet.java | 8 +- .../CancelAllUnfreezeV2Servlet.java | 7 +- .../http/{ => servlets}/ClearABIServlet.java | 8 +- .../{ => servlets}/CreateAccountServlet.java | 8 +- .../CreateAssetIssueServlet.java | 8 +- .../CreateCommonTransactionServlet.java | 8 +- .../CreateShieldNullifierServlet.java | 5 +- ...eateShieldedContractParametersServlet.java | 7 +- ...edContractParametersWithoutAskServlet.java | 7 +- .../CreateShieldedTransactionServlet.java | 5 +- ...TransactionWithoutSpendAuthSigServlet.java | 5 +- .../CreateSpendAuthSigServlet.java | 8 +- .../{ => servlets}/CreateWitnessServlet.java | 8 +- .../DelegateResourceServlet.java | 7 +- .../{ => servlets}/DeployContractServlet.java | 12 +- .../{ => servlets}/EstimateEnergyServlet.java | 7 +- .../{ => servlets}/ExchangeCreateServlet.java | 8 +- .../{ => servlets}/ExchangeInjectServlet.java | 8 +- .../ExchangeTransactionServlet.java | 8 +- .../ExchangeWithdrawServlet.java | 8 +- .../{ => servlets}/FreezeBalanceServlet.java | 8 +- .../FreezeBalanceV2Servlet.java | 7 +- .../GetAccountBalanceServlet.java | 8 +- .../{ => servlets}/GetAccountByIdServlet.java | 8 +- .../{ => servlets}/GetAccountNetServlet.java | 8 +- .../GetAccountResourceServlet.java | 7 +- .../{ => servlets}/GetAccountServlet.java | 8 +- .../{ => servlets}/GetAkFromAskServlet.java | 7 +- .../GetAssetIssueByAccountServlet.java | 8 +- .../GetAssetIssueByIdServlet.java | 8 +- .../GetAssetIssueByNameServlet.java | 8 +- .../GetAssetIssueListByNameServlet.java | 8 +- .../GetAssetIssueListServlet.java | 7 +- .../GetAvailableUnfreezeCountServlet.java | 7 +- .../GetBandwidthPricesServlet.java | 7 +- .../GetBlockBalanceServlet.java | 8 +- .../{ => servlets}/GetBlockByIdServlet.java | 8 +- .../GetBlockByLatestNumServlet.java | 8 +- .../GetBlockByLimitNextServlet.java | 8 +- .../{ => servlets}/GetBlockByNumServlet.java | 8 +- .../http/{ => servlets}/GetBlockServlet.java | 8 +- .../{ => servlets}/GetBrokerageServlet.java | 8 +- .../{ => servlets}/GetBurnTrxServlet.java | 8 +- .../GetCanDelegatedMaxSizeServlet.java | 7 +- .../GetCanWithdrawUnfreezeAmountServlet.java | 7 +- .../GetChainParametersServlet.java | 8 +- .../GetContractInfoServlet.java | 8 +- .../{ => servlets}/GetContractServlet.java | 10 +- ...tDelegatedResourceAccountIndexServlet.java | 8 +- ...elegatedResourceAccountIndexV2Servlet.java | 8 +- .../GetDelegatedResourceServlet.java | 8 +- .../GetDelegatedResourceV2Servlet.java | 10 +- .../{ => servlets}/GetDiversifierServlet.java | 8 +- .../GetEnergyPricesServlet.java | 7 +- .../GetExchangeByIdServlet.java | 8 +- .../GetExpandedSpendingKeyServlet.java | 7 +- .../GetIncomingViewingKeyServlet.java | 8 +- .../GetMarketOrderByAccountServlet.java | 8 +- .../GetMarketOrderByIdServlet.java | 8 +- .../GetMarketOrderListByPairServlet.java | 8 +- .../GetMarketPairListServlet.java | 8 +- .../GetMarketPriceByPairServlet.java | 8 +- .../GetMemoFeePricesServlet.java | 7 +- .../GetMerkleTreeVoucherInfoServlet.java | 5 +- .../GetNewShieldedAddressServlet.java | 7 +- .../GetNextMaintenanceTimeServlet.java | 8 +- .../{ => servlets}/GetNkFromNskServlet.java | 7 +- .../{ => servlets}/GetNodeInfoServlet.java | 8 +- .../{ => servlets}/GetNowBlockServlet.java | 7 +- .../GetPaginatedAssetIssueListServlet.java | 7 +- .../GetPaginatedExchangeListServlet.java | 7 +- .../GetPaginatedNowWitnessListServlet.java | 7 +- .../GetPaginatedProposalListServlet.java | 7 +- .../{ => servlets}/GetPendingSizeServlet.java | 8 +- .../GetProposalByIdServlet.java | 8 +- .../http/{ => servlets}/GetRcmServlet.java | 8 +- .../http/{ => servlets}/GetRewardServlet.java | 8 +- .../GetShieldTransactionHashServlet.java | 5 +- .../{ => servlets}/GetSpendingKeyServlet.java | 7 +- .../GetTransactionApprovedListServlet.java | 8 +- .../GetTransactionByIdServlet.java | 8 +- .../GetTransactionCountByBlockNumServlet.java | 8 +- .../GetTransactionFromPendingServlet.java | 8 +- .../GetTransactionInfoByBlockNumServlet.java | 7 +- .../GetTransactionInfoByIdServlet.java | 8 +- .../GetTransactionListFromPendingServlet.java | 8 +- .../GetTransactionReceiptByIdServlet.java | 8 +- .../GetTransactionSignWeightServlet.java | 8 +- ...rInputForShieldedTRC20ContractServlet.java | 7 +- .../GetZenPaymentAddressServlet.java | 8 +- ...ShieldedTRC20ContractNoteSpentServlet.java | 7 +- .../http/{ => servlets}/IsSpendServlet.java | 5 +- .../http/{ => servlets}/JsonFormat.java | 3 +- .../{ => servlets}/ListExchangesServlet.java | 8 +- .../http/{ => servlets}/ListNodesServlet.java | 7 +- .../{ => servlets}/ListProposalsServlet.java | 7 +- .../{ => servlets}/ListWitnessesServlet.java | 8 +- .../MarketCancelOrderServlet.java | 8 +- .../MarketSellAssetServlet.java | 8 +- .../http/{ => servlets}/MetricsServlet.java | 4 +- .../ParticipateAssetIssueServlet.java | 8 +- .../http/{ => servlets}/PostParams.java | 4 +- .../ProposalApproveServlet.java | 8 +- .../{ => servlets}/ProposalCreateServlet.java | 8 +- .../{ => servlets}/ProposalDeleteServlet.java | 8 +- .../{ => servlets}/RateLimiterServlet.java | 2 +- .../ScanAndMarkNoteByIvkServlet.java | 4 +- .../{ => servlets}/ScanNoteByIvkServlet.java | 4 +- .../{ => servlets}/ScanNoteByOvkServlet.java | 4 +- .../ScanShieldedTRC20NotesByIvkServlet.java | 7 +- .../ScanShieldedTRC20NotesByOvkServlet.java | 7 +- .../{ => servlets}/SetAccountIdServlet.java | 8 +- .../TotalTransactionServlet.java | 8 +- .../{ => servlets}/TransferAssetServlet.java | 8 +- .../http/{ => servlets}/TransferServlet.java | 8 +- .../TriggerConstantContractServlet.java | 8 +- .../TriggerSmartContractServlet.java | 8 +- .../UnDelegateResourceServlet.java | 7 +- .../{ => servlets}/UnFreezeAssetServlet.java | 8 +- .../UnFreezeBalanceServlet.java | 8 +- .../UnFreezeBalanceV2Servlet.java | 7 +- .../{ => servlets}/UpdateAccountServlet.java | 8 +- .../{ => servlets}/UpdateAssetServlet.java | 8 +- .../UpdateBrokerageServlet.java | 8 +- .../UpdateEnergyLimitServlet.java | 8 +- .../{ => servlets}/UpdateSettingServlet.java | 8 +- .../{ => servlets}/UpdateWitnessServlet.java | 8 +- .../services/http/{ => servlets}/Util.java | 52 +- .../ValidateAddressServlet.java | 8 +- .../VoteWitnessAccountServlet.java | 8 +- .../WithdrawBalanceServlet.java | 8 +- .../WithdrawExpireUnfreezeServlet.java | 8 +- .../GetTransactionByIdSolidityServlet.java | 58 -- ...GetTransactionInfoByIdSolidityServlet.java | 61 --- .../solidity/SolidityNodeHttpApiService.java | 268 +--------- .../interfaceOnPBFT/HttpApiOnPBFTService.java | 69 +++ .../http/EstimateEnergyOnPBFTServlet.java | 33 -- .../http/GetAccountByIdOnPBFTServlet.java | 25 - .../http/GetAccountOnPBFTServlet.java | 26 - .../http/GetAssetIssueByIdOnPBFTServlet.java | 25 - .../GetAssetIssueByNameOnPBFTServlet.java | 25 - .../GetAssetIssueListByNameOnPBFTServlet.java | 25 - .../http/GetAssetIssueListOnPBFTServlet.java | 26 - ...etAvailableUnfreezeCountOnPBFTServlet.java | 25 - .../http/GetBandwidthPricesOnPBFTServlet.java | 27 - .../http/GetBlockByIdOnPBFTServlet.java | 25 - .../GetBlockByLatestNumOnPBFTServlet.java | 26 - .../GetBlockByLimitNextOnPBFTServlet.java | 25 - .../http/GetBlockByNumOnPBFTServlet.java | 25 - .../http/GetBrokerageOnPBFTServlet.java | 26 - .../http/GetBurnTrxOnPBFTServlet.java | 26 - .../GetCanDelegatedMaxSizeOnPBFTServlet.java | 25 - ...anWithdrawUnfreezeAmountOnPBFTServlet.java | 26 - ...atedResourceAccountIndexOnPBFTServlet.java | 26 - ...edResourceAccountIndexV2OnPBFTServlet.java | 26 - .../GetDelegatedResourceOnPBFTServlet.java | 25 - .../GetDelegatedResourceV2OnPBFTServlet.java | 25 - .../http/GetEnergyPricesOnPBFTServlet.java | 27 - .../http/GetExchangeByIdOnPBFTServlet.java | 26 - .../GetMarketOrderByAccountOnPBFTServlet.java | 26 - .../http/GetMarketOrderByIdOnPBFTServlet.java | 26 - ...GetMarketOrderListByPairOnPBFTServlet.java | 26 - .../http/GetMarketPairListOnPBFTServlet.java | 26 - .../GetMarketPriceByPairOnPBFTServlet.java | 26 - ...GetMerkleTreeVoucherInfoOnPBFTServlet.java | 26 - .../http/GetNodeInfoOnPBFTServlet.java | 26 - .../http/GetNowBlockOnPBFTServlet.java | 26 - ...tPaginatedAssetIssueListOnPBFTServlet.java | 26 - .../http/GetRewardOnPBFTServlet.java | 28 - ...ansactionCountByBlockNumOnPBFTServlet.java | 26 - ...edTRC20ContractNoteSpentOnPBFTServlet.java | 26 - .../http/IsSpendOnPBFTServlet.java | 26 - .../http/ListExchangesOnPBFTServlet.java | 26 - .../http/ListWitnessesOnPBFTServlet.java | 26 - .../http/PBFT/GetBlockOnPBFTServlet.java | 26 - .../PBFT/GetTransactionByIdOnPBFTServlet.java | 25 - .../GetTransactionInfoByIdOnPBFTServlet.java | 28 - .../http/PBFT/HttpApiOnPBFTService.java | 278 ---------- .../ScanAndMarkNoteByIvkOnPBFTServlet.java | 26 - .../http/ScanNoteByIvkOnPBFTServlet.java | 26 - .../http/ScanNoteByOvkOnPBFTServlet.java | 26 - ...nShieldedTRC20NotesByIvkOnPBFTServlet.java | 25 - ...nShieldedTRC20NotesByOvkOnPBFTServlet.java | 24 - .../TriggerConstantContractOnPBFTServlet.java | 33 -- .../HttpApiOnSolidityService.java | 80 +++ .../http/EstimateEnergyOnSolidityServlet.java | 33 -- .../http/GetAccountByIdOnSolidityServlet.java | 25 - .../http/GetAccountOnSolidityServlet.java | 26 - .../GetAssetIssueByIdOnSolidityServlet.java | 25 - .../GetAssetIssueByNameOnSolidityServlet.java | 25 - ...AssetIssueListByNameOnSolidityServlet.java | 25 - .../GetAssetIssueListOnSolidityServlet.java | 26 - ...ailableUnfreezeCountOnSolidityServlet.java | 29 - .../GetBandwidthPricesOnSolidityServlet.java | 28 - .../http/GetBlockByIdOnSolidityServlet.java | 25 - .../GetBlockByLatestNumOnSolidityServlet.java | 26 - .../GetBlockByLimitNextOnSolidityServlet.java | 25 - .../http/GetBlockByNumOnSolidityServlet.java | 25 - .../http/GetBlockOnSolidityServlet.java | 26 - .../http/GetBrokerageOnSolidityServlet.java | 26 - .../http/GetBurnTrxOnSolidityServlet.java | 26 - ...tCanDelegatedMaxSizeOnSolidityServlet.java | 29 - ...thdrawUnfreezeAmountOnSolidityServlet.java | 30 -- ...ResourceAccountIndexOnSolidityServlet.java | 26 - ...sourceAccountIndexV2OnSolidityServlet.java | 26 - ...GetDelegatedResourceOnSolidityServlet.java | 29 - ...tDelegatedResourceV2OnSolidityServlet.java | 29 - .../GetEnergyPricesOnSolidityServlet.java | 28 - .../GetExchangeByIdOnSolidityServlet.java | 26 - ...MarketOrderByAccountOnSolidityServlet.java | 26 - .../GetMarketOrderByIdOnSolidityServlet.java | 26 - ...arketOrderListByPairOnSolidityServlet.java | 26 - .../GetMarketPairListOnSolidityServlet.java | 26 - ...GetMarketPriceByPairOnSolidityServlet.java | 26 - ...erkleTreeVoucherInfoOnSolidityServlet.java | 26 - .../http/GetNodeInfoOnSolidityServlet.java | 26 - .../http/GetNowBlockOnSolidityServlet.java | 26 - ...inatedAssetIssueListOnSolidityServlet.java | 26 - ...inatedNowWitnessListOnSolidityServlet.java | 24 - .../http/GetRewardOnSolidityServlet.java | 28 - ...ctionCountByBlockNumOnSolidityServlet.java | 26 - ...actionInfoByBlockNumOnSolidityServlet.java | 26 - ...C20ContractNoteSpentOnSolidityServlet.java | 28 - .../http/IsSpendOnSolidityServlet.java | 26 - .../http/ListExchangesOnSolidityServlet.java | 26 - .../http/ListWitnessesOnSolidityServlet.java | 26 - ...ScanAndMarkNoteByIvkOnSolidityServlet.java | 26 - .../http/ScanNoteByIvkOnSolidityServlet.java | 26 - .../http/ScanNoteByOvkOnSolidityServlet.java | 26 - ...eldedTRC20NotesByIvkOnSolidityServlet.java | 28 - ...eldedTRC20NotesByOvkOnSolidityServlet.java | 28 - ...ggerConstantContractOnSolidityServlet.java | 33 -- .../GetTransactionByIdOnSolidityServlet.java | 25 - ...tTransactionInfoByIdOnSolidityServlet.java | 28 - .../solidity/HttpApiOnSolidityService.java | 307 ----------- .../core/services/jsonrpc/JsonRpcServlet.java | 2 +- .../services/jsonrpc/TronJsonRpcImpl.java | 8 +- .../utils/client/utils/TransactionUtils.java | 2 +- .../java/org/tron/core/ShieldWalletTest.java | 4 +- .../tron/core/exception/TronErrorTest.java | 5 +- .../java/org/tron/core/pbft/PbftApiTest.java | 2 +- .../filter/HttpApiAccessFilterTest.java | 4 +- .../filter/WalletCursorFilterTest.java | 74 +++ .../http/CursorFilterInstallationTest.java | 109 ++++ .../services/http/HttpApiRegistryTest.java | 184 +++++++ .../http/RateLimiterServletInt64Test.java | 3 + .../http/regtest/blank/BlankServlet.java | 13 + .../http/regtest/both/BothServlet.java | 15 + .../buildcursor/BuildOnPbftServlet.java | 13 + .../http/regtest/dupsuffix/DupOneServlet.java | 13 + .../http/regtest/dupsuffix/DupTwoServlet.java | 13 + .../emptysurface/EmptySurfaceServlet.java | 13 + .../http/regtest/nested/NestedHolder.java | 16 + .../http/regtest/noanno/NoAnnoServlet.java | 8 + .../notcomponent/NotComponentServlet.java | 11 + .../http/regtest/slash/SlashServlet.java | 13 + .../regtest/valid/ValidExcludedServlet.java | 9 + .../http/regtest/valid/ValidReadServlet.java | 14 + .../http/regtest/valid/ValidWriteServlet.java | 13 + .../regtest/whitespace/WhitespaceServlet.java | 13 + .../regtest/wildcard/WildcardServlet.java | 13 + .../writecursor/WriteOnSolidityServlet.java | 13 + .../AccountPermissionUpdateServletTest.java | 2 +- .../http/{ => servlets}/BaseHttpTest.java | 2 +- .../{ => servlets}/BroadcastServletTest.java | 2 +- .../CancelAllUnfreezeV2ServletTest.java | 2 +- .../{ => servlets}/ClearABIServletTest.java | 2 +- .../CreateAccountServletTest.java | 3 +- .../CreateAssetIssueServletTest.java | 2 +- .../CreateSpendAuthSigServletTest.java | 2 +- .../CreateWitnessServletTest.java | 2 +- .../DelegateResourceServletTest.java | 2 +- .../DeployContractServletTest.java | 2 +- .../ExchangeCreateServletTest.java | 2 +- .../ExchangeInjectServletTest.java | 2 +- .../ExchangeTransactionServletTest.java | 2 +- .../ExchangeWithdrawServletTest.java | 2 +- .../FreezeBalanceServletTest.java | 2 +- .../FreezeBalanceV2ServletTest.java | 2 +- .../GetAccountByIdServletTest.java | 2 +- .../GetAccountResourceServletTest.java | 2 +- .../{ => servlets}/GetAccountServletTest.java | 2 +- .../GetAssetIssueByIdServletTest.java | 2 +- .../GetAssetIssueByNameServletTest.java | 2 +- .../GetAssetIssueListByNameServletTest.java | 2 +- .../GetAssetIssueListServletTest.java | 2 +- .../GetBandwidthPricesServletTest.java | 2 +- .../GetBlockByIdServletTest.java | 3 +- .../GetBlockByNumServletTest.java | 2 +- .../{ => servlets}/GetBlockServletTest.java | 2 +- .../GetBrokerageServletTest.java | 2 +- .../GetContractInfoServletTest.java | 2 +- .../GetContractServletTest.java | 2 +- ...egatedResourceAccountIndexServletTest.java | 2 +- ...atedResourceAccountIndexV2ServletTest.java | 2 +- .../GetEnergyPricesServletTest.java | 2 +- .../GetExchangeByIdServletTest.java | 2 +- .../GetMarketOrderByAccountServletTest.java | 2 +- .../GetMemoFeePricesServletTest.java | 2 +- .../GetNowBlockServletTest.java | 2 +- .../GetProposalByIdServletTest.java | 2 +- .../{ => servlets}/GetRewardServletTest.java | 2 +- ...tTransactionInfoByBlockNumServletTest.java | 2 +- .../GetTransactionInfoByIdServletTest.java | 2 +- ...TransactionListFromPendingServletTest.java | 4 +- .../http/{ => servlets}/HttpServletTest.java | 2 +- .../{ => servlets}/JsonFormatEscapeTest.java | 3 +- .../JsonFormatInt64AsStringTest.java | 2 +- .../http/{ => servlets}/JsonFormatTest.java | 4 +- .../{ => servlets}/ListNodesServletTest.java | 2 +- .../ListProposalsServletTest.java | 2 +- .../MarketCancelOrderServletTest.java | 2 +- .../MarketSellAssetServletTest.java | 2 +- .../ParticipateAssetIssueServletTest.java | 2 +- .../ProposalApproveServletTest.java | 2 +- .../ProposalCreateServletTest.java | 2 +- .../ProposalDeleteServletTest.java | 2 +- .../RateLimiterServletTest.java | 2 +- .../ScanShieldedTRC20NotesServletTest.java | 4 +- .../SetAccountIdServletTest.java | 2 +- .../TransferAssetServletTest.java | 2 +- .../{ => servlets}/TransferServletTest.java | 2 +- .../TriggerConstantContractServletTest.java | 2 +- .../TriggerSmartContractServletTest.java | 2 +- .../UnDelegateResourceServletTest.java | 2 +- .../UnFreezeAssetServletTest.java | 2 +- .../UnFreezeBalanceServletTest.java | 2 +- .../UnFreezeBalanceV2ServletTest.java | 2 +- .../UpdateAccountServletTest.java | 2 +- .../UpdateAssetServletTest.java | 2 +- .../UpdateBrokerageServletTest.java | 2 +- .../UpdateEnergyLimitServletTest.java | 2 +- .../UpdateSettingServletTest.java | 2 +- .../UpdateWitnessServletTest.java | 2 +- .../http/{ => servlets}/UtilMockTest.java | 2 +- .../http/{ => servlets}/UtilTest.java | 2 +- .../ValidateAddressServletTest.java | 2 +- .../VoteWitnessAccountServletTest.java | 2 +- .../WithdrawBalanceServletTest.java | 2 +- .../WithdrawExpireUnfreezeServletTest.java | 2 +- ...GetTransactionByIdSolidityServletTest.java | 146 ----- .../GetBandwidthPricesOnPBFTServletTest.java | 57 -- .../GetEnergyPricesOnPBFTServletTest.java | 57 -- ...tBandwidthPricesOnSolidityServletTest.java | 57 -- .../GetEnergyPricesOnSolidityServletTest.java | 57 -- 357 files changed, 2040 insertions(+), 4731 deletions(-) create mode 100644 framework/src/main/java/org/tron/core/services/filter/PbftCursorFilter.java create mode 100644 framework/src/main/java/org/tron/core/services/filter/SolidityCursorFilter.java create mode 100644 framework/src/main/java/org/tron/core/services/filter/WalletCursorFilter.java create mode 100644 framework/src/main/java/org/tron/core/services/http/HttpApi.java create mode 100644 framework/src/main/java/org/tron/core/services/http/HttpApiExcluded.java create mode 100644 framework/src/main/java/org/tron/core/services/http/HttpApiRegistry.java rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/AccountPermissionUpdateServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/BroadcastHexServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/BroadcastServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CancelAllUnfreezeV2Servlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ClearABIServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateAccountServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateAssetIssueServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateCommonTransactionServlet.java (88%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateShieldNullifierServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateShieldedContractParametersServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateShieldedContractParametersWithoutAskServlet.java (81%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateShieldedTransactionServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateShieldedTransactionWithoutSpendAuthSigServlet.java (88%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateSpendAuthSigServlet.java (79%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/CreateWitnessServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/DelegateResourceServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/DeployContractServlet.java (89%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/EstimateEnergyServlet.java (90%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ExchangeCreateServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ExchangeInjectServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ExchangeTransactionServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ExchangeWithdrawServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/FreezeBalanceServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/FreezeBalanceV2Servlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAccountBalanceServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAccountByIdServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAccountNetServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAccountResourceServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAccountServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAkFromAskServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueByAccountServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueByIdServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueByNameServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueListByNameServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueListServlet.java (75%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetAvailableUnfreezeCountServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBandwidthPricesServlet.java (73%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBlockBalanceServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBlockByIdServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBlockByLatestNumServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBlockByLimitNextServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBlockByNumServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBlockServlet.java (89%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBrokerageServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetBurnTrxServlet.java (74%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetCanDelegatedMaxSizeServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetCanWithdrawUnfreezeAmountServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetChainParametersServlet.java (74%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetContractInfoServlet.java (90%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetContractServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetDelegatedResourceAccountIndexServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetDelegatedResourceAccountIndexV2Servlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetDelegatedResourceServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetDelegatedResourceV2Servlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetDiversifierServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetEnergyPricesServlet.java (73%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetExchangeByIdServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetExpandedSpendingKeyServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetIncomingViewingKeyServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMarketOrderByAccountServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMarketOrderByIdServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMarketOrderListByPairServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMarketPairListServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMarketPriceByPairServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMemoFeePricesServlet.java (77%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetMerkleTreeVoucherInfoServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetNewShieldedAddressServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetNextMaintenanceTimeServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetNkFromNskServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetNodeInfoServlet.java (73%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetNowBlockServlet.java (75%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetPaginatedAssetIssueListServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetPaginatedExchangeListServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetPaginatedNowWitnessListServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetPaginatedProposalListServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetPendingSizeServlet.java (77%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetProposalByIdServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetRcmServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetRewardServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetShieldTransactionHashServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetSpendingKeyServlet.java (82%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionApprovedListServlet.java (81%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionByIdServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionCountByBlockNumServlet.java (81%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionFromPendingServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionInfoByBlockNumServlet.java (88%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionInfoByIdServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionListFromPendingServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionReceiptByIdServlet.java (86%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTransactionSignWeightServlet.java (81%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetTriggerInputForShieldedTRC20ContractServlet.java (80%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/GetZenPaymentAddressServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/IsShieldedTRC20ContractNoteSpentServlet.java (77%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/IsSpendServlet.java (87%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/JsonFormat.java (99%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ListExchangesServlet.java (71%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ListNodesServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ListProposalsServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ListWitnessesServlet.java (75%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/MarketCancelOrderServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/MarketSellAssetServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/MetricsServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ParticipateAssetIssueServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/PostParams.java (88%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ProposalApproveServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ProposalCreateServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ProposalDeleteServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/RateLimiterServlet.java (99%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ScanAndMarkNoteByIvkServlet.java (94%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ScanNoteByIvkServlet.java (93%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ScanNoteByOvkServlet.java (91%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ScanShieldedTRC20NotesByIvkServlet.java (91%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ScanShieldedTRC20NotesByOvkServlet.java (89%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/SetAccountIdServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/TotalTransactionServlet.java (78%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/TransferAssetServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/TransferServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/TriggerConstantContractServlet.java (90%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/TriggerSmartContractServlet.java (93%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UnDelegateResourceServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UnFreezeAssetServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UnFreezeBalanceServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UnFreezeBalanceV2Servlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UpdateAccountServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UpdateAssetServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UpdateBrokerageServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UpdateEnergyLimitServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UpdateSettingServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/UpdateWitnessServlet.java (83%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/Util.java (92%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/ValidateAddressServlet.java (89%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/VoteWitnessAccountServlet.java (84%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/WithdrawBalanceServlet.java (85%) rename framework/src/main/java/org/tron/core/services/http/{ => servlets}/WithdrawExpireUnfreezeServlet.java (85%) delete mode 100644 framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServlet.java create mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/HttpApiOnPBFTService.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/EstimateEnergyOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAccountOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueByNameOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListByNameOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAssetIssueListOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetAvailableUnfreezeCountOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLatestNumOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByLimitNextOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBlockByNumOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBrokerageOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetBurnTrxOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanDelegatedMaxSizeOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetCanWithdrawUnfreezeAmountOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceAccountIndexV2OnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetDelegatedResourceV2OnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetExchangeByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByAccountOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketOrderListByPairOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPairListOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMarketPriceByPairOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetMerkleTreeVoucherInfoOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNodeInfoOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetNowBlockOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetPaginatedAssetIssueListOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetRewardOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetTransactionCountByBlockNumOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsShieldedTRC20ContractNoteSpentOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/IsSpendOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListExchangesOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ListWitnessesOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetBlockOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/GetTransactionInfoByIdOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/HttpApiOnPBFTService.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanAndMarkNoteByIvkOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByIvkOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanNoteByOvkOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByIvkOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/ScanShieldedTRC20NotesByOvkOnPBFTServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/TriggerConstantContractOnPBFTServlet.java create mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/HttpApiOnSolidityService.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/EstimateEnergyOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAccountOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueByNameOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListByNameOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAssetIssueListOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetAvailableUnfreezeCountOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLatestNumOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByLimitNextOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockByNumOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBlockOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBrokerageOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetBurnTrxOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanDelegatedMaxSizeOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetCanWithdrawUnfreezeAmountOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceAccountIndexV2OnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetDelegatedResourceV2OnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetExchangeByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByAccountOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketOrderListByPairOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPairListOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMarketPriceByPairOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetMerkleTreeVoucherInfoOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNodeInfoOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetNowBlockOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedAssetIssueListOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetPaginatedNowWitnessListOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetRewardOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionCountByBlockNumOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetTransactionInfoByBlockNumOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsShieldedTRC20ContractNoteSpentOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/IsSpendOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListExchangesOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ListWitnessesOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanAndMarkNoteByIvkOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByIvkOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanNoteByOvkOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByIvkOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/ScanShieldedTRC20NotesByOvkOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/TriggerConstantContractOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/GetTransactionInfoByIdOnSolidityServlet.java delete mode 100644 framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/HttpApiOnSolidityService.java create mode 100644 framework/src/test/java/org/tron/core/services/filter/WalletCursorFilterTest.java create mode 100644 framework/src/test/java/org/tron/core/services/http/CursorFilterInstallationTest.java create mode 100644 framework/src/test/java/org/tron/core/services/http/HttpApiRegistryTest.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/blank/BlankServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/both/BothServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/buildcursor/BuildOnPbftServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupOneServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/dupsuffix/DupTwoServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/emptysurface/EmptySurfaceServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/nested/NestedHolder.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/noanno/NoAnnoServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/notcomponent/NotComponentServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/slash/SlashServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidExcludedServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidReadServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/valid/ValidWriteServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/whitespace/WhitespaceServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/wildcard/WildcardServlet.java create mode 100644 framework/src/test/java/org/tron/core/services/http/regtest/writecursor/WriteOnSolidityServlet.java rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/AccountPermissionUpdateServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/BaseHttpTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/BroadcastServletTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/CancelAllUnfreezeV2ServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ClearABIServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/CreateAccountServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/CreateAssetIssueServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/CreateSpendAuthSigServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/CreateWitnessServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/DelegateResourceServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/DeployContractServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ExchangeCreateServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ExchangeInjectServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ExchangeTransactionServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ExchangeWithdrawServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/FreezeBalanceServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/FreezeBalanceV2ServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAccountByIdServletTest.java (96%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAccountResourceServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAccountServletTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueByIdServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueByNameServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueListByNameServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetAssetIssueListServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetBandwidthPricesServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetBlockByIdServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetBlockByNumServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetBlockServletTest.java (96%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetBrokerageServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetContractInfoServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetContractServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetDelegatedResourceAccountIndexServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetDelegatedResourceAccountIndexV2ServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetEnergyPricesServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetExchangeByIdServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetMarketOrderByAccountServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetMemoFeePricesServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetNowBlockServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetProposalByIdServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetRewardServletTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetTransactionInfoByBlockNumServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetTransactionInfoByIdServletTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/GetTransactionListFromPendingServletTest.java (95%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/HttpServletTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/JsonFormatEscapeTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/JsonFormatInt64AsStringTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/JsonFormatTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ListNodesServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ListProposalsServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/MarketCancelOrderServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/MarketSellAssetServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ParticipateAssetIssueServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ProposalApproveServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ProposalCreateServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ProposalDeleteServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/RateLimiterServletTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ScanShieldedTRC20NotesServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/SetAccountIdServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/TransferAssetServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/TransferServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/TriggerConstantContractServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/TriggerSmartContractServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UnDelegateResourceServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UnFreezeAssetServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UnFreezeBalanceServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UnFreezeBalanceV2ServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UpdateAccountServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UpdateAssetServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UpdateBrokerageServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UpdateEnergyLimitServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UpdateSettingServletTest.java (98%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UpdateWitnessServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UtilMockTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UtilTest.java (99%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/ValidateAddressServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/VoteWitnessAccountServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/WithdrawBalanceServletTest.java (97%) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/WithdrawExpireUnfreezeServletTest.java (97%) delete mode 100644 framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionByIdSolidityServletTest.java delete mode 100644 framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServletTest.java delete mode 100644 framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServletTest.java delete mode 100644 framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServletTest.java delete mode 100644 framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServletTest.java diff --git a/framework/src/main/java/org/tron/core/config/DefaultConfig.java b/framework/src/main/java/org/tron/core/config/DefaultConfig.java index 06d93682342..d36640b0c40 100755 --- a/framework/src/main/java/org/tron/core/config/DefaultConfig.java +++ b/framework/src/main/java/org/tron/core/config/DefaultConfig.java @@ -11,10 +11,10 @@ import org.tron.core.config.args.Args; import org.tron.core.db.RevokingDatabase; import org.tron.core.db2.core.SnapshotManager; +import org.tron.core.services.interfaceOnPBFT.HttpApiOnPBFTService; import org.tron.core.services.interfaceOnPBFT.RpcApiServiceOnPBFT; -import org.tron.core.services.interfaceOnPBFT.http.PBFT.HttpApiOnPBFTService; +import org.tron.core.services.interfaceOnSolidity.HttpApiOnSolidityService; import org.tron.core.services.interfaceOnSolidity.RpcApiServiceOnSolidity; -import org.tron.core.services.interfaceOnSolidity.http.solidity.HttpApiOnSolidityService; @Slf4j(topic = "app") @Configuration diff --git a/framework/src/main/java/org/tron/core/services/RpcApiService.java b/framework/src/main/java/org/tron/core/services/RpcApiService.java index b9cb05a3b14..9e208f25137 100755 --- a/framework/src/main/java/org/tron/core/services/RpcApiService.java +++ b/framework/src/main/java/org/tron/core/services/RpcApiService.java @@ -95,7 +95,7 @@ import org.tron.core.exception.VMIllegalException; import org.tron.core.exception.ZksnarkException; import org.tron.core.metrics.MetricsApiService; -import org.tron.core.services.http.Util; +import org.tron.core.services.http.servlets.Util; import org.tron.core.utils.TransactionUtil; import org.tron.core.zen.address.DiversifierT; import org.tron.core.zen.address.IncomingViewingKey; diff --git a/framework/src/main/java/org/tron/core/services/filter/LiteFnQueryHttpFilter.java b/framework/src/main/java/org/tron/core/services/filter/LiteFnQueryHttpFilter.java index 07025996677..11f6b2c8533 100644 --- a/framework/src/main/java/org/tron/core/services/filter/LiteFnQueryHttpFilter.java +++ b/framework/src/main/java/org/tron/core/services/filter/LiteFnQueryHttpFilter.java @@ -36,15 +36,10 @@ public static Set getFilterPaths() { filterPaths.add("/wallet/getblockbylatestnum"); filterPaths.add("/wallet/getblockbylimitnext"); filterPaths.add("/wallet/getblockbynum"); - filterPaths.add("/wallet/getmerkletreevoucherinfo"); filterPaths.add("/wallet/gettransactionbyid"); filterPaths.add("/wallet/gettransactioncountbyblocknum"); filterPaths.add("/wallet/gettransactioninfobyid"); filterPaths.add("/wallet/gettransactionreceiptbyid"); - filterPaths.add("/wallet/isspend"); - filterPaths.add("/wallet/scanandmarknotebyivk"); - filterPaths.add("/wallet/scannotebyivk"); - filterPaths.add("/wallet/scannotebyovk"); filterPaths.add("/wallet/totaltransaction"); filterPaths.add("/wallet/gettransactioninfobyblocknum"); filterPaths.add("/wallet/getmarketorderbyaccount"); @@ -61,14 +56,9 @@ public static Set getFilterPaths() { filterPaths.add("/walletsolidity/getblockbylatestnum"); filterPaths.add("/walletsolidity/getblockbylimitnext"); filterPaths.add("/walletsolidity/getblockbynum"); - filterPaths.add("/walletsolidity/getmerkletreevoucherinfo"); filterPaths.add("/walletsolidity/gettransactionbyid"); filterPaths.add("/walletsolidity/gettransactioncountbyblocknum"); filterPaths.add("/walletsolidity/gettransactioninfobyid"); - filterPaths.add("/walletsolidity/isspend"); - filterPaths.add("/walletsolidity/scanandmarknotebyivk"); - filterPaths.add("/walletsolidity/scannotebyivk"); - filterPaths.add("/walletsolidity/scannotebyovk"); filterPaths.add("/walletsolidity/gettransactioninfobyblocknum"); filterPaths.add("/walletsolidity/getmarketorderbyaccount"); filterPaths.add("/walletsolidity/getmarketorderbyid"); @@ -84,14 +74,10 @@ public static Set 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 servlet; + private final EnumSet surfaces; + + private Entry(String suffix, Class servlet, + EnumSet surfaces) { + this.suffix = suffix; + this.servlet = servlet; + this.surfaces = surfaces; + } + + public String getSuffix() { + return suffix; + } + + public Class 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 methods() { - return Arrays.asList(new Object[][] {{"GET"}, {"POST"}}); - } - - @Before - public void setUp() { - savedMaxMessageSize = Args.getInstance().getHttpMaxMessageSize(); - Args.getInstance().setHttpMaxMessageSize(1024); - servlet = new GetTransactionByIdSolidityServlet(); - wallet = mock(Wallet.class); - ReflectionTestUtils.setField(servlet, "wallet", wallet); - } - - @After - public void tearDown() { - Args.getInstance().setHttpMaxMessageSize(savedMaxMessageSize); - } - - @Test - public void walletFailureReturnsSanitizedJson() throws Exception { - when(wallet.getTransactionById(TRANSACTION_ID_BYTES)) - .thenThrow(new NullPointerException("internal transaction store detail")); - - MockHttpServletResponse response = request(TRANSACTION_ID); - - assertEquals("internal server error", errorMessage(response)); - verify(wallet).getTransactionById(TRANSACTION_ID_BYTES); - } - - @Test - public void invalidHexReturnsJsonWithoutCallingWallet() throws Exception { - MockHttpServletResponse response = request("zz"); - - String message = errorMessage(response); - if ("GET".equals(method)) { - assertEquals("internal server error", message); - } else { - assertTrue(message.matches("\\d+:\\d+: INVALID hex String")); - } - verifyNoInteractions(wallet); - } - - @Test - public void missingTransactionKeepsEmptyObject() throws Exception { - MockHttpServletResponse response = request(TRANSACTION_ID); - - assertEquals(200, response.getStatus()); - assertEquals("{}", response.getContentAsString().trim()); - verify(wallet).getTransactionById(TRANSACTION_ID_BYTES); - } - - @Test - public void successfulLookupKeepsTransaction() throws Exception { - ByteString signature = ByteString.copyFromUtf8("transaction signature"); - Transaction transaction = Transaction.newBuilder() - .setRawData(Transaction.raw.newBuilder().setTimestamp(123).setExpiration(456)) - .addSignature(signature).build(); - when(wallet.getTransactionById(TRANSACTION_ID_BYTES)).thenReturn(transaction); - - MockHttpServletResponse response = request(TRANSACTION_ID); - - assertEquals(200, response.getStatus()); - JSONObject body = JSONObject.parseObject(response.getContentAsString()); - assertEquals(4, body.size()); - JSONObject rawData = body.getJSONObject("raw_data"); - assertEquals(123L, rawData.getLongValue("timestamp")); - assertEquals(456L, rawData.getLongValue("expiration")); - assertEquals(0, rawData.getJSONArray("contract").size()); - assertEquals(ByteArray.toHexString(transaction.getRawData().toByteArray()), - body.getString("raw_data_hex")); - assertEquals(Sha256Hash.of(Args.getInstance().isECKeyCryptoEngine(), - transaction.getRawData().toByteArray()).toString(), body.getString("txID")); - assertEquals(1, body.getJSONArray("signature").size()); - assertEquals(ByteArray.toHexString(signature.toByteArray()), - body.getJSONArray("signature").getString(0)); - verify(wallet).getTransactionById(TRANSACTION_ID_BYTES); - } - - private MockHttpServletResponse request(String value) throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(method, - "/walletsolidity/gettransactionbyid"); - MockHttpServletResponse response = new MockHttpServletResponse(); - if ("GET".equals(method)) { - request.setParameter("value", value); - servlet.doGet(request, response); - } else { - request.setContentType("application/json"); - request.setContent(("{\"value\":\"" + value + "\"}").getBytes(UTF_8)); - servlet.doPost(request, response); - } - return response; - } - - private static String errorMessage(MockHttpServletResponse response) throws Exception { - assertEquals(200, response.getStatus()); - JSONObject body = JSONObject.parseObject(response.getContentAsString()); - assertEquals(1, body.size()); - return body.getString("Error"); - } -} diff --git a/framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServletTest.java b/framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServletTest.java deleted file mode 100644 index b37a792bc45..00000000000 --- a/framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetBandwidthPricesOnPBFTServletTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.tron.core.services.interfaceOnPBFT.http; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.tron.common.utils.client.utils.HttpMethed.createRequest; - -import java.io.UnsupportedEncodingException; -import javax.annotation.Resource; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.junit.BeforeClass; -import org.junit.Test; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.tron.common.BaseTest; -import org.tron.common.TestConstants; -import org.tron.core.config.args.Args; -import org.tron.json.JSONObject; - -public class GetBandwidthPricesOnPBFTServletTest extends BaseTest { - - @Resource - private GetBandwidthPricesOnPBFTServlet getBandwidthPricesOnPBFTServlet; - - @BeforeClass - public static void init() { - Args.setParam(new String[]{"-d", dbPath()}, TestConstants.TEST_CONF); - } - - @Test - public void testGet() { - MockHttpServletRequest request = createRequest(HttpGet.METHOD_NAME); - MockHttpServletResponse response = new MockHttpServletResponse(); - getBandwidthPricesOnPBFTServlet.doPost(request, response); - try { - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } - - @Test - public void testPost() { - MockHttpServletRequest request = createRequest(HttpPost.METHOD_NAME); - try { - MockHttpServletResponse response = new MockHttpServletResponse(); - getBandwidthPricesOnPBFTServlet.doPost(request, response); - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } -} diff --git a/framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServletTest.java b/framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServletTest.java deleted file mode 100644 index 71d7e7e4b0b..00000000000 --- a/framework/src/test/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServletTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.tron.core.services.interfaceOnPBFT.http; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.tron.common.utils.client.utils.HttpMethed.createRequest; - -import java.io.UnsupportedEncodingException; -import javax.annotation.Resource; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.junit.BeforeClass; -import org.junit.Test; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.tron.common.BaseTest; -import org.tron.common.TestConstants; -import org.tron.core.config.args.Args; -import org.tron.json.JSONObject; - -public class GetEnergyPricesOnPBFTServletTest extends BaseTest { - - @Resource - private GetEnergyPricesOnPBFTServlet getEnergyPricesOnPBFTServlet; - - @BeforeClass - public static void init() { - Args.setParam(new String[]{"-d", dbPath()}, TestConstants.TEST_CONF); - } - - @Test - public void testGet() { - MockHttpServletRequest request = createRequest(HttpGet.METHOD_NAME); - MockHttpServletResponse response = new MockHttpServletResponse(); - getEnergyPricesOnPBFTServlet.doPost(request, response); - try { - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } - - @Test - public void testPost() { - MockHttpServletRequest request = createRequest(HttpPost.METHOD_NAME); - try { - MockHttpServletResponse response = new MockHttpServletResponse(); - getEnergyPricesOnPBFTServlet.doPost(request, response); - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } -} diff --git a/framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServletTest.java b/framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServletTest.java deleted file mode 100644 index 890528b72e4..00000000000 --- a/framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetBandwidthPricesOnSolidityServletTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.tron.core.services.interfaceOnSolidity.http; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.tron.common.utils.client.utils.HttpMethed.createRequest; - -import java.io.UnsupportedEncodingException; -import javax.annotation.Resource; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.junit.BeforeClass; -import org.junit.Test; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.tron.common.BaseTest; -import org.tron.common.TestConstants; -import org.tron.core.config.args.Args; -import org.tron.json.JSONObject; - -public class GetBandwidthPricesOnSolidityServletTest extends BaseTest { - - @Resource - private GetBandwidthPricesOnSolidityServlet getBandwidthPricesOnSolidityServlet; - - @BeforeClass - public static void init() { - Args.setParam(new String[]{"-d", dbPath()}, TestConstants.TEST_CONF); - } - - @Test - public void testGet() { - MockHttpServletRequest request = createRequest(HttpGet.METHOD_NAME); - MockHttpServletResponse response = new MockHttpServletResponse(); - getBandwidthPricesOnSolidityServlet.doPost(request, response); - try { - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } - - @Test - public void testPost() { - MockHttpServletRequest request = createRequest(HttpPost.METHOD_NAME); - try { - MockHttpServletResponse response = new MockHttpServletResponse(); - getBandwidthPricesOnSolidityServlet.doPost(request, response); - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } -} diff --git a/framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServletTest.java b/framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServletTest.java deleted file mode 100644 index b7310d065f3..00000000000 --- a/framework/src/test/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServletTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.tron.core.services.interfaceOnSolidity.http; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.tron.common.utils.client.utils.HttpMethed.createRequest; - -import java.io.UnsupportedEncodingException; -import javax.annotation.Resource; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.junit.BeforeClass; -import org.junit.Test; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.tron.common.BaseTest; -import org.tron.common.TestConstants; -import org.tron.core.config.args.Args; -import org.tron.json.JSONObject; - -public class GetEnergyPricesOnSolidityServletTest extends BaseTest { - - @Resource - private GetEnergyPricesOnSolidityServlet getEnergyPricesOnSolidityServlet; - - @BeforeClass - public static void init() { - Args.setParam(new String[]{"-d", dbPath()}, TestConstants.TEST_CONF); - } - - @Test - public void testGet() { - MockHttpServletRequest request = createRequest(HttpGet.METHOD_NAME); - MockHttpServletResponse response = new MockHttpServletResponse(); - getEnergyPricesOnSolidityServlet.doPost(request, response); - try { - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } - - @Test - public void testPost() { - MockHttpServletRequest request = createRequest(HttpPost.METHOD_NAME); - try { - MockHttpServletResponse response = new MockHttpServletResponse(); - getEnergyPricesOnSolidityServlet.doPost(request, response); - String contentAsString = response.getContentAsString(); - JSONObject result = JSONObject.parseObject(contentAsString); - assertTrue(result.containsKey("prices")); - } catch (UnsupportedEncodingException e) { - fail(e.getMessage()); - } - } -} From 6de341da8b66fe65e9c0c6dcf7cc913a650c08b8 Mon Sep 17 00:00:00 2001 From: GrapeS Date: Thu, 17 Sep 2026 15:27:24 +0800 Subject: [PATCH 4/4] fix(http): adapt sanitized error responses to the servlet registry Reconcile the error-sanitizing changes from #6954 with the servlet package restructure on this branch, which left the test sources referencing classes that had moved or been removed. - Move UtilProcessErrorTest alongside Util in the servlets subpackage. - Import RateLimiterServlet in JsonRpcRateLimiterServletTest, which no longer shares a package with it. - Drop GetTransactionInfoByIdSolidityServletTest: the solidity-specific servlet it exercised was removed with the registry refactor, and its sibling GetTransactionByIdSolidityServletTest was already deleted in the same commit. The sanitized-error behaviour it asserted is covered by Util.processError and UtilProcessErrorTest. --- .../core/services/http/servlets/Util.java | 48 ++++++- .../http/JsonRpcRateLimiterServletTest.java | 1 + .../{ => servlets}/UtilProcessErrorTest.java | 2 +- ...ransactionInfoByIdSolidityServletTest.java | 135 ------------------ 4 files changed, 45 insertions(+), 141 deletions(-) rename framework/src/test/java/org/tron/core/services/http/{ => servlets}/UtilProcessErrorTest.java (99%) delete mode 100644 framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java diff --git a/framework/src/main/java/org/tron/core/services/http/servlets/Util.java b/framework/src/main/java/org/tron/core/services/http/servlets/Util.java index e0723d4e9c9..caaa26cadc4 100644 --- a/framework/src/main/java/org/tron/core/services/http/servlets/Util.java +++ b/framework/src/main/java/org/tron/core/services/http/servlets/Util.java @@ -48,6 +48,8 @@ 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.servlets.JsonFormat.ParseException; import org.tron.json.JSON; import org.tron.json.JSONArray; @@ -65,6 +67,10 @@ @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"; @@ -114,12 +120,31 @@ public static String printTransactionFee(String transactionFee) { return jsonObject.toJSONString(); } - public static String printErrorMsg(Exception e) { + private static String printErrorMsg(String msg) { JSONObject jsonObject = new JSONObject(); - jsonObject.put("Error", e.getClass() + " : " + e.getMessage()); + jsonObject.put("Error", msg); 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(); @@ -526,11 +551,24 @@ public static String getMemo(byte[] memo) { } public static void processError(Exception e, HttpServletResponse response) { - logger.debug(e.getMessage(), e); + 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) { try { - response.getWriter().println(Util.printErrorMsg(e)); + response.getWriter().println(Util.printErrorMsg(msg)); } catch (IOException ioe) { - logger.debug("IOException: {}", ioe.getMessage()); + logger.debug("Failed to write HTTP error response", ioe); } } diff --git a/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java b/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java index 52ff23a7d2d..d94f372ce97 100644 --- a/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java +++ b/framework/src/test/java/org/tron/core/services/http/JsonRpcRateLimiterServletTest.java @@ -24,6 +24,7 @@ import org.springframework.test.util.ReflectionTestUtils; import org.tron.common.TestConstants; import org.tron.core.config.args.Args; +import org.tron.core.services.http.servlets.RateLimiterServlet; import org.tron.core.services.interfaceJsonRpcOnPBFT.JsonRpcOnPBFTServlet; import org.tron.core.services.interfaceJsonRpcOnSolidity.JsonRpcOnSolidityServlet; import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT; diff --git a/framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java b/framework/src/test/java/org/tron/core/services/http/servlets/UtilProcessErrorTest.java similarity index 99% rename from framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java rename to framework/src/test/java/org/tron/core/services/http/servlets/UtilProcessErrorTest.java index 5d4baa34c6f..23480c5c4c6 100644 --- a/framework/src/test/java/org/tron/core/services/http/UtilProcessErrorTest.java +++ b/framework/src/test/java/org/tron/core/services/http/servlets/UtilProcessErrorTest.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.assertThrows; diff --git a/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java b/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java deleted file mode 100644 index a8810114f82..00000000000 --- a/framework/src/test/java/org/tron/core/services/http/solidity/GetTransactionInfoByIdSolidityServletTest.java +++ /dev/null @@ -1,135 +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.core.Wallet; -import org.tron.core.config.args.Args; -import org.tron.json.JSONObject; -import org.tron.protos.Protocol.TransactionInfo; - -@RunWith(Parameterized.class) -public class GetTransactionInfoByIdSolidityServletTest { - - 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 GetTransactionInfoByIdSolidityServlet servlet; - private Wallet wallet; - private long savedMaxMessageSize; - - @Parameters(name = "{0}") - public static Collection methods() { - return Arrays.asList(new Object[][] {{"GET"}, {"POST"}}); - } - - @Before - public void setUp() { - savedMaxMessageSize = Args.getInstance().getHttpMaxMessageSize(); - Args.getInstance().setHttpMaxMessageSize(1024); - servlet = new GetTransactionInfoByIdSolidityServlet(); - wallet = mock(Wallet.class); - ReflectionTestUtils.setField(servlet, "wallet", wallet); - } - - @After - public void tearDown() { - Args.getInstance().setHttpMaxMessageSize(savedMaxMessageSize); - } - - @Test - public void walletFailureReturnsSanitizedJson() throws Exception { - when(wallet.getTransactionInfoById(TRANSACTION_ID_BYTES)) - .thenThrow(new NullPointerException("internal transaction store detail")); - - MockHttpServletResponse response = request(TRANSACTION_ID); - - assertEquals("internal server error", errorMessage(response)); - verify(wallet).getTransactionInfoById(TRANSACTION_ID_BYTES); - } - - @Test - public void invalidHexReturnsJsonWithoutCallingWallet() throws Exception { - MockHttpServletResponse response = request("zz"); - - String message = errorMessage(response); - if ("GET".equals(method)) { - assertEquals("internal server error", message); - } else { - assertTrue(message.matches("\\d+:\\d+: INVALID hex String")); - } - verifyNoInteractions(wallet); - } - - @Test - public void missingTransactionKeepsEmptyObject() throws Exception { - MockHttpServletResponse response = request(TRANSACTION_ID); - - assertEquals(200, response.getStatus()); - assertEquals("{}", response.getContentAsString().trim()); - verify(wallet).getTransactionInfoById(TRANSACTION_ID_BYTES); - } - - @Test - public void successfulLookupKeepsTransactionInfo() throws Exception { - TransactionInfo info = TransactionInfo.newBuilder() - .setId(TRANSACTION_ID_BYTES).setFee(7).setBlockNumber(123).build(); - when(wallet.getTransactionInfoById(TRANSACTION_ID_BYTES)).thenReturn(info); - - MockHttpServletResponse response = request(TRANSACTION_ID); - - assertEquals(200, response.getStatus()); - JSONObject body = JSONObject.parseObject(response.getContentAsString()); - assertEquals(3, body.size()); - assertEquals(TRANSACTION_ID, body.getString("id")); - assertEquals(7L, body.getLongValue("fee")); - assertEquals(123L, body.getLongValue("blockNumber")); - verify(wallet).getTransactionInfoById(TRANSACTION_ID_BYTES); - } - - private MockHttpServletResponse request(String value) throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(method, - "/walletsolidity/gettransactioninfobyid"); - MockHttpServletResponse response = new MockHttpServletResponse(); - if ("GET".equals(method)) { - request.setParameter("value", value); - servlet.doGet(request, response); - } else { - request.setContentType("application/json"); - request.setContent(("{\"value\":\"" + value + "\"}").getBytes(UTF_8)); - servlet.doPost(request, response); - } - return response; - } - - private static String errorMessage(MockHttpServletResponse response) throws Exception { - assertEquals(200, response.getStatus()); - JSONObject body = JSONObject.parseObject(response.getContentAsString()); - assertEquals(1, body.size()); - return body.getString("Error"); - } -}