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]