diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fb7c6f0..692ea9c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,6 +13,7 @@ cutin = "0.1.1-cad019e" [libraries] junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" } slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j"} +slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j"} javacord = { module = "org.javacord:javacord", version.ref = "javacord"} discord4j = { module = "com.discord4j:discord4j-core", version.ref = "discord4j"} geantyref = { module = "io.leangen.geantyref:geantyref", version.ref = "geantyref"} diff --git a/lib/src/main/java/net/tomatentum/marinara/Marinara.java b/lib/src/main/java/net/tomatentum/marinara/Marinara.java index 643271c..8f65794 100644 --- a/lib/src/main/java/net/tomatentum/marinara/Marinara.java +++ b/lib/src/main/java/net/tomatentum/marinara/Marinara.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.List; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.cutin.MethodExecutor; import net.tomatentum.cutin.ProcessorMethodExecutor; @@ -18,14 +19,13 @@ import net.tomatentum.marinara.interaction.ident.InteractionIdentifier; import net.tomatentum.marinara.interaction.ident.RootCommandIdentifier; import net.tomatentum.marinara.interaction.processor.AutocompleteInteractionProcessor; import net.tomatentum.marinara.interaction.processor.DirectInteractionProcessor; -import net.tomatentum.marinara.util.LoggerUtil; import net.tomatentum.marinara.util.ObjectAggregator; import net.tomatentum.marinara.wrapper.IdentifierProvider; import net.tomatentum.marinara.wrapper.LibraryWrapper; public class Marinara { - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); public static Marinara load(LibraryWrapper wrapper) { return new Marinara(wrapper); diff --git a/lib/src/main/java/net/tomatentum/marinara/checks/AppliedCheck.java b/lib/src/main/java/net/tomatentum/marinara/checks/AppliedCheck.java index 50431ce..5dac01f 100644 --- a/lib/src/main/java/net/tomatentum/marinara/checks/AppliedCheck.java +++ b/lib/src/main/java/net/tomatentum/marinara/checks/AppliedCheck.java @@ -3,9 +3,9 @@ package net.tomatentum.marinara.checks; import java.lang.annotation.Annotation; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.cutin.method.ReflectedMethod; -import net.tomatentum.marinara.util.LoggerUtil; public record AppliedCheck( Annotation annotation, @@ -13,7 +13,7 @@ public record AppliedCheck( ReflectedMethod postExec ) { - private static Logger logger = LoggerUtil.getLogger(AppliedCheck.class); + private static Logger logger = LoggerFactory.getLogger(AppliedCheck.class); public boolean pre(Object context) { logger.debug("Running InteractionCheck preExec {} with annotation {}", preExec(), annotation()); diff --git a/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java b/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java index 0fc0f67..0c931c8 100644 --- a/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java +++ b/lib/src/main/java/net/tomatentum/marinara/interaction/commands/SlashCommandDefinition.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Set; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.marinara.interaction.commands.annotation.CommandChoices; import net.tomatentum.marinara.interaction.commands.annotation.SlashCommandOption; @@ -14,7 +15,6 @@ import net.tomatentum.marinara.interaction.commands.choice.EnumChoices; import net.tomatentum.marinara.interaction.ident.InteractionIdentifier; import net.tomatentum.marinara.interaction.ident.RootCommandIdentifier; import net.tomatentum.marinara.interaction.ident.SlashCommandIdentifier; -import net.tomatentum.marinara.util.LoggerUtil; public class SlashCommandDefinition { @@ -30,7 +30,7 @@ public class SlashCommandDefinition { private RootCommandIdentifier rootIdentifier; private boolean isRootCommand; - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); public SlashCommandDefinition(RootCommandIdentifier rootIdentifier) { this.entries = new HashSet<>(); diff --git a/lib/src/main/java/net/tomatentum/marinara/interaction/ident/InteractionIdentifier.java b/lib/src/main/java/net/tomatentum/marinara/interaction/ident/InteractionIdentifier.java index 5f4e090..2fd6b42 100644 --- a/lib/src/main/java/net/tomatentum/marinara/interaction/ident/InteractionIdentifier.java +++ b/lib/src/main/java/net/tomatentum/marinara/interaction/ident/InteractionIdentifier.java @@ -91,8 +91,8 @@ public class InteractionIdentifier { @Override public String toString() { if (parent() == null) - return name(); - return "%s.%s".formatted(name(), parent().toString()); + return name() + " - " + type(); + return "%s:%s".formatted(name(), parent().toString()); } public static class Builder { diff --git a/lib/src/main/java/net/tomatentum/marinara/interaction/processor/InteractionMethodProcessor.java b/lib/src/main/java/net/tomatentum/marinara/interaction/processor/InteractionMethodProcessor.java index 9424c75..273ff00 100644 --- a/lib/src/main/java/net/tomatentum/marinara/interaction/processor/InteractionMethodProcessor.java +++ b/lib/src/main/java/net/tomatentum/marinara/interaction/processor/InteractionMethodProcessor.java @@ -3,17 +3,17 @@ package net.tomatentum.marinara.interaction.processor; import java.util.Set; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.cutin.MethodProcessor; import net.tomatentum.cutin.container.MethodContainer; import net.tomatentum.marinara.interaction.InteractionType; import net.tomatentum.marinara.interaction.ident.InteractionIdentifier; -import net.tomatentum.marinara.util.LoggerUtil; import net.tomatentum.marinara.wrapper.IdentifierProvider; public abstract class InteractionMethodProcessor implements MethodProcessor { - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); private IdentifierProvider provider; private Set types; diff --git a/lib/src/main/java/net/tomatentum/marinara/parser/ButtonParser.java b/lib/src/main/java/net/tomatentum/marinara/parser/ButtonParser.java index a2d533e..7af03fc 100644 --- a/lib/src/main/java/net/tomatentum/marinara/parser/ButtonParser.java +++ b/lib/src/main/java/net/tomatentum/marinara/parser/ButtonParser.java @@ -4,18 +4,18 @@ import java.lang.reflect.Method; import java.util.function.Consumer; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.cutin.MethodParser; import net.tomatentum.cutin.util.ReflectionUtil; import net.tomatentum.marinara.interaction.annotation.Button; -import net.tomatentum.marinara.util.LoggerUtil; public class ButtonParser implements MethodParser { private Method method; private Consumer consumer; - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); public ButtonParser(Method method, Consumer consumer) { this.method = method; diff --git a/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckClassParser.java b/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckClassParser.java index 0023e3f..26da135 100644 --- a/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckClassParser.java +++ b/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckClassParser.java @@ -4,12 +4,17 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.function.Consumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.leangen.geantyref.GenericTypeReflector; import net.tomatentum.cutin.MethodParser; import net.tomatentum.marinara.checks.InteractionCheck; public class InteractionCheckClassParser implements MethodParser { + private Logger logger = LoggerFactory.getLogger(getClass()); + private Class> interactionCheckType; private Consumer annotationTypeConsumer; @@ -22,6 +27,7 @@ public class InteractionCheckClassParser implements MethodParser { public void parse() { ParameterizedType type = (ParameterizedType) GenericTypeReflector.getExactSuperType(interactionCheckType, InteractionCheck.class); Type typeParam = type.getActualTypeArguments()[0]; + logger.trace("Parsed InteractionCheck Annotation {}", typeParam); this.annotationTypeConsumer.accept(typeParam); } diff --git a/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckParser.java b/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckParser.java index 4e3a36c..ebdcd48 100644 --- a/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckParser.java +++ b/lib/src/main/java/net/tomatentum/marinara/parser/InteractionCheckParser.java @@ -6,6 +6,7 @@ import java.util.Arrays; import java.util.function.Consumer; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.cutin.MethodParser; import net.tomatentum.cutin.container.MethodContainer; @@ -14,7 +15,6 @@ import net.tomatentum.marinara.checks.AppliedCheck; import net.tomatentum.marinara.checks.CheckExecutionContext; import net.tomatentum.marinara.checks.CheckMethodIdentifier; import net.tomatentum.marinara.checks.CheckMethodIdentifier.CheckMethodType; -import net.tomatentum.marinara.util.LoggerUtil; public class InteractionCheckParser implements MethodParser { @@ -22,7 +22,7 @@ public class InteractionCheckParser implements MethodParser { private Method method; private Consumer consumer; - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); public InteractionCheckParser(Method method, Consumer consumer, MethodContainer checkContainer) { this.checkContainer = checkContainer; diff --git a/lib/src/main/java/net/tomatentum/marinara/parser/SlashCommandParser.java b/lib/src/main/java/net/tomatentum/marinara/parser/SlashCommandParser.java index c6ca43b..2f1bab5 100644 --- a/lib/src/main/java/net/tomatentum/marinara/parser/SlashCommandParser.java +++ b/lib/src/main/java/net/tomatentum/marinara/parser/SlashCommandParser.java @@ -4,6 +4,7 @@ import java.lang.reflect.Method; import java.util.function.Consumer; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.cutin.MethodParser; import net.tomatentum.cutin.util.ReflectionUtil; @@ -13,14 +14,13 @@ import net.tomatentum.marinara.interaction.commands.annotation.SubCommand; import net.tomatentum.marinara.interaction.commands.annotation.SubCommandGroup; import net.tomatentum.marinara.interaction.ident.InteractionIdentifier; import net.tomatentum.marinara.interaction.ident.SlashCommandIdentifier; -import net.tomatentum.marinara.util.LoggerUtil; public class SlashCommandParser implements MethodParser { private Method method; private Consumer consumer; - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); public SlashCommandParser(Method method, Consumer consumer) { this.method = method; diff --git a/lib/src/main/java/net/tomatentum/marinara/util/LoggerUtil.java b/lib/src/main/java/net/tomatentum/marinara/util/LoggerUtil.java deleted file mode 100644 index 54eb77b..0000000 --- a/lib/src/main/java/net/tomatentum/marinara/util/LoggerUtil.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.tomatentum.marinara.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.helpers.NOPLoggerFactory; - -public class LoggerUtil { - public static Logger getLogger(String name) { - if (LoggerFactory.getILoggerFactory() instanceof NOPLoggerFactory) - return new SimpleLogger(name); - return LoggerFactory.getLogger(name); - } - - public static Logger getLogger(Class clazz) { - return getLogger(clazz.getName()); - } -} diff --git a/lib/src/main/java/net/tomatentum/marinara/util/SimpleLogger.java b/lib/src/main/java/net/tomatentum/marinara/util/SimpleLogger.java deleted file mode 100644 index db6a2a5..0000000 --- a/lib/src/main/java/net/tomatentum/marinara/util/SimpleLogger.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.tomatentum.marinara.util; - -import org.slf4j.Marker; -import org.slf4j.event.Level; -import org.slf4j.helpers.LegacyAbstractLogger; -import org.slf4j.helpers.MessageFormatter; - -public class SimpleLogger extends LegacyAbstractLogger { - - private String name; - - public SimpleLogger(String name) { - this.name = name; - } - - @Override - public boolean isTraceEnabled() { - return true; - } - - @Override - public boolean isDebugEnabled() { - return true; - } - - @Override - public boolean isInfoEnabled() { - return true; - } - - @Override - public boolean isWarnEnabled() { - return true; - } - - @Override - public boolean isErrorEnabled() { - return true; - } - - @Override - protected String getFullyQualifiedCallerName() { - return this.name; - } - - @Override - protected void handleNormalizedLoggingCall(Level level, Marker marker, String messagePattern, Object[] arguments, - Throwable throwable) { - String formatted = MessageFormatter.basicArrayFormat(messagePattern, arguments); - System.out.println("[%s] %s => %s".formatted(level, this.name, formatted)); - } - - - -} diff --git a/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandConverter.java b/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandConverter.java index 0183de4..5624f2a 100644 --- a/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandConverter.java +++ b/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandConverter.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.List; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.marinara.interaction.commands.SlashCommandDefinition; import net.tomatentum.marinara.interaction.commands.annotation.SlashCommandOption; @@ -12,7 +13,6 @@ import net.tomatentum.marinara.interaction.commands.annotation.SlashCommandOptio import net.tomatentum.marinara.interaction.ident.InteractionIdentifier; import net.tomatentum.marinara.interaction.ident.RootCommandIdentifier; import net.tomatentum.marinara.interaction.ident.SlashCommandIdentifier; -import net.tomatentum.marinara.util.LoggerUtil; public class CommandConverter { @@ -20,7 +20,7 @@ public class CommandConverter(spec); } - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); private Spec spec; diff --git a/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandRegisterer.java b/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandRegisterer.java index 5cc8053..d178411 100644 --- a/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandRegisterer.java +++ b/lib/src/main/java/net/tomatentum/marinara/wrapper/CommandRegisterer.java @@ -5,9 +5,9 @@ import java.util.Set; import java.util.stream.Collectors; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import net.tomatentum.marinara.interaction.commands.SlashCommandDefinition; -import net.tomatentum.marinara.util.LoggerUtil; import net.tomatentum.marinara.util.ObjectAggregator; public class CommandRegisterer { @@ -16,7 +16,7 @@ public class CommandRegisterer { return new CommandRegisterer(strategy, converter); } - private Logger logger = LoggerUtil.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); private Strategy strategy; private CommandConverter converter; @@ -29,13 +29,17 @@ public class CommandRegisterer { public void register(SlashCommandDefinition[] slashDefs) { Set> serverCommands = new ObjectAggregator>( def -> Arrays.stream(def.serverIds()).boxed().toList(), - (l, o) -> l.add(converter.convert(o)), + (l, o) -> { + logger.debug("Added {} for server ({}) registration.", o.rootIdentifier(), l.serverId()); + l.add(converter.convert(o)); + }, ServerCommandList::new) .aggregate(Arrays.asList(slashDefs)).stream() .collect(Collectors.toSet()); Set globalCommands = Arrays.stream(slashDefs) .filter(x -> x.serverIds().length <= 0) + .peek(c -> logger.debug("Added {} for global registration.", c.rootIdentifier())) .map(converter::convert) .collect(Collectors.toSet()); diff --git a/lib/src/main/java/net/tomatentum/marinara/wrapper/IdentifierProvider.java b/lib/src/main/java/net/tomatentum/marinara/wrapper/IdentifierProvider.java index d96d6f2..28d23fc 100644 --- a/lib/src/main/java/net/tomatentum/marinara/wrapper/IdentifierProvider.java +++ b/lib/src/main/java/net/tomatentum/marinara/wrapper/IdentifierProvider.java @@ -8,11 +8,11 @@ import java.util.List; import java.util.Map; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import io.leangen.geantyref.GenericTypeReflector; import net.tomatentum.cutin.util.ReflectionUtil; import net.tomatentum.marinara.interaction.ident.InteractionIdentifier; -import net.tomatentum.marinara.util.LoggerUtil; public class IdentifierProvider { @@ -20,8 +20,9 @@ public class IdentifierProvider { return new IdentifierProvider(Arrays.asList(converter)); } + private Logger logger = LoggerFactory.getLogger(getClass()); + private Map, Converter> converter; - private Logger logger = LoggerUtil.getLogger(getClass()); private IdentifierProvider(List> converter) { this.converter = new HashMap<>(); @@ -47,7 +48,9 @@ public class IdentifierProvider { @SuppressWarnings("unchecked") Converter conv = (Converter) converter.get(type); - return conv.convert(context); + InteractionIdentifier result = conv.convert(context); + logger.trace("Converted {} to {} using {}", context, result, conv); + return result; } @FunctionalInterface diff --git a/wrapper/discord4j/build.gradle.kts b/wrapper/discord4j/build.gradle.kts index aa43096..b89d503 100644 --- a/wrapper/discord4j/build.gradle.kts +++ b/wrapper/discord4j/build.gradle.kts @@ -17,6 +17,8 @@ dependencies { testImplementation(libs.discord4j) testRuntimeOnly("org.junit.platform:junit-platform-launcher") + testImplementation(libs.slf4j.simple) + implementation(libs.slf4j) implementation(libs.discord4j) { exclude(module="discord4j-voice") diff --git a/wrapper/discord4j/src/main/java/net/tomatentum/marinara/wrapper/discord4j/Discord4JRegistererStrategy.java b/wrapper/discord4j/src/main/java/net/tomatentum/marinara/wrapper/discord4j/Discord4JRegistererStrategy.java index fea6e5c..7f84f82 100644 --- a/wrapper/discord4j/src/main/java/net/tomatentum/marinara/wrapper/discord4j/Discord4JRegistererStrategy.java +++ b/wrapper/discord4j/src/main/java/net/tomatentum/marinara/wrapper/discord4j/Discord4JRegistererStrategy.java @@ -10,7 +10,7 @@ import net.tomatentum.marinara.wrapper.CommandRegisterer; import net.tomatentum.marinara.wrapper.ServerCommandList; public class Discord4JRegistererStrategy implements CommandRegisterer.Strategy { - + private ApplicationService appService; private long applicationId; diff --git a/wrapper/discord4j/src/test/resources/simplelogger.properties b/wrapper/discord4j/src/test/resources/simplelogger.properties new file mode 100644 index 0000000..a25b6c7 --- /dev/null +++ b/wrapper/discord4j/src/test/resources/simplelogger.properties @@ -0,0 +1,7 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. + +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=trace \ No newline at end of file diff --git a/wrapper/javacord/build.gradle.kts b/wrapper/javacord/build.gradle.kts index 525933d..d5eb471 100644 --- a/wrapper/javacord/build.gradle.kts +++ b/wrapper/javacord/build.gradle.kts @@ -16,6 +16,8 @@ dependencies { testImplementation(libs.mockito) testRuntimeOnly("org.junit.platform:junit-platform-launcher") + testImplementation(libs.slf4j.simple) + implementation(libs.slf4j) implementation(libs.javacord) implementation(libs.geantyref) diff --git a/wrapper/javacord/src/test/resources/simplelogger.properties b/wrapper/javacord/src/test/resources/simplelogger.properties new file mode 100644 index 0000000..a25b6c7 --- /dev/null +++ b/wrapper/javacord/src/test/resources/simplelogger.properties @@ -0,0 +1,7 @@ +# SLF4J's SimpleLogger configuration file +# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err. + +# Default logging detail level for all instances of SimpleLogger. +# Must be one of ("trace", "debug", "info", "warn", or "error"). +# If not specified, defaults to "info". +org.slf4j.simpleLogger.defaultLogLevel=trace \ No newline at end of file