Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java?rev=1225001&r1=1225000&r2=1225001&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/TreeMapBackedSortedColumns.java
 Tue Dec 27 20:17:17 2011
@@ -24,11 +24,15 @@ import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeMap;
 
+import com.google.common.base.Function;
+
 import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.utils.Allocator;
 
-public class TreeMapBackedSortedColumns extends TreeMap<ByteBuffer, IColumn> 
implements ISortedColumns
+public class TreeMapBackedSortedColumns extends 
AbstractThreadUnsafeSortedColumns implements ISortedColumns
 {
+    private final TreeMap<ByteBuffer, IColumn> map;
+
     public static final ISortedColumns.Factory factory = new Factory()
     {
         public ISortedColumns create(AbstractType<?> comparator, boolean 
insertReversed)
@@ -49,17 +53,17 @@ public class TreeMapBackedSortedColumns 
 
     public AbstractType<?> getComparator()
     {
-        return (AbstractType)comparator();
+        return (AbstractType)map.comparator();
     }
 
     private TreeMapBackedSortedColumns(AbstractType<?> comparator)
     {
-        super(comparator);
+        this.map = new TreeMap<ByteBuffer, IColumn>(comparator);
     }
 
     private TreeMapBackedSortedColumns(SortedMap<ByteBuffer, IColumn> columns)
     {
-        super(columns);
+        this.map = new TreeMap<ByteBuffer, IColumn>(columns);
     }
 
     public ISortedColumns.Factory getFactory()
@@ -69,7 +73,7 @@ public class TreeMapBackedSortedColumns 
 
     public ISortedColumns cloneMe()
     {
-        return new TreeMapBackedSortedColumns(this);
+        return new TreeMapBackedSortedColumns(map);
     }
 
     public boolean isInsertReversed()
@@ -88,7 +92,7 @@ public class TreeMapBackedSortedColumns 
         // but TreeMap lacks putAbsent.  Rather than split it into a "get, 
then put" check, we do it as follows,
         // which saves the extra "get" in the no-conflict case [for both 
normal and super columns],
         // in exchange for a re-put in the SuperColumn case.
-        IColumn oldColumn = put(name, column);
+        IColumn oldColumn = map.put(name, column);
         if (oldColumn != null)
         {
             if (oldColumn instanceof SuperColumn)
@@ -98,13 +102,13 @@ public class TreeMapBackedSortedColumns 
                 // add the new one to the old, then place old back in the Map, 
rather than copy the old contents
                 // into the new Map entry.
                 ((SuperColumn) oldColumn).putColumn((SuperColumn)column, 
allocator);
-                put(name,  oldColumn);
+                map.put(name,  oldColumn);
             }
             else
             {
                 // calculate reconciled col from old (existing) col and new col
                 IColumn reconciledColumn = column.reconcile(oldColumn, 
allocator);
-                put(name, reconciledColumn);
+                map.put(name, reconciledColumn);
             }
         }
     }
@@ -112,10 +116,10 @@ public class TreeMapBackedSortedColumns 
     /**
      * We need to go through each column in the column container and resolve 
it before adding
      */
-    public void addAll(ISortedColumns cm, Allocator allocator)
+    protected void addAllColumns(ISortedColumns cm, Allocator allocator, 
Function<IColumn, IColumn> transformation)
     {
         for (IColumn column : cm.getSortedColumns())
-            addColumn(column, allocator);
+            addColumn(transformation.apply(column), allocator);
     }
 
     public boolean replace(IColumn oldColumn, IColumn newColumn)
@@ -127,15 +131,15 @@ public class TreeMapBackedSortedColumns 
         // column or the column was not equal to oldColumn (to be coherent
         // with other implementation). We optimize for the common case where
         // oldColumn do is present though.
