]> source.dussan.org Git - jgit.git/commitdiff
Refactor out ReflogEntry 55/3755/1
authorChris Aniszczyk <caniszczyk@gmail.com>
Sun, 19 Jun 2011 13:58:25 +0000 (08:58 -0500)
committerChris Aniszczyk <caniszczyk@gmail.com>
Mon, 20 Jun 2011 15:25:50 +0000 (10:25 -0500)
It's useful to have ReflogEntry refactored out so it can be
used by clients via the JGit API.

Change-Id: I03044df9af9f9547777545b7c9b93bdf5f8b7cb5
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/RefUpdateTest.java
org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/ReflogReaderTest.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogEntry.java [new file with mode: 0644]
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java

index cd127cdeaf702e183e1b8d9e0219143c288a521e..eff2852a783327535167e3366fe95990182b3ff7 100644 (file)
@@ -89,6 +89,7 @@ import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.RevBlob;
 import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.storage.file.ReflogEntry;
 import org.eclipse.jgit.storage.file.FileBasedConfig;
 import org.eclipse.jgit.storage.file.FileRepository;
 import org.eclipse.jgit.storage.file.ReflogReader;
@@ -558,7 +559,7 @@ public class SmartClientSmartServerTest extends HttpTestCase {
                final ReflogReader log = remoteRepository.getReflogReader(dstName);
                assertNotNull("has log for " + dstName);
 
-               final ReflogReader.Entry last = log.getLastEntry();
+               final ReflogEntry last = log.getLastEntry();
                assertNotNull("has last entry", last);
                assertEquals(ObjectId.zeroId(), last.getOldId());
                assertEquals(Q, last.getNewId());
index fe8bdeb424278a1e39c2d929a9ae020dadd149ac..780fde3c6160981ed02e9c563865ade5e6af7260 100644 (file)
@@ -121,14 +121,14 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
                assertNotSame(newid, r.getObjectId());
                assertSame(ObjectId.class, r.getObjectId().getClass());
                assertEquals(newid, r.getObjectId());
-               List<org.eclipse.jgit.storage.file.ReflogReader.Entry> reverseEntries1 = db.getReflogReader("refs/heads/abc").getReverseEntries();
-               org.eclipse.jgit.storage.file.ReflogReader.Entry entry1 = reverseEntries1.get(0);
+               List<org.eclipse.jgit.storage.file.ReflogEntry> reverseEntries1 = db.getReflogReader("refs/heads/abc").getReverseEntries();
+               org.eclipse.jgit.storage.file.ReflogEntry entry1 = reverseEntries1.get(0);
                assertEquals(1, reverseEntries1.size());
                assertEquals(ObjectId.zeroId(), entry1.getOldId());
                assertEquals(r.getObjectId(), entry1.getNewId());
                assertEquals(new PersonIdent(db).toString(),  entry1.getWho().toString());
                assertEquals("", entry1.getComment());
-               List<org.eclipse.jgit.storage.file.ReflogReader.Entry> reverseEntries2 = db.getReflogReader("HEAD").getReverseEntries();
+               List<org.eclipse.jgit.storage.file.ReflogEntry> reverseEntries2 = db.getReflogReader("HEAD").getReverseEntries();
                assertEquals(0, reverseEntries2.size());
        }
 
@@ -334,7 +334,7 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
                // the branch HEAD referred to is left untouched
                assertEquals(pid, db.resolve("refs/heads/master"));
                ReflogReader reflogReader = new  ReflogReader(db, "HEAD");
-               org.eclipse.jgit.storage.file.ReflogReader.Entry e = reflogReader.getReverseEntries().get(0);
+               org.eclipse.jgit.storage.file.ReflogEntry e = reflogReader.getReverseEntries().get(0);
                assertEquals(pid, e.getOldId());
                assertEquals(ppid, e.getNewId());
                assertEquals("GIT_COMMITTER_EMAIL", e.getWho().getEmailAddress());
@@ -364,7 +364,7 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
                // the branch HEAD referred to is left untouched
                assertNull(db.resolve("refs/heads/unborn"));
                ReflogReader reflogReader = new  ReflogReader(db, "HEAD");
-               org.eclipse.jgit.storage.file.ReflogReader.Entry e = reflogReader.getReverseEntries().get(0);
+               org.eclipse.jgit.storage.file.ReflogEntry e = reflogReader.getReverseEntries().get(0);
                assertEquals(ObjectId.zeroId(), e.getOldId());
                assertEquals(ppid, e.getNewId());
                assertEquals("GIT_COMMITTER_EMAIL", e.getWho().getEmailAddress());
@@ -701,9 +701,9 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
                ObjectId oldHeadId = db.resolve(Constants.HEAD);
                writeReflog(db, oldfromId, oldfromId, "Just a message",
                                fromName);
-               List<org.eclipse.jgit.storage.file.ReflogReader.Entry> oldFromLog = db
+               List<org.eclipse.jgit.storage.file.ReflogEntry> oldFromLog = db
                                .getReflogReader(fromName).getReverseEntries();
