yifan-c commented on code in PR #88:
URL: 
https://github.com/apache/cassandra-analytics/pull/88#discussion_r1792282366


##########
cassandra-bridge/build.gradle:
##########
@@ -40,14 +40,32 @@ publishing {
 
 dependencies {
     api(project(':cassandra-analytics-common'))
-    api(project(':cassandra-analytics-spark-converter'))
-    compileOnly(group: "${sparkGroupId}", name: 
"spark-core_${scalaMajorVersion}", version: 
"${project.rootProject.sparkVersion}")
-    compileOnly(group: "${sparkGroupId}", name: 
"spark-sql_${scalaMajorVersion}", version: 
"${project.rootProject.sparkVersion}")
 
+    implementation "org.slf4j:slf4j-api:${slf4jApiVersion}"
+    compileOnly "com.esotericsoftware:kryo-shaded:${kryoVersion}"
+    compileOnly "com.google.guava:guava:${guavaVersion}"
+    compileOnly 
"com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}"
+    compileOnly "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
+    compileOnly "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"
+
+    testImplementation(project(path: ":cassandra-analytics-spark-converter"))
+    testImplementation(group: "${sparkGroupId}", name: 
"spark-core_${scalaMajorVersion}", version: 
"${project.rootProject.sparkVersion}")
+    testImplementation(group: "${sparkGroupId}", name: 
"spark-sql_${scalaMajorVersion}", version: 
"${project.rootProject.sparkVersion}")
     testImplementation(group: 'com.fasterxml.jackson.core', name: 
'jackson-databind', version: "${jacksonVersion}")
     testImplementation(group: 'com.google.guava', name: 'guava', version: 
'31.1-jre')
     testImplementation(group: 'org.slf4j', name: 'slf4j-simple', version: 
'1.7.26')
     
testImplementation("org.junit.jupiter:junit-jupiter-api:${project.junitVersion}")
     
testImplementation("org.junit.jupiter:junit-jupiter-params:${project.junitVersion}")
     
testImplementation("org.junit.jupiter:junit-jupiter-engine:${project.junitVersion}")
 }
+
+configurations {
+    testArtifacts
+}
+task testJar(type: Jar) {
+    archiveBaseName = "${project.name}-bridge-test"
+    from sourceSets.test.output
+}
+artifacts {
+    testArtifacts testJar
+}

Review Comment:
   Using test-fixture instead? 
https://docs.gradle.org/current/userguide/java_testing.html#sec:java_test_fixtures



##########
cassandra-analytics-core/src/main/java/org/apache/cassandra/spark/data/DataLayer.java:
##########
@@ -155,6 +157,11 @@ public CassandraVersion version()
      */
     public abstract CassandraBridge bridge();
 
+    public SparkSqlTypeConverter typeConverter()

Review Comment:
   Add java doc



##########
cassandra-analytics-core/src/main/java/org/apache/cassandra/bridge/CassandraBridgeFactory.java:
##########
@@ -75,12 +78,32 @@ public static CassandraBridge get(@NotNull 
CassandraVersionFeatures features)
         return get(getCassandraVersion(features));
     }
 
+    @NotNull
+    public static SparkSqlTypeConverter getSparkSql(@NotNull 
CassandraVersionFeatures features)
+    {
+        return getSparkSql(getCassandraVersion(features));
+    }
+

Review Comment:
   Please locate the method together with the other `getSparkSql` overloads. 



##########
cassandra-analytics-core/src/main/java/org/apache/cassandra/bridge/CassandraBridgeFactory.java:
##########
@@ -33,12 +33,15 @@
 
 import com.google.common.base.Preconditions;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.tuple.Pair;
 
+import org.apache.cassandra.spark.data.converter.SparkSqlTypeConverter;
 import org.jetbrains.annotations.NotNull;
 
 public final class CassandraBridgeFactory
 {
-    private static final Map<String, CassandraBridge> CASSANDRA_BRIDGES = new 
ConcurrentHashMap<>(CassandraVersion.values().length);
+    private static final Map<String, Pair<CassandraBridge, 
SparkSqlTypeConverter>> CASSANDRA_BRIDGES =

Review Comment:
   nit: add a comment to indicate what is the key String value represents



##########
cassandra-analytics-core/src/main/java/org/apache/cassandra/bridge/CassandraBridgeFactory.java:
##########
@@ -130,14 +153,20 @@ private static String typesResourceName(@NotNull String 
label)
         return jarResourceName(label, "types");
     }
 
+    @NotNull
+    private static String sparkSqlResourceName(@NotNull String label)
+    {
+        return jarResourceName(label, "sparksql");
+    }
+
     private static String jarResourceName(String... parts)
     {
         return "/bridges/" + String.join("-", parts) + ".jar";
     }
 
     @NotNull
     @SuppressWarnings("unchecked")
-    private static CassandraBridge create(@NotNull String label)
+    private static Pair<CassandraBridge, SparkSqlTypeConverter> 
create(@NotNull String label)

Review Comment:
   The method signature looks a bit odd. `CassandraBridgeFactory#create` 
returns a pair.. 
   
   How about create a dedicated data class, say `VersionedCassandraBridge`, 
that wraps both `CassandraBridge` and `SparkSqlTypeConverter`?  Then `create` 
and `get` methods return the `VersionedCassandraBridge`. `getSparkSql` may be 
removed. 
   
   ```java
   public class VersionedCassandraBridge
   {
       public final CassandraBridge cassandraBridge;
       public final SparkSqlTypeConverter sparkSqlTypeConverter;
   }
   ```



##########
cassandra-bridge/build.gradle:
##########
@@ -40,14 +40,32 @@ publishing {
 
 dependencies {
     api(project(':cassandra-analytics-common'))
-    api(project(':cassandra-analytics-spark-converter'))
-    compileOnly(group: "${sparkGroupId}", name: 
"spark-core_${scalaMajorVersion}", version: 
"${project.rootProject.sparkVersion}")
-    compileOnly(group: "${sparkGroupId}", name: 
"spark-sql_${scalaMajorVersion}", version: 
"${project.rootProject.sparkVersion}")
 
+    implementation "org.slf4j:slf4j-api:${slf4jApiVersion}"
+    compileOnly "com.esotericsoftware:kryo-shaded:${kryoVersion}"
+    compileOnly "com.google.guava:guava:${guavaVersion}"
+    compileOnly 
"com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}"
+    compileOnly "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
+    compileOnly "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"

Review Comment:
   nit: use the same parenthesis style as the other lines. `compileOnly(...)`



-- 
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]

Reply via email to