From 832d3b838472103e143074f000e9c59fd4596fa4 Mon Sep 17 00:00:00 2001 From: Sasa Zivkov Date: Fri, 21 Jan 2011 17:04:24 +0100 Subject: [PATCH] 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 Signed-off-by: Chris Aniszczyk --- .../eclipse/jgit/notes/LeafBucketTest.java | 116 +++++++++--------- .../org/eclipse/jgit/notes/FanoutBucket.java | 9 +- .../org/eclipse/jgit/notes/LeafBucket.java | 5 +- .../src/org/eclipse/jgit/notes/Note.java | 2 +- .../org/eclipse/jgit/notes/NoteBucket.java | 2 +- .../src/org/eclipse/jgit/notes/NoteMap.java | 16 ++- 6 files changed, 83 insertions(+), 67 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/notes/LeafBucketTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/notes/LeafBucketTest.java index 7c4069553..881cf9e8f 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/notes/LeafBucketTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/notes/LeafBucketTest.java @@ -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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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 class LeafBucketTest { 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) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/FanoutBucket.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/FanoutBucket.java index 953929464..ea904cd1d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/FanoutBucket.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/FanoutBucket.java @@ -110,9 +110,10 @@ class FanoutBucket extends InMemoryNoteBucket { } @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 @@ class FanoutBucket extends InMemoryNoteBucket { } @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 diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/LeafBucket.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/LeafBucket.java index 886684983..ea4d7bc86 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/LeafBucket.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/LeafBucket.java @@ -102,9 +102,10 @@ class LeafBucket extends InMemoryNoteBucket { 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) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java index 00b32132e..ddff52e74 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/Note.java @@ -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; } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteBucket.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteBucket.java index 5c7b325f0..dd17ad532 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteBucket.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteBucket.java @@ -58,7 +58,7 @@ import org.eclipse.jgit.lib.ObjectReader; * @see LeafBucket */ abstract class NoteBucket { - abstract ObjectId get(AnyObjectId objId, ObjectReader reader) + abstract Note getNote(AnyObjectId objId, ObjectReader reader) throws IOException; abstract Iterator iterator(AnyObjectId objId, ObjectReader reader) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java index 591b1aeb1..0d4d6b914 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/notes/NoteMap.java @@ -206,7 +206,21 @@ public class NoteMap implements Iterable { * 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); } /**