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

Reply via email to