-        IColumn previous = put(oldColumn.name(), newColumn);
+        IColumn previous = map.put(oldColumn.name(), newColumn);
         if (previous == null)
         {
-            remove(oldColumn.name());
+            map.remove(oldColumn.name());
             return false;
         }
         if (!previous.equals(oldColumn))
         {
-            put(oldColumn.name(), previous);
+            map.put(oldColumn.name(), previous);
             return false;
         }
         return true;
@@ -143,37 +147,42 @@ public class TreeMapBackedSortedColumns 
 
     public IColumn getColumn(ByteBuffer name)
     {
-        return get(name);
+        return map.get(name);
     }
 
     public void removeColumn(ByteBuffer name)
     {
-        remove(name);
+        map.remove(name);
     }
 
-    public Collection<IColumn> getSortedColumns()
+    public void clear()
     {
-        return values();
+        map.clear();
     }
 
-    public Collection<IColumn> getReverseSortedColumns()
+    public int size()
     {
-        return descendingMap().values();
+        return map.size();
     }
 
-    public SortedSet<ByteBuffer> getColumnNames()
+    public Collection<IColumn> getSortedColumns()
     {
-        return navigableKeySet();
+        return map.values();
     }
 
-    public int getEstimatedColumnCount()
+    public Collection<IColumn> getReverseSortedColumns()
+    {
+        return map.descendingMap().values();
+    }
+
+    public SortedSet<ByteBuffer> getColumnNames()
     {
-        return size();
+        return map.navigableKeySet();
     }
 
     public Iterator<IColumn> iterator()
     {
-        return values().iterator();
+        return map.values().iterator();
     }
 
     public Iterator<IColumn> reverseIterator()
@@ -183,11 +192,11 @@ public class TreeMapBackedSortedColumns 
 
     public Iterator<IColumn> iterator(ByteBuffer start)
     {
-        return tailMap(start).values().iterator();
+        return map.tailMap(start).values().iterator();
     }
 
     public Iterator<IColumn> reverseIterator(ByteBuffer start)
     {
-        return descendingMap().tailMap(start).values().iterator();
+        return map.descendingMap().tailMap(start).values().iterator();
     }
 }

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java?rev=1225001&r1=1225000&r2=1225001&view=diff
==============================================================================
--- 
cassandra/trunk/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
 (original)
+++ 
cassandra/trunk/test/unit/org/apache/cassandra/db/ArrayBackedSortedColumnsTest.java
 Tue Dec 27 20:17:17 2011
@@ -28,6 +28,8 @@ import org.junit.Test;
 
 import static org.junit.Assert.*;
 
+import com.google.common.base.Function;
+
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.db.marshal.BytesType;
 import org.apache.cassandra.utils.HeapAllocator;
@@ -76,7 +78,7 @@ public class ArrayBackedSortedColumnsTes
         for (int i = 0; i < values2.length; ++i)
             map2.addColumn(new Column(ByteBufferUtil.bytes(values2[reversed ? 
values2.length - 1 - i : i])), HeapAllocator.instance);
 
-        map2.addAll(map, HeapAllocator.instance);
+        map2.addAll(map, HeapAllocator.instance, new Function<IColumn, 
IColumn>(){ public IColumn apply(IColumn c) { return c; }; });
 
         Iterator<IColumn> iter = map2.iterator();
         assertEquals("1st column", 1, iter.next().name().getInt(0));

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java?rev=1225001&r1=1225000&r2=1225001&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java 
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java Tue 
Dec 27 20:17:17 2011
@@ -174,7 +174,7 @@ public class ColumnFamilyTest extends Sc
     public void testSuperColumnResolution()
     {
         testSuperColumnResolution(TreeMapBackedSortedColumns.factory());
-        testSuperColumnResolution(ThreadSafeSortedColumns.factory());
+        testSuperColumnResolution(AtomicSortedColumns.factory());
         // array-sorted does allow conflict resolution IF it is the last 
column.  Bit of an edge case.
         testSuperColumnResolution(ArrayBackedSortedColumns.factory());
     }


Reply via email to