From 1c7917fa526925c672d4e5dd336d5b93aa51e6a5 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:10 -0400
Subject: [PATCH] Add --json flag to the list command for outputing JSON

---
 src/main/java/com/gitblit/transport/ssh/commands/ListFilterCommand.java |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/commands/ListRegexCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/ListFilterCommand.java
similarity index 71%
rename from src/main/java/com/gitblit/transport/ssh/commands/ListRegexCommand.java
rename to src/main/java/com/gitblit/transport/ssh/commands/ListFilterCommand.java
index 1e25775..4cc0983 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/ListRegexCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/ListFilterCommand.java
@@ -23,31 +23,33 @@
 import com.gitblit.utils.StringUtils;
 
 /**
- * List command that accepts a regex filter parameter.
- * 
+ * List command that accepts a filter parameter.
+ *
  * @author James Moger
  *
  * @param <T>
  */
-public abstract class ListRegexCommand<T> extends ListCommand<T> {
+public abstract class ListFilterCommand<T> extends ListCommand<T> {
 
-	@Argument(index = 0, metaVar = "REGEX", usage = "regex filter expression")
-	protected String regexFilter;
-	
-	protected abstract boolean matches(T t);
-	
+	@Argument(index = 0, metaVar = "FILTER", usage = "filter expression")
+	private String filter;
+
+	protected abstract boolean matches(String filter, T t);
+
 	@Override
 	public void run() throws UnloggedFailure {
+		validateOutputFormat();
+
 		List<T> list = getItems();
 		List<T> filtered;
-		if (StringUtils.isEmpty(regexFilter)) {
-			// no regex filter 
+		if (StringUtils.isEmpty(filter)) {
+			// no filter
 			filtered = list;
 		} else {
-			// regex filter the list
+			// filter the list
 			filtered = new ArrayList<T>();
 			for (T t : list) {
-				if (matches(t)) {
+				if (matches(filter, t)) {
 					filtered.add(t);
 				}
 			}
@@ -55,6 +57,8 @@
 
 		if (tabbed) {
 			asTabbed(filtered);
+		} else if (json) {
+			asJSON(filtered);
 		} else {
 			asTable(filtered);
 		}

--
Gitblit v1.9.1