[MSHARED-587] extracted LoggerLevelRenderer interface from MessageBuilder
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1759175 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java b/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java
index 9f71656..2d59bc9 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilder.java
@@ -26,7 +26,7 @@
* <a href="http://fusesource.github.io/jansi/">Jansi</a> with configurable styles through {@link Style}.
*/
class AnsiMessageBuilder
- implements MessageBuilder
+ implements MessageBuilder, LoggerLevelRenderer
{
private Ansi ansi;
@@ -50,15 +50,29 @@
this.ansi = ansi;
}
- public AnsiMessageBuilder debug( Object message )
+ public String debug( String level )
{
- Style.DEBUG.apply( ansi ).a( message ).reset();
- return this;
+ return Style.DEBUG.apply( ansi ).a( level ).reset().toString();
}
- public AnsiMessageBuilder info( Object message )
+ public String info( String level )
{
- Style.INFO.apply( ansi ).a( message ).reset();
+ return Style.INFO.apply( ansi ).a( level ).reset().toString();
+ }
+
+ public String warning( String level )
+ {
+ return Style.WARNING.apply( ansi ).a( level ).reset().toString();
+ }
+
+ public String error( String level )
+ {
+ return Style.ERROR.apply( ansi ).a( level ).reset().toString();
+ }
+
+ public AnsiMessageBuilder success( Object message )
+ {
+ Style.SUCCESS.apply( ansi ).a( message ).reset();
return this;
}
@@ -68,18 +82,6 @@
return this;
}
- public AnsiMessageBuilder error( Object message )
- {
- Style.ERROR.apply( ansi ).a( message ).reset();
- return this;
- }
-
- public AnsiMessageBuilder success( Object message )
- {
- Style.SUCCESS.apply( ansi ).a( message ).reset();
- return this;
- }
-
public AnsiMessageBuilder failure( Object message )
{
Style.FAILURE.apply( ansi ).a( message ).reset();
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/LoggerLevelRenderer.java b/src/main/java/org/apache/maven/shared/utils/logging/LoggerLevelRenderer.java
new file mode 100644
index 0000000..9dac0eb
--- /dev/null
+++ b/src/main/java/org/apache/maven/shared/utils/logging/LoggerLevelRenderer.java
@@ -0,0 +1,53 @@
+package org.apache.maven.shared.utils.logging;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Logger level renderer, intended for Maven slf4j logging provider implementers to render
+ * logger level.
+ *
+ * @since 3.2.0
+ */
+public interface LoggerLevelRenderer
+{
+ /**
+ * Render DEBUG level.
+ * By default, bold cyan
+ */
+ String debug( String level );
+
+ /**
+ * Render INFO level.
+ * By default, bold blue
+ */
+ String info( String level );
+
+ /**
+ * Render WARNING level.
+ * By default, bold yellow
+ */
+ String warning( String level );
+
+ /**
+ * Render ERROR level.
+ * By default, bold red
+ */
+ String error( String level );
+}
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/MessageBuilder.java b/src/main/java/org/apache/maven/shared/utils/logging/MessageBuilder.java
index 37fbbc8..060e824 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/MessageBuilder.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/MessageBuilder.java
@@ -22,40 +22,23 @@
/**
* Message builder that supports configurable styling.
* @see MessageUtils
+ * @since 3.1.0
*/
public interface MessageBuilder
{
/**
- * Append message content for DEBUG level.
- * By default, bold cyan
- */
- MessageBuilder debug( Object message );
-
- /**
- * Append message content for INFO level.
- * By default, bold blue
- */
- MessageBuilder info( Object message );
-
- /**
- * Append message content in warning style or WARNING level.
- * By default, bold yellow
- */
- MessageBuilder warning( Object message );
-
- /**
- * Append message content for ERROR level.
- * By default, bold red
- */
- MessageBuilder error( Object message );
-
- /**
* Append message content in success style.
* By default, bold green
*/
MessageBuilder success( Object message );
/**
+ * Append message content in warning style.
+ * By default, bold yellow
+ */
+ MessageBuilder warning( Object message );
+
+ /**
* Append message content in failure style.
* By default, bold red
*/
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java b/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java
index 0a67bb1..ece58f1 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/MessageUtils.java
@@ -28,6 +28,7 @@
* <p>
* Internally, <a href="http://fusesource.github.io/jansi/">Jansi</a> is used to render
* <a href="https://en.wikipedia.org/wiki/ANSI_escape_code#Colors">ANSI colors</a> on any platform.
+ * @since 3.1.0
*/
public class MessageUtils
{
@@ -121,6 +122,16 @@
}
/**
+ * Create a message buffer with an internal buffer of defined size.
+ * @return a new buffer
+ */
+ @SuppressWarnings( "checkstyle:magicnumber" )
+ public static LoggerLevelRenderer logger()
+ {
+ return JANSI ? new AnsiMessageBuilder( 20 ) : new PlainMessageBuilder( 7 );
+ }
+
+ /**
* Remove any ANSI code from a message (colors or other escape sequences).
* @param msg message eventually containing ANSI codes
* @return the message with ANSI codes removed
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/PlainMessageBuilder.java b/src/main/java/org/apache/maven/shared/utils/logging/PlainMessageBuilder.java
index e60a762..abee6dd 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/PlainMessageBuilder.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/PlainMessageBuilder.java
@@ -23,7 +23,7 @@
* Message builder implementation that just ignores styling, for Maven version earlier than 3.4.0.
*/
class PlainMessageBuilder
- implements MessageBuilder
+ implements MessageBuilder, LoggerLevelRenderer
{
private StringBuilder buffer;
@@ -42,24 +42,24 @@
buffer = new StringBuilder( size );
}
- public PlainMessageBuilder debug( Object message )
+ public String debug( String level )
{
- return a( message );
+ return a( level ).toString();
}
- public PlainMessageBuilder info( Object message )
+ public String info( String level )
{
- return a( message );
+ return a( level ).toString();
}
- public PlainMessageBuilder warning( Object message )
+ public String warning( String level )
{
- return a( message );
+ return a( level ).toString();
}
- public PlainMessageBuilder error( Object message )
+ public String error( String level )
{
- return a( message );
+ return a( level ).toString();
}
public PlainMessageBuilder success( Object message )
@@ -67,6 +67,11 @@
return a( message );
}
+ public PlainMessageBuilder warning( Object message )
+ {
+ return a( message );
+ }
+
public PlainMessageBuilder failure( Object message )
{
return a( message );
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/Style.java b/src/main/java/org/apache/maven/shared/utils/logging/Style.java
index defc2aa..756ff14 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/Style.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/Style.java
@@ -26,6 +26,7 @@
/**
* Configurable message styles.
+ * @since 3.1.0
*/
enum Style
{
diff --git a/src/main/java/org/apache/maven/shared/utils/logging/package-info.java b/src/main/java/org/apache/maven/shared/utils/logging/package-info.java
index 2ff1c66..5f8e342 100644
--- a/src/main/java/org/apache/maven/shared/utils/logging/package-info.java
+++ b/src/main/java/org/apache/maven/shared/utils/logging/package-info.java
@@ -42,6 +42,7 @@
* <code>red</code>, <code>green</code>, <code>yellow</code>, <code>blue</code>, <code>magenta</code>,
* <code>cyan</code> or <code>white</code>, eventually with <code>bright</code> prefix</li>
* </ul>
+ * @since 3.1.0
*/
package org.apache.maven.shared.utils.logging;
diff --git a/src/test/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilderTest.java b/src/test/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilderTest.java
index d1ae7ea..81a32b3 100644
--- a/src/test/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilderTest.java
+++ b/src/test/java/org/apache/maven/shared/utils/logging/AnsiMessageBuilderTest.java
@@ -39,33 +39,33 @@
@Test
public void should_color_debug()
{
- ansiMessageBuilder.debug( "a debug message" );
+ ansiMessageBuilder.debug( "DEBUG" );
- assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;36ma debug message\u001B[m" ) );
+ assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;36mDEBUG\u001B[m" ) );
}
@Test
public void should_color_info()
{
- ansiMessageBuilder.info( "an info message" );
+ ansiMessageBuilder.info( "INFO" );
- assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;34man info message\u001B[m" ) );
+ assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;34mINFO\u001B[m" ) );
}
@Test
public void should_color_warning_and_reset()
{
- ansiMessageBuilder.warning( "a warning message" );
+ ansiMessageBuilder.warning( "WARNING" );
- assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;33ma warning message\u001B[m" ) );
+ assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;33mWARNING\u001B[m" ) );
}
@Test
public void should_color_error()
{
- ansiMessageBuilder.error( "an error message" );
+ ansiMessageBuilder.error( "ERROR" );
- assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;31man error message\u001B[m" ) );
+ assertThat( ansiMessageBuilder.toString(), equalTo( "\u001B[1;31mERROR\u001B[m" ) );
}
@Test