This is an automated email from the ASF dual-hosted git repository.

xiaoyu 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 98e38a8520 [type:refactor] Optimize code for 
shenyu-kubernetes-controller (#5877)
98e38a8520 is described below

commit 98e38a8520f4ee00a1e51752cc9122fea11efb21
Author: po-168 <[email protected]>
AuthorDate: Sat Feb 1 18:08:51 2025 +0800

    [type:refactor] Optimize code for shenyu-kubernetes-controller (#5877)
    
    Co-authored-by: aias00 <[email protected]>
---
 .../shenyu/k8s/parser/ContextPathParser.java       |  7 ++--
 .../shenyu/k8s/parser/DivideIngressParser.java     | 28 ++++++++++-----
 .../shenyu/k8s/parser/DubboIngressParser.java      | 41 ++++++++++++++--------
 .../org/apache/shenyu/k8s/parser/GrpcParser.java   | 23 +++++++-----
 .../apache/shenyu/k8s/parser/IngressParser.java    |  3 +-
 .../shenyu/k8s/parser/MotanIngressParser.java      | 17 +++++----
 .../org/apache/shenyu/k8s/parser/SofaParser.java   | 21 +++--------
 .../shenyu/k8s/parser/SpringCloudParser.java       | 15 ++++----
 .../apache/shenyu/k8s/parser/WebSocketParser.java  | 36 ++++++++++++-------
 .../shenyu/k8s/reconciler/EndpointsReconciler.java | 27 ++++++++------
 .../shenyu/k8s/reconciler/IngressReconciler.java   | 21 +++++------
 11 files changed, 143 insertions(+), 96 deletions(-)

diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/ContextPathParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/ContextPathParser.java
index c35432e3a9..e6a15cfad2 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/ContextPathParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/ContextPathParser.java
@@ -100,17 +100,18 @@ public class ContextPathParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
                     OperatorEnum operator = getOperator(path.getPathType());
-                    ConditionData pathCondition = 
createPathCondition(path.getPath(), operator);
+                    ConditionData pathCondition = 
createPathCondition(pathPath, operator);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
                     }
                     conditionList.add(pathCondition);
-                    SelectorData selectorData = 
createSelectorData(path.getPath(), conditionList);
+                    SelectorData selectorData = createSelectorData(pathPath, 
conditionList);
                     ContextMappingRuleHandle contextMappingRuleHandle = 
createContextMappingRuleHandle(annotations);
                     List<RuleData> ruleDataList = new ArrayList<>();
                     List<ConditionData> ruleConditionList = 
getRuleConditionList(annotations);
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DivideIngressParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DivideIngressParser.java
index d6c702e714..15b03b4451 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DivideIngressParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DivideIngressParser.java
@@ -31,6 +31,7 @@ import 
io.kubernetes.client.openapi.models.V1IngressServiceBackend;
 import io.kubernetes.client.openapi.models.V1IngressTLS;
 import io.kubernetes.client.openapi.models.V1Secret;
 import io.kubernetes.client.openapi.models.V1Service;
+import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -200,7 +201,8 @@ public class DivideIngressParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
 
@@ -219,7 +221,7 @@ public class DivideIngressParser implements 
K8sResourceParser<V1Ingress> {
                     ConditionData pathCondition = new ConditionData();
                     pathCondition.setOperator(operator.getAlias());
                     pathCondition.setParamType(ParamTypeEnum.URI.getName());
-                    pathCondition.setParamValue(path.getPath());
+                    pathCondition.setParamValue(pathPath);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
@@ -229,7 +231,7 @@ public class DivideIngressParser implements 
K8sResourceParser<V1Ingress> {
                     SelectorData selectorData = SelectorData.builder()
                             
.pluginId(String.valueOf(PluginEnum.DIVIDE.getCode()))
                             .pluginName(PluginEnum.DIVIDE.getName())
-                            .name(path.getPath())
+                            .name(pathPath)
                             .matchMode(MatchModeEnum.AND.getCode())
                             .type(SelectorTypeEnum.CUSTOM_FLOW.getCode())
                             .enabled(true)
@@ -251,7 +253,7 @@ public class DivideIngressParser implements 
K8sResourceParser<V1Ingress> {
                         
divideRuleHandle.setRequestMaxSize(Long.parseLong(annotations.getOrDefault(IngressConstants.REQUEST_MAX_SIZE_ANNOTATION_KEY,
 "102400")));
                     }
                     RuleData ruleData = RuleData.builder()
-                            .name(path.getPath())
+                            .name(pathPath)
                             .pluginName(PluginEnum.DIVIDE.getName())
                             .matchMode(MatchModeEnum.AND.getCode())
                             .conditionDataList(conditionList)
@@ -267,11 +269,19 @@ public class DivideIngressParser implements 
K8sResourceParser<V1Ingress> {
     }
 
     private String parsePort(final V1IngressServiceBackend service) {
-        if (Objects.nonNull(service.getPort())) {
-            if (service.getPort().getNumber() != null && 
service.getPort().getNumber() > 0) {
-                return String.valueOf(service.getPort().getNumber());
-            } else if (service.getPort().getName() != null && 
StringUtils.isNoneBlank(service.getPort().getName().trim())) {
-                return service.getPort().getName().trim();
+        V1ServiceBackendPort servicePort = service.getPort();
+        if (Objects.nonNull(servicePort)) {
+            Integer portNumber = servicePort.getNumber();
+            if (Objects.nonNull(portNumber) && portNumber > 0) {
+                return String.valueOf(portNumber);
+            } else {
+                String servicePortName = servicePort.getName();
+                if (Objects.nonNull(servicePortName)) {
+                    String trim = servicePortName.trim();
+                    if (StringUtils.isNoneBlank(trim)) {
+                        return trim;
+                    }
+                }
             }
         }
         return null;
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DubboIngressParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DubboIngressParser.java
index bb1d4b5f7a..7c76d9c939 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DubboIngressParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/DubboIngressParser.java
@@ -31,6 +31,7 @@ import 
io.kubernetes.client.openapi.models.V1IngressServiceBackend;
 import io.kubernetes.client.openapi.models.V1IngressTLS;
 import io.kubernetes.client.openapi.models.V1Secret;
 import io.kubernetes.client.openapi.models.V1Service;
+import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -128,13 +129,16 @@ public class DubboIngressParser implements 
K8sResourceParser<V1Ingress> {
             if (Objects.nonNull(tlsList) && 
CollectionUtils.isNotEmpty(tlsList)) {
                 List<SslCrtAndKeyStream> sslList = new ArrayList<>();
                 for (V1IngressTLS tls : tlsList) {
-                    if (Objects.nonNull(tls.getSecretName()) && 
Objects.nonNull(tls.getHosts()) && CollectionUtils.isNotEmpty(tls.getHosts())) {
+                    List<String> hosts = tls.getHosts();
+                    String secretName = tls.getSecretName();
+                    if (Objects.nonNull(secretName) && 
CollectionUtils.isNotEmpty(hosts)) {
                         try {
-                            V1Secret secret = 
coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
-                            if (secret.getData() != null) {
-                                InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.crt"));
-                                InputStream keyInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.key"));
-                                tls.getHosts().forEach(host ->
+                            V1Secret secret = 
coreV1Api.readNamespacedSecret(secretName, namespace, "ture");
+                            Map<String, byte[]> secretData = secret.getData();
+                            if (Objects.nonNull(secretData)) {
+                                InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secretData.get("tls.crt"));
+                                InputStream keyInputStream = new 
ByteArrayInputStream(secretData.get("tls.key"));
+                                hosts.forEach(host ->
                                         sslList.add(new 
SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
                                 );
                             }
@@ -186,11 +190,19 @@ public class DubboIngressParser implements 
K8sResourceParser<V1Ingress> {
     }
 
     private String parsePort(final V1IngressServiceBackend service) {
-        if (Objects.nonNull(service.getPort())) {
-            if (service.getPort().getNumber() != null && 
service.getPort().getNumber() > 0) {
-                return String.valueOf(service.getPort().getNumber());
-            } else if (service.getPort().getName() != null && 
StringUtils.isNoneBlank(service.getPort().getName().trim())) {
-                return service.getPort().getName().trim();
+        V1ServiceBackendPort servicePort = service.getPort();
+        if (Objects.nonNull(servicePort)) {
+            Integer portNumber = servicePort.getNumber();
+            if (Objects.nonNull(portNumber) && portNumber > 0) {
+                return String.valueOf(portNumber);
+            } else {
+                String servicePortName = servicePort.getName();
+                if (Objects.nonNull(servicePortName)) {
+                    String trim = servicePortName.trim();
+                    if (StringUtils.isNoneBlank(trim)) {
+                        return trim;
+                    }
+                }
             }
         }
         return null;
@@ -207,11 +219,12 @@ public class DubboIngressParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
                     OperatorEnum operator = getOperator(path.getPathType());
-                    ConditionData pathCondition = 
createPathCondition(path.getPath(), operator);
+                    ConditionData pathCondition = 
createPathCondition(pathPath, operator);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
@@ -222,7 +235,7 @@ public class DubboIngressParser implements 
K8sResourceParser<V1Ingress> {
                     if (upstreamList.isEmpty()) {
                         upstreamList = dubboUpstreamList;
                     }
-                    SelectorData selectorData = 
createSelectorData(path.getPath(), conditionList, upstreamList);
+                    SelectorData selectorData = createSelectorData(pathPath, 
conditionList, upstreamList);
                     List<RuleData> ruleDataList = new ArrayList<>();
                     List<MetaData> metaDataList = new ArrayList<>();
                     for (String label : labels.keySet()) {
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/GrpcParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/GrpcParser.java
index 2de074aad5..34093f420b 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/GrpcParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/GrpcParser.java
@@ -31,6 +31,7 @@ import 
io.kubernetes.client.openapi.models.V1IngressServiceBackend;
 import io.kubernetes.client.openapi.models.V1IngressTLS;
 import io.kubernetes.client.openapi.models.V1Secret;
 import io.kubernetes.client.openapi.models.V1Service;
+import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -210,11 +211,16 @@ public class GrpcParser implements 
K8sResourceParser<V1Ingress> {
     }
 
     private String parsePort(final V1IngressServiceBackend service) {
-        if (Objects.nonNull(service.getPort())) {
-            if (service.getPort().getNumber() != null && 
service.getPort().getNumber() > 0) {
-                return String.valueOf(service.getPort().getNumber());
-            } else if (service.getPort().getName() != null && 
StringUtils.isNoneBlank(service.getPort().getName().trim())) {
-                return service.getPort().getName().trim();
+        V1ServiceBackendPort servicePort = service.getPort();
+        if (Objects.nonNull(servicePort)) {
+            Integer portNumber = servicePort.getNumber();
+            if (Objects.nonNull(portNumber) && portNumber > 0) {
+                return String.valueOf(portNumber);
+            } else {
+                String servicePortName = servicePort.getName();
+                if (Objects.nonNull(servicePortName) && 
StringUtils.isNoneBlank(servicePortName.trim())) {
+                    return servicePortName.trim();
+                }
             }
         }
         return null;
@@ -230,11 +236,12 @@ public class GrpcParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
                     OperatorEnum operator = getOperator(path.getPathType());
-                    ConditionData pathCondition = 
createPathCondition(path.getPath(), operator);
+                    ConditionData pathCondition = 
createPathCondition(pathPath, operator);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
@@ -242,7 +249,7 @@ public class GrpcParser implements 
K8sResourceParser<V1Ingress> {
                     conditionList.add(pathCondition);
                     List<GrpcUpstream> grpcUpstreamList = 
parseUpstream(path.getBackend(), namespace);
 
-                    SelectorData selectorData = 
createSelectorData(path.getPath(), conditionList, grpcUpstreamList);
+                    SelectorData selectorData = createSelectorData(pathPath, 
conditionList, grpcUpstreamList);
                     List<RuleData> ruleDataList = new ArrayList<>();
                     List<MetaData> metaDataList = new ArrayList<>();
                     for (String label : labels.keySet()) {
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
index ec86b6591c..09c4426098 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/IngressParser.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Parser of Ingress.
@@ -103,7 +104,7 @@ public class IngressParser implements 
K8sResourceListParser<V1Ingress> {
 
     private boolean getBooleanAnnotation(final V1Ingress ingress, final String 
annotationKey) {
         String annotationValue = 
ingress.getMetadata().getAnnotations().get(annotationKey);
-        return annotationValue != null && 
Boolean.parseBoolean(annotationValue);
+        return Objects.nonNull(annotationValue) && 
Boolean.parseBoolean(annotationValue);
     }
 
     private void contextPathParse(final V1Ingress ingress, final 
List<ShenyuMemoryConfig> shenyuMemoryConfigList, final CoreV1Api coreV1Api) {
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java
index 58475c272d..5479d7f444 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/MotanIngressParser.java
@@ -115,13 +115,15 @@ public class MotanIngressParser implements 
K8sResourceParser<V1Ingress> {
             if (Objects.nonNull(tlsList) && 
CollectionUtils.isNotEmpty(tlsList)) {
                 List<SslCrtAndKeyStream> sslList = new ArrayList<>();
                 for (V1IngressTLS tls : tlsList) {
-                    if (tls.getSecretName() != null && tls.getHosts() != null 
&& CollectionUtils.isNotEmpty(tls.getHosts())) {
+                    String secretName = tls.getSecretName();
+                    List<String> hosts = tls.getHosts();
+                    if (Objects.nonNull(secretName) && 
CollectionUtils.isNotEmpty(hosts)) {
                         try {
-                            V1Secret secret = 
coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
+                            V1Secret secret = 
coreV1Api.readNamespacedSecret(secretName, namespace, "ture");
                             if (Objects.nonNull(secret.getData())) {
                                 InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.crt"));
                                 InputStream keyInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.key"));
-                                tls.getHosts().forEach(host ->
+                                hosts.forEach(host ->
                                         sslList.add(new 
SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
                                 );
                             }
@@ -153,7 +155,8 @@ public class MotanIngressParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
 
@@ -172,7 +175,7 @@ public class MotanIngressParser implements 
K8sResourceParser<V1Ingress> {
                     ConditionData pathCondition = new ConditionData();
                     pathCondition.setOperator(operator.getAlias());
                     pathCondition.setParamType(ParamTypeEnum.URI.getName());
-                    pathCondition.setParamValue(path.getPath());
+                    pathCondition.setParamValue(pathPath);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
@@ -181,14 +184,14 @@ public class MotanIngressParser implements 
K8sResourceParser<V1Ingress> {
                     ConditionData ruleConditionData = new ConditionData();
                     
ruleConditionData.setParamType(ParamTypeEnum.URI.getName());
                     ruleConditionData.setOperator(OperatorEnum.EQ.getAlias());
-                    
ruleConditionData.setParamName(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_PATH,
 path.getPath()));
+                    
ruleConditionData.setParamName(annotations.getOrDefault(IngressConstants.PLUGIN_MOTAN_PATH,
 pathPath));
                     List<ConditionData> ruleConditionDataList = new 
ArrayList<>();
                     ruleConditionDataList.add(ruleConditionData);
 
                     SelectorData selectorData = SelectorData.builder()
                             
.pluginId(String.valueOf(PluginEnum.MOTAN.getCode()))
                             .pluginName(PluginEnum.MOTAN.getName())
-                            .name(path.getPath())
+                            .name(pathPath)
                             .matchMode(MatchModeEnum.AND.getCode())
                             .type(SelectorTypeEnum.CUSTOM_FLOW.getCode())
                             .enabled(true)
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SofaParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SofaParser.java
index 10d9384704..2b7ba3f0e5 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SofaParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SofaParser.java
@@ -25,12 +25,11 @@ import 
io.kubernetes.client.openapi.models.V1HTTPIngressPath;
 import io.kubernetes.client.openapi.models.V1Ingress;
 import io.kubernetes.client.openapi.models.V1IngressBackend;
 import io.kubernetes.client.openapi.models.V1IngressRule;
-import io.kubernetes.client.openapi.models.V1IngressServiceBackend;
 import io.kubernetes.client.openapi.models.V1IngressTLS;
 import io.kubernetes.client.openapi.models.V1Secret;
 import io.kubernetes.client.openapi.models.V1Service;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.shenyu.common.config.ssl.SslCrtAndKeyStream;
 import org.apache.shenyu.common.dto.ConditionData;
@@ -127,9 +126,10 @@ public class SofaParser implements 
K8sResourceParser<V1Ingress> {
                     if (Objects.nonNull(tls.getSecretName()) && 
Objects.nonNull(tls.getHosts()) && CollectionUtils.isNotEmpty(tls.getHosts())) {
                         try {
                             V1Secret secret = 
coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
-                            if (secret.getData() != null) {
-                                InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.crt"));
-                                InputStream keyInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.key"));
+                            Map<String, byte[]> secretData = secret.getData();
+                            if (MapUtils.isNotEmpty(secretData)) {
+                                InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secretData.get("tls.crt"));
+                                InputStream keyInputStream = new 
ByteArrayInputStream(secretData.get("tls.key"));
                                 tls.getHosts().forEach(host ->
                                         sslList.add(new 
SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
                                 );
@@ -145,17 +145,6 @@ public class SofaParser implements 
K8sResourceParser<V1Ingress> {
         return res;
     }
 
-    private String parsePort(final V1IngressServiceBackend service) {
-        if (Objects.nonNull(service.getPort())) {
-            if (service.getPort().getNumber() != null && 
service.getPort().getNumber() > 0) {
-                return String.valueOf(service.getPort().getNumber());
-            } else if (service.getPort().getName() != null && 
StringUtils.isNoneBlank(service.getPort().getName().trim())) {
-                return service.getPort().getName().trim();
-            }
-        }
-        return null;
-    }
-
     private List<IngressConfiguration> parseIngressRule(final V1IngressRule 
ingressRule,
                                                         final String namespace,
                                                         final Map<String, 
String> annotations,
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SpringCloudParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SpringCloudParser.java
index a1f05c12b1..9f5dedbf80 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SpringCloudParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/SpringCloudParser.java
@@ -32,6 +32,7 @@ import io.kubernetes.client.openapi.models.V1IngressTLS;
 import io.kubernetes.client.openapi.models.V1Secret;
 import io.kubernetes.client.openapi.models.V1Service;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.shenyu.common.config.ssl.SslCrtAndKeyStream;
@@ -127,9 +128,10 @@ public class SpringCloudParser implements 
K8sResourceParser<V1Ingress> {
                     if (Objects.nonNull(tls.getSecretName()) && 
Objects.nonNull(tls.getHosts()) && CollectionUtils.isNotEmpty(tls.getHosts())) {
                         try {
                             V1Secret secret = 
coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
-                            if (secret.getData() != null) {
-                                InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.crt"));
-                                InputStream keyInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.key"));
+                            Map<String, byte[]> secretData = secret.getData();
+                            if (MapUtils.isNotEmpty(secretData)) {
+                                InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secretData.get("tls.crt"));
+                                InputStream keyInputStream = new 
ByteArrayInputStream(secretData.get("tls.key"));
                                 tls.getHosts().forEach(host ->
                                         sslList.add(new 
SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
                                 );
@@ -152,11 +154,12 @@ public class SpringCloudParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
                     OperatorEnum operator = getOperator(path.getPathType());
-                    ConditionData pathCondition = 
createPathCondition(path.getPath(), operator);
+                    ConditionData pathCondition = 
createPathCondition(pathPath, operator);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
@@ -164,7 +167,7 @@ public class SpringCloudParser implements 
K8sResourceParser<V1Ingress> {
                     conditionList.add(pathCondition);
 
                     SpringCloudSelectorHandle springCloudSelectorHandle = 
createSpringCloudSelectorHandle(annotations, path, namespace);
-                    SelectorData selectorData = 
createSelectorData(path.getPath(), conditionList, springCloudSelectorHandle);
+                    SelectorData selectorData = createSelectorData(pathPath, 
conditionList, springCloudSelectorHandle);
                     SpringCloudRuleHandle ruleHandle = 
createSpringCloudRuleHandle(annotations);
                     List<RuleData> ruleDataList = new ArrayList<>();
                     List<MetaData> metaDataList = new ArrayList<>();
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/WebSocketParser.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/WebSocketParser.java
index 0e3f38ba2a..178b8f0bf0 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/WebSocketParser.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/parser/WebSocketParser.java
@@ -31,6 +31,7 @@ import 
io.kubernetes.client.openapi.models.V1IngressServiceBackend;
 import io.kubernetes.client.openapi.models.V1IngressTLS;
 import io.kubernetes.client.openapi.models.V1Secret;
 import io.kubernetes.client.openapi.models.V1Service;
+import io.kubernetes.client.openapi.models.V1ServiceBackendPort;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -123,13 +124,15 @@ public class WebSocketParser implements 
K8sResourceParser<V1Ingress> {
             if (Objects.nonNull(tlsList) && 
CollectionUtils.isNotEmpty(tlsList)) {
                 List<SslCrtAndKeyStream> sslList = new ArrayList<>();
                 for (V1IngressTLS tls : tlsList) {
-                    if (tls.getSecretName() != null && tls.getHosts() != null 
&& CollectionUtils.isNotEmpty(tls.getHosts())) {
+                    String secretName = tls.getSecretName();
+                    List<String> hosts = tls.getHosts();
+                    if (Objects.nonNull(secretName) && 
CollectionUtils.isNotEmpty(hosts)) {
                         try {
-                            V1Secret secret = 
coreV1Api.readNamespacedSecret(tls.getSecretName(), namespace, "ture");
+                            V1Secret secret = 
coreV1Api.readNamespacedSecret(secretName, namespace, "ture");
                             if (Objects.nonNull(secret.getData())) {
                                 InputStream keyCertChainInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.crt"));
                                 InputStream keyInputStream = new 
ByteArrayInputStream(secret.getData().get("tls.key"));
-                                tls.getHosts().forEach(host ->
+                                hosts.forEach(host ->
                                         sslList.add(new 
SslCrtAndKeyStream(host, keyCertChainInputStream, keyInputStream))
                                 );
                             }
@@ -200,7 +203,8 @@ public class WebSocketParser implements 
K8sResourceParser<V1Ingress> {
             List<V1HTTPIngressPath> paths = ingressRule.getHttp().getPaths();
             if (Objects.nonNull(paths)) {
                 for (V1HTTPIngressPath path : paths) {
-                    if (path.getPath() == null) {
+                    String pathPath = path.getPath();
+                    if (Objects.isNull(pathPath)) {
                         continue;
                     }
 
@@ -219,7 +223,7 @@ public class WebSocketParser implements 
K8sResourceParser<V1Ingress> {
                     ConditionData pathCondition = new ConditionData();
                     pathCondition.setOperator(operator.getAlias());
                     pathCondition.setParamType(ParamTypeEnum.URI.getName());
-                    pathCondition.setParamValue(path.getPath());
+                    pathCondition.setParamValue(pathPath);
                     List<ConditionData> conditionList = new ArrayList<>(2);
                     if (Objects.nonNull(hostCondition)) {
                         conditionList.add(hostCondition);
@@ -229,7 +233,7 @@ public class WebSocketParser implements 
K8sResourceParser<V1Ingress> {
                     SelectorData selectorData = SelectorData.builder()
                             
.pluginId(String.valueOf(PluginEnum.WEB_SOCKET.getCode()))
                             .pluginName(PluginEnum.WEB_SOCKET.getName())
-                            .name(path.getPath())
+                            .name(pathPath)
                             .matchMode(MatchModeEnum.AND.getCode())
                             .type(SelectorTypeEnum.CUSTOM_FLOW.getCode())
                             .enabled(true)
@@ -249,7 +253,7 @@ public class WebSocketParser implements 
K8sResourceParser<V1Ingress> {
                         
webSocketRuleHandle.setTimeout(Long.parseLong(annotations.getOrDefault(IngressConstants.TIMEOUT_ANNOTATION_KEY,
 "3000")));
                     }
                     RuleData ruleData = RuleData.builder()
-                            .name(path.getPath())
+                            .name(pathPath)
                             .pluginName(PluginEnum.WEB_SOCKET.getName())
                             .matchMode(MatchModeEnum.AND.getCode())
                             .conditionDataList(conditionList)
@@ -265,11 +269,19 @@ public class WebSocketParser implements 
K8sResourceParser<V1Ingress> {
     }
 
     private String parsePort(final V1IngressServiceBackend service) {
-        if (Objects.nonNull(service.getPort())) {
-            if (service.getPort().getNumber() != null && 
service.getPort().getNumber() > 0) {
-                return String.valueOf(service.getPort().getNumber());
-            } else if (service.getPort().getName() != null && 
StringUtils.isNoneBlank(service.getPort().getName().trim())) {
-                return service.getPort().getName().trim();
+        V1ServiceBackendPort servicePort = service.getPort();
+        if (Objects.nonNull(servicePort)) {
+            Integer portNumber = servicePort.getNumber();
+            if (Objects.nonNull(portNumber) && portNumber > 0) {
+                return String.valueOf(portNumber);
+            } else {
+                String servicePortName = servicePort.getName();
+                if (Objects.nonNull(servicePortName)) {
+                    String trim = servicePortName.trim();
+                    if (StringUtils.isNoneBlank(trim)) {
+                        return trim;
+                    }
+                }
             }
         }
         return null;
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/EndpointsReconciler.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/EndpointsReconciler.java
index bcffb07925..b730336314 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/EndpointsReconciler.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/EndpointsReconciler.java
@@ -24,10 +24,11 @@ import io.kubernetes.client.informer.SharedIndexInformer;
 import io.kubernetes.client.informer.cache.Lister;
 import io.kubernetes.client.openapi.ApiClient;
 import io.kubernetes.client.openapi.models.CoreV1EndpointPort;
-import io.kubernetes.client.openapi.models.V1EndpointSubset;
 import io.kubernetes.client.openapi.models.V1EndpointAddress;
+import io.kubernetes.client.openapi.models.V1EndpointSubset;
 import io.kubernetes.client.openapi.models.V1Endpoints;
 import io.kubernetes.client.openapi.models.V1Ingress;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.shenyu.common.dto.SelectorData;
 import org.apache.shenyu.common.dto.convert.selector.DivideUpstream;
@@ -43,6 +44,7 @@ import org.slf4j.LoggerFactory;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -87,12 +89,12 @@ public class EndpointsReconciler implements Reconciler {
     @Override
     public Result reconcile(final Request request) {
         List<Pair<String, String>> ingressList = 
ServiceIngressCache.getInstance().getIngressName(request.getNamespace(), 
request.getName());
-        if (ingressList == null || ingressList.isEmpty()) {
+        if (CollectionUtils.isEmpty(ingressList)) {
             return new Result(false);
         }
 
         V1Endpoints v1Endpoints = 
endpointsLister.namespace(request.getNamespace()).get(request.getName());
-        if (v1Endpoints == null) {
+        if (Objects.isNull(v1Endpoints)) {
             // The deletion event is not processed, because deleting all 
upstreams in the Selector has
             // the same effect as not deleting them, and they cannot be 
accessed
             LOG.info("Cannot find endpoints {}", request);
@@ -135,10 +137,12 @@ public class EndpointsReconciler implements Reconciler {
 
     private List<DivideUpstream> getUpstreamFromEndpoints(final V1Endpoints 
v1Endpoints) {
         List<DivideUpstream> res = new ArrayList<>();
-        if (v1Endpoints.getSubsets() != null) {
-            for (V1EndpointSubset subset : v1Endpoints.getSubsets()) {
+        List<V1EndpointSubset> subsets = v1Endpoints.getSubsets();
+        if (CollectionUtils.isNotEmpty(subsets)) {
+            for (V1EndpointSubset subset : subsets) {
                 List<CoreV1EndpointPort> ports = subset.getPorts();
-                if (ports == null || ports.isEmpty() || subset.getAddresses() 
== null || subset.getAddresses().isEmpty()) {
+                List<V1EndpointAddress> addresses = subset.getAddresses();
+                if (CollectionUtils.isEmpty(ports) || 
CollectionUtils.isEmpty(addresses)) {
                     continue;
                 }
                 CoreV1EndpointPort endpointPort = ports.stream()
@@ -148,12 +152,15 @@ public class EndpointsReconciler implements Reconciler {
                 String port = null;
                 if (endpointPort.getPort() > 0) {
                     port = String.valueOf(endpointPort.getPort());
-                } else if (endpointPort.getName() != null) {
-                    port = endpointPort.getName();
+                } else {
+                    String endpointPortName = endpointPort.getName();
+                    if (Objects.nonNull(endpointPortName)) {
+                        port = endpointPortName;
+                    }
                 }
-                for (V1EndpointAddress address : subset.getAddresses()) {
+                for (V1EndpointAddress address : addresses) {
                     String ip = address.getIp();
-                    if (ip != null) {
+                    if (Objects.nonNull(ip)) {
                         DivideUpstream upstream = new DivideUpstream();
                         upstream.setUpstreamUrl(ip + ":" + port);
                         upstream.setWeight(100);
diff --git 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
index 300f675f2c..e80bdf63a5 100644
--- 
a/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
+++ 
b/shenyu-kubernetes-controller/src/main/java/org/apache/shenyu/k8s/reconciler/IngressReconciler.java
@@ -447,20 +447,20 @@ public class IngressReconciler implements Reconciler {
     private void processShenyuMemoryConfig(final ShenyuMemoryConfig 
shenyuMemoryConfig, final V1Ingress v1Ingress, final String pluginName) throws 
IOException {
         List<IngressConfiguration> routeConfigList = 
shenyuMemoryConfig.getRouteConfigList();
 
-        if (routeConfigList == null) {
+        if (CollectionUtils.isEmpty(routeConfigList)) {
             return;
         }
 
         for (IngressConfiguration routeConfig : routeConfigList) {
             SelectorData selectorData = routeConfig.getSelectorData();
 
-            if (selectorData != null) {
+            if (Objects.nonNull(selectorData)) {
                 processSelectorData(routeConfig, selectorData, v1Ingress, 
pluginName);
             }
 
             List<MetaData> metaDataList = routeConfig.getMetaDataList();
 
-            if (metaDataList != null) {
+            if (Objects.nonNull(metaDataList)) {
                 processMetaDataList(metaDataList);
             }
         }
@@ -479,7 +479,7 @@ public class IngressReconciler implements Reconciler {
 
         List<RuleData> ruleDataList = routeConfig.getRuleDataList();
 
-        if (ruleDataList != null) {
+        if (CollectionUtils.isNotEmpty(ruleDataList)) {
             processRuleDataList(ruleDataList, selectorData);
         }
 
@@ -493,7 +493,7 @@ public class IngressReconciler implements Reconciler {
 
     private void processRuleDataList(final List<RuleData> ruleDataList, final 
SelectorData selectorData) {
         for (RuleData ruleData : ruleDataList) {
-            if (ruleData != null) {
+            if (Objects.nonNull(ruleData)) {
                 
ruleData.setId(IngressSelectorCache.getInstance().generateRuleId());
                 ruleData.setSelectorId(selectorData.getId());
                 ruleData.setSort(100);
@@ -504,7 +504,7 @@ public class IngressReconciler implements Reconciler {
 
     private void processMetaDataList(final List<MetaData> metaDataList) {
         for (MetaData metaData : metaDataList) {
-            if (metaData != null) {
+            if (Objects.nonNull(metaData)) {
                 
metaData.setId(IngressSelectorCache.getInstance().generateMetaDataId());
                 shenyuCacheRepository.saveOrUpdateMetaData(metaData);
             }
@@ -512,16 +512,17 @@ public class IngressReconciler implements Reconciler {
     }
 
     private void processGlobalDefaultBackend(final ShenyuMemoryConfig 
shenyuMemoryConfig, final V1Ingress v1Ingress, final String pluginName) {
-        if (shenyuMemoryConfig.getGlobalDefaultBackend() != null) {
+        Pair<Pair<String, String>, IngressConfiguration> configurationPair = 
shenyuMemoryConfig.getGlobalDefaultBackend();
+        if (Objects.nonNull(configurationPair)) {
             synchronized (IngressReconciler.class) {
                 if (Objects.isNull(globalDefaultBackend)) {
                     // Add a default backend
-                    IngressConfiguration ingressConfiguration = 
shenyuMemoryConfig.getGlobalDefaultBackend().getRight();
+                    IngressConfiguration ingressConfiguration = 
configurationPair.getRight();
                     SelectorData selectorData = 
ingressConfiguration.getSelectorData();
                     
shenyuCacheRepository.saveOrUpdateSelectorData(selectorData);
                     
ingressConfiguration.getRuleDataList().forEach(shenyuCacheRepository::saveOrUpdateRuleData);
                     
ingressConfiguration.getMetaDataList().forEach(shenyuCacheRepository::saveOrUpdateMetaData);
-                    globalDefaultBackend = 
shenyuMemoryConfig.getGlobalDefaultBackend();
+                    globalDefaultBackend = configurationPair;
                     IngressSelectorCache.getInstance().put(
                             
Objects.requireNonNull(v1Ingress.getMetadata()).getNamespace(),
                             v1Ingress.getMetadata().getName(),
@@ -536,7 +537,7 @@ public class IngressReconciler implements Reconciler {
     private void processTlsConfigurations(final ShenyuMemoryConfig 
shenyuMemoryConfig, final V1Ingress v1Ingress) throws IOException {
         List<SslCrtAndKeyStream> tlsConfigList = 
shenyuMemoryConfig.getTlsConfigList();
 
-        if (tlsConfigList != null) {
+        if (CollectionUtils.isNotEmpty(tlsConfigList)) {
             final String namespace = 
Objects.requireNonNull(v1Ingress.getMetadata()).getNamespace();
             final String ingressName = v1Ingress.getMetadata().getName();
             Set<String> oldDomainSet = 
Optional.ofNullable(IngressSecretCache.getInstance().removeDomainByIngress(namespace,
 ingressName)).orElse(new HashSet<>());


Reply via email to