Last active
September 1, 2015 08:34
-
-
Save kontact-chan/7032ced375bedb9b81b3 to your computer and use it in GitHub Desktop.
Netflix astyanax-cql support for collections set
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/Column.java b/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/Column.java | |
index 057e556..49b08e7 100644 | |
--- a/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/Column.java | |
+++ b/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/Column.java | |
@@ -17,6 +17,7 @@ package com.netflix.astyanax.model; | |
import java.nio.ByteBuffer; | |
import java.util.Date; | |
+import java.util.Set; | |
import java.util.UUID; | |
import com.netflix.astyanax.Serializer; | |
@@ -64,6 +65,8 @@ public interface Column<C> { | |
* @throws NetflixCassandraException | |
*/ | |
<V> V getValue(Serializer<V> valSer); | |
+ | |
+ <V> Set<V> getCollectionSet(Class<V> typeClass); | |
/** | |
* Return value as a string | |
diff --git a/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/ColumnList.java b/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/ColumnList.java | |
index a50a8a8..7a0d4fe 100644 | |
--- a/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/ColumnList.java | |
+++ b/astyanax-cassandra/src/main/java/com/netflix/astyanax/model/ColumnList.java | |
@@ -18,6 +18,7 @@ package com.netflix.astyanax.model; | |
import java.nio.ByteBuffer; | |
import java.util.Collection; | |
import java.util.Date; | |
+import java.util.Set; | |
import java.util.UUID; | |
import com.netflix.astyanax.Serializer; | |
@@ -51,6 +52,8 @@ public interface ColumnList<C> extends Iterable<Column<C>> { | |
* @return | |
*/ | |
String getStringValue(C columnName, String defaultValue); | |
+ | |
+ <V> Set<V> getSetValue(C columnName, Set<V> defaultValue, Class<V> typeClass); | |
/** | |
* Get a string that was stored as a compressed blob | |
diff --git a/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumn.java b/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumn.java | |
index 986166e..6379054 100644 | |
--- a/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumn.java | |
+++ b/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumn.java | |
@@ -16,6 +16,7 @@ | |
package com.netflix.astyanax.shallows; | |
import java.nio.ByteBuffer; | |
+import java.util.Set; | |
import com.netflix.astyanax.Serializer; | |
import com.netflix.astyanax.model.AbstractColumnImpl; | |
@@ -61,4 +62,10 @@ public class EmptyColumn<C> extends AbstractColumnImpl<C> { | |
public boolean hasValue() { | |
return false; | |
} | |
+ | |
+ @Override | |
+ public <V> Set<V> getCollectionSet(Class<V> typeClass) { | |
+ // TODO Auto-generated method stub | |
+ return null; | |
+ } | |
} | |
diff --git a/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumnList.java b/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumnList.java | |
index 2aff332..2a084c0 100644 | |
--- a/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumnList.java | |
+++ b/astyanax-cassandra/src/main/java/com/netflix/astyanax/shallows/EmptyColumnList.java | |
@@ -18,6 +18,7 @@ package com.netflix.astyanax.shallows; | |
import java.util.Collection; | |
import java.util.HashSet; | |
import java.util.Iterator; | |
+import java.util.Set; | |
import com.netflix.astyanax.Serializer; | |
import com.netflix.astyanax.model.AbstractColumnList; | |
@@ -70,4 +71,13 @@ public class EmptyColumnList<C> extends AbstractColumnList<C> { | |
public Collection<C> getColumnNames() { | |
return new HashSet<C>(); | |
} | |
+ | |
+ @Override | |
+ public <V> Set<V> getSetValue(C columnName, Set<V> defaultValue, | |
+ Class<V> typeClass) { | |
+ // TODO Auto-generated method stub | |
+ return null; | |
+ } | |
+ | |
+ | |
} | |
diff --git a/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnImpl.java b/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnImpl.java | |
index 8123b44..6fbd70a 100644 | |
--- a/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnImpl.java | |
+++ b/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnImpl.java | |
@@ -2,6 +2,7 @@ package com.netflix.astyanax.cql.reads.model; | |
import java.nio.ByteBuffer; | |
import java.util.Date; | |
+import java.util.Set; | |
import java.util.UUID; | |
import com.datastax.driver.core.ColumnDefinitions.Definition; | |
@@ -87,6 +88,7 @@ public class CqlColumnImpl<C> implements Column<C> { | |
return valSer.fromByteBuffer(row.getBytes(index)); | |
} | |
+ | |
@Override | |
public String getStringValue() { | |
return (isBlob) ? StringSerializer.get().fromByteBuffer(row.getBytes(index)) : row.getString(index); | |
@@ -197,4 +199,9 @@ public class CqlColumnImpl<C> implements Column<C> { | |
return cType; | |
} | |
+ | |
+ @Override | |
+ public <V> Set<V> getCollectionSet(Class<V> typeClass) { | |
+ return row.getSet(index, typeClass); | |
+ } | |
} | |
diff --git a/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnListImpl.java b/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnListImpl.java | |
index 4b71c11..fae336f 100644 | |
--- a/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnListImpl.java | |
+++ b/astyanax-cql/src/main/java/com/netflix/astyanax/cql/reads/model/CqlColumnListImpl.java | |
@@ -7,6 +7,7 @@ import java.util.Date; | |
import java.util.Iterator; | |
import java.util.LinkedHashMap; | |
import java.util.List; | |
+import java.util.Set; | |
import java.util.UUID; | |
import com.datastax.driver.core.ColumnDefinitions; | |
@@ -249,4 +250,16 @@ public class CqlColumnListImpl<C> implements ColumnList<C> { | |
public boolean isSuperColumn() { | |
throw new UnsupportedOperationException("Operaiton not supported"); | |
} | |
+ | |
+ @Override | |
+ public <V> Set<V> getSetValue(C columnName, Set<V> defaultValue, Class<V> typeClass) { | |
+ Column<C> column = map.get(columnName); | |
+ if (column == null) { | |
+ return defaultValue; | |
+ } else { | |
+ return column.getCollectionSet(typeClass); | |
+ } | |
+ } | |
+ | |
+ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment