You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by he...@apache.org on 2023/05/05 01:34:21 UTC
[shenyu] branch master updated: [type:refactor] refactor e2e moudle (#4601)
This is an automated email from the ASF dual-hosted git repository.
hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new f34c31a12 [type:refactor] refactor e2e moudle (#4601)
f34c31a12 is described below
commit f34c31a12a404328e46257bf5de19d5eac60cd49
Author: SeaChess <80...@users.noreply.github.com>
AuthorDate: Fri May 5 09:34:15 2023 +0800
[type:refactor] refactor e2e moudle (#4601)
* refactor e2e moudle
* refactor e2e moudle 1
* refactor e2e moudle 2
* refactor e2e moudle 3
* refactor e2e moudle 4
* refactor e2e moudle 5
* refactor e2e moudle 5
---------
Co-authored-by: moremind <he...@apache.org>
---
.../e2e/testcase/common/ResourceDataTemplate.java | 46 ++-
.../e2e/testcase/common/function/HttpChecker.java | 3 +
.../e2e/testcase/common/function/HttpCheckers.java | 23 +-
.../e2e/testcase/common/function/HttpVerifier.java | 3 +
.../e2e/testcase/common/function/HttpWaiting.java | 3 +
.../testcase/common/function/WaitForHelper.java | 44 ++-
.../common/specification/ShenYuAfterEachSpec.java | 33 +-
.../common/specification/ShenYuBeforeEachSpec.java | 54 ++-
.../common/specification/ShenYuCaseSpec.java | 50 ++-
.../common/specification/ShenYuScenarioSpec.java | 59 ++-
.../shenyu/e2e/client/ExternalServiceClient.java | 13 +-
.../shenyu/e2e/client/admin/AdminClient.java | 23 +-
.../shenyu/e2e/client/admin/model/MatchMode.java | 3 +
.../shenyu/e2e/client/admin/model/Plugin.java | 9 +-
.../e2e/client/admin/model/ResourcesData.java | 70 +++-
.../e2e/client/admin/model/SelectorType.java | 3 +
.../e2e/client/admin/model/ShenYuResult.java | 62 ++-
.../e2e/client/admin/model/data/Condition.java | 243 +++++++++++-
.../e2e/client/admin/model/data/PluginData.java | 3 +
.../client/admin/model/data/QueryCondition.java} | 12 +-
.../e2e/client/admin/model/data/ResourceData.java | 6 +-
.../e2e/client/admin/model/data/RuleData.java | 377 +++++++++++++++++-
.../admin/model/data/RuleQueryCondition.java | 216 ++++++++++
.../client/admin/model/data/SearchCondition.java | 194 ++++++---
.../e2e/client/admin/model/data/SelectorData.java | 439 ++++++++++++++++++++-
.../admin/model/data/SelectorQueryCondition.java | 226 +++++++++++
.../admin/model/handle/DivideRuleHandle.java | 249 +++++++++++-
.../e2e/client/admin/model/handle/Upstreams.java | 110 +++++-
.../admin/model/response/FakeResourceDTO.java | 43 +-
.../e2e/client/admin/model/response/LoginInfo.java | 77 +++-
.../admin/model/response/PaginatedResources.java | 44 ++-
.../client/admin/model/response/Pagination.java | 87 +++-
.../e2e/client/admin/model/response/PluginDTO.java | 159 +++++++-
.../client/admin/model/response/ResourceDTO.java | 1 -
.../e2e/client/admin/model/response/RuleDTO.java | 227 ++++++++++-
.../admin/model/response/SearchedResources.java | 101 ++++-
.../client/admin/model/response/SelectorDTO.java | 288 +++++++++++++-
.../shenyu/e2e/client/gateway/GatewayClient.java | 29 +-
.../org/apache/shenyu/e2e/matcher/RuleMatcher.java | 20 +-
.../apache/shenyu/e2e/matcher/SelectorMatcher.java | 11 +-
.../shenyu/e2e/client/admin/AdminClientTest.java | 14 +-
.../org/apache/shenyu/e2e/common/IdGenerator.java | 3 +
.../org/apache/shenyu/e2e/common/IdManagers.java | 18 +-
.../org/apache/shenyu/e2e/common/NameUtils.java | 3 +
.../shenyu/e2e/common/RequestLogConsumer.java | 3 +
.../org/apache/shenyu/e2e/common/TableView.java | 5 +
.../apache/shenyu/e2e/engine/ShenYuExtension.java | 8 +-
.../shenyu/e2e/engine/ShenYuExtensionContext.java | 18 +-
.../shenyu/e2e/engine/ShenYuLogExtension.java | 5 +-
.../e2e/engine/config/ShenYuEngineConfigure.java | 221 ++++++++++-
.../scenario/specification/ScenarioSpec.java | 9 +-
.../specification/ScenarioSpecLogProxy.java | 9 +-
.../e2e/engine/service/DockerServiceCompose.java | 18 +-
.../e2e/engine/service/HostServiceCompose.java | 22 +-
.../shenyu/e2e/engine/service/NamingResolver.java | 9 +-
.../e2e/engine/service/WaitingForStrategies.java | 17 +-
.../engine/service/docker/DockerComposeFile.java | 25 +-
.../engine/service/docker/ShenYuLogConsumer.java | 9 +-
.../apache/shenyu/e2e/engine/ShenYuEngineTest.java | 2 +-
59 files changed, 3808 insertions(+), 273 deletions(-)
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/ResourceDataTemplate.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/ResourceDataTemplate.java
index 3c19bfd2b..f91930a8e 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/ResourceDataTemplate.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/ResourceDataTemplate.java
@@ -36,9 +36,18 @@ import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
-// TODO replace it by introducing Auto-Value-Annotations?
+/**
+ * Templates for various entity classes.
+ */
public class ResourceDataTemplate {
-
+
+ /**
+ * Build new SelectorBuilder.
+ *
+ * @param name name
+ * @param plugin plugin
+ * @return SelectorData.Builder
+ */
public static SelectorData.SelectorDataBuilder newSelectorBuilder(@NotNull String name, Plugin plugin) {
return SelectorData.builder()
.name(name)
@@ -51,7 +60,13 @@ public class ResourceDataTemplate {
.matchRestful(false)
.sort(1);
}
-
+
+ /**
+ * Build new RuleBuilder.
+ *
+ * @param name name
+ * @return RuleData.Builder
+ */
public static RuleData.RuleDataBuilder newRuleBuilder(@Nonnull String name) {
return newRuleBuilder(name, null);
}
@@ -66,7 +81,12 @@ public class ResourceDataTemplate {
.matchRestful(false)
.sort(1);
}
-
+
+ /**
+ * Build new DivideRuleHandle.
+ *
+ * @return DivideRuleHandle
+ */
public static DivideRuleHandle newDivideRuleHandle() {
return DivideRuleHandle.builder()
.loadBalance("hash")
@@ -77,7 +97,15 @@ public class ResourceDataTemplate {
.requestMaxSize(10240)
.build();
}
-
+
+ /**
+ * Build new Condition.
+ *
+ * @param type type
+ * @param opt opt
+ * @param value value
+ * @return Condition
+ */
public static Condition newCondition(ParamType type, Operator opt, String value) {
return newCondition(type, opt, null, value);
}
@@ -96,7 +124,13 @@ public class ResourceDataTemplate {
list.add(newCondition(type, opt, value));
return list;
}
-
+
+ /**
+ * Build new Upstream.
+ *
+ * @param url url
+ * @return Upstream
+ */
public static Upstream newUpstream(String url) {
return Upstream.builder()
.upstreamUrl(url)
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpChecker.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpChecker.java
index 04f9c9ca2..d76b39ead 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpChecker.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpChecker.java
@@ -24,6 +24,9 @@ import org.slf4j.MDC;
import java.util.function.Supplier;
+/**
+ * Http Checker interface.
+ */
@FunctionalInterface
public interface HttpChecker extends Checker, HttpVerifier {
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpCheckers.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpCheckers.java
index cbcd4fa32..4d2d3480a 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpCheckers.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpCheckers.java
@@ -25,12 +25,22 @@ import static org.hamcrest.Matchers.lessThan;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.nullValue;
+/**
+ * Check if the endpoint exists.
+ */
public class HttpCheckers {
public static HttpChecker notExists(String endpoint) {
return notExists(Method.GET, endpoint);
}
-
+
+ /**
+ * Detection endpoint does not exist.
+ *
+ * @param method method
+ * @param endpoint endpoint
+ * @return HttpChecker
+ */
public static HttpChecker notExists(Method method, String endpoint) {
return (request) -> {
try {
@@ -45,11 +55,18 @@ public class HttpCheckers {
}
};
}
-
+
public static HttpChecker exists(String endpoint) {
return exists(Method.GET, endpoint);
}
-
+
+ /**
+ * Detection endpoint exists.
+ *
+ * @param method method
+ * @param endpoint endpoint
+ * @return HttpChecker
+ */
public static HttpChecker exists(Method method, String endpoint) {
return (request) -> {
try {
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java
index cea8788eb..fb205e137 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java
@@ -19,6 +19,9 @@ package org.apache.shenyu.e2e.testcase.common.function;
import org.apache.shenyu.e2e.engine.scenario.function.Verifier;
+/**
+ * Http Verifier interface.
+ */
public interface HttpVerifier extends Verifier {
}
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpWaiting.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpWaiting.java
index 3df1f09bb..c3c079761 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpWaiting.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpWaiting.java
@@ -23,6 +23,9 @@ import org.apache.shenyu.e2e.engine.scenario.function.Waiting;
import java.util.function.Supplier;
+/**
+ * Http Waiting interface.
+ */
@FunctionalInterface
public interface HttpWaiting extends Waiting {
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/WaitForHelper.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/WaitForHelper.java
index 52c107a76..88d4ac0ca 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/WaitForHelper.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/WaitForHelper.java
@@ -22,10 +22,9 @@ import io.restassured.http.Method;
import io.restassured.response.ValidatableResponse;
import io.restassured.specification.RequestSpecification;
import io.restassured.specification.ResponseSpecification;
-import lombok.AllArgsConstructor;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Assertions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import java.time.Duration;
@@ -39,10 +38,13 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Supplier;
-@Slf4j
-@NoArgsConstructor
-@AllArgsConstructor
+/**
+ * Wait for checking endpoint.
+ */
public class WaitForHelper {
+
+ private static final Logger log = LoggerFactory.getLogger(WaitForHelper.class);
+
private static final ExecutorService executor = MoreExecutors.getExitingExecutorService((ThreadPoolExecutor) Executors.newFixedThreadPool(1));
public int retryTimes = 30;
@@ -50,7 +52,25 @@ public class WaitForHelper {
public Duration timeInRetry = Duration.ofSeconds(3);
public Duration timeout = Duration.ofMinutes(3);
-
+
+ public WaitForHelper() {
+ }
+
+ public WaitForHelper(int retryTimes, Duration timeInRetry, Duration timeout) {
+ this.retryTimes = retryTimes;
+ this.timeInRetry = timeInRetry;
+ this.timeout = timeout;
+ }
+
+ /**
+ * Check if the endpoint is successful. If unsuccessful, retry until the maximum number of times is reached.
+ *
+ * @param supplier supplier
+ * @param method method
+ * @param endpoint endpoint
+ * @param expected expected
+ * @throws TimeoutException TimeoutException
+ */
public void waitFor(Supplier<RequestSpecification> supplier, Method method, String endpoint, ResponseSpecification expected) throws TimeoutException {
final Map<String, String> contextMap = MDC.getCopyOfContextMap();
Future<?> future = executor.submit(() -> {
@@ -87,8 +107,14 @@ public class WaitForHelper {
throw new TimeoutException("checking endpoint '" + endpoint + "' timeout after " + timeout);
}
}
-
-
+
+ /**
+ * Check if the endpoint is successful. If unsuccessful, retry until the maximum number of times is reached.
+ *
+ * @param supplier supplier
+ * @param checker checker
+ * @throws TimeoutException TimeoutException
+ */
public void waitFor(Supplier<RequestSpecification> supplier, HttpChecker checker) throws TimeoutException {
final Map<String, String> contextMap = MDC.getCopyOfContextMap();
Future<?> future = executor.submit(() -> {
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuAfterEachSpec.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuAfterEachSpec.java
index 4156ea6b4..acd9a1c17 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuAfterEachSpec.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuAfterEachSpec.java
@@ -17,16 +17,13 @@
package org.apache.shenyu.e2e.testcase.common.specification;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
import org.apache.shenyu.e2e.engine.scenario.function.Checker;
import org.apache.shenyu.e2e.engine.scenario.function.Deleter;
import org.apache.shenyu.e2e.engine.scenario.specification.AfterEachSpec;
-@Getter
-@AllArgsConstructor
-@Builder(toBuilder = true)
+/**
+ * ShenYu after each specification.
+ */
public class ShenYuAfterEachSpec implements AfterEachSpec {
private final Deleter deleter;
@@ -34,5 +31,27 @@ public class ShenYuAfterEachSpec implements AfterEachSpec {
private final Checker postChecker;
public static final ShenYuAfterEachSpec DEFAULT = new ShenYuAfterEachSpec(Deleter.DEFAULT, Checker.DEFAULT);
-
+
+ public ShenYuAfterEachSpec(Deleter deleter, Checker postChecker) {
+ this.deleter = deleter;
+ this.postChecker = postChecker;
+ }
+
+ /**
+ * get deleter.
+ *
+ * @return deleter
+ */
+ public Deleter getDeleter() {
+ return deleter;
+ }
+
+ /**
+ * get postChecker.
+ *
+ * @return postChecker
+ */
+ public Checker getPostChecker() {
+ return postChecker;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuBeforeEachSpec.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuBeforeEachSpec.java
index d6f46ddb5..0fc547523 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuBeforeEachSpec.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuBeforeEachSpec.java
@@ -19,9 +19,6 @@ package org.apache.shenyu.e2e.testcase.common.specification;
import io.restassured.http.Method;
import io.restassured.specification.ResponseSpecification;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
import org.apache.shenyu.e2e.client.admin.model.ResourcesData;
import org.apache.shenyu.e2e.client.admin.model.ResourcesData.ResourcesDataBuilder;
import org.apache.shenyu.e2e.client.admin.model.data.RuleData;
@@ -34,20 +31,63 @@ import org.apache.shenyu.e2e.testcase.common.function.HttpWaiting;
import org.apache.shenyu.e2e.testcase.common.function.WaitForHelper;
import org.jetbrains.annotations.NotNull;
-@Getter
-@AllArgsConstructor(access = AccessLevel.PACKAGE)
+/**
+ * ShenYu before each specification.
+ */
public class ShenYuBeforeEachSpec implements BeforeEachSpec {
+
private final Checker checker;
+
private final ResourcesData resources;
+
private final Waiting waiting;
-
+
+ ShenYuBeforeEachSpec(Checker checker, ResourcesData resources, Waiting waiting) {
+ this.checker = checker;
+ this.resources = resources;
+ this.waiting = waiting;
+ }
+
public static ShenYuBeforeEachSpecBuilder builder() {
return new ShenYuBeforeEachSpecBuilder();
}
-
+
+ /**
+ * get checker.
+ *
+ * @return checker
+ */
+ @Override
+ public Checker getChecker() {
+ return checker;
+ }
+
+ /**
+ * get resources.
+ *
+ * @return resources
+ */
+ @Override
+ public ResourcesData getResources() {
+ return resources;
+ }
+
+ /**
+ * get waiting.
+ *
+ * @return waiting
+ */
+ @Override
+ public Waiting getWaiting() {
+ return waiting;
+ }
+
public static class ShenYuBeforeEachSpecBuilder {
+
private final ResourcesDataBuilder builder = ResourcesData.builder();
+
private Checker checker = Checker.DEFAULT;
+
private Waiting waiting = Waiting.DEFAULT;
public ShenYuBeforeEachSpecBuilder checker(@NotNull Checker checker) {
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuCaseSpec.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuCaseSpec.java
index 9bf50560f..eb4950b7b 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuCaseSpec.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuCaseSpec.java
@@ -20,9 +20,6 @@ package org.apache.shenyu.e2e.testcase.common.specification;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
import io.restassured.http.Method;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
import org.apache.shenyu.e2e.engine.scenario.function.Verifier;
import org.apache.shenyu.e2e.engine.scenario.specification.CaseSpec;
import org.hamcrest.Matcher;
@@ -32,14 +29,40 @@ import java.util.List;
import static org.apache.shenyu.e2e.testcase.common.function.HttpCheckers.exists;
import static org.apache.shenyu.e2e.testcase.common.function.HttpCheckers.notExists;
-@Getter
-@AllArgsConstructor
+/**
+ * ShenYu case specification.
+ */
public class ShenYuCaseSpec implements CaseSpec {
private final String name;
private final List<Verifier> verifiers;
-
+
+ public ShenYuCaseSpec(String name, List<Verifier> verifiers) {
+ this.name = name;
+ this.verifiers = verifiers;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * get verifiers.
+ *
+ * @return verifiers
+ */
+ @Override
+ public List<Verifier> getVerifiers() {
+ return verifiers;
+ }
+
public static ShenYuTestCaseSpecBuilder builder() {
return new ShenYuTestCaseSpecBuilder();
}
@@ -47,13 +70,20 @@ public class ShenYuCaseSpec implements CaseSpec {
public static ShenYuTestCaseSpecBuilder builder(String name) {
return new ShenYuTestCaseSpecBuilder(name);
}
-
- @NoArgsConstructor
- @AllArgsConstructor
+
public static class ShenYuTestCaseSpecBuilder {
+
private String name;
+
private final Builder<Verifier> builder = ImmutableList.builder();
-
+
+ public ShenYuTestCaseSpecBuilder() {
+ }
+
+ public ShenYuTestCaseSpecBuilder(String name) {
+ this.name = name;
+ }
+
public ShenYuTestCaseSpecBuilder name(String name) {
this.name = name;
return this;
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuScenarioSpec.java b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuScenarioSpec.java
index c946dc300..ee6f00cc9 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuScenarioSpec.java
+++ b/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/specification/ShenYuScenarioSpec.java
@@ -18,8 +18,6 @@
package org.apache.shenyu.e2e.testcase.common.specification;
import com.google.common.base.Strings;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
import org.apache.shenyu.e2e.common.IdGenerator;
import org.apache.shenyu.e2e.engine.scenario.specification.AfterEachSpec;
import org.apache.shenyu.e2e.engine.scenario.specification.BeforeEachSpec;
@@ -27,8 +25,9 @@ import org.apache.shenyu.e2e.engine.scenario.specification.CaseSpec;
import org.apache.shenyu.e2e.engine.scenario.specification.ScenarioSpec;
import org.junit.jupiter.api.Assertions;
-@Getter
-@AllArgsConstructor
+/**
+ * ShenYu scenario specification.
+ */
public class ShenYuScenarioSpec implements ScenarioSpec {
private final String name;
@@ -38,14 +37,64 @@ public class ShenYuScenarioSpec implements ScenarioSpec {
private final CaseSpec caseSpec;
private final AfterEachSpec afterEachSpec;
-
+
+ public ShenYuScenarioSpec(String name, BeforeEachSpec beforeEachSpec, CaseSpec caseSpec, AfterEachSpec afterEachSpec) {
+ this.name = name;
+ this.beforeEachSpec = beforeEachSpec;
+ this.caseSpec = caseSpec;
+ this.afterEachSpec = afterEachSpec;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * get beforeEachSpec.
+ *
+ * @return beforeEachSpec
+ */
+ @Override
+ public BeforeEachSpec getBeforeEachSpec() {
+ return beforeEachSpec;
+ }
+
+ /**
+ * get caseSpec.
+ *
+ * @return caseSpec
+ */
+ @Override
+ public CaseSpec getCaseSpec() {
+ return caseSpec;
+ }
+
+ /**
+ * get afterEachSpec.
+ *
+ * @return afterEachSpec
+ */
+ @Override
+ public AfterEachSpec getAfterEachSpec() {
+ return afterEachSpec;
+ }
+
public static ShenYuScenarioSpecBuilder builder() {
return new ShenYuScenarioSpecBuilder();
}
public static class ShenYuScenarioSpecBuilder {
+
private String name;
+
private BeforeEachSpec beforeEachSpec = BeforeEachSpec.DEFAULT;
+
private AfterEachSpec afterEachSpec = AfterEachSpec.DEFAULT;
private CaseSpec caseSpec;
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/ExternalServiceClient.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/ExternalServiceClient.java
index 4cc12430d..a293e197d 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/ExternalServiceClient.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/ExternalServiceClient.java
@@ -17,12 +17,19 @@
package org.apache.shenyu.e2e.client;
-import lombok.AllArgsConstructor;
-
import java.util.Properties;
-@AllArgsConstructor
+/**
+ * External service client.
+ */
public class ExternalServiceClient {
+
private final String url;
+
private final Properties properties;
+
+ public ExternalServiceClient(String url, Properties properties) {
+ this.url = url;
+ this.properties = properties;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/AdminClient.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/AdminClient.java
index 1cc07cb4c..9481b8f9a 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/AdminClient.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/AdminClient.java
@@ -23,17 +23,16 @@ import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.e2e.annotation.ShenYuAdminClient;
import org.apache.shenyu.e2e.client.admin.model.Plugin;
import org.apache.shenyu.e2e.client.admin.model.ShenYuResult;
+import org.apache.shenyu.e2e.client.admin.model.data.QueryCondition;
import org.apache.shenyu.e2e.client.admin.model.data.ResourceData;
import org.apache.shenyu.e2e.client.admin.model.data.RuleData;
+import org.apache.shenyu.e2e.client.admin.model.data.RuleQueryCondition;
import org.apache.shenyu.e2e.client.admin.model.data.SearchCondition;
-import org.apache.shenyu.e2e.client.admin.model.data.SearchCondition.QueryCondition;
-import org.apache.shenyu.e2e.client.admin.model.data.SearchCondition.RuleQueryCondition;
-import org.apache.shenyu.e2e.client.admin.model.data.SearchCondition.SelectorQueryCondition;
import org.apache.shenyu.e2e.client.admin.model.data.SelectorData;
+import org.apache.shenyu.e2e.client.admin.model.data.SelectorQueryCondition;
import org.apache.shenyu.e2e.client.admin.model.response.FakeResourceDTO;
import org.apache.shenyu.e2e.client.admin.model.response.LoginInfo;
import org.apache.shenyu.e2e.client.admin.model.response.PaginatedResources;
@@ -46,6 +45,8 @@ import org.apache.shenyu.e2e.common.IdManagers.Rules;
import org.apache.shenyu.e2e.common.IdManagers.Selectors;
import org.apache.shenyu.e2e.common.NameUtils;
import org.junit.jupiter.api.Assertions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
@@ -61,24 +62,34 @@ import java.util.stream.Collectors;
import static org.apache.shenyu.e2e.client.admin.model.data.SearchCondition.QUERY_ALL;
-@Slf4j
+/**
+ * A client to connect to ShenYu Admin.
+ */
@ShenYuAdminClient
public class AdminClient {
+
+ private static final Logger log = LoggerFactory.getLogger(AdminClient.class);
+
private final MultiValueMap<String, String> basicAuth = new HttpHeaders();
+
private final RestTemplate template = new RestTemplateBuilder().build();
+
private final ObjectMapper mapper = new ObjectMapper();
private final String scenarioId;
private final String baseURL;
+
private final ImmutableMap<String, String> loginInfo;
private static final TypeReference<PaginatedResources<PluginDTO>> PAGINATED_PLUGINS_TYPE_REFERENCE = new TypeReference<PaginatedResources<PluginDTO>>() {
};
private static final TypeReference<SearchedResources<SelectorDTO>> SEARCHED_SELECTORS_TYPE_REFERENCE = new TypeReference<SearchedResources<SelectorDTO>>() {
};
+
private static final TypeReference<SearchedResources<RuleDTO>> SEARCHED_RULES_TYPE_REFERENCE = new TypeReference<SearchedResources<RuleDTO>>() {
};
+
private static final TypeReference<SearchedResources<FakeResourceDTO>> FAKE_VALUE_TYPE = new TypeReference<SearchedResources<FakeResourceDTO>>() {
};
@@ -408,7 +419,7 @@ public class AdminClient {
return rst;
}
-
+
@FunctionalInterface
interface Mapper<IN, OUT> extends Function<IN, OUT> {
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/MatchMode.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/MatchMode.java
index 0c0155d31..c7231d95e 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/MatchMode.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/MatchMode.java
@@ -21,6 +21,9 @@ import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Locale;
+/**
+ * Match mode.
+ */
public enum MatchMode {
AND(0), OR(1);
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/Plugin.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/Plugin.java
index 5bb9737d3..cac4bb67a 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/Plugin.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/Plugin.java
@@ -18,9 +18,10 @@
package org.apache.shenyu.e2e.client.admin.model;
import com.fasterxml.jackson.annotation.JsonValue;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.e2e.client.admin.model.response.PluginDTO;
import org.junit.jupiter.api.Assertions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
@@ -29,7 +30,9 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
-@Slf4j
+/**
+ * Plugin enum.
+ */
public enum Plugin {
SIGN("sign", 1),
@@ -69,7 +72,7 @@ public enum Plugin {
LOGGING_PULSAR("loggingPulsar", 35),
LOGGING_CLICK_HOUSE("loggingClickHouse", 38),
;
-
+ private static final Logger log = LoggerFactory.getLogger(Plugin.class);
private final String id;
private final String alias;
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ResourcesData.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ResourcesData.java
index 7dc5f6fa5..de98f49ad 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ResourcesData.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ResourcesData.java
@@ -19,23 +19,38 @@ package org.apache.shenyu.e2e.client.admin.model;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.ToString;
import org.apache.shenyu.e2e.client.admin.model.data.RuleData;
import org.apache.shenyu.e2e.client.admin.model.data.SelectorData;
-import java.util.ArrayList;
import java.util.List;
-@Getter
-@ToString
-@AllArgsConstructor(access = AccessLevel.PROTECTED)
+/**
+ * ResourcesData.
+ */
public class ResourcesData {
private final List<Resource> resources;
-
+
+ private ResourcesData(List<Resource> resources) {
+ this.resources = resources;
+ }
+
+ /**
+ * get resources.
+ *
+ * @return
+ */
+ public List<Resource> getResources() {
+ return resources;
+ }
+
+ @Override
+ public String toString() {
+ return "ResourcesData{" +
+ "resources=" + resources +
+ '}';
+ }
+
public static ResourcesDataBuilder builder() {
return new ResourcesDataBuilder();
}
@@ -53,13 +68,44 @@ public class ResourcesData {
}
}
- @Getter
- @ToString
- @AllArgsConstructor
+
public static class Resource {
private final SelectorData selector;
private final List<RuleData> rules; // todo
+
+ private Resource(SelectorData selector, List<RuleData> rules) {
+ this.selector = selector;
+ this.rules = rules;
+ }
+
+ /**
+ * get selector.
+ *
+ * @return selector
+ */
+ public SelectorData getSelector() {
+ return selector;
+ }
+
+ /**
+ * get rules.
+ *
+ * @return rules
+ */
+ public List<RuleData> getRules() {
+ return rules;
+ }
+
+ @Override
+ public String toString() {
+ return "Resource{"
+ + "selector="
+ + selector
+ + ", rules="
+ + rules
+ + '}';
+ }
}
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/SelectorType.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/SelectorType.java
index c1f75e023..9249e4ed1 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/SelectorType.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/SelectorType.java
@@ -21,6 +21,9 @@ import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Locale;
+/**
+ * Type of selector.
+ */
public enum SelectorType {
FULL(0), CUSTOM(1);
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ShenYuResult.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ShenYuResult.java
index eb4190543..d4e830b7e 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ShenYuResult.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/ShenYuResult.java
@@ -19,13 +19,16 @@ package org.apache.shenyu.e2e.client.admin.model;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.Data;
import java.io.IOException;
-@Data
+/**
+ * ShenYu result.
+ */
public class ShenYuResult {
+
private int code;
+
private String message;
private JsonNode data;
@@ -35,5 +38,58 @@ public class ShenYuResult {
public <Data> Data toObject(Class<Data> type) throws IOException {
return mapper.readValue(data.traverse(), type);
}
-
+
+ /**
+ * get code.
+ *
+ * @return code
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /**
+ * set code.
+ *
+ * @param code code
+ */
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ /**
+ * get message.
+ *
+ * @return message
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * set message.
+ *
+ * @param message message
+ */
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ /**
+ * get data.
+ *
+ * @return data
+ */
+ public JsonNode getData() {
+ return data;
+ }
+
+ /**
+ * set data.
+ *
+ * @param data data
+ */
+ public void setData(JsonNode data) {
+ this.data = data;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/Condition.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/Condition.java
index 281c795e3..8f214abda 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/Condition.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/Condition.java
@@ -18,15 +18,13 @@
package org.apache.shenyu.e2e.client.admin.model.data;
import com.fasterxml.jackson.annotation.JsonValue;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.Builder;
-import lombok.Data;
import org.jetbrains.annotations.NotNull;
-@Data
-@Builder(toBuilder = true)
+/**
+ * The request condition.
+ */
public class Condition {
+
@NotNull
private ParamType paramType;
@@ -36,29 +34,49 @@ public class Condition {
private String paramName;
private String paramValue;
-
-
+
+ /**
+ * The type of param.
+ */
public enum ParamType {
-
+
POST("post"),
-
+
+ /**
+ * request method.
+ */
METHOD("req_method"),
-
+
URI("uri"),
+
QUERY("query"),
+
HEADER("header"),
+
COOKIE("cookie"),
IP("ip"),
+
HOST("host"),
- DOMAIN("domain"),
- ;
+
+ DOMAIN("domain");
private final String alias;
+
+ /**
+ * set alias.
+ *
+ * @param alias alias
+ */
ParamType(String alias) {
this.alias = alias;
}
-
+
+ /**
+ * get alias.
+ *
+ * @return alias
+ */
@JsonValue
public String getAlias() {
return alias;
@@ -66,27 +84,214 @@ public class Condition {
}
public enum Operator {
+
MATCH("match"),
+
EQUAL("="),
+
REGEX("regex"),
+
CONTAINS("contains"),
+
TIME_BEFORE("TimeBefore"),
+
TIME_AFTER("TimeAfter"),
+
EXCLUDE("exclude"),
+
STARTS_WITH("startsWith"),
+
ENDS_WITH("endsWith"),
- PATH_PATTERN("pathPattern"),
- ;
-
+
+ PATH_PATTERN("pathPattern");
+
private final String alias;
+
+ /**
+ * set alias.
+ *
+ * @param alias alias
+ */
Operator(String alias) {
this.alias = alias;
}
-
+
+ /**
+ * get alias.
+ *
+ * @return alias
+ */
@JsonValue
public String getAlias() {
return alias;
}
}
-
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private Condition(final Builder builder) {
+ this.paramType = builder.paramType;
+ this.operator = builder.operator;
+ this.paramName = builder.paramName;
+ this.paramValue = builder.paramValue;
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * set paramType.
+ *
+ * @param paramType paramType
+ */
+ public void setParamType(ParamType paramType) {
+ this.paramType = paramType;
+ }
+
+ /**
+ * get paramType.
+ *
+ * @return paramType
+ */
+ public ParamType getParamType() {
+ return paramType;
+ }
+
+ /**
+ * set operator.
+ *
+ * @param operator operator
+ */
+ public void setOperator(Operator operator) {
+ this.operator = operator;
+ }
+
+ /**
+ * get operator.
+ *
+ * @return operator
+ */
+ public Operator getOperator() {
+ return operator;
+ }
+
+ /**
+ * set paramName.
+ *
+ * @param paramName paramName
+ */
+ public void setParamName(String paramName) {
+ this.paramName = paramName;
+ }
+
+ /**
+ * get paramName.
+ *
+ * @return paramName
+ */
+ public String getParamName() {
+ return paramName;
+ }
+
+ /**
+ * set paramValue.
+ *
+ * @param paramValue paramValue
+ */
+ public void setParamValue(String paramValue) {
+ this.paramValue = paramValue;
+ }
+
+ /**
+ * get paramValue.
+ *
+ * @return paramValue
+ */
+ public String getParamValue() {
+ return paramValue;
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class Builder {
+
+ @NotNull
+ private ParamType paramType;
+
+ @NotNull
+ private Operator operator;
+
+ private String paramName;
+
+ private String paramValue;
+
+ /**
+ * no args constructor.
+ */
+ private Builder() {
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return Condition
+ */
+ public Condition build() {
+ return new Condition(this);
+ }
+
+ /**
+ * build paramType.
+ *
+ * @param paramType paramType
+ * @return this
+ */
+ public Builder paramType(final ParamType paramType) {
+ this.paramType = paramType;
+ return this;
+ }
+
+ /**
+ * build operator.
+ *
+ * @param operator operator
+ * @return this
+ */
+ public Builder operator(final Operator operator) {
+ this.operator = operator;
+ return this;
+ }
+
+ /**
+ * build paramName.
+ *
+ * @param paramName paramName
+ * @return this
+ */
+ public Builder paramName(final String paramName) {
+ this.paramName = paramName;
+ return this;
+ }
+
+ /**
+ * build paramValue
+ *
+ * @param paramValue paramValue
+ * @return paramValue
+ */
+ public Builder paramValue(final String paramValue) {
+ this.paramValue = paramValue;
+ return this;
+ }
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/PluginData.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/PluginData.java
index 5d8b51450..4616591e6 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/PluginData.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/PluginData.java
@@ -19,6 +19,9 @@ package org.apache.shenyu.e2e.client.admin.model.data;
import org.jetbrains.annotations.NotNull;
+/**
+ * Plugin Data.
+ */
public class PluginData {
private String id;
diff --git a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/QueryCondition.java
similarity index 79%
copy from shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java
copy to shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/QueryCondition.java
index cea8788eb..f14f82995 100644
--- a/shenyu-e2e/shenyu-e2e-case/src/main/java/org/apache/shenyu/e2e/testcase/common/function/HttpVerifier.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/QueryCondition.java
@@ -15,10 +15,16 @@
* limitations under the License.
*/
-package org.apache.shenyu.e2e.testcase.common.function;
+package org.apache.shenyu.e2e.client.admin.model.data;
-import org.apache.shenyu.e2e.engine.scenario.function.Verifier;
+/**
+ * the condition of query.
+ */
+public interface QueryCondition {
+
+ String getExcluded();
-public interface HttpVerifier extends Verifier {
+ String getKeyword();
+ boolean isSwitchStatus();
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/ResourceData.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/ResourceData.java
index 470f96ece..15232fa3d 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/ResourceData.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/ResourceData.java
@@ -24,6 +24,9 @@ import org.apache.shenyu.e2e.common.IdManagers.Selectors;
import java.io.IOException;
+/**
+ * Resource data.
+ */
public interface ResourceData {
String getId();
@@ -31,8 +34,7 @@ public interface ResourceData {
String getName();
void setName(String name);
-
-
+
class IntToStringSerializer extends JsonSerializer<String> {
@Override
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleData.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleData.java
index 5bbdfcecb..ec92389ab 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleData.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleData.java
@@ -19,16 +19,15 @@ package org.apache.shenyu.e2e.client.admin.model.data;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import lombok.Builder;
-import lombok.Data;
import org.apache.shenyu.e2e.client.admin.model.MatchMode;
import org.apache.shenyu.e2e.client.admin.model.handle.RuleHandle;
import org.apache.shenyu.e2e.client.admin.model.handle.RuleHandle.Serializer;
import java.util.List;
-@Data
-@Builder(toBuilder = true)
+/**
+ * Rule data.
+ */
public class RuleData implements ResourceData {
private String id;
@@ -46,11 +45,379 @@ public class RuleData implements ResourceData {
@JsonSerialize(using = Serializer.class)
private RuleHandle handle;
-
+
+ /**
+ * List of ruleConditions.
+ */
@JsonProperty("ruleConditions")
private List<Condition> conditionList;
private boolean enabled;
private Boolean matchRestful;
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private RuleData(final RuleDataBuilder builder) {
+ this.id = builder.id;
+ this.name = builder.name;
+ this.selectorId = builder.selectorId;
+ this.logged = builder.logged;
+ this.matchMode = builder.matchMode;
+ this.sort = builder.sort;
+ this.handle = builder.handle;
+ this.conditionList = builder.conditionList;
+ this.enabled = builder.enabled;
+ this.matchRestful = builder.matchRestful;
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static RuleDataBuilder builder() {
+ return new RuleDataBuilder();
+ }
+
+ /**
+ * set id.
+ *
+ * @param id id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * get id.
+ *
+ * @return id
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * set name.
+ *
+ * @param name name
+ */
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * set selectorId.
+ *
+ * @param selectorId selectorId
+ */
+ public void setSelectorId(String selectorId) {
+ this.selectorId = selectorId;
+ }
+
+ /**
+ * get selectorId.
+ *
+ * @return selectorId
+ */
+ public String getSelectorId() {
+ return selectorId;
+ }
+
+ /**
+ * is logged.
+ *
+ * @return logged
+ */
+ public boolean isLogged() {
+ return logged;
+ }
+
+ /**
+ * set logged.
+ *
+ * @param logged logged
+ */
+ public void setLogged(boolean logged) {
+ this.logged = logged;
+ }
+
+ /**
+ * set matchMode.
+ *
+ * @param matchMode matchMode
+ */
+ public void setMatchMode(MatchMode matchMode) {
+ this.matchMode = matchMode;
+ }
+
+ /**
+ * get matchMode.
+ *
+ * @return matchMode
+ */
+ public MatchMode getMatchMode() {
+ return matchMode;
+ }
+
+ /**
+ * set sort.
+ *
+ * @param sort sort
+ */
+ public void setSort(int sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * get sort.
+ *
+ * @return sort
+ */
+ public int getSort() {
+ return sort;
+ }
+
+ /**
+ * set handle.
+ *
+ * @param handle handle
+ */
+ public void setHandle(RuleHandle handle) {
+ this.handle = handle;
+ }
+
+ /**
+ * get handle.
+ *
+ * @return handle
+ */
+ public RuleHandle getHandle() {
+ return handle;
+ }
+
+ /**
+ * set conditionList.
+ *
+ * @param conditionList conditionList
+ */
+ public void conditionList(List<Condition> conditionList) {
+ this.conditionList = conditionList;
+ }
+
+ /**
+ * get conditionList.
+ *
+ * @return conditionList
+ */
+ public List<Condition> getConditionList() {
+ return conditionList;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * is enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set matchRestful.
+ *
+ * @param matchRestful matchRestful
+ */
+ public void setMatchRestful(Boolean matchRestful) {
+ this.matchRestful = matchRestful;
+ }
+
+ /**
+ * get matchRestful.
+ *
+ * @return matchRestful
+ */
+ public Boolean getMatchRestful() {
+ return matchRestful;
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class RuleDataBuilder {
+
+ private String id;
+
+ private String name;
+
+ private String selectorId;
+
+ @JsonProperty("loged")
+ private boolean logged;
+
+ private MatchMode matchMode;
+
+ private int sort;
+
+ @JsonSerialize(using = Serializer.class)
+ private RuleHandle handle;
+
+ @JsonProperty("ruleConditions")
+ private List<Condition> conditionList;
+
+ private boolean enabled;
+
+ private Boolean matchRestful;
+
+ /**
+ * no args constructor.
+ */
+ private RuleDataBuilder() {
+
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return RuleData
+ */
+ public RuleData build() {
+ return new RuleData(this);
+ }
+
+ /**
+ * build id.
+ *
+ * @param id id
+ * @return this
+ */
+ public RuleDataBuilder id(final String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * build name.
+ *
+ * @param name name
+ * @return this
+ */
+ public RuleDataBuilder name(final String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * build selectorId.
+ *
+ * @param selectorId selectorId
+ * @return this
+ */
+ public RuleDataBuilder selectorId(final String selectorId) {
+ this.selectorId = selectorId;
+ return this;
+ }
+
+ /**
+ * build logged.
+ *
+ * @param logged logged
+ * @return this
+ */
+ public RuleDataBuilder logged(final boolean logged) {
+ this.logged = logged;
+ return this;
+ }
+
+ /**
+ * build matchMode.
+ *
+ * @param matchMode matchMode
+ * @return this
+ */
+ public RuleDataBuilder matchMode(final MatchMode matchMode) {
+ this.matchMode = matchMode;
+ return this;
+ }
+
+ /**
+ * build sort.
+ *
+ * @param sort sort
+ * @return this
+ */
+ public RuleDataBuilder sort(final int sort) {
+ this.sort = sort;
+ return this;
+ }
+
+ /**
+ * build handle.
+ *
+ * @param handle handle
+ * @return this
+ */
+ public RuleDataBuilder handle(final RuleHandle handle) {
+ this.handle = handle;
+ return this;
+ }
+
+ /**
+ * build conditionList.
+ *
+ * @param conditionList conditionList
+ * @return this
+ */
+ public RuleDataBuilder conditionList(final List<Condition> conditionList) {
+ this.conditionList = conditionList;
+ return this;
+ }
+
+ /**
+ * build enabled.
+ *
+ * @param enabled enabled
+ * @return this
+ */
+ public RuleDataBuilder enabled(final boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * build matchRestful.
+ *
+ * @param matchRestful matchRestful
+ * @return this
+ */
+ public RuleDataBuilder matchRestful(final Boolean matchRestful) {
+ this.matchRestful = matchRestful;
+ return this;
+ }
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleQueryCondition.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleQueryCondition.java
new file mode 100644
index 000000000..b6a5eb2be
--- /dev/null
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/RuleQueryCondition.java
@@ -0,0 +1,216 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.e2e.client.admin.model.data;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.util.Arrays;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class RuleQueryCondition implements QueryCondition {
+
+ private String excluded;
+
+ private String keyword;
+
+ private String[] selectors;
+
+ private boolean switchStatus;
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private RuleQueryCondition (Builder builder) {
+ this.excluded = builder.excluded;
+ this.keyword = builder.keyword;
+ this.selectors = builder.selectors;
+ this.switchStatus = builder.switchStatus;
+ }
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * get excluded.
+ *
+ * @return excluded
+ */
+ public String getExcluded() {
+ return excluded;
+ }
+
+ /**
+ * set excluded.
+ *
+ * @param excluded excluded
+ */
+ public void setExcluded(String excluded) {
+ this.excluded = excluded;
+ }
+
+ /**
+ * get keyword.
+ *
+ * @return keyword
+ */
+ public String getKeyword() {
+ return keyword;
+ }
+
+ /**
+ * set keyword.
+ *
+ * @param keyword keyword
+ */
+ public void setKeyword(String keyword) {
+ this.keyword = keyword;
+ }
+
+ /**
+ * get selectors.
+ *
+ * @return selectors
+ */
+ public String[] getSelectors() {
+ return selectors;
+ }
+
+ /**
+ * set selectors.
+ *
+ * @param selectors selectors
+ */
+ public void setSelectors(String[] selectors) {
+ this.selectors = selectors;
+ }
+
+ /**
+ * is switchStatus.
+ *
+ * @return switchStatus
+ */
+ public boolean isSwitchStatus() {
+ return switchStatus;
+ }
+
+ /**
+ * set switchStatus.
+ *
+ * @param switchStatus switchStatus
+ */
+ public void setSwitchStatus(boolean switchStatus) {
+ this.switchStatus = switchStatus;
+ }
+
+ @Override
+ public String toString() {
+ return "RuleQueryCondition{"
+ + "excluded='"
+ + excluded
+ + '\''
+ + ", keyword='"
+ + keyword
+ + '\''
+ + ", selectors="
+ + Arrays.toString(selectors)
+ + ", switchStatus="
+ + switchStatus
+ + '}';
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class Builder {
+
+ private String excluded;
+
+ private String keyword;
+
+ private String[] selectors;
+
+ private boolean switchStatus;
+
+ /**
+ * no args constructor.
+ */
+ private Builder() {
+
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return RuleQueryCondition
+ */
+ public RuleQueryCondition build() {
+ return new RuleQueryCondition(this);
+ }
+
+ /**
+ * build excluded.
+ *
+ * @param excluded excluded
+ * @return this
+ */
+ public Builder excluded(String excluded) {
+ this.excluded = excluded;
+ return this;
+ }
+
+ /**
+ * build keyword.
+ *
+ * @param keyword keyword
+ * @return this
+ */
+ public Builder keyword(String keyword) {
+ this.keyword = keyword;
+ return this;
+ }
+
+ /**
+ * build selectors.
+ *
+ * @param selectors selectors
+ * @return this
+ */
+ public Builder selectors(String[] selectors) {
+ this.selectors = selectors;
+ return this;
+ }
+
+ /**
+ * build switchStatus.
+ *
+ * @param switchStatus switchStatus
+ * @return this
+ */
+ public Builder switchStatus(boolean switchStatus) {
+ this.switchStatus = switchStatus;
+ return this;
+ }
+ }
+}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SearchCondition.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SearchCondition.java
index dfbe4d2c1..b83434a1e 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SearchCondition.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SearchCondition.java
@@ -17,54 +17,15 @@
package org.apache.shenyu.e2e.client.admin.model.data;
-import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.ToString;
-@Getter
-@Builder
-@ToString
+/**
+ * The condition of searching.
+ */
@JsonInclude(Include.NON_NULL)
public class SearchCondition {
-
- public interface QueryCondition {
- String getExcluded();
-
- String getKeyword();
-
- boolean isSwitchStatus();
- }
-
- @Getter
- @Builder
- @ToString
- @JsonInclude(Include.NON_NULL)
- public static class SelectorQueryCondition implements QueryCondition {
- private String excluded;
- private String keyword;
-
- @JsonAlias("plugin")
- private String[] plugins;
-
- private boolean switchStatus;
- }
-
- @Getter
- @Builder
- @ToString
- @JsonInclude(Include.NON_NULL)
- public static class RuleQueryCondition implements QueryCondition {
- private String excluded;
- private String keyword;
-
- private String[] selectors;
-
- private boolean switchStatus;
- }
-
+
public static QueryCondition QUERY_ALL = new QueryCondition() {
@Override
@@ -88,5 +49,150 @@ public class SearchCondition {
private int pageSize;
private QueryCondition condition;
-
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private SearchCondition(Builder builder) {
+ this.pageNum = builder.pageNum;
+ this.pageSize = builder.pageSize;
+ this.condition = builder.condition;
+ }
+
+ /**
+ * get pageNum.
+ *
+ * @return pageNum
+ */
+ public int getPageNum() {
+ return pageNum;
+ }
+
+ /**
+ * set pageNum.
+ *
+ * @param pageNum pageNum
+ */
+ public void setPageNum(int pageNum) {
+ this.pageNum = pageNum;
+ }
+
+ /**
+ * get pageSize.
+ *
+ * @return pageSize
+ */
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ /**
+ * set pageSize.
+ *
+ * @param pageSize pageSize
+ */
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ /**
+ * get condition.
+ *
+ * @return condition
+ */
+ public QueryCondition getCondition() {
+ return condition;
+ }
+
+ /**
+ * set condition.
+ *
+ * @param condition condition
+ */
+ public void setCondition(QueryCondition condition) {
+ this.condition = condition;
+ }
+
+ @Override
+ public String toString() {
+ return "SearchCondition{"
+ + "pageNum="
+ + pageNum
+ + ", pageSize="
+ + pageSize
+ + ", condition="
+ + condition
+ + '}';
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class Builder {
+
+ private int pageNum;
+
+ private int pageSize;
+
+ private QueryCondition condition;
+
+ /**
+ * no args constructor.
+ */
+ private Builder() {
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return SearchCondition
+ */
+ public SearchCondition build() {
+ return new SearchCondition(this);
+ }
+
+ /**
+ * build pageNum.
+ *
+ * @param pageNum pageNum
+ * @return this
+ */
+ public Builder pageNum(int pageNum) {
+ this.pageNum = pageNum;
+ return this;
+ }
+
+ /**
+ * build pageSize.
+ *
+ * @param pageSize pageSize
+ * @return this
+ */
+ public Builder pageSize(int pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ /**
+ * build condition.
+ *
+ * @param condition condition
+ * @return this
+ */
+ public Builder condition(QueryCondition condition) {
+ this.condition = condition;
+ return this;
+ }
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorData.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorData.java
index a38e1edef..40d40fcd4 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorData.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorData.java
@@ -24,8 +24,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.base.Strings;
-import lombok.Builder;
-import lombok.Data;
import org.apache.shenyu.e2e.client.admin.model.MatchMode;
import org.apache.shenyu.e2e.client.admin.model.Plugin;
import org.apache.shenyu.e2e.client.admin.model.SelectorType;
@@ -34,8 +32,9 @@ import org.apache.shenyu.e2e.client.admin.model.handle.PluginHandle;
import java.io.IOException;
import java.util.List;
-@Data
-@Builder(toBuilder = true)
+/**
+ * selector data.
+ */
public class SelectorData implements ResourceData {
private String id;
@@ -65,6 +64,255 @@ public class SelectorData implements ResourceData {
private int sort;
private boolean matchRestful;
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private SelectorData(final SelectorDataBuilder builder) {
+ this.id = builder.id;
+ this.name = builder.name;
+ this.plugin = builder.plugin;
+ this.type = builder.type;
+ this.matchMode = builder.matchMode;
+ this.enabled = builder.enabled;
+ this.logged = builder.logged;
+ this.continued = builder.continued;
+ this.handle = builder.handle;
+ this.conditionList = builder.conditionList;
+ this.sort = builder.sort;
+ this.matchRestful = builder.matchRestful;
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static SelectorDataBuilder builder() {
+ return new SelectorDataBuilder();
+ }
+
+ /**
+ * get id.
+ *
+ * @return id
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * set id.
+ *
+ * @param id id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * set name.
+ *
+ * @param name name
+ */
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * get plugin.
+ *
+ * @return plugin
+ */
+ public Plugin getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * set plugin.
+ *
+ * @param plugin plugin
+ */
+ public void plugin(Plugin plugin) {
+ this.plugin = plugin;
+ }
+
+ /**
+ * get type.
+ *
+ * @return type
+ */
+ public SelectorType getType() {
+ return type;
+ }
+
+ /**
+ * set type.
+ *
+ * @param type type
+ */
+ public void setType(SelectorType type) {
+ this.type = type;
+ }
+
+ /**
+ * get matchMode.
+ *
+ * @return matchMode
+ */
+ public MatchMode getMatchMode() {
+ return matchMode;
+ }
+
+ /**
+ * set matchMode.
+ *
+ * @param matchMode matchMode
+ */
+ public void setMatchMode(MatchMode matchMode) {
+ this.matchMode = matchMode;
+ }
+
+ /**
+ * is enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * is logged.
+ *
+ * @return logged
+ */
+ public boolean isLogged() {
+ return logged;
+ }
+
+ /**
+ * set logged.
+ *
+ * @param logged logged
+ */
+ public void setLogged(boolean logged) {
+ this.logged = logged;
+ }
+
+ /**
+ * is continued.
+ *
+ * @return continued
+ */
+ public boolean isContinued() {
+ return continued;
+ }
+
+ /**
+ * set continued.
+ *
+ * @param continued continued
+ */
+ public void setContinued(boolean continued) {
+ this.continued = continued;
+ }
+
+ /**
+ * get handle.
+ *
+ * @return handle
+ */
+ public PluginHandle getHandle() {
+ return handle;
+ }
+
+ /**
+ * set handle.
+ *
+ * @param handle handle
+ */
+ public void handle(PluginHandle handle) {
+ this.handle = handle;
+ }
+
+ /**
+ * get conditionList.
+ *
+ * @return conditionList
+ */
+ public List<Condition> getConditionList() {
+ return conditionList;
+ }
+
+ /**
+ * set conditionList.
+ *
+ * @param conditionList conditionList
+ */
+ public void conditionList(List<Condition> conditionList) {
+ this.conditionList = conditionList;
+ }
+
+ /**
+ * get sort.
+ *
+ * @return sort
+ */
+ public int getSort() {
+ return sort;
+ }
+
+ /**
+ * set sort.
+ *
+ * @param sort sort
+ */
+ public void setSort(int sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * is matchRestful.
+ *
+ * @return matchRestful
+ */
+ public boolean isMatchRestful() {
+ return matchRestful;
+ }
+
+ /**
+ * set matchRestful.
+ *
+ * @param matchRestful matchRestful
+ */
+ public void setMatchRestful(boolean matchRestful) {
+ this.matchRestful = matchRestful;
+ }
+
static class PluginHandleSerializer extends JsonSerializer<PluginHandle> {
private static final ObjectMapper mapper = new ObjectMapper();
@@ -74,5 +322,186 @@ public class SelectorData implements ResourceData {
jsonGenerator.writeString(Strings.nullToEmpty(content));
}
}
-
+
+ /**
+ * class builder.
+ */
+ public static final class SelectorDataBuilder {
+
+ private String id;
+
+ private String name;
+
+ @JsonProperty("pluginId")
+ private Plugin plugin;
+
+ private SelectorType type;
+
+ private MatchMode matchMode;
+
+ private boolean enabled;
+
+ @JsonProperty(value = "loged")
+ private boolean logged;
+
+ private boolean continued;
+
+ @JsonSerialize(using = PluginHandleSerializer.class)
+ private PluginHandle handle;
+
+ @JsonProperty("selectorConditions")
+ private List<Condition> conditionList;
+
+ private int sort;
+
+ private boolean matchRestful;
+
+ /**
+ * no args constructor.
+ */
+ private SelectorDataBuilder() {
+
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return SelectorData
+ */
+ public SelectorData build() {
+ return new SelectorData(this);
+ }
+
+ /**
+ * build id.
+ *
+ * @param id id
+ * @return this
+ */
+ public SelectorDataBuilder id(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * build name.
+ *
+ * @param name name
+ * @return this
+ */
+ public SelectorDataBuilder name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * build plugin.
+ *
+ * @param plugin plugin
+ * @return this
+ */
+ public SelectorDataBuilder plugin(Plugin plugin) {
+ this.plugin = plugin;
+ return this;
+ }
+
+ /**
+ * build type.
+ *
+ * @param type type
+ * @return this
+ */
+ public SelectorDataBuilder type(SelectorType type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * build matchMode.
+ *
+ * @param matchMode matchMode
+ * @return this
+ */
+ public SelectorDataBuilder matchMode(MatchMode matchMode) {
+ this.matchMode = matchMode;
+ return this;
+ }
+
+ /**
+ * build enabled.
+ *
+ * @param enabled enabled
+ * @return this
+ */
+ public SelectorDataBuilder enabled(boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ /**
+ * build logged.
+ *
+ * @param logged logged
+ * @return this
+ */
+ public SelectorDataBuilder logged(boolean logged) {
+ this.logged = logged;
+ return this;
+ }
+
+ /**
+ * build continued.
+ *
+ * @param continued continued
+ * @return this
+ */
+ public SelectorDataBuilder continued(boolean continued) {
+ this.continued = continued;
+ return this;
+ }
+
+ /**
+ * build handle.
+ *
+ * @param handle handle
+ * @return this
+ */
+ public SelectorDataBuilder handle(PluginHandle handle) {
+ this.handle = handle;
+ return this;
+ }
+
+ /**
+ * build conditionList.
+ *
+ * @param conditionList conditionList
+ * @return this
+ */
+ public SelectorDataBuilder conditionList(List<Condition> conditionList) {
+ this.conditionList = conditionList;
+ return this;
+ }
+
+ /**
+ * build sort.
+ *
+ * @param sort sort
+ * @return this
+ */
+ public SelectorDataBuilder sort(int sort) {
+ this.sort = sort;
+ return this;
+ }
+
+ /**
+ * build matchRestful.
+ *
+ * @param matchRestful matchRestful
+ * @return this
+ */
+ public SelectorDataBuilder matchRestful(boolean matchRestful) {
+ this.matchRestful = matchRestful;
+ return this;
+ }
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorQueryCondition.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorQueryCondition.java
new file mode 100644
index 000000000..3d66de57b
--- /dev/null
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/data/SelectorQueryCondition.java
@@ -0,0 +1,226 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.e2e.client.admin.model.data;
+
+import com.fasterxml.jackson.annotation.JsonAlias;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.util.Arrays;
+
+/**
+ * Selector query condition.
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class SelectorQueryCondition implements QueryCondition {
+
+ private String excluded;
+
+ private String keyword;
+
+ @JsonAlias("plugin")
+ private String[] plugins;
+
+ private boolean switchStatus;
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private SelectorQueryCondition(Builder builder) {
+ this.excluded = builder.excluded;
+ this.keyword = builder.keyword;
+ this.plugins = builder.plugins;
+ this.switchStatus = builder.switchStatus;
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * get excluded.
+ *
+ * @return excluded
+ */
+ @Override
+ public String getExcluded() {
+ return excluded;
+ }
+
+ /**
+ * set excluded.
+ *
+ * @param excluded excluded
+ */
+ public void setExcluded(String excluded) {
+ this.excluded = excluded;
+ }
+
+ /**
+ * get keyword.
+ *
+ * @return keyword
+ */
+ @Override
+ public String getKeyword() {
+ return keyword;
+ }
+
+ /**
+ * set keyword.
+ *
+ * @param keyword keyword
+ */
+ public void setKeyword(String keyword) {
+ this.keyword = keyword;
+ }
+
+ /**
+ * get plugins.
+ *
+ * @return plugins
+ */
+ public String[] getPlugins() {
+ return plugins;
+ }
+
+ /**
+ * set plugins.
+ *
+ * @param plugins plugins
+ */
+ public void setPlugins(String[] plugins) {
+ this.plugins = plugins;
+ }
+
+ /**
+ * is switchStatus.
+ *
+ * @return switchStatus
+ */
+ @Override
+ public boolean isSwitchStatus() {
+ return switchStatus;
+ }
+
+ /**
+ * get switchStatus.
+ *
+ * @param switchStatus switchStatus
+ */
+ public void setSwitchStatus(boolean switchStatus) {
+ this.switchStatus = switchStatus;
+ }
+
+ @Override
+ public String toString() {
+ return "SelectorQueryCondition{"
+ + "excluded='"
+ + excluded
+ + '\''
+ + ", keyword='"
+ + keyword
+ + '\''
+ + ", plugins="
+ + Arrays.toString(plugins)
+ + ", switchStatus="
+ + switchStatus
+ + '}';
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class Builder {
+
+ private String excluded;
+
+ private String keyword;
+
+ @JsonAlias("plugin")
+ private String[] plugins;
+
+ private boolean switchStatus;
+
+ /**
+ * no args constructor.
+ */
+ private Builder() {
+
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return SelectorQueryCondition
+ */
+ public SelectorQueryCondition build() {
+ return new SelectorQueryCondition(this);
+ }
+
+ /**
+ * build excluded.
+ *
+ * @param excluded excluded
+ * @return this
+ */
+ public Builder excluded(String excluded) {
+ this.excluded = excluded;
+ return this;
+ }
+
+ /**
+ * build keyword.
+ *
+ * @param keyword keyword
+ * @return this
+ */
+ public Builder keyword(String keyword) {
+ this.keyword = keyword;
+ return this;
+ }
+
+ /**
+ * build plugins.
+ *
+ * @param plugins plugins
+ * @return this
+ */
+ public Builder plugins(String[] plugins) {
+ this.plugins = plugins;
+ return this;
+ }
+
+ /**
+ * build switchStatus.
+ *
+ * @param switchStatus switchStatus
+ * @return this
+ */
+ public Builder switchStatus(boolean switchStatus) {
+ this.switchStatus = switchStatus;
+ return this;
+ }
+ }
+}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/DivideRuleHandle.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/DivideRuleHandle.java
index ab0a8c573..5bf263d9b 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/DivideRuleHandle.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/DivideRuleHandle.java
@@ -17,25 +17,21 @@
package org.apache.shenyu.e2e.client.admin.model.handle;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.type.ReferenceType;
import com.fasterxml.jackson.databind.type.SimpleType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.Converter;
-import lombok.Builder;
-import lombok.Data;
-import org.apache.shenyu.e2e.client.admin.model.data.RuleData;
-@Data
-@Builder(toBuilder = true)
+/**
+ * Divide rule handle.
+ */
public class DivideRuleHandle implements RuleHandle {
- private String loadBalance; // todo enhancement, change to enum
+ private String loadBalance;
- private String retryStrategy; // todo enhancement, change to enum
+ private String retryStrategy;
@JsonSerialize(converter = IntConverter.class)
private int retry;
@@ -54,7 +50,7 @@ public class DivideRuleHandle implements RuleHandle {
public String convert(Integer integer) {
return String.valueOf(integer);
}
-
+
@Override
public JavaType getInputType(TypeFactory typeFactory) {
return _IN;
@@ -65,5 +61,236 @@ public class DivideRuleHandle implements RuleHandle {
return _OUT;
}
}
-
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private DivideRuleHandle(Builder builder) {
+ this.loadBalance = builder.loadBalance;
+ this.retryStrategy = builder.retryStrategy;
+ this.retry = builder.retry;
+ this.timeout = builder.timeout;
+ this.headerMaxSize = builder.headerMaxSize;
+ this.requestMaxSize = builder.requestMaxSize;
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * get loadBalance.
+ *
+ * @return loadBalance
+ */
+ public String getLoadBalance() {
+ return loadBalance;
+ }
+
+ /**
+ * set loadBalance.
+ *
+ * @param loadBalance loadBalance
+ */
+ public void setLoadBalance(String loadBalance) {
+ this.loadBalance = loadBalance;
+ }
+
+ /**
+ * get retryStrategy.
+ *
+ * @return retryStrategy
+ */
+ public String getRetryStrategy() {
+ return retryStrategy;
+ }
+
+ /**
+ * set retryStrategy.
+ *
+ * @param retryStrategy retryStrategy
+ */
+ public void setRetryStrategy(String retryStrategy) {
+ this.retryStrategy = retryStrategy;
+ }
+
+ /**
+ * get retry.
+ *
+ * @return retry
+ */
+ public int getRetry() {
+ return retry;
+ }
+
+ /**
+ * set retry.
+ *
+ * @param retry retry
+ */
+ public void setRetry(int retry) {
+ this.retry = retry;
+ }
+
+ /**
+ * get timeout.
+ *
+ * @return timeout
+ */
+ public long getTimeout() {
+ return timeout;
+ }
+
+ /**
+ * set timeout.
+ *
+ * @param timeout timeout
+ */
+ public void setTimeout(long timeout) {
+ this.timeout = timeout;
+ }
+
+ /**
+ * get headerMaxSize.
+ *
+ * @return headerMaxSize
+ */
+ public long getHeaderMaxSize() {
+ return headerMaxSize;
+ }
+
+ /**
+ * set headerMaxSize.
+ *
+ * @param headerMaxSize
+ */
+ public void setHeaderMaxSize(long headerMaxSize) {
+ this.headerMaxSize = headerMaxSize;
+ }
+
+ /**
+ * get requestMaxSize.
+ *
+ * @return requestMaxSize
+ */
+ public long getRequestMaxSize() {
+ return requestMaxSize;
+ }
+
+ /**
+ * set requestMaxSize.
+ *
+ * @param requestMaxSize requestMaxSize
+ */
+ public void setRequestMaxSize(long requestMaxSize) {
+ this.requestMaxSize = requestMaxSize;
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class Builder {
+
+ private String loadBalance;
+
+ private String retryStrategy;
+
+ @JsonSerialize(converter = IntConverter.class)
+ private int retry;
+
+ private long timeout;
+
+ private long headerMaxSize;
+
+ private long requestMaxSize;
+
+ /**
+ * no args constructor.
+ */
+ private Builder() {
+
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return DivideRuleHandle
+ */
+ public DivideRuleHandle build() {
+ return new DivideRuleHandle(this);
+ }
+
+ /**
+ * build loadBalance.
+ *
+ * @param loadBalance loadBalance
+ * @return this
+ */
+ public Builder loadBalance(String loadBalance) {
+ this.loadBalance = loadBalance;
+ return this;
+ }
+
+ /**
+ * build retryStrategy.
+ *
+ * @param retryStrategy retryStrategy
+ * @return this
+ */
+ public Builder retryStrategy(String retryStrategy) {
+ this.retryStrategy = retryStrategy;
+ return this;
+ }
+
+ /**
+ * build retry.
+ *
+ * @param retry retry
+ * @return this
+ */
+ public Builder retry(int retry) {
+ this.retry = retry;
+ return this;
+ }
+
+ /**
+ * build timeout.
+ *
+ * @param timeout timeout
+ * @return this
+ */
+ public Builder timeout(long timeout) {
+ this.timeout = timeout;
+ return this;
+ }
+
+ /**
+ * build headerMaxSize.
+ *
+ * @param headerMaxSize headerMaxSize
+ * @return this
+ */
+ public Builder headerMaxSize(long headerMaxSize) {
+ this.headerMaxSize = headerMaxSize;
+ return this;
+ }
+
+ /**
+ * build requestMaxSize.
+ *
+ * @param requestMaxSize requestMaxSize
+ * @return this
+ */
+ public Builder requestMaxSize(long requestMaxSize) {
+ this.requestMaxSize = requestMaxSize;
+ return this;
+ }
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/Upstreams.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/Upstreams.java
index 72fdcb86b..d695f0963 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/Upstreams.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/handle/Upstreams.java
@@ -23,12 +23,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.collect.Lists;
-import lombok.Data;
import org.apache.shenyu.e2e.client.admin.model.handle.Upstreams.Serializer;
import java.io.IOException;
import java.util.List;
+/**
+ * upstream list.
+ */
@JsonSerialize(using = Serializer.class)
public class Upstreams implements PluginHandle {
@@ -37,24 +39,116 @@ public class Upstreams implements PluginHandle {
Upstreams(List<Upstream> upstreams) {
this.upstreams = upstreams;
}
-
+
+ /**
+ * get upstreams.
+ *
+ * @return upstreams
+ */
public List<Upstream> getUpstreams() {
return this.upstreams;
}
-
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
public static Builder builder() {
return new Builder();
}
-
- @Data
- @lombok.Builder
+
+ /**
+ * class upstream.
+ */
public static class Upstream {
+
private String upstreamUrl;
+
+ /**
+ * builder constructor.
+ *
+ * @param builder builder
+ */
+ private Upstream(Builder builder) {
+ this.upstreamUrl = builder.upstreamUrl;
+ }
+
+ /**
+ * class builder.
+ *
+ * @return Builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * get upstreamUrl.
+ *
+ * @return upstreamUrl
+ */
+ public String getUpstreamUrl() {
+ return upstreamUrl;
+ }
+
+ /**
+ * set upstreamUrl.
+ *
+ * @param upstreamUrl upstreamUrl
+ */
+ public void setUpstreamUrl(String upstreamUrl) {
+ this.upstreamUrl = upstreamUrl;
+ }
+
+ /**
+ * class builder.
+ */
+ public static final class Builder {
+
+ private String upstreamUrl;
+
+ /**
+ * no args constructor.
+ */
+ private Builder() {
+ }
+
+ /**
+ * build new Object.
+ *
+ * @return Upstream
+ */
+ public Upstream build() {
+ return new Upstream(this);
+ }
+
+ /**
+ * build upstreamUrl.
+ *
+ * @param upstreamUrl upstreamUrl
+ * @return this
+ */
+ public Builder upstreamUrl(String upstreamUrl) {
+ this.upstreamUrl = upstreamUrl;
+ return this;
+ }
+ }
}
-
+
+ /**
+ * class Builder.
+ */
public static final class Builder {
+
private List<Upstream> upstreams = Lists.newArrayList();
-
+
+ /**
+ * add upstream.
+ *
+ * @param upstream
+ * @return this
+ */
public Builder add(Upstream upstream) {
upstreams.add(upstream);
return this;
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/FakeResourceDTO.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/FakeResourceDTO.java
index 7b267fdec..9d482d403 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/FakeResourceDTO.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/FakeResourceDTO.java
@@ -18,11 +18,12 @@
package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Data;
import java.util.Date;
-@Data
+/**
+ * Fake resourceDTO.
+ */
@JsonIgnoreProperties(ignoreUnknown = true)
public class FakeResourceDTO implements ResourceDTO{
@@ -39,4 +40,42 @@ public class FakeResourceDTO implements ResourceDTO{
public Date getDateUpdated() {
return null;
}
+
+ /**
+ * get id.
+ *
+ * @return id
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * set id.
+ *
+ * @param id id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * set name.
+ *
+ * @param name name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/LoginInfo.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/LoginInfo.java
index 571809ad7..6b76c8896 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/LoginInfo.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/LoginInfo.java
@@ -19,9 +19,10 @@ package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Data;
-@Data
+/**
+ * Login information.
+ */
@JsonIgnoreProperties(ignoreUnknown = true)
public class LoginInfo {
@JsonAlias("userName")
@@ -32,4 +33,76 @@ public class LoginInfo {
private boolean enabled;
private long expiredTime;
+
+ /**
+ * get username.
+ *
+ * @return username
+ */
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * set username.
+ *
+ * @param username username
+ */
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ /**
+ * get token.
+ *
+ * @return token
+ */
+ public String getToken() {
+ return token;
+ }
+
+ /**
+ * set token.
+ *
+ * @param token token
+ */
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ /**
+ * is enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * get expiredTime.
+ *
+ * @return expiredTime
+ */
+ public long getExpiredTime() {
+ return expiredTime;
+ }
+
+ /**
+ * set expiredTime.
+ *
+ * @param expiredTime expiredTime
+ */
+ public void setExpiredTime(long expiredTime) {
+ this.expiredTime = expiredTime;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PaginatedResources.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PaginatedResources.java
index 9f950d1e9..4b4dd4fb9 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PaginatedResources.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PaginatedResources.java
@@ -17,14 +17,52 @@
package org.apache.shenyu.e2e.client.admin.model.response;
-import lombok.Data;
-
import java.util.List;
-@Data
+/**
+ * Paginated resources.
+ *
+ * @param <T> <T>
+ */
public class PaginatedResources<T extends ResourceDTO> {
private Pagination page;
private List<T> dataList;
+
+ /**
+ * get page.
+ *
+ * @return page
+ */
+ public Pagination getPage() {
+ return page;
+ }
+
+ /**
+ * set page.
+ *
+ * @param page page
+ */
+ public void setPage(Pagination page) {
+ this.page = page;
+ }
+
+ /**
+ * get dataList.
+ *
+ * @return dataList
+ */
+ public List<T> getDataList() {
+ return dataList;
+ }
+
+ /**
+ * set dataList.
+ *
+ * @param dataList dataList
+ */
+ public void setDataList(List<T> dataList) {
+ this.dataList = dataList;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/Pagination.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/Pagination.java
index f418078eb..019a26f9d 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/Pagination.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/Pagination.java
@@ -19,9 +19,10 @@ package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Data;
-@Data
+/**
+ * Pagination.
+ */
@JsonIgnoreProperties(ignoreUnknown = true)
public class Pagination {
@@ -35,16 +36,76 @@ public class Pagination {
@JsonAlias({"pages", "totalPage"})
private int totalPage;
-//
-//
-//
-// private boolean hasNextPage;
-// private int size;
-// private int startRow;
-// private int endRow;
-//
-// private int pages;
-// private int pageNum;
-// private int pageSize;
+ /**
+ * get currentPage.
+ *
+ * @return currentPage
+ */
+ public int getCurrentPage() {
+ return currentPage;
+ }
+
+ /**
+ * set currentPage
+ *
+ * @param currentPage currentPage
+ */
+ public void setCurrentPage(int currentPage) {
+ this.currentPage = currentPage;
+ }
+
+ /**
+ * get pageSize.
+ *
+ * @return pageSize
+ */
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ /**
+ * set pageSize.
+ *
+ * @param pageSize pageSize
+ */
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ /**
+ * get totalSize
+ *
+ * @return totalSize.
+ */
+ public int getTotalSize() {
+ return totalSize;
+ }
+
+ /**
+ * set totalSize.
+ *
+ * @param totalSize totalSize
+ */
+ public void setTotalSize(int totalSize) {
+ this.totalSize = totalSize;
+ }
+
+ /**
+ * get totalPage.
+ *
+ * @return totalPage
+ */
+ public int getTotalPage() {
+ return totalPage;
+ }
+
+ /**
+ * set totalPage.
+ *
+ * @param totalPage totalPage
+ */
+ public void setTotalPage(int totalPage) {
+ this.totalPage = totalPage;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PluginDTO.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PluginDTO.java
index 7094e4b1a..cc144242f 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PluginDTO.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/PluginDTO.java
@@ -18,22 +18,177 @@
package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
import java.util.Date;
-@Data
+/**
+ * PluginDTO.
+ */
public class PluginDTO implements ResourceDTO {
private String id;
+
private String name;
+
private String role;
+
private int sort;
+
private boolean enabled;
+
private String config;
@JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss")
private Date dateCreated;
+
@JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss")
private Date dateUpdated;
+
+ /**
+ * get id.
+ *
+ * @return id
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * set id.
+ *
+ * @param id id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * set name.
+ *
+ * @param name name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * get role.
+ *
+ * @return role
+ */
+ public String getRole() {
+ return role;
+ }
+
+ /**
+ * set role.
+ *
+ * @param role role
+ */
+ public void setRole(String role) {
+ this.role = role;
+ }
+
+ /**
+ * get sort.
+ *
+ * @return sort
+ */
+ public int getSort() {
+ return sort;
+ }
+
+ /**
+ * set sort.
+ *
+ * @param sort sort
+ */
+ public void setSort(int sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * is enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * get config.
+ *
+ * @return config
+ */
+ public String getConfig() {
+ return config;
+ }
+
+ /**
+ * set config.
+ *
+ * @param config config
+ */
+ public void setConfig(String config) {
+ this.config = config;
+ }
+
+ /**
+ * get dateCreated.
+ *
+ * @return dateCreated
+ */
+ @Override
+ public Date getDateCreated() {
+ return dateCreated;
+ }
+
+ /**
+ * set dateCreated.
+ *
+ * @param dateCreated dateCreated
+ */
+ public void setDateCreated(Date dateCreated) {
+ this.dateCreated = dateCreated;
+ }
+
+ /**
+ * get dateUpdated.
+ *
+ * @return dateUpdated
+ */
+ @Override
+ public Date getDateUpdated() {
+ return dateUpdated;
+ }
+
+ /**
+ * set dateUpdated.
+ *
+ * @param dateUpdated dateUpdated
+ */
+ public void setDateUpdated(Date dateUpdated) {
+ this.dateUpdated = dateUpdated;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/ResourceDTO.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/ResourceDTO.java
index 74b505779..c7d9f9996 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/ResourceDTO.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/ResourceDTO.java
@@ -17,7 +17,6 @@
package org.apache.shenyu.e2e.client.admin.model.response;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Date;
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/RuleDTO.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/RuleDTO.java
index abb908246..adde30275 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/RuleDTO.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/RuleDTO.java
@@ -20,11 +20,12 @@ package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.JsonNode;
-import lombok.Data;
import java.util.Date;
-@Data
+/**
+ * RuleDTO.
+ */
public class RuleDTO implements ResourceDTO {
private String id;
@@ -50,7 +51,227 @@ public class RuleDTO implements ResourceDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dateCreated;
+
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dateUpdated;
-
+
+ /**
+ * get id.
+ *
+ * @return id
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * set id.
+ *
+ * @param id id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * set name.
+ *
+ * @param name name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * get selectorId.
+ *
+ * @return selectorId
+ */
+ public String getSelectorId() {
+ return selectorId;
+ }
+
+ /**
+ * set selectorId.
+ *
+ * @param selectorId selectorId
+ */
+ public void setSelectorId(String selectorId) {
+ this.selectorId = selectorId;
+ }
+
+ /**
+ * get matchMode.
+ *
+ * @return matchMode
+ */
+ public int getMatchMode() {
+ return matchMode;
+ }
+
+ /**
+ * set matchMode.
+ *
+ * @param matchMode matchMode
+ */
+ public void setMatchMode(int matchMode) {
+ this.matchMode = matchMode;
+ }
+
+ /**
+ * get matchModeName.
+ *
+ * @return matchModeName
+ */
+ public String getMatchModeName() {
+ return matchModeName;
+ }
+
+ /**
+ * set matchModeName.
+ *
+ * @param matchModeName matchModeName
+ */
+ public void setMatchModeName(String matchModeName) {
+ this.matchModeName = matchModeName;
+ }
+
+ /**
+ * get sort.
+ *
+ * @return sort
+ */
+ public int getSort() {
+ return sort;
+ }
+
+ /**
+ * set sort.
+ *
+ * @param sort sort
+ */
+ public void setSort(int sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * is logged.
+ *
+ * @return
+ */
+ public boolean isLogged() {
+ return logged;
+ }
+
+ /**
+ * set logged.
+ *
+ * @param logged logged
+ */
+ public void setLogged(boolean logged) {
+ this.logged = logged;
+ }
+
+ /**
+ * is enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * get handle.
+ *
+ * @return handle
+ */
+ public String getHandle() {
+ return handle;
+ }
+
+ /**
+ * set handle.
+ *
+ * @param handle handle
+ */
+ public void setHandle(String handle) {
+ this.handle = handle;
+ }
+
+ /**
+ * get ruleConditions.
+ *
+ * @return ruleConditions
+ */
+ public JsonNode getRuleConditions() {
+ return ruleConditions;
+ }
+
+ /**
+ * set ruleConditions.
+ *
+ * @param ruleConditions ruleConditions
+ */
+ public void setRuleConditions(JsonNode ruleConditions) {
+ this.ruleConditions = ruleConditions;
+ }
+
+ /**
+ * get dateCreated.
+ *
+ * @return dateCreated
+ */
+ @Override
+ public Date getDateCreated() {
+ return dateCreated;
+ }
+
+ /**
+ * set dateCreated.
+ *
+ * @param dateCreated dateCreated
+ */
+ public void setDateCreated(Date dateCreated) {
+ this.dateCreated = dateCreated;
+ }
+
+ /**
+ * get dateUpdated.
+ *
+ * @return dateUpdated
+ */
+ @Override
+ public Date getDateUpdated() {
+ return dateUpdated;
+ }
+
+ /**
+ * set dateUpdated.
+ *
+ * @param dateUpdated dateUpdated
+ */
+ public void setDateUpdated(Date dateUpdated) {
+ this.dateUpdated = dateUpdated;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SearchedResources.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SearchedResources.java
index caae64a24..b92550ffb 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SearchedResources.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SearchedResources.java
@@ -18,19 +18,114 @@
package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.Data;
import java.util.List;
-@Data
+/**
+ * Searched resources.
+ *
+ * @param <T> <T>
+ */
@JsonIgnoreProperties(ignoreUnknown = true)
public class SearchedResources<T extends ResourceDTO> {
private int pageNum;
+
private int pageSize;
+
private int total;
+
private int pages;
private List<T> list;
-
+
+ /**
+ * get pageNum.
+ *
+ * @return pageNum
+ */
+ public int getPageNum() {
+ return pageNum;
+ }
+
+ /**
+ * set pageNum.
+ *
+ * @param pageNum pageNum
+ */
+ public void setPageNum(int pageNum) {
+ this.pageNum = pageNum;
+ }
+
+ /**
+ * get pageSize.
+ *
+ * @return pageSize
+ */
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ /**
+ * set pageSize.
+ *
+ * @param pageSize pageSize
+ */
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ /**
+ * get total.
+ *
+ * @return total
+ */
+ public int getTotal() {
+ return total;
+ }
+
+ /**
+ * set total.
+ *
+ * @param total total
+ */
+ public void setTotal(int total) {
+ this.total = total;
+ }
+
+ /**
+ * get pages.
+ *
+ * @return pages
+ */
+ public int getPages() {
+ return pages;
+ }
+
+ /**
+ * set pages.
+ *
+ * @param pages pages
+ */
+ public void setPages(int pages) {
+ this.pages = pages;
+ }
+
+ /**
+ * get list.
+ *
+ * @return list
+ */
+ public List<T> getList() {
+ return list;
+ }
+
+ /**
+ * set list.
+ *
+ * @param list list
+ */
+ public void setList(List<T> list) {
+ this.list = list;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SelectorDTO.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SelectorDTO.java
index 099d410c6..52a1182e6 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SelectorDTO.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/admin/model/response/SelectorDTO.java
@@ -19,13 +19,14 @@ package org.apache.shenyu.e2e.client.admin.model.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
import org.apache.shenyu.e2e.client.admin.model.data.Condition;
import java.util.Date;
import java.util.List;
-@Data
+/**
+ * SelectorDTO.
+ */
public class SelectorDTO implements ResourceDTO {
private String id;
@@ -33,15 +34,22 @@ public class SelectorDTO implements ResourceDTO {
private String pluginId;
private String name;
+
private int matchMode;
+
private String matchModeName;
+
private int type;
+
private String typeName;
private int sort;
+
private boolean enabled;
+
@JsonProperty(value = "loged")
private boolean logged;
+
private boolean continued;
private String handle;
@@ -51,7 +59,281 @@ public class SelectorDTO implements ResourceDTO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private Date dateCreated;
+
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private Date dateUpdated;
-
+
+ /**
+ * get id.
+ *
+ * @return id
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * set id.
+ *
+ * @param id id
+ */
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ /**
+ * get pluginId.
+ *
+ * @return pluginId
+ */
+ public String getPluginId() {
+ return pluginId;
+ }
+
+ /**
+ * set pluginId.
+ *
+ * @param pluginId pluginId
+ */
+ public void setPluginId(String pluginId) {
+ this.pluginId = pluginId;
+ }
+
+ /**
+ * get name.
+ *
+ * @return name
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * set name.
+ *
+ * @param name name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * get matchMode.
+ *
+ * @return matchMode
+ */
+ public int getMatchMode() {
+ return matchMode;
+ }
+
+ /**
+ * set matchMode.
+ *
+ * @param matchMode matchMode
+ */
+ public void setMatchMode(int matchMode) {
+ this.matchMode = matchMode;
+ }
+
+ /**
+ * get matchModeName.
+ *
+ * @return matchModeName
+ */
+ public String getMatchModeName() {
+ return matchModeName;
+ }
+
+ /**
+ * set matchModeName
+ *
+ * @param matchModeName matchModeName
+ */
+ public void setMatchModeName(String matchModeName) {
+ this.matchModeName = matchModeName;
+ }
+
+ /**
+ * get type.
+ *
+ * @return type
+ */
+ public int getType() {
+ return type;
+ }
+
+ /**
+ * set type.
+ *
+ * @param type type
+ */
+ public void setType(int type) {
+ this.type = type;
+ }
+
+ /**
+ * get typeName.
+ *
+ * @return typeName
+ */
+ public String getTypeName() {
+ return typeName;
+ }
+
+ /**
+ * set typeName.
+ *
+ * @param typeName typeName
+ */
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ /**
+ * get sort.
+ *
+ * @return sort
+ */
+ public int getSort() {
+ return sort;
+ }
+
+ /**
+ * set sort.
+ *
+ * @param sort sort
+ */
+ public void setSort(int sort) {
+ this.sort = sort;
+ }
+
+ /**
+ * is enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * is logged.
+ *
+ * @return logged
+ */
+ public boolean isLogged() {
+ return logged;
+ }
+
+ /**
+ * set logged.
+ *
+ * @param logged logged
+ */
+ public void setLogged(boolean logged) {
+ this.logged = logged;
+ }
+
+ /**
+ * get continued.
+ *
+ * @return continued
+ */
+ public boolean isContinued() {
+ return continued;
+ }
+
+ /**
+ * set continued.
+ *
+ * @param continued continued
+ */
+ public void setContinued(boolean continued) {
+ this.continued = continued;
+ }
+
+ /**
+ * get handle.
+ *
+ * @return handle
+ */
+ public String getHandle() {
+ return handle;
+ }
+
+ /**
+ * set handle.
+ *
+ * @param handle handle
+ */
+ public void setHandle(String handle) {
+ this.handle = handle;
+ }
+
+ /**
+ * get conditionList.
+ *
+ * @return conditionList
+ */
+ public List<Condition> getConditionList() {
+ return conditionList;
+ }
+
+ /**
+ * set conditionList.
+ *
+ * @param conditionList conditionList
+ */
+ public void setConditionList(List<Condition> conditionList) {
+ this.conditionList = conditionList;
+ }
+
+ /**
+ * get dateCreated.
+ *
+ * @return dateCreated
+ */
+ @Override
+ public Date getDateCreated() {
+ return dateCreated;
+ }
+
+ /**
+ * set dateCreated.
+ *
+ * @param dateCreated dateCreated
+ */
+ public void setDateCreated(Date dateCreated) {
+ this.dateCreated = dateCreated;
+ }
+
+ /**
+ * get dateUpdated.
+ *
+ * @return dateUpdated
+ */
+ @Override
+ public Date getDateUpdated() {
+ return dateUpdated;
+ }
+
+ /**
+ * set dateUpdated.
+ *
+ * @param dateUpdated dateUpdated
+ */
+ public void setDateUpdated(Date dateUpdated) {
+ this.dateUpdated = dateUpdated;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/gateway/GatewayClient.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/gateway/GatewayClient.java
index 29118ebfa..d04bca4ee 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/gateway/GatewayClient.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/client/gateway/GatewayClient.java
@@ -19,11 +19,10 @@ package org.apache.shenyu.e2e.client.gateway;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.e2e.annotation.ShenYuGatewayClient;
import org.apache.shenyu.e2e.common.RequestLogConsumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import java.util.Properties;
@@ -35,17 +34,31 @@ import static io.restassured.RestAssured.given;
* A client to connect to ShenYu bootstrap(Gateway) server over HTTP.
*/
@ShenYuGatewayClient
-@AllArgsConstructor
-@Slf4j
public class GatewayClient {
+
+ private static final Logger log = LoggerFactory.getLogger(GatewayClient.class);
private final String scenarioId;
-
- @Getter
+
private final String baseUrl;
private final Properties properties;
-
+
+ public GatewayClient(String scenarioId, String baseUrl, Properties properties) {
+ this.scenarioId = scenarioId;
+ this.baseUrl = baseUrl;
+ this.properties = properties;
+ }
+
+ /**
+ * get baseUrl.
+ *
+ * @return baseUrl
+ */
+ public String getBaseUrl() {
+ return baseUrl;
+ }
+
public Supplier<RequestSpecification> getHttpRequesterSupplier() {
return () -> given().baseUri(getBaseUrl())
.filter((req, resp, ctx) -> {
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/RuleMatcher.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/RuleMatcher.java
index 9c22b662c..df570d00c 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/RuleMatcher.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/RuleMatcher.java
@@ -17,10 +17,11 @@
package org.apache.shenyu.e2e.matcher;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.SneakyThrows;
import org.apache.shenyu.e2e.client.admin.model.data.RuleData;
import org.apache.shenyu.e2e.client.admin.model.response.RuleDTO;
+import org.json.JSONException;
import org.skyscreamer.jsonassert.JSONAssert;
import org.skyscreamer.jsonassert.JSONCompareMode;
@@ -33,16 +34,27 @@ import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.notNullValue;
+/**
+ * Rule matcher.
+ */
public class RuleMatcher {
+
private final ObjectMapper mapper = new ObjectMapper();
+
private final RuleData expected;
public RuleMatcher(RuleData expected) {
this.expected = expected;
}
-
- @SneakyThrows
- public void matches(RuleDTO actual) {
+
+ /**
+ *
+ *
+ * @param actual actual
+ * @throws JsonProcessingException JsonProcessingException
+ * @throws JSONException JSONException
+ */
+ public void matches(RuleDTO actual) throws JsonProcessingException, JSONException {
String handle = actual.getHandle();
if (Objects.nonNull(expected.getHandle())) {
String expected = mapper.writer().writeValueAsString(this.expected.getHandle());
diff --git a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/SelectorMatcher.java b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/SelectorMatcher.java
index a77f361f1..65f6e5dbd 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/SelectorMatcher.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/main/java/org/apache/shenyu/e2e/matcher/SelectorMatcher.java
@@ -17,10 +17,11 @@
package org.apache.shenyu.e2e.matcher;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.SneakyThrows;
import org.apache.shenyu.e2e.client.admin.model.data.SelectorData;
import org.apache.shenyu.e2e.client.admin.model.response.SelectorDTO;
+import org.json.JSONException;
import org.skyscreamer.jsonassert.JSONAssert;
import org.skyscreamer.jsonassert.JSONCompareMode;
@@ -33,6 +34,9 @@ import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.notNullValue;
+/**
+ * Selector matcher.
+ */
public class SelectorMatcher {
private final ObjectMapper mapper = new ObjectMapper();
private final SelectorData expected;
@@ -40,9 +44,8 @@ public class SelectorMatcher {
private SelectorMatcher(SelectorData expected) {
this.expected = expected;
}
-
- @SneakyThrows
- public void matches(SelectorDTO actual) {
+
+ public void matches(SelectorDTO actual) throws JsonProcessingException, JSONException {
String handle = actual.getHandle();
if (Objects.nonNull(expected.getHandle())) {
String expected = mapper.writer().writeValueAsString(this.expected.getHandle());
diff --git a/shenyu-e2e/shenyu-e2e-client/src/test/java/org/apache/shenyu/e2e/client/admin/AdminClientTest.java b/shenyu-e2e/shenyu-e2e-client/src/test/java/org/apache/shenyu/e2e/client/admin/AdminClientTest.java
index dac2d74ee..f75682646 100644
--- a/shenyu-e2e/shenyu-e2e-client/src/test/java/org/apache/shenyu/e2e/client/admin/AdminClientTest.java
+++ b/shenyu-e2e/shenyu-e2e-client/src/test/java/org/apache/shenyu/e2e/client/admin/AdminClientTest.java
@@ -17,8 +17,8 @@
package org.apache.shenyu.e2e.client.admin;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.common.collect.Lists;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.e2e.client.admin.model.MatchMode;
import org.apache.shenyu.e2e.client.admin.model.Plugin;
import org.apache.shenyu.e2e.client.admin.model.SelectorType;
@@ -36,6 +36,7 @@ import org.apache.shenyu.e2e.client.admin.model.response.SelectorDTO;
import org.apache.shenyu.e2e.matcher.RuleMatcher;
import org.apache.shenyu.e2e.matcher.SelectorMatcher;
import org.assertj.core.api.Assertions;
+import org.json.JSONException;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
@@ -44,6 +45,8 @@ import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.HttpWaitStrategy;
@@ -53,10 +56,12 @@ import java.time.Duration;
import java.util.List;
import java.util.Properties;
-@Slf4j
@Testcontainers
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class AdminClientTest {
+
+ private static final Logger log = LoggerFactory.getLogger(AdminClientTest.class);
+
static AdminClient client;
static GenericContainer<?> container = new GenericContainer<>("shenyu/admin:latest")
@@ -64,6 +69,7 @@ public class AdminClientTest {
.withLogConsumer(new Slf4jLogConsumer(log));
SelectorDTO selector;
+
RuleDTO rule;
@BeforeAll
@@ -132,7 +138,7 @@ public class AdminClientTest {
}
@Test
- void testCreateSelector() {
+ void testCreateSelector() throws JSONException, JsonProcessingException {
SelectorData selectorData = SelectorData.builder()
.name("test-create-selector")
.plugin(Plugin.DIVIDE)
@@ -158,7 +164,7 @@ public class AdminClientTest {
}
@Test
- void testCreateRule() {
+ void testCreateRule() throws JSONException, JsonProcessingException {
RuleData ruleData = RuleData.builder()
.name("test-create-rule")
.enabled(true)
diff --git a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdGenerator.java b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdGenerator.java
index ba71112a4..43ed5a489 100644
--- a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdGenerator.java
+++ b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdGenerator.java
@@ -19,6 +19,9 @@ package org.apache.shenyu.e2e.common;
import java.time.LocalTime;
+/**
+ * Id Generator.
+ */
public class IdGenerator {
public static String generateScenarioId() {
diff --git a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdManagers.java b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdManagers.java
index 634858412..202ee6892 100644
--- a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdManagers.java
+++ b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/IdManagers.java
@@ -19,15 +19,31 @@ package org.apache.shenyu.e2e.common;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Map;
+import java.util.StringJoiner;
+
+/**
+ * Id mangers.
+ */
public class IdManagers {
+
+ private static final Logger log = LoggerFactory.getLogger(IdManagers.class);
+
public enum Plugins {
INSTANCE;
private BiMap<String, String> name2id;
public void set(BiMap<String, String> name2id) {
this.name2id = name2id;
- System.out.println("plugin list: " + name2id); // TODO
+ StringJoiner joiner = new StringJoiner(",");
+ for (Map.Entry entry : name2id.entrySet()) {
+ joiner.add(entry.getKey().toString());
+ }
+ log.info("plugin list: " + joiner);
+
}
public String getIdByName(String name) {
diff --git a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/NameUtils.java b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/NameUtils.java
index 4faafc459..1f4a9c113 100644
--- a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/NameUtils.java
+++ b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/NameUtils.java
@@ -17,6 +17,9 @@
package org.apache.shenyu.e2e.common;
+/**
+ * Utils for concatenating names.
+ */
public class NameUtils {
public static String wrap(String name, String scenarioId) {
diff --git a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/RequestLogConsumer.java b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/RequestLogConsumer.java
index 9b1bce1fd..b94ffa9dc 100644
--- a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/RequestLogConsumer.java
+++ b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/RequestLogConsumer.java
@@ -29,6 +29,9 @@ import java.io.PrintStream;
import java.nio.charset.Charset;
import java.util.Collections;
+/**
+ * Consume request log.
+ */
public class RequestLogConsumer {
private static final OutputStream FAKE_STREAM = new OutputStream() {
@Override
diff --git a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/TableView.java b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/TableView.java
index 6c3a5858d..8ef0244d8 100644
--- a/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/TableView.java
+++ b/shenyu-e2e/shenyu-e2e-common/src/main/java/org/apache/shenyu/e2e/common/TableView.java
@@ -21,10 +21,15 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+/**
+ * Table view.
+ */
public class TableView {
+
private List<String[]> table = new ArrayList<>();
private final int sizeOfColumnsInRow;
+
private final String[] headers;
private int[] maxContentLengthOfColumns;
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtension.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtension.java
index fcbd38cae..8b63e3f0e 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtension.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtension.java
@@ -40,9 +40,15 @@ import org.testcontainers.DockerClientFactory;
import java.util.Objects;
+/**
+ * ShenYu extension.
+ */
public class ShenYuExtension implements BeforeAllCallback, ExecutionCondition, AfterAllCallback, ParameterResolver {
+
private static final Namespace NAMESPACE = Namespace.create(ShenYuExtension.class);
+
private static final String KEY_EXTENSION_CONTEXT = "_shenyu_service_compose_";
+
private static final String KEY_ENGINE_CONFIGURE = "_shenyu_engine_configure_";
@Override
@@ -75,7 +81,7 @@ public class ShenYuExtension implements BeforeAllCallback, ExecutionCondition, A
return ConditionEvaluationResult.enabled("ShenYu test engine is available");
}
-
+
private boolean isDockerAvailable() {
try {
DockerClientFactory.instance().client();
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtensionContext.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtensionContext.java
index 269efc83d..f52f299f0 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtensionContext.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuExtensionContext.java
@@ -19,7 +19,6 @@ package org.apache.shenyu.e2e.engine;
import com.google.common.collect.Maps;
import junit.framework.AssertionFailedError;
-import lombok.Getter;
import org.apache.shenyu.e2e.client.ExternalServiceClient;
import org.apache.shenyu.e2e.client.admin.AdminClient;
import org.apache.shenyu.e2e.client.gateway.GatewayClient;
@@ -32,12 +31,17 @@ import org.apache.shenyu.e2e.engine.service.ServiceCompose;
import java.util.Map;
import java.util.Objects;
+/**
+ * Start the project using the corresponding method based on the selected configuration.
+ */
public class ShenYuExtensionContext {
- @Getter
+
private final String scenarioId;
private final ServiceCompose serviceCompose;
+
private AdminClient adminClient;
+
private GatewayClient gatewayClient;
private Map<String, ExternalServiceClient> externalServiceClientMap;
@@ -91,5 +95,13 @@ public class ShenYuExtensionContext {
public void cleanup() {
serviceCompose.stop();
}
-
+
+ /**
+ * get scenarioId.
+ *
+ * @return scenarioId
+ */
+ public String getScenarioId() {
+ return scenarioId;
+ }
}
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuLogExtension.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuLogExtension.java
index b59d6f9a4..aaa35e1d5 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuLogExtension.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/ShenYuLogExtension.java
@@ -24,6 +24,9 @@ import org.slf4j.MDC;
import java.lang.reflect.Method;
+/**
+ * ShenYu log extension.
+ */
public class ShenYuLogExtension implements InvocationInterceptor {
@Override
public void interceptBeforeAllMethod(Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Throwable {
@@ -33,7 +36,7 @@ public class ShenYuLogExtension implements InvocationInterceptor {
@Override
public void interceptBeforeEachMethod(Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Throwable {
- MDC.put("phase", "BeforeAll");
+ MDC.put("phase", "BeforeEach");
invocation.proceed();
}
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/config/ShenYuEngineConfigure.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/config/ShenYuEngineConfigure.java
index 8ef0a7da4..f6e94d7dc 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/config/ShenYuEngineConfigure.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/config/ShenYuEngineConfigure.java
@@ -21,8 +21,6 @@ import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
import org.apache.shenyu.e2e.engine.annotation.ShenYuTest;
import org.apache.shenyu.e2e.engine.annotation.ShenYuTest.Parameter;
import org.apache.shenyu.e2e.engine.annotation.ShenYuTest.ServiceConfigure;
@@ -38,7 +36,9 @@ import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-@Getter
+/**
+ * ShenYu engine configure.
+ */
public class ShenYuEngineConfigure {
private static final Pattern EXTRACTOR_PATTERN = Pattern.compile("\\{(.*?)\\}");
@@ -58,8 +58,36 @@ public class ShenYuEngineConfigure {
public boolean isRunOnDocker() {
return Mode.DOCKER == mode;
}
-
+
+ /**
+ * get mode.
+ *
+ * @return mode
+ */
+ public Mode getMode() {
+ return mode;
+ }
+
+ /**
+ * get hostConfigure.
+ *
+ * @return hostConfigure
+ */
+ public HostConfigure getHostConfigure() {
+ return hostConfigure;
+ }
+
+ /**
+ * get dockerConfigure.
+ *
+ * @return dockerConfigure
+ */
+ public DockerConfigure getDockerConfigure() {
+ return dockerConfigure;
+ }
+
public enum Mode {
+
HOST, DOCKER;
@JsonValue
@@ -69,42 +97,205 @@ public class ShenYuEngineConfigure {
}
public enum ServiceType {
+
SHENYU_ADMIN,
+
SHENYU_GATEWAY,
+
EXTERNAL_SERVICE,
}
- @Getter
- @AllArgsConstructor
+
public static class HostConfigure {
+
private final HostServiceConfigure admin;
+
private final HostServiceConfigure gateway;
+
private final List<HostServiceConfigure> externalServices;
-
- @Getter
- @AllArgsConstructor
+
+
+ public HostConfigure(HostServiceConfigure admin, HostServiceConfigure gateway, List<HostServiceConfigure> externalServices) {
+ this.admin = admin;
+ this.gateway = gateway;
+ this.externalServices = externalServices;
+ }
+
+ /**
+ * get admin.
+ *
+ * @return admin
+ */
+ public HostServiceConfigure getAdmin() {
+ return admin;
+ }
+
+ /**
+ * get gateway.
+ *
+ * @return gateway
+ */
+ public HostServiceConfigure getGateway() {
+ return gateway;
+ }
+
+ /**
+ * get externalServices.
+ *
+ * @return externalServices
+ */
+ public List<HostServiceConfigure> getExternalServices() {
+ return externalServices;
+ }
+
public static class HostServiceConfigure {
+
private final String serviceName;
+
private final String baseUrl;
+
private final Properties properties;
+
+ public HostServiceConfigure(String serviceName, String baseUrl, Properties properties) {
+ this.serviceName = serviceName;
+ this.baseUrl = baseUrl;
+ this.properties = properties;
+ }
+
+ /**
+ * get serviceName.
+ *
+ * @return serviceName
+ */
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ /**
+ * get baseUrl.
+ *
+ * @return baseUrl
+ */
+ public String getBaseUrl() {
+ return baseUrl;
+ }
+
+ /**
+ * get properties.
+ *
+ * @return properties
+ */
+ public Properties getProperties() {
+ return properties;
+ }
}
}
-
- @Getter
- @AllArgsConstructor
+
public static class DockerConfigure {
+
private final String dockerComposeFile;
+
private final DockerServiceConfigure admin;
+
private final DockerServiceConfigure gateway;
+
private final List<DockerServiceConfigure> externalServices;
-
- @Getter
- @AllArgsConstructor
+
+ public DockerConfigure(String dockerComposeFile, DockerServiceConfigure admin, DockerServiceConfigure gateway, List<DockerServiceConfigure> externalServices) {
+ this.dockerComposeFile = dockerComposeFile;
+ this.admin = admin;
+ this.gateway = gateway;
+ this.externalServices = externalServices;
+ }
+
+ /**
+ * get dockerComposeFile.
+ *
+ * @return dockerComposeFile
+ */
+ public String getDockerComposeFile() {
+ return dockerComposeFile;
+ }
+
+ /**
+ * get admin.
+ *
+ * @return admin
+ */
+ public DockerServiceConfigure getAdmin() {
+ return admin;
+ }
+
+ /**
+ * get gateway.
+ *
+ * @return gateway
+ */
+ public DockerServiceConfigure getGateway() {
+ return gateway;
+ }
+
+ /**
+ * get externalServices.
+ *
+ * @return
+ */
+ public List<DockerServiceConfigure> getExternalServices() {
+ return externalServices;
+ }
+
public static class DockerServiceConfigure {
+
private final String schema;
+
private final String serviceName;
+
private final int port;
+
private final Properties properties;
+
+ public DockerServiceConfigure(String schema, String serviceName, int port, Properties properties) {
+ this.schema = schema;
+ this.serviceName = serviceName;
+ this.port = port;
+ this.properties = properties;
+ }
+
+ /**
+ * get schema.
+ *
+ * @return schema
+ */
+ public String getSchema() {
+ return schema;
+ }
+
+ /**
+ * get serviceName.
+ *
+ * @return serviceName
+ */
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ /**
+ * get port.
+ *
+ * @return port
+ */
+ public int getPort() {
+ return port;
+ }
+
+ /**
+ * get properties.
+ *
+ * @return properties
+ */
+ public Properties getProperties() {
+ return properties;
+ }
}
}
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpec.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpec.java
index 0607ac2c1..667c76dde 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpec.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpec.java
@@ -25,7 +25,14 @@ import java.util.Objects;
public interface ScenarioSpec {
String getName();
-
+
+ /**
+ * Verify which type the class belongs to.
+ *
+ * @param type type
+ * @return <T>
+ * @param <T> <T>
+ */
default <T> T getByType(Class<T> type) {
if (type.isAssignableFrom(BeforeEachSpec.class)) {
if (Objects.isNull(getBeforeEachSpec())) {
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpecLogProxy.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpecLogProxy.java
index 3ee95ca8b..09af2aaca 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpecLogProxy.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/scenario/specification/ScenarioSpecLogProxy.java
@@ -17,7 +17,6 @@
package org.apache.shenyu.e2e.engine.scenario.specification;
-import lombok.AllArgsConstructor;
import org.apache.shenyu.e2e.client.admin.model.ResourcesData;
import org.apache.shenyu.e2e.engine.scenario.function.Checker;
import org.apache.shenyu.e2e.engine.scenario.function.Deleter;
@@ -27,10 +26,14 @@ import org.slf4j.MDC;
import java.util.List;
-@AllArgsConstructor
public class ScenarioSpecLogProxy implements ScenarioSpec {
+
private final ScenarioSpec spec;
-
+
+ public ScenarioSpecLogProxy(ScenarioSpec spec) {
+ this.spec = spec;
+ }
+
@Override
public BeforeEachSpec getBeforeEachSpec() {
return new BeforeEachSpec() {
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/DockerServiceCompose.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/DockerServiceCompose.java
index 65e50bc88..9d2ceea17 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/DockerServiceCompose.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/DockerServiceCompose.java
@@ -20,8 +20,6 @@ package org.apache.shenyu.e2e.engine.service;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
import junit.framework.AssertionFailedError;
-import lombok.Getter;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.e2e.client.ExternalServiceClient;
import org.apache.shenyu.e2e.client.admin.AdminClient;
import org.apache.shenyu.e2e.client.gateway.GatewayClient;
@@ -30,6 +28,8 @@ import org.apache.shenyu.e2e.engine.config.ShenYuEngineConfigure.DockerConfigure
import org.apache.shenyu.e2e.engine.config.ShenYuEngineConfigure.DockerConfigure.DockerServiceConfigure;
import org.apache.shenyu.e2e.engine.service.docker.DockerComposeFile;
import org.apache.shenyu.e2e.engine.service.docker.ShenYuLogConsumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testcontainers.containers.ContainerState;
import org.testcontainers.containers.DockerComposeContainer;
@@ -37,17 +37,23 @@ import java.util.List;
import java.util.Objects;
import java.util.Optional;
-@Slf4j
-@Getter
+/**
+ * Start docker environment.
+ */
public class DockerServiceCompose implements ServiceCompose {
+
+ private static final Logger log = LoggerFactory.getLogger(DockerServiceCompose.class);
+
private final DockerComposeContainer<?> container;
+
private final DockerConfigure configure;
private final DockerServiceConfigure adminConfigure;
+
private final DockerServiceConfigure gatewayConfigure;
-
+
private List<DockerServiceConfigure> externalServiceConfigurations;
-
+
public DockerServiceCompose(DockerConfigure configure) {
this.configure = configure;
this.adminConfigure = configure.getAdmin();
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/HostServiceCompose.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/HostServiceCompose.java
index 50684eb9c..ff8b34633 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/HostServiceCompose.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/HostServiceCompose.java
@@ -19,8 +19,6 @@ package org.apache.shenyu.e2e.engine.service;
import com.google.common.collect.Lists;
import junit.framework.AssertionFailedError;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
import org.apache.shenyu.e2e.client.ExternalServiceClient;
import org.apache.shenyu.e2e.client.admin.AdminClient;
import org.apache.shenyu.e2e.client.gateway.GatewayClient;
@@ -30,12 +28,26 @@ import org.apache.shenyu.e2e.engine.config.ShenYuEngineConfigure.HostConfigure.H
import java.util.List;
import java.util.Objects;
-@Getter
-@AllArgsConstructor
+/**
+ * Start host environment.
+ */
public class HostServiceCompose implements ServiceCompose {
private HostConfigure configure;
-
+
+ public HostServiceCompose(HostConfigure configure) {
+ this.configure = configure;
+ }
+
+ /**
+ * get configure.
+ *
+ * @return configure
+ */
+ public HostConfigure getConfigure() {
+ return configure;
+ }
+
public void start() {
List<HostServiceConfigure> configures = Lists.newArrayList(configure.getExternalServices());
if (Objects.nonNull(configure.getAdmin())) {
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/NamingResolver.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/NamingResolver.java
index a12579fe3..b5a1e85dd 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/NamingResolver.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/NamingResolver.java
@@ -20,8 +20,9 @@ package org.apache.shenyu.e2e.engine.service;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.e2e.engine.config.ShenYuEngineConfigure.HostConfigure.HostServiceConfigure;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testcontainers.containers.DockerComposeContainer;
import java.lang.reflect.Field;
@@ -32,9 +33,13 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
-@Slf4j
+/**
+ * Resolve name.
+ */
public enum NamingResolver {
INSTANCE;
+
+ private static final Logger log = LoggerFactory.getLogger(NamingResolver.class);
private Map<String, String> namingMap;
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/WaitingForStrategies.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/WaitingForStrategies.java
index f6cd9e080..c3630c7b8 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/WaitingForStrategies.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/WaitingForStrategies.java
@@ -22,14 +22,21 @@ import org.testcontainers.containers.wait.strategy.WaitStrategy;
import java.time.Duration;
+/**
+ * Perform health checks on Admin and Gateway.
+ */
public class WaitingForStrategies {
-
+
+ private static final String GET = "GET";
+
+ private static final String ACTUATOR_HEALTH = "/actuator/health";
+
public static WaitStrategy newAdminStrategy(int port) {
return new HttpWaitStrategy()
.allowInsecure()
.forPort(port)
- .withMethod("GET")
- .forPath("/actuator/health")
+ .withMethod(GET)
+ .forPath(ACTUATOR_HEALTH)
.forStatusCode(200)
.withReadTimeout(Duration.ofSeconds(3))
.withStartupTimeout(Duration.ofMinutes(3));
@@ -39,8 +46,8 @@ public class WaitingForStrategies {
return new HttpWaitStrategy()
.allowInsecure()
.forPort(port)
- .withMethod("GET")
- .forPath("/actuator/health")
+ .withMethod(GET)
+ .forPath(ACTUATOR_HEALTH)
.forStatusCode(200)
.withReadTimeout(Duration.ofSeconds(3))
.withStartupTimeout(Duration.ofMinutes(3));
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/DockerComposeFile.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/DockerComposeFile.java
index c228da1eb..ba0885f5a 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/DockerComposeFile.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/DockerComposeFile.java
@@ -17,7 +17,6 @@
package org.apache.shenyu.e2e.engine.service.docker;
-import lombok.Getter;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Assumptions;
import org.springframework.util.ResourceUtils;
@@ -33,12 +32,30 @@ import java.util.Map;
import java.util.Objects;
public class DockerComposeFile {
- @Getter
+
private final List<String> services;
- @Getter
+
private final File file;
-
+
+ /**
+ * get services.
+ *
+ * @return services
+ */
+ public List<String> getServices() {
+ return services;
+ }
+
+ /**
+ * get file.
+ *
+ * @return file
+ */
+ public File getFile() {
+ return file;
+ }
+
DockerComposeFile(List<String> services, File file) {
this.services = services;
this.file = file;
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/ShenYuLogConsumer.java b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/ShenYuLogConsumer.java
index c4e075ffd..ca8be49c4 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/ShenYuLogConsumer.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/main/java/org/apache/shenyu/e2e/engine/service/docker/ShenYuLogConsumer.java
@@ -17,11 +17,16 @@
package org.apache.shenyu.e2e.engine.service.docker;
-import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testcontainers.containers.output.Slf4jLogConsumer;
-@Slf4j(topic = "docker-compose")
+/**
+ * ShenYu-Log Consumer.
+ */
public class ShenYuLogConsumer extends Slf4jLogConsumer {
+
+ private static final Logger log = LoggerFactory.getLogger("docker-compose");
public ShenYuLogConsumer(String serviceName) {
super(log);
diff --git a/shenyu-e2e/shenyu-e2e-engine/src/test/java/org/apache/shenyu/e2e/engine/ShenYuEngineTest.java b/shenyu-e2e/shenyu-e2e-engine/src/test/java/org/apache/shenyu/e2e/engine/ShenYuEngineTest.java
index 43eb1e90a..cae7b9ee8 100644
--- a/shenyu-e2e/shenyu-e2e-engine/src/test/java/org/apache/shenyu/e2e/engine/ShenYuEngineTest.java
+++ b/shenyu-e2e/shenyu-e2e-engine/src/test/java/org/apache/shenyu/e2e/engine/ShenYuEngineTest.java
@@ -19,7 +19,7 @@ package org.apache.shenyu.e2e.engine;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.apache.shenyu.e2e.client.admin.AdminClient;
-import org.apache.shenyu.e2e.client.admin.model.data.SearchCondition.SelectorQueryCondition;
+import org.apache.shenyu.e2e.client.admin.model.data.SelectorQueryCondition;
import org.apache.shenyu.e2e.client.admin.model.response.SearchedResources;
import org.apache.shenyu.e2e.client.admin.model.response.SelectorDTO;
import org.apache.shenyu.e2e.engine.annotation.ShenYuTest;