From 27ae9095639bb228a1b7ff86a3ebe4264abf05be Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Thu, 29 Nov 2012 12:33:09 -0500
Subject: [PATCH] feature: when using LdapUserService one can configure Gitblit to fetch all users from ldap that can possibly login. This allows to see newly generated LDAP users instantly in Gitblit. By now an LDAP user had to log in once to appear in GitBlit.

---
 src/com/gitblit/models/RefModel.java |   97 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 82 insertions(+), 15 deletions(-)

diff --git a/src/com/gitblit/models/RefModel.java b/src/com/gitblit/models/RefModel.java
index b33c8ba..8489c81 100644
--- a/src/com/gitblit/models/RefModel.java
+++ b/src/com/gitblit/models/RefModel.java
@@ -19,50 +19,112 @@
 import java.util.Date;
 
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.Ref;
 import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevObject;
+import org.eclipse.jgit.revwalk.RevTag;
 
+/**
+ * RefModel is a serializable model class that represents a tag or branch and
+ * includes the referenced object.
+ * 
+ * @author James Moger
+ * 
+ */
 public class RefModel implements Serializable, Comparable<RefModel> {
 
 	private static final long serialVersionUID = 1L;
 	public final String displayName;
-	public final RevCommit commit;
-	public transient Ref ref;
+	public final RevObject referencedObject;
+	public transient Ref reference;
 
-	public RefModel(String displayName, Ref ref, RevCommit commit) {
+	public RefModel(String displayName, Ref ref, RevObject refObject) {
 		this.displayName = displayName;
-		this.ref = ref;
-		this.commit = commit;
+		this.reference = ref;
+		this.referencedObject = refObject;
 	}
 
 	public Date getDate() {
-		return new Date(commit.getCommitTime() * 1000L);
+		Date date = new Date(0);
+		if (referencedObject != null) {
+			if (referencedObject instanceof RevTag) {
+				RevTag tag = (RevTag) referencedObject;
+				if (tag.getTaggerIdent() != null) {
+					date = tag.getTaggerIdent().getWhen();
+				}
+			} else if (referencedObject instanceof RevCommit) {
+				date = ((RevCommit) referencedObject).getCommitterIdent().getWhen();
+			}
+		}
+		return date;
 	}
 
 	public String getName() {
-		return ref.getName();
+		if (reference == null) {
+			return displayName;
+		}
+		return reference.getName();
 	}
 
-	public ObjectId getCommitId() {
-		return commit.getId();
+	public int getReferencedObjectType() {
+		int type = referencedObject.getType();
+		if (referencedObject instanceof RevTag) {
+			type = ((RevTag) referencedObject).getObject().getType();
+		}
+		return type;
 	}
 
-	public String getShortLog() {
-		return commit.getShortMessage();
+	public ObjectId getReferencedObjectId() {
+		if (referencedObject instanceof RevTag) {
+			return ((RevTag) referencedObject).getObject().getId();
+		}
+		return referencedObject.getId();
+	}
+
+	public String getShortMessage() {
+		String message = "";
+		if (referencedObject instanceof RevTag) {
+			message = ((RevTag) referencedObject).getShortMessage();
+		} else if (referencedObject instanceof RevCommit) {
+			message = ((RevCommit) referencedObject).getShortMessage();
+		}
+		return message;
+	}
+
+	public String getFullMessage() {
+		String message = "";
+		if (referencedObject instanceof RevTag) {
+			message = ((RevTag) referencedObject).getFullMessage();
+		} else if (referencedObject instanceof RevCommit) {
+			message = ((RevCommit) referencedObject).getFullMessage();
+		}
+		return message;
+	}
+
+	public PersonIdent getAuthorIdent() {
+		if (referencedObject instanceof RevTag) {
+			return ((RevTag) referencedObject).getTaggerIdent();
+		} else if (referencedObject instanceof RevCommit) {
+			return ((RevCommit) referencedObject).getAuthorIdent();
+		}
+		return null;
 	}
 
 	public ObjectId getObjectId() {
-		return ref.getObjectId();
+		return reference.getObjectId();
 	}
 
 	public boolean isAnnotatedTag() {
-		// ref.isPeeled() ??
-		return !getCommitId().equals(getObjectId());
+		if (referencedObject instanceof RevTag) {
+			return !getReferencedObjectId().equals(getObjectId());
+		}
+		return reference.getPeeledObjectId() != null;
 	}
 
 	@Override
 	public int hashCode() {
-		return getCommitId().hashCode() + getName().hashCode();
+		return getReferencedObjectId().hashCode() + getName().hashCode();
 	}
 
 	@Override
@@ -78,4 +140,9 @@
 	public int compareTo(RefModel o) {
 		return getDate().compareTo(o.getDate());
 	}
+
+	@Override
+	public String toString() {
+		return displayName;
+	}
 }
\ No newline at end of file

--
Gitblit v1.9.1