You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/12/27 21:17:18 UTC
svn commit: r1225001 [2/2] - in /cassandra/trunk: lib/ lib/licenses/
src/java/org/apache/cassandra/db/ test/unit/org/apache/cassandra/db/
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());
}