This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit a4bd132cc3e7dc7e0d9edbab8db27a9fd4595e40
Author: Matt Sicker <[email protected]>
AuthorDate: Tue Jan 2 17:11:14 2024 -0600

    Make ResolvableKey a record
---
 .../log4j/plugins/di/DefaultInstanceFactory.java   | 14 ++++++-------
 .../plugins/di/NoQualifiedBindingException.java    |  4 ++--
 .../log4j/plugins/di/NotInjectableException.java   |  2 +-
 .../resolver/AbstractAttributeFactoryResolver.java |  4 ++--
 .../di/resolver/OptionalFactoryResolver.java       |  6 +++---
 .../di/resolver/PluginElementFactoryResolver.java  |  4 ++--
 .../resolver/PluginNamespaceFactoryResolver.java   |  2 +-
 .../di/resolver/PluginValueFactoryResolver.java    |  6 +++---
 .../di/resolver/SupplierFactoryResolver.java       |  4 ++--
 .../log4j/plugins/di/spi/ResolvableKey.java        | 23 +---------------------
 .../log4j/plugins/internal/util/BeanUtils.java     |  2 +-
 11 files changed, 25 insertions(+), 46 deletions(-)

diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/DefaultInstanceFactory.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/DefaultInstanceFactory.java
index 477211c634..da9834f1c4 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/DefaultInstanceFactory.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/DefaultInstanceFactory.java
@@ -103,8 +103,8 @@ public class DefaultInstanceFactory implements 
ConfigurableInstanceFactory {
 
     @Override
     public <T> Supplier<T> getFactory(final ResolvableKey<T> resolvableKey) {
-        final Key<T> key = resolvableKey.getKey();
-        final Supplier<T> existingBinding = bindings.get(key, 
resolvableKey.getAliases());
+        final Key<T> key = resolvableKey.key();
+        final Supplier<T> existingBinding = bindings.get(key, 
resolvableKey.aliases());
         if (existingBinding != null) {
             return existingBinding;
         }
@@ -117,14 +117,14 @@ public class DefaultInstanceFactory implements 
ConfigurableInstanceFactory {
 
     protected <T> Optional<Supplier<T>> resolveKey(final ResolvableKey<T> 
resolvableKey) {
         return factoryResolvers.stream()
-                .filter(resolver -> 
resolver.supportsKey(resolvableKey.getKey()))
+                .filter(resolver -> resolver.supportsKey(resolvableKey.key()))
                 .findFirst()
                 .map(Cast::<FactoryResolver<T>>cast)
                 .map(resolver -> resolver.getFactory(resolvableKey, this));
     }
 
     protected <T> Supplier<T> createDefaultFactory(final ResolvableKey<T> 
resolvableKey) {
-        final Key<T> key = resolvableKey.getKey();
+        final Key<T> key = resolvableKey.key();
         if (key.getQualifierType() != null) {
             // TODO(ms): would be useful to provide some logs about possible 
matches
             throw new NoQualifiedBindingException(resolvableKey);
@@ -139,7 +139,7 @@ public class DefaultInstanceFactory implements 
ConfigurableInstanceFactory {
                 return null;
             }
             instance = postProcessBeforeInitialization(resolvableKey, 
instance);
-            injectMembers(key, instance, resolvableKey.getDependencyChain());
+            injectMembers(key, instance, resolvableKey.dependencyChain());
             instance = postProcessAfterInitialization(resolvableKey, instance);
             if (instance instanceof Supplier<?>) {
                 final Supplier<T> supplier = Cast.cast(instance);
@@ -153,8 +153,8 @@ public class DefaultInstanceFactory implements 
ConfigurableInstanceFactory {
         final Class<T> rawType = resolvableKey.getRawType();
         validate(rawType, resolvableKey.getName(), rawType);
         final Executable factory = 
BeanUtils.getInjectableFactory(resolvableKey);
-        final Key<T> key = resolvableKey.getKey();
-        final DependencyChain updatedChain = 
resolvableKey.getDependencyChain().withDependency(key);
+        final Key<T> key = resolvableKey.key();
+        final DependencyChain updatedChain = 
resolvableKey.dependencyChain().withDependency(key);
         final Object[] arguments = 
InjectionPoint.fromExecutable(factory).stream()
                 .map(point -> getArgumentFactory(point, updatedChain).get())
                 .toArray();
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NoQualifiedBindingException.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NoQualifiedBindingException.java
index ede272cebe..a54f2e333b 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NoQualifiedBindingException.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NoQualifiedBindingException.java
@@ -34,7 +34,7 @@ public class NoQualifiedBindingException extends 
InjectException {
 
     private static String formatMessage(final ResolvableKey<?> key) {
         final StringBuilder sb = new StringBuilder("No qualified binding 
registered for ");
-        final DependencyChain dependencyChain = key.getDependencyChain();
+        final DependencyChain dependencyChain = key.dependencyChain();
         if (!dependencyChain.isEmpty()) {
             sb.append("chain ");
             for (final Key<?> dependency : dependencyChain) {
@@ -42,7 +42,7 @@ public class NoQualifiedBindingException extends 
InjectException {
                 sb.append(" -> ");
             }
         }
-        StringBuilders.appendValue(sb, key.getKey());
+        StringBuilders.appendValue(sb, key.key());
         return sb.toString();
     }
 }
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NotInjectableException.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NotInjectableException.java
index 56e93b49e8..17f844e11a 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NotInjectableException.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/NotInjectableException.java
@@ -37,7 +37,7 @@ public class NotInjectableException extends InjectException {
     }
 
     public NotInjectableException(final ResolvableKey<?> resolvableKey) {
-        this(resolvableKey.getDependencyChain(), resolvableKey.getKey());
+        this(resolvableKey.dependencyChain(), resolvableKey.key());
     }
 
     private NotInjectableException(final DependencyChain chain, final Object 
target) {
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/AbstractAttributeFactoryResolver.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/AbstractAttributeFactoryResolver.java
index bfd9a9c85d..574cc854bd 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/AbstractAttributeFactoryResolver.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/AbstractAttributeFactoryResolver.java
@@ -48,7 +48,7 @@ public abstract class AbstractAttributeFactoryResolver<T, A 
extends Annotation>
     public Supplier<T> getFactory(final ResolvableKey<T> resolvableKey, final 
InstanceFactory instanceFactory) {
         final InjectionPoint<?> injectionPoint = 
instanceFactory.getInstance(InjectionPoint.CURRENT_INJECTION_POINT);
         return () -> {
-            final Key<?> key = resolvableKey.getKey();
+            final Key<?> key = resolvableKey.key();
             final Type type = key.getType();
             final TypeConverter<T> typeConverter = 
instanceFactory.getTypeConverter(type);
             final AnnotatedElement element = injectionPoint.element();
@@ -62,7 +62,7 @@ public abstract class AbstractAttributeFactoryResolver<T, A 
extends Annotation>
                 resolver = StringValueResolver.NOOP;
             }
             LOGGER.trace("Configuring node {} attribute {}", node.getName(), 
key);
-            final String attribute = 
node.removeMatchingAttribute(key.getName(), resolvableKey.getAliases())
+            final String attribute = 
node.removeMatchingAttribute(key.getName(), resolvableKey.aliases())
                     .map(resolver::resolve)
                     .orElse(null);
             if (attribute != null) {
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/OptionalFactoryResolver.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/OptionalFactoryResolver.java
index 5ffcc41c2f..45c223f4e4 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/OptionalFactoryResolver.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/OptionalFactoryResolver.java
@@ -40,10 +40,10 @@ public class OptionalFactoryResolver<T> implements 
FactoryResolver<Optional<T>>
     @Override
     public Supplier<Optional<T>> getFactory(
             final ResolvableKey<Optional<T>> resolvableKey, final 
InstanceFactory instanceFactory) {
-        final Key<?> key = resolvableKey.getKey();
+        final Key<?> key = resolvableKey.key();
         final Key<T> itemKey = key.getParameterizedTypeArgument(0);
-        final Collection<String> aliases = resolvableKey.getAliases();
-        final DependencyChain dependencyChain = 
resolvableKey.getDependencyChain();
+        final Collection<String> aliases = resolvableKey.aliases();
+        final DependencyChain dependencyChain = 
resolvableKey.dependencyChain();
         if (itemKey == null) {
             throw new NotInjectableException(resolvableKey);
         }
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginElementFactoryResolver.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginElementFactoryResolver.java
index d769c2983e..20a790a109 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginElementFactoryResolver.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginElementFactoryResolver.java
@@ -58,8 +58,8 @@ public class PluginElementFactoryResolver<T> implements 
FactoryResolver<T> {
 
     @Override
     public Supplier<T> getFactory(final ResolvableKey<T> resolvableKey, final 
InstanceFactory instanceFactory) {
-        final Key<?> key = resolvableKey.getKey();
-        final Collection<String> aliases = resolvableKey.getAliases();
+        final Key<?> key = resolvableKey.key();
+        final Collection<String> aliases = resolvableKey.aliases();
         return () -> {
             final Node node = instanceFactory.getInstance(Node.CURRENT_NODE);
             LOGGER.trace("Configuring node {} element {}", node.getName(), 
key);
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginNamespaceFactoryResolver.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginNamespaceFactoryResolver.java
index 1e3cf6c63b..868ef3eba5 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginNamespaceFactoryResolver.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginNamespaceFactoryResolver.java
@@ -36,7 +36,7 @@ public class PluginNamespaceFactoryResolver implements 
FactoryResolver<PluginNam
     @Override
     public Supplier<PluginNamespace> getFactory(
             final ResolvableKey<PluginNamespace> resolvableKey, final 
InstanceFactory instanceFactory) {
-        final String namespace = resolvableKey.getKey().getNamespace();
+        final String namespace = resolvableKey.key().getNamespace();
         return () -> 
instanceFactory.getInstance(PluginRegistry.class).getNamespace(namespace);
     }
 }
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginValueFactoryResolver.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginValueFactoryResolver.java
index f69062a854..87966a1a87 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginValueFactoryResolver.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/PluginValueFactoryResolver.java
@@ -55,10 +55,10 @@ public class PluginValueFactoryResolver implements 
FactoryResolver<String> {
             final ResolvableKey<String> resolvableKey, final InstanceFactory 
instanceFactory) {
         return () -> {
             final Node node = instanceFactory.getInstance(Node.CURRENT_NODE);
-            final String name = resolvableKey.getKey().getName();
+            final String name = resolvableKey.key().getName();
             final String nodeValue = node.getValue();
-            final Optional<String> attributeValue = 
node.removeMatchingAttribute(name, resolvableKey.getAliases())
-                    .filter(Strings::isNotEmpty);
+            final Optional<String> attributeValue =
+                    node.removeMatchingAttribute(name, 
resolvableKey.aliases()).filter(Strings::isNotEmpty);
             final String rawValue;
             if (Strings.isNotEmpty(nodeValue)) {
                 attributeValue.ifPresent(attribute -> StatusLogger.getLogger()
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/SupplierFactoryResolver.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/SupplierFactoryResolver.java
index 2b4ab2ff8b..9b396e6955 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/SupplierFactoryResolver.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/resolver/SupplierFactoryResolver.java
@@ -39,8 +39,8 @@ public class SupplierFactoryResolver<T> implements 
FactoryResolver<Supplier<T>>
     @Override
     public Supplier<Supplier<T>> getFactory(
             final ResolvableKey<Supplier<T>> resolvableKey, final 
InstanceFactory instanceFactory) {
-        final Key<T> key = resolvableKey.getKey().getSuppliedType();
-        final Collection<String> aliases = resolvableKey.getAliases();
+        final Key<T> key = resolvableKey.key().getSuppliedType();
+        final Collection<String> aliases = resolvableKey.aliases();
         // dependencies ignored as this is a lazy binding
         return () -> instanceFactory.getFactory(key, aliases);
     }
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/spi/ResolvableKey.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/spi/ResolvableKey.java
index 3151c51116..f4d6847c64 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/spi/ResolvableKey.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/di/spi/ResolvableKey.java
@@ -23,20 +23,7 @@ import java.util.List;
 import org.apache.logging.log4j.lang.Nullable;
 import org.apache.logging.log4j.plugins.di.Key;
 
-public class ResolvableKey<T> {
-    private final Key<T> key;
-    private final Collection<String> aliases;
-    private final DependencyChain dependencyChain;
-
-    private ResolvableKey(final Key<T> key, final Collection<String> aliases, 
final DependencyChain dependencyChain) {
-        this.key = key;
-        this.aliases = aliases;
-        this.dependencyChain = dependencyChain;
-    }
-
-    public Key<T> getKey() {
-        return key;
-    }
+public record ResolvableKey<T>(Key<T> key, Collection<String> aliases, 
DependencyChain dependencyChain) {
 
     public Type getType() {
         return key.getType();
@@ -58,14 +45,6 @@ public class ResolvableKey<T> {
         return key.getQualifierType();
     }
 
-    public Collection<String> getAliases() {
-        return aliases;
-    }
-
-    public DependencyChain getDependencyChain() {
-        return dependencyChain;
-    }
-
     public static <T> ResolvableKey<T> of(final Key<T> key) {
         return new ResolvableKey<>(key, List.of(), DependencyChain.empty());
     }
diff --git 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/BeanUtils.java
 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/BeanUtils.java
index ea654518d9..928209d686 100644
--- 
a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/BeanUtils.java
+++ 
b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/BeanUtils.java
@@ -68,7 +68,7 @@ public final class BeanUtils {
     }
 
     public static Executable getInjectableFactory(final ResolvableKey<?> 
resolvableKey) {
-        final Class<?> rawType = resolvableKey.getKey().getRawType();
+        final Class<?> rawType = resolvableKey.key().getRawType();
         return findStaticFactoryMethod(rawType)
                 .or(() -> findInjectableConstructor(rawType))
                 .orElseThrow(() -> new NotInjectableException(resolvableKey));

Reply via email to