@Test public void testConstruction() { LongSerializer le = LongSerializer.get(); StringSerializer se = StringSerializer.get(); ByteBufferSerializer be = ByteBufferSerializer.get(); // empty one List<SuperColumn> tColumns = new ArrayList<SuperColumn>(); SuperSlice<String, Long, ByteBuffer> slice = new SuperSliceImpl<String, Long, ByteBuffer>(tColumns, se, le, be); Assert.assertTrue(slice.getSuperColumns().isEmpty()); // non-empty one Column c = new Column(le.toByteBuffer(5L)); c.setValue(be.toByteBuffer(ByteBuffer.wrap(new byte[] { 1 }))); c.setTimestamp(2L); tColumns.add(new SuperColumn(se.toByteBuffer("super"), Arrays.asList(c))); slice = new SuperSliceImpl<String, Long, ByteBuffer>(tColumns, se, le, be); Assert.assertEquals(1, slice.getSuperColumns().size()); Assert.assertEquals((Long) 5L, slice.getColumnByName("super").get(0).getName()); } }
/** * Get messages within given range (excludes body) * * @param mailbox * @param start * @param count * @return */ public static Map<UUID, Message> getRange(final String mailbox, final UUID start, final int count) { // read message ids from the result Map<UUID, Message> result = new LinkedHashMap<UUID, Message>(); // Create a query SuperSliceQuery<String, UUID, String, byte[]> q = createSuperSliceQuery(CassandraDAOFactory.getKeyspace(), strSe, uuidSe, strSe, byteSe); // set keys, cf, range q.setColumnFamily(CF_METADATA); q.setKey(mailbox); q.setRange(start, null, true, count); // execute QueryResult<SuperSlice<UUID, String, byte[]>> r = q.execute(); List<HSuperColumn<UUID, String, byte[]>> superColumns = r.get().getSuperColumns(); for (HSuperColumn<UUID, String, byte[]> superColumn : superColumns) { result.put(superColumn.getName(), Marshaller.unmarshall(superColumn.getColumns(), false)); } return result; }
assertNotNull(slice); assertEquals("v001", slice.getColumnByName("testSuperMultigetSliceQuery1") .getColumns().get(0).getValue()); assertNull(slice.getColumnByName("testSuperMultigetSliceQuery3"));
/** * When we add supercolumns, Gora keys are mapped to Cassandra partition keys only. * This is because we follow the Cassandra logic where column family data is * partitioned across nodes based on row Key. */ private void addSuperColumns(String family, CassandraQuery<K, T> cassandraQuery, CassandraResultSet<K> cassandraResultSet) { List<SuperRow<K, String, ByteBuffer, ByteBuffer>> superRows = this.cassandraClient.executeSuper(cassandraQuery, family); for (SuperRow<K, String, ByteBuffer, ByteBuffer> superRow: superRows) { K key = superRow.getKey(); CassandraRow<K> cassandraRow = cassandraResultSet.getRow(key); if (cassandraRow == null) { cassandraRow = new CassandraRow<K>(); cassandraResultSet.putRow(key, cassandraRow); cassandraRow.setKey(key); } SuperSlice<String, ByteBuffer, ByteBuffer> superSlice = superRow.getSuperSlice(); for (HSuperColumn<String, ByteBuffer, ByteBuffer> hSuperColumn: superSlice.getSuperColumns()) { CassandraSuperColumn cassandraSuperColumn = new CassandraSuperColumn(); cassandraSuperColumn.setValue(hSuperColumn); cassandraSuperColumn.setFamily(family); cassandraRow.add(cassandraSuperColumn); } } }
if ((slice.getColumnByName(messageId) != null) && !slice.getColumnByName(messageId).getColumns().isEmpty()) slice.getColumnByName(messageId).getColumns(), includeBody)); } else { logger.debug(
SuperSlice<String, String, String> slice = r.get(); assertNotNull(slice); assertEquals(3, slice.getSuperColumns().size()); assertEquals("value", slice.getColumnByName("testSuperSliceQuery1") .getColumns().get(0).getValue()); slice = r.get(); assertNotNull(slice); for (HSuperColumn<String, String, String> scolumn : slice.getSuperColumns()) { if (!scolumn.getName().equals("testSuperSliceQuery1") && !scolumn.getName().equals("testSuperSliceQuery2")) { slice = r.get(); assertNotNull(slice); assertTrue(slice.getSuperColumns().isEmpty());
assertNotNull(slice); assertEquals("v021", slice.getColumnByName("testRangeSuperSlicesQuery1") .get(0).getValue()); assertEquals("v022", slice.getColumnByName("testRangeSuperSlicesQuery2") .get(0).getValue()); assertNull(slice.getColumnByName("testRangeSuperSlicesQuery3")); slice = row2.getSuperSlice(); assertNotNull(slice); assertEquals(2, slice.getSuperColumns().size()); for (HSuperColumn<String, String, String> column : slice .getSuperColumns()) { if (!column.getName().equals("testRangeSuperSlicesQuery1") && !column.getName().equals("testRangeSuperSlicesQuery2")) {