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

dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/spark-kubernetes-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new 9c34c87  [SPARK-49167] Enforce `UseUtilityClass` rule
9c34c87 is described below

commit 9c34c87f0d0bb71b42739d2e16c74f0f57b0c6a7
Author: William Hyun <[email protected]>
AuthorDate: Thu Aug 8 13:40:37 2024 -0700

    [SPARK-49167] Enforce `UseUtilityClass` rule
    
    ### What changes were proposed in this pull request?
    This PR aims to enforce UseUtilityClass rule
    
    ### Why are the changes needed?
    To ensure future code quality.
    
    ### Does this PR introduce _any_ user-facing change?
    No.
    
    ### How was this patch tested?
    Pass the CIs.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    No.
    
    Closes #42 from williamhyun/util.
    
    Authored-by: William Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 config/pmd/ruleset.xml                                               | 1 -
 .../main/java/org/apache/spark/k8s/operator/utils/ModelUtils.java    | 5 ++++-
 .../apache/spark/k8s/operator/client/KubernetesClientFactory.java    | 5 ++++-
 .../java/org/apache/spark/k8s/operator/config/SparkOperatorConf.java | 5 ++++-
 .../org/apache/spark/k8s/operator/metrics/MetricsSystemFactory.java  | 4 +++-
 .../spark/k8s/operator/reconciler/SparkAppResourceSpecFactory.java   | 5 ++++-
 .../java/org/apache/spark/k8s/operator/utils/ClassLoadingUtils.java  | 5 ++++-
 .../src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java  | 4 +++-
 .../src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java | 5 ++++-
 .../java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java    | 5 ++++-
 .../org/apache/spark/k8s/operator/utils/SparkAppStatusUtils.java     | 4 +++-
 .../org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java     | 5 ++++-
 .../src/main/java/org/apache/spark/k8s/operator/utils/Utils.java     | 5 ++++-
 .../src/test/java/org/apache/spark/k8s/operator/utils/TestUtils.java | 5 ++++-
 14 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/config/pmd/ruleset.xml b/config/pmd/ruleset.xml
index 8e1c33c..3f75485 100644
--- a/config/pmd/ruleset.xml
+++ b/config/pmd/ruleset.xml
@@ -47,7 +47,6 @@
     <exclude name="LawOfDemeter" />
     <exclude name="NPathComplexity" />
     <exclude name="TooManyMethods" />
-    <exclude name="UseUtilityClass" />
   </rule>
   <rule ref="category/java/documentation.xml">
     <exclude name="CommentRequired" />
diff --git 
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/utils/ModelUtils.java
 
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/utils/ModelUtils.java
index 7106a2c..895ceec 100644
--- 
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/utils/ModelUtils.java
+++ 
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/utils/ModelUtils.java
@@ -39,9 +39,12 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.spark.k8s.operator.SparkApplication;
 import org.apache.spark.k8s.operator.spec.ApplicationSpec;
 
