0

Revert "Only use ColorMapper if jansi is present, ignore it if not"

This reverts commit 50c1303034.
This commit is contained in:
TheE
2017-07-31 16:17:07 +02:00
parent 3ab68c1e37
commit 08dc4dbaa7
2 changed files with 19 additions and 68 deletions

View File

@@ -16,13 +16,13 @@
*/ */
package info.ronjenkins.slf4bukkit; package info.ronjenkins.slf4bukkit;
import com.google.common.collect.ImmutableMap; import java.util.Map;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.fusesource.jansi.Ansi; import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.Ansi.Attribute; import org.fusesource.jansi.Ansi.Attribute;
import java.util.Map; import com.google.common.collect.ImmutableMap;
/** /**
* Utility class that maps {@link ChatColor} values to their JAnsi equivalents, * Utility class that maps {@link ChatColor} values to their JAnsi equivalents,
@@ -32,11 +32,8 @@ import java.util.Map;
*/ */
public final class ColorMapper { public final class ColorMapper {
private ColorMapper() {
}
// @formatter:off // @formatter:off
private final Map<ChatColor, String> MAP = ImmutableMap.<ChatColor, String>builder() private static final Map<ChatColor, String> MAP = ImmutableMap.<ChatColor, String>builder()
.put(ChatColor.BLACK, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).boldOff().toString()) .put(ChatColor.BLACK, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).boldOff().toString())
.put(ChatColor.DARK_BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).boldOff().toString()) .put(ChatColor.DARK_BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).boldOff().toString())
.put(ChatColor.DARK_GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).boldOff().toString()) .put(ChatColor.DARK_GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).boldOff().toString())
@@ -62,47 +59,20 @@ public final class ColorMapper {
.build(); .build();
// @formatter:on // @formatter:on
/**
* Attempts to create a new ColorMapper.
*
* @return a new ColorMapper instance
* @throws UnsupportedByBukkitImplementationException if colorMapping is not supported on the BukkitImplementation on
* which this method is called
*/
public static ColorMapper create() throws UnsupportedByBukkitImplementationException {
try {
return new ColorMapper();
} catch (Throwable e) {
throw new UnsupportedByBukkitImplementationException(e);
}
}
/** /**
* Translates {@link ChatColor} directives to their JAnsi equivalents. * Translates {@link ChatColor} directives to their JAnsi equivalents.
* *
* @param input null is coerced to the empty string. * @param input
* null is coerced to the empty string.
* @return never null. * @return never null.
*/ */
public String map(final String input) { public static String map(final String input) {
if (input == null) { if (input == null) { return ""; }
return "";
}
String output = input; String output = input;
for (final Map.Entry<ChatColor, String> mapping : MAP.entrySet()) { for (final Map.Entry<ChatColor, String> mapping : ColorMapper.MAP.entrySet()) {
output = output.replace(mapping.getKey().toString(), mapping.getValue()); output = output.replace(mapping.getKey().toString(), mapping.getValue());
} }
return output; return output;
} }
/**
* Thrown when an operation is not supported by the Bukkit implementation the operation runs on.
*/
public static class UnsupportedByBukkitImplementationException extends Exception {
private UnsupportedByBukkitImplementationException(Throwable e) {
super(e);
}
}
} }

View File

@@ -44,11 +44,17 @@
*/ */
package org.slf4j.impl; package org.slf4j.impl;
import com.google.common.collect.ImmutableMap;
import info.ronjenkins.slf4bukkit.ColorMapper; import info.ronjenkins.slf4bukkit.ColorMapper;
import info.ronjenkins.slf4bukkit.ColorMarker; import info.ronjenkins.slf4bukkit.ColorMarker;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.commons.lang.exception.ExceptionUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@@ -61,13 +67,7 @@ import org.slf4j.helpers.FormattingTuple;
import org.slf4j.helpers.MessageFormatter; import org.slf4j.helpers.MessageFormatter;
import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.Yaml;
import java.io.IOException; import com.google.common.collect.ImmutableMap;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
@@ -219,22 +219,11 @@ public final class BukkitLoggerAdapter implements Logger {
private final String name; private final String name;
// The short name of this simple log instance // The short name of this simple log instance
private transient String shortLogName = null; private transient String shortLogName = null;
private final ThreadLocal<ColorMapper> mapper;
// NOTE: BukkitPluginLoggerAdapter constructor should have only package access // NOTE: BukkitPluginLoggerAdapter constructor should have only package access
// so that only BukkitPluginLoggerFactory be able to create one. // so that only BukkitPluginLoggerFactory be able to create one.
BukkitLoggerAdapter(final String name) { BukkitLoggerAdapter(final String name) {
this.name = name; this.name = name;
this.mapper = new ThreadLocal<ColorMapper>() {
@Override
protected ColorMapper initialValue() {
try {
return ColorMapper.create();
} catch (ColorMapper.UnsupportedByBukkitImplementationException ignore) {
return null;
}
}
};
} }
/** /**
@@ -363,7 +352,7 @@ public final class BukkitLoggerAdapter implements Logger {
* *
* @param property * @param property
* the config property where the map exists. * the config property where the map exists.
* @param defaultValues * @param defaultValue
* the fallback values returned by this method. * the fallback values returned by this method.
* @return never null, always contains one mapping for each {@link Level}, and * @return never null, always contains one mapping for each {@link Level}, and
* contains no null keys/values. Equal to {@code defaultValue} if the * contains no null keys/values. Equal to {@code defaultValue} if the
@@ -1054,14 +1043,6 @@ public final class BukkitLoggerAdapter implements Logger {
// Log the message. // Log the message.
logger.log(BukkitLoggerAdapter.slf4jLevelIntToBukkitJULLevel(level), logger.log(BukkitLoggerAdapter.slf4jLevelIntToBukkitJULLevel(level),
mapColors(buf.toString())); ColorMapper.map(buf.toString()));
}
private String mapColors(String input) {
ColorMapper colorMapper = mapper.get();
if (colorMapper != null) {
return colorMapper.map(input);
}
return input;
} }
} }