frankgh commented on code in PR #163:
URL: https://github.com/apache/cassandra-sidecar/pull/163#discussion_r1932681344
##########
server/src/main/java/org/apache/cassandra/sidecar/config/yaml/InstanceConfigurationImpl.java:
##########
@@ -21,80 +21,63 @@
import java.util.Collections;
import java.util.List;
+import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.cassandra.sidecar.config.InstanceConfiguration;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* Encapsulates the basic configuration needed to connect to a single
Cassandra instance
*/
public class InstanceConfigurationImpl implements InstanceConfiguration
{
- @JsonProperty("id")
protected final int id;
-
- @JsonProperty("host")
protected final String host;
-
- @JsonProperty("port")
protected final int port;
-
- @JsonProperty("data_dirs")
+ protected final String cassandraHomeDir;
protected final List<String> dataDirs;
-
- @JsonProperty("staging_dir")
protected final String stagingDir;
-
- @JsonProperty("cdc_dir")
protected final String cdcDir;
-
- @JsonProperty("jmx_host")
+ protected final String commitlogDir;
+ protected final String hintsDir;
+ protected final String savedCachesDir;
+ protected final String localSystemDataFileDir;
protected final String jmxHost;
-
- @JsonProperty("jmx_port")
protected final int jmxPort;
-
- @JsonProperty("jmx_ssl_enabled")
protected final boolean jmxSslEnabled;
-
- @JsonProperty("jmx_role")
protected final String jmxRole;
-
- @JsonProperty("jmx_role_password")
protected final String jmxRolePassword;
- public InstanceConfigurationImpl()
- {
- this.id = 0;
- this.host = null;
- this.port = 9042;
- this.dataDirs = null;
- this.stagingDir = null;
- this.cdcDir = null;
- this.jmxHost = null;
- this.jmxPort = 0;
- this.jmxSslEnabled = false;
- this.jmxRole = null;
- this.jmxRolePassword = null;
- }
-
- public InstanceConfigurationImpl(int id,
- String host,
- int port,
- List<String> dataDirs,
- String stagingDir,
- String cdcDir,
- String jmxHost,
- int jmxPort,
- boolean jmxSslEnabled,
- String jmxRole,
- String jmxRolePassword)
+ @JsonCreator
+ public InstanceConfigurationImpl(@JsonProperty("id") int id,
+ @NotNull @JsonProperty("host") String
host,
+ @JsonProperty("port") int port,
+ @NotNull
@JsonProperty("cassandra_home_dir") String cassandraHomeDir,
+ @NotNull @JsonProperty("data_dirs")
List<String> dataDirs,
Review Comment:
we should allow null for data dirs if we are going to allow configuring the
`cassandra_home_dir` only.
##########
server/src/main/java/org/apache/cassandra/sidecar/config/yaml/InstanceConfigurationImpl.java:
##########
@@ -21,80 +21,63 @@
import java.util.Collections;
import java.util.List;
+import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.cassandra.sidecar.config.InstanceConfiguration;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* Encapsulates the basic configuration needed to connect to a single
Cassandra instance
*/
public class InstanceConfigurationImpl implements InstanceConfiguration
{
- @JsonProperty("id")
protected final int id;
-
- @JsonProperty("host")
protected final String host;
-
- @JsonProperty("port")
protected final int port;
-
- @JsonProperty("data_dirs")
+ protected final String cassandraHomeDir;
protected final List<String> dataDirs;
-
- @JsonProperty("staging_dir")
protected final String stagingDir;
-
- @JsonProperty("cdc_dir")
protected final String cdcDir;
-
- @JsonProperty("jmx_host")
+ protected final String commitlogDir;
+ protected final String hintsDir;
+ protected final String savedCachesDir;
+ protected final String localSystemDataFileDir;
protected final String jmxHost;
-
- @JsonProperty("jmx_port")
protected final int jmxPort;
-
- @JsonProperty("jmx_ssl_enabled")
protected final boolean jmxSslEnabled;
-
- @JsonProperty("jmx_role")
protected final String jmxRole;
-
- @JsonProperty("jmx_role_password")
protected final String jmxRolePassword;
- public InstanceConfigurationImpl()
- {
- this.id = 0;
- this.host = null;
- this.port = 9042;
- this.dataDirs = null;
- this.stagingDir = null;
- this.cdcDir = null;
- this.jmxHost = null;
- this.jmxPort = 0;
- this.jmxSslEnabled = false;
- this.jmxRole = null;
- this.jmxRolePassword = null;
- }
-
- public InstanceConfigurationImpl(int id,
- String host,
- int port,
- List<String> dataDirs,
- String stagingDir,
- String cdcDir,
- String jmxHost,
- int jmxPort,
- boolean jmxSslEnabled,
- String jmxRole,
- String jmxRolePassword)
+ @JsonCreator
+ public InstanceConfigurationImpl(@JsonProperty("id") int id,
+ @NotNull @JsonProperty("host") String
host,
+ @JsonProperty("port") int port,
+ @NotNull
@JsonProperty("cassandra_home_dir") String cassandraHomeDir,
+ @NotNull @JsonProperty("data_dirs")
List<String> dataDirs,
+ @NotNull @JsonProperty("staging_dir")
String stagingDir,
+ @Nullable @JsonProperty("cdc_dir") String
cdcDir,
+ @Nullable @JsonProperty("commitlog_dir")
String commitlogDir,
+ @Nullable @JsonProperty("hints_dir")
String hintsDir,
+ @Nullable
@JsonProperty("saved_caches_dir") String savedCachesDir,
+ @Nullable
@JsonProperty("local_system_data_file_dir") String localSystemDataFileDir,
+ @NotNull @JsonProperty("jmx_host") String
jmxHost,
+ @JsonProperty("jmx_port") int jmxPort,
+ @JsonProperty("jmx_ssl_enabled") boolean
jmxSslEnabled,
+ @Nullable @JsonProperty("jmx_role")
String jmxRole,
+ @Nullable
@JsonProperty("jmx_role_password") String jmxRolePassword)
{
this.id = id;
this.host = host;
this.port = port;
+ this.cassandraHomeDir = cassandraHomeDir;
Review Comment:
`dataDirs` should handle for the null case in line 74
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]