FELIX-2074: Bring back the history command

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@910220 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java b/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
index 39e3110..ee5884b 100644
--- a/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
+++ b/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/HistoryAction.java
@@ -16,8 +16,35 @@
  */
 package org.apache.felix.karaf.shell.commands;
 
+import java.util.List;
+
+import jline.History;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.karaf.shell.console.OsgiCommandSupport;
+import org.fusesource.jansi.Ansi;
+
 /**
- * TODO
+ * History command
  */
-public class HistoryAction {
+@Command(scope = "shell", name="history", description="Prints command history")
+public class HistoryAction extends OsgiCommandSupport {
+
+    @Override
+    protected Object doExecute() throws Exception {
+        History history = (History) session.get(".jline.history");
+        List<String> elements = history.getHistoryList();
+
+        int i = 0;
+        for (String element : elements) {
+            System.out.println(
+                    Ansi.ansi()
+                        .a("  ")
+                        .a(Ansi.Attribute.INTENSITY_BOLD).render("%3d", i).a(Ansi.Attribute.INTENSITY_BOLD_OFF)
+                        .a("  ")
+                        .a(element)
+                        .toString());
+            i++;
+        }
+        return null;
+    }
 }
diff --git a/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml b/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
index 88aea17..ec7e7c1 100644
--- a/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
+++ b/karaf/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
@@ -35,11 +35,9 @@
         <command name="shell/grep">
             <action class="org.apache.felix.karaf.shell.commands.GrepAction"/>
         </command>
-        <!--
         <command name="shell/history">
             <action class="org.apache.felix.karaf.shell.commands.HistoryAction"/>
         </command>
-        -->
         <command name="shell/if">
             <action class="org.apache.felix.karaf.shell.commands.IfAction"/>
         </command>
diff --git a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
index 903c2f8..c8a7752 100644
--- a/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
+++ b/karaf/shell/console/src/main/java/org/apache/felix/karaf/shell/console/jline/Console.java
@@ -102,6 +102,7 @@
         File file = new File(System.getProperty("user.home"), ".karaf/karaf.history");
         file.getParentFile().mkdirs();
         reader.getHistory().setHistoryFile(file);
+        session.put(".jline.history", reader.getHistory());
         if (completer != null) {
             reader.addCompletor(
                 new CompleterAsCompletor(