Exposed the constructor of Note class

Additionally, defined the NoteMap.getNote method which returns a Note
instance.  These changes were necessary to enable implementation of
the NoteMerger interface (the merge method needs to instantiate a
Note) and to enable direct use of NoteMerger which expects instances
of Note class as its paramters.  Implementing creation of code review
summary notes in Gerrit [1] will make use of both of these features.

[1] https://review.source.android.com/#change,20045

Change-Id: I627aefcedcd3434deecd63fa1d3e90e303b385ac
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
This commit is contained in:
Sasa Zivkov 2011-01-21 17:04:24 +01:00 committed by Chris Aniszczyk
parent f214952552
commit 832d3b8384
6 changed files with 83 additions and 67 deletions

View File

@ -57,9 +57,9 @@ public class LeafBucketTest {
@Test
public void testEmpty() {
LeafBucket b = new LeafBucket(0);
assertNull(b.get(id(0x00), null));
assertNull(b.get(id(0x01), null));
assertNull(b.get(id(0xfe), null));
assertNull(b.getNote(id(0x00), null));
assertNull(b.getNote(id(0x01), null));
assertNull(b.getNote(id(0xfe), null));
}
@Test
@ -72,13 +72,13 @@ public void testParseFive() {
b.parseOneEntry(id(0x44), id(0x84));
b.parseOneEntry(id(0x55), id(0x85));
assertNull(b.get(id(0x01), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertEquals(id(0x83), b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertEquals(id(0x85), b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -91,13 +91,13 @@ public void testSetFive_InOrder() throws IOException {
assertSame(b, b.set(id(0x44), id(0x84), null));
assertSame(b, b.set(id(0x55), id(0x85), null));
assertNull(b.get(id(0x01), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertEquals(id(0x83), b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertEquals(id(0x85), b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -110,13 +110,13 @@ public void testSetFive_ReverseOrder() throws IOException {
assertSame(b, b.set(id(0x22), id(0x82), null));
assertSame(b, b.set(id(0x11), id(0x81), null));
assertNull(b.get(id(0x01), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertEquals(id(0x83), b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertEquals(id(0x85), b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -130,13 +130,13 @@ public void testSetFive_MixedOrder() throws IOException {
assertSame(b, b.set(id(0x22), id(0x82), null));
assertSame(b, b.set(id(0x44), id(0x84), null));
assertNull(b.get(id(0x01), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertEquals(id(0x83), b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertEquals(id(0x85), b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -144,18 +144,18 @@ public void testSet_Replace() throws IOException {
LeafBucket b = new LeafBucket(0);
assertSame(b, b.set(id(0x11), id(0x81), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertSame(b, b.set(id(0x11), id(0x01), null));
assertEquals(id(0x01), b.get(id(0x11), null));
assertEquals(id(0x01), b.getNote(id(0x11), null).getData());
}
@Test
public void testRemoveMissingNote() throws IOException {
LeafBucket b = new LeafBucket(0);
assertNull(b.get(id(0x11), null));
assertNull(b.getNote(id(0x11), null));
assertSame(b, b.set(id(0x11), null, null));
assertNull(b.get(id(0x11), null));
assertNull(b.getNote(id(0x11), null));
}
@Test
@ -170,13 +170,13 @@ public void testRemoveFirst() throws IOException {
assertSame(b, b.set(id(0x11), null, null));
assertNull(b.get(id(0x01), null));
assertNull(b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertEquals(id(0x83), b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertEquals(id(0x85), b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertNull(b.getNote(id(0x11), null));
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -191,13 +191,13 @@ public void testRemoveMiddle() throws IOException {
assertSame(b, b.set(id(0x33), null, null));
assertNull(b.get(id(0x01), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertNull(b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertEquals(id(0x85), b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertNull(b.getNote(id(0x33), null));
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -212,13 +212,13 @@ public void testRemoveLast() throws IOException {
assertSame(b, b.set(id(0x55), null, null));
assertNull(b.get(id(0x01), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x82), b.get(id(0x22), null));
assertEquals(id(0x83), b.get(id(0x33), null));
assertEquals(id(0x84), b.get(id(0x44), null));
assertNull(b.get(id(0x55), null));
assertNull(b.get(id(0x66), null));
assertNull(b.getNote(id(0x01), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
assertNull(b.getNote(id(0x55), null));
assertNull(b.getNote(id(0x66), null));
}
@Test
@ -226,10 +226,10 @@ public void testRemoveMakesEmpty() throws IOException {
LeafBucket b = new LeafBucket(0);
assertSame(b, b.set(id(0x11), id(0x81), null));
assertEquals(id(0x81), b.get(id(0x11), null));
assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
assertNull(b.set(id(0x11), null, null));
assertNull(b.get(id(0x11), null));
assertNull(b.getNote(id(0x11), null));
}
private static AnyObjectId id(int first) {

View File

@ -110,9 +110,10 @@ void setBucket(int cell, InMemoryNoteBucket bucket) {
}
@Override
ObjectId get(AnyObjectId objId, ObjectReader or) throws IOException {
Note getNote(AnyObjectId objId, ObjectReader or) throws IOException {
NoteBucket b = table[cell(objId)];
return b != null ? b.get(objId, or) : null;
return b != null ? b.getNote(objId, or) : null;
}
NoteBucket getBucket(int cell) {
@ -337,8 +338,8 @@ private class LazyNoteBucket extends NoteBucket {
}
@Override
ObjectId get(AnyObjectId objId, ObjectReader or) throws IOException {
return load(objId, or).get(objId, or);
Note getNote(AnyObjectId objId, ObjectReader or) throws IOException {
return load(objId, or).getNote(objId, or);
}
@Override

View File

@ -102,9 +102,10 @@ else if (cmp == 0)
return -(low + 1);
}
ObjectId get(AnyObjectId objId, ObjectReader or) {
@Override
Note getNote(AnyObjectId objId, ObjectReader or) {
int idx = search(objId);
return 0 <= idx ? notes[idx].getData() : null;
return 0 <= idx ? notes[idx] : null;
}
Note get(int index) {

View File

@ -58,7 +58,7 @@ public class Note extends ObjectId {
* @param noteData
* the actual note data contained in this note
*/
Note(AnyObjectId noteOn, ObjectId noteData) {
public Note(AnyObjectId noteOn, ObjectId noteData) {
super(noteOn);
data = noteData;
}

View File

@ -58,7 +58,7 @@
* @see LeafBucket
*/
abstract class NoteBucket {
abstract ObjectId get(AnyObjectId objId, ObjectReader reader)
abstract Note getNote(AnyObjectId objId, ObjectReader reader)
throws IOException;
abstract Iterator<Note> iterator(AnyObjectId objId, ObjectReader reader)

View File

@ -206,7 +206,21 @@ public Iterator<Note> iterator() {
* a portion of the note space is not accessible.
*/
public ObjectId get(AnyObjectId id) throws IOException {
return root.get(id, reader);
Note n = root.getNote(id, reader);
return n == null ? null : n.getData();
}
/**
* Lookup a note for a specific ObjectId.
*
* @param id
* the object to look for.
* @return the note for the given object id, or null if no note exists.
* @throws IOException
* a portion of the note space is not accessible.
*/
public Note getNote(AnyObjectId id) throws IOException {
return root.getNote(id, reader);
}
/**