compositeRecord.put("SubRecord1", subRecord1);
compositeRecord.put("SubRecord2", subRecord2);
// Test put and get
dao.put(compositeRecord);
PartitionKey key = new PartitionKey("1", "1");
Map<String, SpecificRecord> returnedCompositeRecord = dao.get(key);
assertEquals("field1_1", ((SubRecord1) returnedCompositeRecord.get("SubRecord1"))
.getField1());
assertEquals("field1_2", ((SubRecord1) returnedCompositeRecord.get("SubRecord1"))
.getField2());
assertEquals("field2_1", ((SubRecord2) returnedCompositeRecord.get("SubRecord2"))
.getField1());
assertEquals("field2_2", ((SubRecord2) returnedCompositeRecord.get("SubRecord2"))
.getField2());
// Test OCC
assertFalse(dao.put(compositeRecord));
assertTrue(dao.put(returnedCompositeRecord));
// Test null field
compositeRecord = new HashMap<String, SpecificRecord>();
subRecord1 = SubRecord1.newBuilder().setKeyPart1("1").setKeyPart2("2")
.setField1("field1_1").setField2("field1_2").build();
compositeRecord.put("SubRecord1", subRecord1);
dao.put(compositeRecord);
key = new PartitionKey("1", "2");
compositeRecord = dao.get(key);
assertEquals(null, compositeRecord.get("SubRecord2"));
}