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));