-               List<org.eclipse.jgit.storage.file.ReflogReader.Entry> oldHeadLog = oldHeadId != null ? db
+               List<org.eclipse.jgit.storage.file.ReflogEntry> oldHeadLog = oldHeadId != null ? db
                                .getReflogReader(Constants.HEAD).getReverseEntries() : null;
 
                assertTrue("internal check, we have a log", new File(db.getDirectory(),
index 24c6aebaf2d32f07a30ac3dec77130ab2819d6aa..afb3ddd9dcbb84c27a0c6a66e880d0c8df76c834 100644 (file)
@@ -57,7 +57,6 @@ import java.util.List;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.SampleDataRepositoryTestCase;
-import org.eclipse.jgit.storage.file.ReflogReader.Entry;
 import org.junit.Test;
 
 public class ReflogReaderTest extends SampleDataRepositoryTestCase {
@@ -91,7 +90,7 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase {
                setupReflog("logs/refs/heads/master", oneLine);
 
                ReflogReader reader = new ReflogReader(db, "refs/heads/master");
-               Entry e = reader.getLastEntry();
+               ReflogEntry e = reader.getLastEntry();
                assertEquals(ObjectId
                                .fromString("da85355dfc525c9f6f3927b876f379f46ccf826e"), e
                                .getOldId());
@@ -118,9 +117,9 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase {
                setupReflog("logs/refs/heads/master", twoLine);
 
                ReflogReader reader = new ReflogReader(db, "refs/heads/master");
-               List<Entry> reverseEntries = reader.getReverseEntries();
+               List<ReflogEntry> reverseEntries = reader.getReverseEntries();
                assertEquals(2, reverseEntries.size());
-               Entry e = reverseEntries.get(0);
+               ReflogEntry e = reverseEntries.get(0);
                assertEquals(ObjectId
                                .fromString("c6734895958052a9dbc396cff4459dc1a25029ab"), e
                                .getOldId());
@@ -153,9 +152,9 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase {
        public void testReadWhileAppendIsInProgress() throws Exception {
                setupReflog("logs/refs/heads/master", twoLineWithAppendInProgress);
                ReflogReader reader = new ReflogReader(db, "refs/heads/master");
-               List<Entry> reverseEntries = reader.getReverseEntries();
+               List<ReflogEntry> reverseEntries = reader.getReverseEntries();
                assertEquals(2, reverseEntries.size());
-               Entry e = reverseEntries.get(0);
+               ReflogEntry e = reverseEntries.get(0);
                assertEquals(ObjectId
                                .fromString("c6734895958052a9dbc396cff4459dc1a25029ab"), e
                                .getOldId());
@@ -191,7 +190,7 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase {
        public void testReadLineWithMissingComment() throws Exception {
                setupReflog("logs/refs/heads/master", oneLineWithoutComment);
                final ReflogReader reader = db.getReflogReader("master");
-               Entry e = reader.getLastEntry();
+               ReflogEntry e = reader.getLastEntry();
                assertEquals(ObjectId
                                .fromString("da85355dfc525c9f6f3927b876f379f46ccf826e"), e
                                .getOldId());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogEntry.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogEntry.java
new file mode 100644 (file)
index 0000000..5dc5bf6
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2011, Chris Aniszczyk <caniszczyk@gmail.com>
+ * Copyright (C) 2009, Robin Rosenberg <robin.rosenberg@dewire.com>
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Distribution License v1.0 which
+ * accompanies this distribution, is reproduced below, and is
+ * available at http://www.eclipse.org/org/documents/edl-v10.php
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ * - Neither the name of the Eclipse Foundation, Inc. nor the
+ *   names of its contributors may be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.eclipse.jgit.storage.file;
+
+import org.eclipse.jgit.JGitText;
+import org.eclipse.jgit.lib.Constants;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.PersonIdent;
+import org.eclipse.jgit.util.RawParseUtils;
+
+/**
+ * Parsed reflog entry
+ */
+public class ReflogEntry {
+       private ObjectId oldId;
+
+       private ObjectId newId;
+
+       private PersonIdent who;
+
+       private String comment;
+
+       ReflogEntry(byte[] raw, int pos) {
+               oldId = ObjectId.fromString(raw, pos);
+               pos += Constants.OBJECT_ID_STRING_LENGTH;
+               if (raw[pos++] != ' ')
+                       throw new IllegalArgumentException(
+                                       JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
+               newId = ObjectId.fromString(raw, pos);
+               pos += Constants.OBJECT_ID_STRING_LENGTH;
+               if (raw[pos++] != ' ') {
+                       throw new IllegalArgumentException(
+                                       JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
+               }
+               who = RawParseUtils.parsePersonIdentOnly(raw, pos);
+               int p0 = RawParseUtils.next(raw, pos, '\t');
+               if (p0 >= raw.length)
+                       comment = ""; // personident has no \t, no comment present
+               else {
+                       int p1 = RawParseUtils.nextLF(raw, p0);
+                       comment = p1 > p0 ? RawParseUtils.decode(raw, p0, p1 - 1) : "";
+               }
+       }
+
+       /**
+        * @return the commit id before the change
+        */
+       public ObjectId getOldId() {
+               return oldId;
+       }
+
+       /**
+        * @return the commit id after the change
+        */
+       public ObjectId getNewId() {
+               return newId;
+       }
+
+       /**
+        * @return user performin the change
+        */
+       public PersonIdent getWho() {
+               return who;
+       }
+
+       /**
+        * @return textual description of the change
+        */
+       public String getComment() {
+               return comment;
+       }
+
+       @Override
+       public String toString() {
+               return "Entry[" + oldId.name() + ", " + newId.name() + ", " + getWho() + ", "
+                               + getComment() + "]";
+       }
+}
\ No newline at end of file
index ea2f73895d9d00e2192bcacbb63daa3f9d265e39..1b7fc23e732ed489e3e9276ef4ce774370207e51 100644 (file)
@@ -51,10 +51,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.jgit.JGitText;
-import org.eclipse.jgit.lib.Constants;
-import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.util.IO;
 import org.eclipse.jgit.util.RawParseUtils;
@@ -63,78 +59,13 @@ import org.eclipse.jgit.util.RawParseUtils;
  * Utility for reading reflog entries
  */
 public class ReflogReader {
-       /**
-        * Parsed reflog entry
-        */
-       static public class Entry {
-               private ObjectId oldId;
-
-               private ObjectId newId;
-
-               private PersonIdent who;
-
-               private String comment;
-
-               Entry(byte[] raw, int pos) {
-                       oldId = ObjectId.fromString(raw, pos);
-                       pos += Constants.OBJECT_ID_STRING_LENGTH;
-                       if (raw[pos++] != ' ')
-                               throw new IllegalArgumentException(
-                                               JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
-                       newId = ObjectId.fromString(raw, pos);
-                       pos += Constants.OBJECT_ID_STRING_LENGTH;
-                       if (raw[pos++] != ' ') {
-                               throw new IllegalArgumentException(
-                                               JGitText.get().rawLogMessageDoesNotParseAsLogEntry);
-                       }
-                       who = RawParseUtils.parsePersonIdentOnly(raw, pos);
-                       int p0 = RawParseUtils.next(raw, pos, '\t');
-                       if (p0 >= raw.length)
-                               comment = ""; // personident has no \t, no comment present
-                       else {
-                               int p1 = RawParseUtils.nextLF(raw, p0);
-                               comment = p1 > p0 ? RawParseUtils.decode(raw, p0, p1 - 1) : "";
-                       }
-               }
-
-               /**
-                * @return the commit id before the change
-                */
-               public ObjectId getOldId() {
-                       return oldId;
-               }
-
-               /**
-                * @return the commit id after the change
-                */
-               public ObjectId getNewId() {
-                       return newId;
-               }
-
-               /**
-                * @return user performin the change
-                */
-               public PersonIdent getWho() {
-                       return who;
-               }
-
-               /**
-                * @return textual description of the change
-                */
-               public String getComment() {
-                       return comment;
-               }
-
-               @Override
-               public String toString() {
-                       return "Entry[" + oldId.name() + ", " + newId.name() + ", " + getWho() + ", "
-                                       + getComment() + "]";
-               }
-       }
-
        private File logName;
 
-       ReflogReader(Repository db, String refname) {
+       /**
+        * @param db
+        * @param refname
+        */
+       public ReflogReader(Repository db, String refname) {
                logName = new File(db.getDirectory(), "logs/" + refname);
        }
 
@@ -144,8 +75,8 @@ public class ReflogReader {
         * @return the latest reflog entry, or null if no log
         * @throws IOException
         */
-       public Entry getLastEntry() throws IOException {
-               List<Entry> entries = getReverseEntries(1);
+       public ReflogEntry getLastEntry() throws IOException {
+               List<ReflogEntry> entries = getReverseEntries(1);
                return entries.size() > 0 ? entries.get(0) : null;
        }
 
@@ -153,7 +84,7 @@ public class ReflogReader {
         * @return all reflog entries in reverse order
         * @throws IOException
         */
-       public List<Entry> getReverseEntries() throws IOException {
+       public List<ReflogEntry> getReverseEntries() throws IOException {
                return getReverseEntries(Integer.MAX_VALUE);
        }
 
@@ -163,7 +94,7 @@ public class ReflogReader {
         * @return all reflog entries in reverse order
         * @throws IOException
         */
-       public List<Entry> getReverseEntries(int max) throws IOException {
+       public List<ReflogEntry> getReverseEntries(int max) throws IOException {
                final byte[] log;
                try {
                        log = IO.readFully(logName);
@@ -172,10 +103,10 @@ public class ReflogReader {
                }
 
                int rs = RawParseUtils.prevLF(log, log.length);
-               List<Entry> ret = new ArrayList<Entry>();
+               List<ReflogEntry> ret = new ArrayList<ReflogEntry>();
                while (rs >= 0 && max-- > 0) {
                        rs = RawParseUtils.prevLF(log, rs);
-                       Entry entry = new Entry(log, rs < 0 ? 0 : rs + 2);
+                       ReflogEntry entry = new ReflogEntry(log, rs < 0 ? 0 : rs + 2);
                        ret.add(entry);
                }
                return ret;