From ddb694ad92e4b7d89862f240a6d34a375769bc6e Mon Sep 17 00:00:00 2001
From: ferid333 <135500346+ferid333@users.noreply.github.com>
Date: Sun, 9 Aug 2026 00:51:53 +1000
Subject: [PATCH] DVLP-006: Add static clustering
---
config/checkstyle/checkstyle.xml | 1 +
.../java/org/cache/cluster/ClusterInfo.java | 9 ++
.../java/org/cache/config/CacheConfig.java | 4 +-
.../cache/config/CacheConfigException.java | 12 ++
.../org/cache/config/CacheConfigLoader.java | 135 ++++++++++++++++--
src/main/java/org/cache/config/ConfigKey.java | 24 +++-
src/main/resources/config.yml | 21 +++
.../cache/config/CacheConfigLoaderTest.java | 63 ++++++++
...ster-config-default-replication-factor.yml | 7 +
src/test/resources/config/cluster-config.yml | 20 +++
.../invalid-cluster-duplicate-host-port.yml | 14 ++
.../invalid-cluster-duplicate-node-id.yml | 14 ++
...d-cluster-replication-factor-too-large.yml | 8 ++
...d-cluster-replication-factor-too-small.yml | 8 ++
14 files changed, 319 insertions(+), 21 deletions(-)
create mode 100644 src/main/java/org/cache/cluster/ClusterInfo.java
create mode 100644 src/main/java/org/cache/config/CacheConfigException.java
create mode 100644 src/test/resources/config/cluster-config-default-replication-factor.yml
create mode 100644 src/test/resources/config/cluster-config.yml
create mode 100644 src/test/resources/config/invalid-cluster-duplicate-host-port.yml
create mode 100644 src/test/resources/config/invalid-cluster-duplicate-node-id.yml
create mode 100644 src/test/resources/config/invalid-cluster-replication-factor-too-large.yml
create mode 100644 src/test/resources/config/invalid-cluster-replication-factor-too-small.yml
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
index 0de7181..829987c 100644
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -10,6 +10,7 @@
+
diff --git a/src/main/java/org/cache/cluster/ClusterInfo.java b/src/main/java/org/cache/cluster/ClusterInfo.java
new file mode 100644
index 0000000..c10bd47
--- /dev/null
+++ b/src/main/java/org/cache/cluster/ClusterInfo.java
@@ -0,0 +1,9 @@
+package org.cache.cluster;
+
+import java.util.List;
+
+public record ClusterInfo(
+ Integer replicationFactor,
+ List nodes
+) {
+}
diff --git a/src/main/java/org/cache/config/CacheConfig.java b/src/main/java/org/cache/config/CacheConfig.java
index 86f5f12..cadad71 100644
--- a/src/main/java/org/cache/config/CacheConfig.java
+++ b/src/main/java/org/cache/config/CacheConfig.java
@@ -1,6 +1,7 @@
package org.cache.config;
import org.cache.cluster.CacheNode;
+import org.cache.cluster.ClusterInfo;
import org.cache.eviction.EvictionPolicy;
import org.cache.protocol.codec.KeyCodec;
@@ -9,6 +10,7 @@ public record CacheConfig(
long defaultTtlMillis,
KeyCodec