5 commented on code in PR #47:
URL: https://github.com/apache/cassandra-sidecar/pull/47#discussion_r1213717641


##########
common/src/main/java/org/apache/cassandra/sidecar/common/NodeSettings.java:
##########
@@ -16,33 +16,75 @@
  * limitations under the License.
  */
 
-
 package org.apache.cassandra.sidecar.common;
 
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Objects;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Holds information about the specific node settings
  */
 public class NodeSettings
 {
-    private final String releaseVersion;
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(NodeSettings.class);
+    private static final String SIDECAR_VERSION = getSidecarVersion();
+
     private final String partitioner;
+    private final String releaseVersion;
+    private final String sidecarVersion;
+
+    private static String getSidecarVersion()
+    {
+        try (InputStream version = 
NodeSettings.class.getResourceAsStream("/sidecar.version"))
+        {
+            return IOUtils.toString(version, StandardCharsets.UTF_8);
+        }
+        catch (Exception exception)
+        {
+            LOGGER.error("Failed to ex Sidecar version", exception);
+        }
+        return "unknown";
+    }
 
     /**
-     * Constructs a new {@link NodeSettings} object with the Cassandra node's 
release version and partitioner
-     * information.
+     * Constructs a new {@link NodeSettings} object with the Cassandra node's 
partitioner
+     * and release version information, uses Sidecar version from the 
currently loaded binary
      *
+     * @param partitioner    the partitioner used by the Cassandra node
      * @param releaseVersion the release version of the Cassandra node
+     */
+    public NodeSettings(String partitioner, String releaseVersion)
+    {
+        this(partitioner, releaseVersion, SIDECAR_VERSION);
+    }
+
+    /**
+     * Constructs a new {@link NodeSettings} object with the Cassandra node's 
partitioner,
+     * release version, and Sidecar version information
+     *
      * @param partitioner    the partitioner used by the Cassandra node
+     * @param releaseVersion the release version of the Cassandra node
+     * @param sidecarVersion the version of the Sidecar on the Cassandra node
      */
-    public NodeSettings(@JsonProperty("releaseVersion") String releaseVersion,
-                        @JsonProperty("partitioner") String partitioner)
+    public NodeSettings(@JsonProperty("partitioner")    String partitioner,
+                        @JsonProperty("releaseVersion") String releaseVersion,

Review Comment:
   Changed the Sidecar version field type as per our conversation, let me know 
whether this is what you had in mind.



-- 
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: pr-unsubscr...@cassandra.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org
For additional commands, e-mail: pr-h...@cassandra.apache.org

Reply via email to