Author: [email protected]
Date: Wed Oct 12 12:47:41 2011
New Revision: 1488
Log:
[AMDATUCASSANDRA-107] Added null check for invalid gadgets and enhanced unit
test to verify this particular issue. Also fixed a small bug in the CPM mock,
found by enhancing the unit test.
Modified:
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
trunk/amdatu-cassandra/cassandra-store-gadget/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
trunk/amdatu-cassandra/test-unit/framework-hector/src/main/java/org/amdatu/cassandra/test/unit/framework/hector/mock/HectorCassandraPersistenceManagerMock.java
Modified:
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
Wed Oct 12 12:47:41 2011
@@ -179,11 +179,14 @@
try {
m_cassandraLock.readLock().lock();
List<String> rows = m_pm.getRowKeys(CF_GADGET);
- GadgetDefinition[] gadgets = new GadgetDefinition[rows.size()];
+ List<GadgetDefinition> gadgets = new ArrayList<GadgetDefinition>();
for (int i = 0; i < rows.size(); i++) {
- gadgets[i] = getGadget(rows.get(i));
+ GadgetDefinition gadget = getGadget(rows.get(i));
+ if (gadget != null) {
+ gadgets.add(gadget);
+ }
}
- return orderGadgets(gadgets);
+ return orderGadgets(gadgets.toArray(new
GadgetDefinition[gadgets.size()]));
}
finally {
m_cassandraLock.readLock().unlock();
Modified:
trunk/amdatu-cassandra/cassandra-store-gadget/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
==============================================================================
---
trunk/amdatu-cassandra/cassandra-store-gadget/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
(original)
+++
trunk/amdatu-cassandra/cassandra-store-gadget/src/test/java/org/amdatu/cassandra/test/unit/CassandraGadgetStoreTest.java
Wed Oct 12 12:47:41 2011
@@ -15,11 +15,14 @@
*/
package org.amdatu.cassandra.test.unit;
+import static
org.amdatu.cassandra.store.gadget.service.GadgetColumnFamilyProvider.CF_GADGET;
+
import junit.framework.Assert;
import
org.amdatu.cassandra.persistencemanager.hector.HectorCassandraPersistenceManager;
import
org.amdatu.cassandra.store.gadget.service.CassandraGadgetStorageProviderImpl;
import org.amdatu.cassandra.store.gadget.service.GadgetColumnFamilyProvider;
+import org.amdatu.cassandra.test.unit.framework.UnitTestFramework;
import org.amdatu.cassandra.test.unit.framework.hector.HectorUnitTestFramework;
import org.amdatu.cassandra.test.unit.framework.mock.LogServiceMock;
import org.amdatu.opensocial.gadgetmanagement.GadgetCategory;
@@ -53,11 +56,8 @@
}
private void test(HectorCassandraPersistenceManager pm) throws Exception {
- // Create the mock objects
- LogServiceMock logService = new LogServiceMock();
-
// And the store under test itself
- CassandraGadgetStorageProviderImpl gadgetStore = new
CassandraGadgetStorageProviderImpl(pm, logService);
+ CassandraGadgetStorageProviderImpl gadgetStore = new
CassandraGadgetStorageProviderImpl(pm, UnitTestFramework.createLogService());
// Test CRUD API for categories
GadgetCategory cat1 = new GadgetCategory("test1", "Test category 1");
@@ -76,6 +76,12 @@
Assert.assertEquals("http://gadget1",
gadgetStore.getGadget("http://gadget1").getUrl());
Assert.assertEquals("http://gadget2",
gadgetStore.getGadget("http://gadget2").getUrl());
Assert.assertEquals(2, gadgetStore.getGadgets().length);
+
+ // Test for AMDATUCASSANDRA-107. We 'corrupt' the gadget CF by purpose
and validate if getGadgets()
+ // omits the invalid gadget definition in the result
+ pm.deleteColumn(CF_GADGET, "http://gadget1", "Basic", "gadgeturl");
+ gadgetStore.getGadgets();
+
gadgetStore.removeGadget(gadget1);
gadgetStore.removeGadget(gadget2);
Modified:
trunk/amdatu-cassandra/test-unit/framework-hector/src/main/java/org/amdatu/cassandra/test/unit/framework/hector/mock/HectorCassandraPersistenceManagerMock.java
==============================================================================
---
trunk/amdatu-cassandra/test-unit/framework-hector/src/main/java/org/amdatu/cassandra/test/unit/framework/hector/mock/HectorCassandraPersistenceManagerMock.java
(original)
+++
trunk/amdatu-cassandra/test-unit/framework-hector/src/main/java/org/amdatu/cassandra/test/unit/framework/hector/mock/HectorCassandraPersistenceManagerMock.java
Wed Oct 12 12:47:41 2011
@@ -345,7 +345,7 @@
}
}
else {
- if (superColumn != null) {
+ if (superColumn == null) {
throw new HInvalidRequestException("Super column should not be
null for ColumnFamily '" + columnFamily
+ "', as it is of type super");
}
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits