Use ConsoleListener which now exposes simpler means to extend and wrap the 
stream used. Update docs.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/957b32e1
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/957b32e1
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/957b32e1

Branch: refs/heads/slf4j-gossip
Commit: 957b32e1fad593ff5641ab2f1e9c52f67596a310
Parents: 8cb186a
Author: Jason Dillon <ja...@planet57.com>
Authored: Tue May 24 14:06:52 2016 -0700
Committer: Hervé Boutemy <hbout...@apache.org>
Committed: Thu Jun 2 23:41:45 2016 +0200

----------------------------------------------------------------------
 .../impl/gossip/ColorConsoleListener.java       | 47 +++++++++++---------
 1 file changed, 26 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/957b32e1/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/gossip/ColorConsoleListener.java
----------------------------------------------------------------------
diff --git 
a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/gossip/ColorConsoleListener.java
 
b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/gossip/ColorConsoleListener.java
index da8a7ed..b9c97a9 100644
--- 
a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/gossip/ColorConsoleListener.java
+++ 
b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/gossip/ColorConsoleListener.java
@@ -21,10 +21,9 @@ package org.apache.maven.cli.logging.impl.gossip;
 
 import java.io.PrintStream;
 
+import com.planet57.gossip.listener.ConsoleListener;
 import org.fusesource.jansi.AnsiConsole;
-
-import com.planet57.gossip.Event;
-import com.planet57.gossip.listener.ListenerSupport;
+import org.fusesource.jansi.internal.CLibrary;
 
 /**
  * Specialized {@link com.planet57.gossip.listener.Listener} which is aware of 
ANSI streams.
@@ -33,35 +32,41 @@ import com.planet57.gossip.listener.ListenerSupport;
  * @since 3.4.0
  */
 public class ColorConsoleListener
-    extends ListenerSupport
+    extends ConsoleListener
 {
     private PrintStream out;
 
-    private PrintStream getOut()
+    /**
+     * Returns file descriptor identifier for the configured stream.
+     */
+    private int getFileno()
     {
-        if ( out == null )
+        switch ( getStream() )
         {
-            // wrapping has logic which can detect, to some limited degree, if 
ansi is supported and strip if needed
-            out = new PrintStream( AnsiConsole.wrapOutputStream( System.out ) 
);
+            case OUT:
+                return CLibrary.STDOUT_FILENO;
+
+            case ERR:
+                return CLibrary.STDERR_FILENO;
+
+            default:
+                throw new InternalError();
         }
-        return out;
     }
 
+    /**
+     * Returns an ANSI aware wrapped stream.
+     *
+     * Needed so that jansi (limited) logic to detect supported streams is 
applied and copes with
+     * redirection of stream to file to strip out ANSI sequences.
+     */
     @Override
-    public void onEvent( final Event event ) throws Exception
+    protected PrintStream getOut()
     {
-        assert event != null;
-
-        if ( !isLoggable( event ) )
-        {
-            return;
-        }
-
-        PrintStream out = getOut();
-        synchronized ( out )
+        if ( out == null )
         {
-            out.print( render( event ) );
-            out.flush();
+            out = new PrintStream( AnsiConsole.wrapOutputStream( 
super.getOut(), getFileno() ) );
         }
+        return out;
     }
 }

Reply via email to