UUID uuid = UUID.randomUUID(); DynamicComposite composite = (DynamicComposite) new DynamicComposite().addComponent(entry.getKey(), uss).addComponent(uuid, uss); mutator.addInsertion(rowKey, columnFamily, HFactory.createColumn(composite, composite.toString(), ds, ss));
addComponent("a", ss). addComponent("ba", ss). addComponent("ca", ss). addComponent("da", ss); mutator.addInsertion(rowKey, columnFamily, HFactory.createColumn(composite, composite.toString(), ds, ss)); addComponent("a", ss). addComponent("bb", ss). addComponent("cb", ss). addComponent("db", ss); mutator.addInsertion(rowKey, columnFamily, HFactory.createColumn(composite, composite.toString(), ds, ss)); addComponent("b", ss). addComponent("ba", ss). addComponent("ca", ss). addComponent("da", ss); mutator.addInsertion(rowKey, columnFamily, HFactory.createColumn(composite, composite.toString(), ds, ss)); addComponent("b", ss). addComponent("bb", ss). addComponent("cb", ss). addComponent("db", ss); mutator.addInsertion(rowKey, columnFamily, HFactory.createColumn(composite, composite.toString(), ds, ss)); addComponent("b", ss, compType). addComponent("ba", ss). addComponent("ca", ss). addComponent("da", ss, compType, ComponentEquality.LESS_THAN_EQUAL); // s@a:s@ba:s@ca:s@da thru s@a:s@bb:s@cb:s@db
@Test public void testNullValueSerialization() throws Exception { // test correct serialization with null values and user specified // serialization DynamicComposite c = new DynamicComposite(); try { c.addComponent(null, StringSerializer.get()); fail("Null values not allowed"); } catch (NullPointerException e) { } }
@Override public void addToComponent(DynamicComposite composite, int index, Object value, ComponentEquality equality) { composite.addComponent(index, value, serializer, compositeComparator, equality); }
/** * Add the value to the component. * * @param source * @return */ public void addToComponent(DynamicComposite composite, Object value) { composite.addComponent(value, serializer, compositeComparator); }
@Override public void addToComponent(DynamicComposite composite, int index, Object value, ComponentEquality equality) { if(value == null){ composite.addComponent(index, null, SER, cassandraType, equality); return; } composite.addComponent(index, ((BigDecimal)value).unscaledValue(), SER, cassandraType, equality); }
/** * Add the value to the component. * @param source * @return */ public void addToComponent(DynamicComposite composite, Object value){ if(value == null){ composite.addComponent(null, SER, cassandraType); return; } composite.addComponent(((BigDecimal)value).unscaledValue(), SER, cassandraType); }
@Test public void testUUIDGetSlice() { // Gets all columns based on the first component in the column name Map<UUID, Set<UUID>> ids = init(); for(Entry<UUID, Set<UUID>> entry : ids.entrySet()) { UUID component0 = entry.getKey(); // start at first column who's single component == component0 DynamicComposite start = new DynamicComposite(); start.addComponent(component0, us); // up to and including any column whose first component == component0 regardless of remaining component values DynamicComposite end = new DynamicComposite(); end.addComponent(component0, us, us.getComparatorType().getTypeName(), ComponentEquality.GREATER_THAN_EQUAL); ColumnSliceIterator<String, DynamicComposite, String> iterator = getIterator(rowKey, start, end); while(iterator.hasNext()) { HColumn<DynamicComposite, String> column = iterator.next(); DynamicComposite composite = column.getName(); assertEquals(component0, composite.get(0, us)); assertTrue(ids.get(component0).contains(composite.get(1, us))); } } }
composite.addComponent(0, "AsciiText", AsciiSerializer.get(), "AsciiType", ComponentEquality.EQUAL); composite.addComponent(1, new byte[]{0, 1, 2, 3}, BytesArraySerializer.get(), "BytesType", ComponentEquality.EQUAL); composite.addComponent(2, -1, IntegerSerializer.get(), "IntegerType", ComponentEquality.EQUAL); composite.addComponent(3, lexUUID, UUIDSerializer.get(), "LexicalUUIDType", ComponentEquality.EQUAL); composite.addComponent(4, -1l, LongSerializer.get(), "LongType", ComponentEquality.EQUAL); composite.addComponent(5, timeUUID, TimeUUIDSerializer.get(), "TimeUUIDType", ComponentEquality.EQUAL); composite.addComponent(6, "UTF8Text", StringSerializer.get(), "UTF8Type", ComponentEquality.EQUAL); composite.addComponent(7, lexUUID, UUIDSerializer.get(), "UUIDType", ComponentEquality.EQUAL); composite.addComponent(8, "AsciiText", AsciiSerializer.get(), "AsciiType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(9, new byte[]{0, 1, 2, 3}, BytesArraySerializer.get(), "BytesType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(10, -1, IntegerSerializer.get(), "IntegerType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(11, lexUUID, UUIDSerializer.get(), "LexicalUUIDType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(12, -1l, LongSerializer.get(), "LongType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(13, timeUUID, TimeUUIDSerializer.get(), "TimeUUIDType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(14, "UTF8Text", StringSerializer.get(), "UTF8Type(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(15, lexUUID, UUIDSerializer.get(), "UUIDType(reversed=true)", ComponentEquality.EQUAL); composite.addComponent(16, "My element", ComponentEquality.EQUAL);
/** * Write this field to the dynamic composite. * * @param c */ @SuppressWarnings("unchecked") public void writeToComposite(OpenJPAStateManager sm, DynamicComposite c) { //write the number of fields for this embedded object c.addComponent(fieldIds.length, intSerializer); for(int i = 0; i < fieldIds.length; i ++){ //write the key c.addComponent(fieldNames[i], stringSerializer); Object value = sm.fetch(fieldIds[i]); //write the value c.addComponent(value, serializers[i]); } }
/** * Uses reflection to directly access the fields that are the composite * * @param obj * @return */ @SuppressWarnings("unchecked") private DynamicComposite createComposite(Object obj) { DynamicComposite c = new DynamicComposite(); // write the number of fields for this embedded object c.addComponent(fieldNames.length, intSerializer); for (int i = 0; i < fieldNames.length; i++) { // write the key c.addComponent(fieldNames[i], stringSerializer); Field field = Reflection.findField(keyClass, fieldNames[i], true); Object value = Reflection.get(obj, field); // write the value c.addComponent(value, serializers[i]); } return c; }
/** * Remove all values from the index that were for the given statemanager * * @param stateManager * @param queue */ public void removeIndexes(OpenJPAStateManager stateManager, IndexQueue queue, long clock) { ByteBuffer key = keyStrategy.toByteBuffer(stateManager.fetchObjectId()); DynamicComposite composite = newComposite(); composite.addComponent(key, buffSerializer); // queue the index values to be deleted queueDeletes(composite, queue, clock); }
/** * Increase the last comparator to GT_E to ensure we get the next page * * @param composite * @return */ @SuppressWarnings({ "rawtypes", "unchecked" }) private DynamicComposite bumpComposite(DynamicComposite composite) { DynamicComposite newComposite = new DynamicComposite(); int size = composite.getComponents().size(); Component component = null; for (int i = 0; i < size - 1; i++) { component = composite.getComponent(i); newComposite.addComponent(component.getValue(), component.getSerializer(), component.getComparator(), component.getEquality()); } component = composite.getComponent(size - 1); newComposite.addComponent(component.getValue(), component.getSerializer(), component.getComparator(), ComponentEquality.GREATER_THAN_EQUAL); return newComposite; }
c.addComponent(size, intSerializer);
current = component.get(i); readComposite.addComponent(current.getValue(), current.getSerializer(), current.getComparator()); readComposite.addComponent(current.getValue(), current.getSerializer(), current.getComparator());
idComposite.addComponent(currentId, buffSerializer, compositeComparator); idAudit.addComponent(currentId, buffSerializer, compositeComparator);
c.addComponent(size, intSerializer);
searchComposite.addComponent(key, buffSerializer, compositeComparator);
private DynamicComposite genComposite(int start, ComponentEquality equality) { DynamicComposite composite = new DynamicComposite(); composite.addComponent(start, IntegerSerializer.get(), IntegerSerializer .get().getComparatorType().getTypeName(), equality); return composite; }
/** * Generate the given number of composites and returns the key for the row * * @param size */ private ByteBuffer generateComposites(int size) { Mutator<ByteBuffer> mutator = HFactory.createMutator( CassandraTestBase.keyspace, ByteBufferSerializer.get()); ByteBuffer rowKey = generateRowKey(); for (int i = 0; i < size; i++) { DynamicComposite composite = new DynamicComposite(); composite.addComponent(i, IntegerSerializer.get(), IntegerSerializer .get().getComparatorType().getTypeName()); mutator.addInsertion( rowKey, AbstractIndexOperation.CF_NAME, HFactory.createColumn(composite, holder, DynamicCompositeSerializer.get(), ByteBufferSerializer.get())); } mutator.execute(); return rowKey; }