-public class ModelUtils {
+public final class ModelUtils {
+
   public static final ObjectMapper objectMapper = new ObjectMapper();
 
+  private ModelUtils() {}
+
   public static Pod getPodFromTemplateSpec(PodTemplateSpec podTemplateSpec) {
     if (podTemplateSpec == null) {
       return new 
PodBuilder().withNewMetadata().endMetadata().withNewSpec().endSpec().build();
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/client/KubernetesClientFactory.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/client/KubernetesClientFactory.java
index 6d3e213..766c1c5 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/client/KubernetesClientFactory.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/client/KubernetesClientFactory.java
@@ -28,7 +28,10 @@ import okhttp3.Interceptor;
 import okhttp3.OkHttpClient;
 
 /** Build Kubernetes Client with metrics configured */
-public class KubernetesClientFactory {
+public final class KubernetesClientFactory {
+
+  private KubernetesClientFactory() {}
+
   public static KubernetesClient buildKubernetesClient(final List<Interceptor> 
interceptors) {
     return buildKubernetesClient(interceptors, null);
   }
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConf.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConf.java
index a3f791a..e5d7765 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConf.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/config/SparkOperatorConf.java
@@ -31,7 +31,8 @@ import org.apache.spark.k8s.operator.utils.Utils;
 
 /** Spark Operator Configuration options. */
 @Slf4j
-public class SparkOperatorConf {
+public final class SparkOperatorConf {
+
   public static final ConfigOption<String> OPERATOR_APP_NAME =
       ConfigOption.<String>builder()
           .key("spark.kubernetes.operator.name")
@@ -407,6 +408,8 @@ public class SparkOperatorConf {
           .defaultValue(5)
           .build();
 
+  private SparkOperatorConf() {}
+
   public static LeaderElectionConfiguration getLeaderElectionConfig() {
     return new LeaderElectionConfiguration(
         LEADER_ELECTION_LEASE_NAME.getValue(),
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/MetricsSystemFactory.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/MetricsSystemFactory.java
index 35427ce..f93c1cc 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/MetricsSystemFactory.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/MetricsSystemFactory.java
@@ -29,11 +29,13 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.spark.k8s.operator.config.SparkOperatorConfManager;
 
 /** Factory for MetricsSystem */
-public class MetricsSystemFactory {
+public final class MetricsSystemFactory {
   public static final String METRIC_PREFIX = "spark.metrics.conf.operator.";
   public static final String SINK = "sink.";
   public static final String CLASS = "class";
 
+  private MetricsSystemFactory() {}
+
   public static MetricsSystem createMetricsSystem() {
     Properties properties =
         
parseMetricsProperties(SparkOperatorConfManager.INSTANCE.getMetricsProperties());
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/SparkAppResourceSpecFactory.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/SparkAppResourceSpecFactory.java
index 1ac27ae..c3272b0 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/SparkAppResourceSpecFactory.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/SparkAppResourceSpecFactory.java
@@ -45,7 +45,10 @@ import 
org.apache.spark.k8s.operator.decorators.DriverDecorator;
 import org.apache.spark.k8s.operator.utils.ModelUtils;
 
 @Slf4j
-public class SparkAppResourceSpecFactory {
+public final class SparkAppResourceSpecFactory {
+
+  private SparkAppResourceSpecFactory() {}
+
   public static SparkAppResourceSpec buildResourceSpec(
       final SparkApplication app,
       final KubernetesClient client,
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ClassLoadingUtils.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ClassLoadingUtils.java
index 369181a..8d49fb4 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ClassLoadingUtils.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ClassLoadingUtils.java
@@ -30,7 +30,10 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.spark.k8s.operator.listeners.BaseStatusListener;
 
 @Slf4j
-public class ClassLoadingUtils {
+public final class ClassLoadingUtils {
+
+  private ClassLoadingUtils() {}
+
   /**
    * load status listener classes for given type of BaseStatusListener
    *
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
index 9df3f53..6589359 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
@@ -28,10 +28,12 @@ import io.fabric8.kubernetes.api.model.Pod;
 
 import org.apache.spark.k8s.operator.spec.ApplicationSpec;
 
-public class PodUtils {
+public final class PodUtils {
 
   public static final String POD_READY_CONDITION_TYPE = "ready";
 
+  private PodUtils() {}
+
   /** Determine whether given pod is up running and ready */
   public static boolean isPodReady(final Pod pod) {
     if (!PodPhase.RUNNING.equals(PodPhase.getPhase(pod))) {
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
index 4ac1fd7..3778f8a 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
@@ -31,7 +31,10 @@ import io.javaoperatorsdk.operator.RuntimeInfo;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-public class ProbeUtil {
+public final class ProbeUtil {
+
+  private ProbeUtil() {}
+
   public static void sendMessage(HttpExchange httpExchange, int code, String 
message)
       throws IOException {
     try (OutputStream outputStream = httpExchange.getResponseBody()) {
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
index 176bbcc..39075fb 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
@@ -44,7 +44,10 @@ import org.apache.spark.k8s.operator.BaseResource;
 import org.apache.spark.k8s.operator.reconciler.ReconcileProgress;
 
 @Slf4j
-public class ReconcilerUtils {
+public final class ReconcilerUtils {
+
+  private ReconcilerUtils() {}
+
   public static <S, T, O extends BaseResource<?, ?, ?, ?, ?>> UpdateControl<O> 
toUpdateControl(
       O resource, ReconcileProgress reconcileProgress) {
     // reconciler already handled resource and status update, skip update at 
lower level
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkAppStatusUtils.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkAppStatusUtils.java
index c3491d1..bf47a79 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkAppStatusUtils.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkAppStatusUtils.java
@@ -25,7 +25,9 @@ import org.apache.spark.k8s.operator.status.ApplicationState;
 import org.apache.spark.k8s.operator.status.ApplicationStateSummary;
 
 /** Handy utils for create & manage Application Status */
-public class SparkAppStatusUtils {
+public final class SparkAppStatusUtils {
+
+  private SparkAppStatusUtils() {}
 
   public static boolean isValidApplicationStatus(SparkApplication app) {
     // null check
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
index a7be937..ff7b28a 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
@@ -23,7 +23,10 @@ import 
io.fabric8.kubernetes.client.KubernetesClientException;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 
-public class SparkExceptionUtils {
+public final class SparkExceptionUtils {
+
+  private SparkExceptionUtils() {}
+
   public static boolean 
isConflictForExistingResource(KubernetesClientException e) {
     return e != null
         && e.getCode() == 409
diff --git 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/Utils.java 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/Utils.java
index ffd4bc3..1b631a6 100644
--- 
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/Utils.java
+++ 
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/Utils.java
@@ -41,7 +41,10 @@ import org.apache.spark.k8s.operator.Constants;
 import org.apache.spark.k8s.operator.SparkApplication;
 import org.apache.spark.k8s.operator.listeners.SparkAppStatusListener;
 
-public class Utils {
+public final class Utils {
+
+  private Utils() {}
+
   public static Set<String> sanitizeCommaSeparatedStrAsSet(String str) {
     if (StringUtils.isBlank(str)) {
       return Collections.emptySet();
diff --git 
a/spark-operator/src/test/java/org/apache/spark/k8s/operator/utils/TestUtils.java
 
b/spark-operator/src/test/java/org/apache/spark/k8s/operator/utils/TestUtils.java
index 14bac50..50bd2ff 100644
--- 
a/spark-operator/src/test/java/org/apache/spark/k8s/operator/utils/TestUtils.java
+++ 
b/spark-operator/src/test/java/org/apache/spark/k8s/operator/utils/TestUtils.java
@@ -32,7 +32,10 @@ import org.apache.spark.k8s.operator.Constants;
 import org.apache.spark.k8s.operator.SparkApplication;
 import org.apache.spark.k8s.operator.config.ConfigOption;
 
-public class TestUtils {
+public final class TestUtils {
+
+  private TestUtils() {}
+
   public static SparkApplication createMockApp(String namespace) {
     SparkApplication cr = new SparkApplication();
     cr.setKind("SparkApplication");


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to