You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2020/03/08 00:18:25 UTC

[logging-log4j2] 01/02: Simplify disposer method type matching

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

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

commit d537be34b92392a9a8f9f957847e57405ab5d12e
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sat Mar 7 15:02:20 2020 -0600

    Simplify disposer method type matching
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../log4j/plugins/defaults/bean/DefaultBeanManager.java   | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultBeanManager.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultBeanManager.java
index ec4ba8b..598a3db 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultBeanManager.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultBeanManager.java
@@ -159,7 +159,7 @@ public class DefaultBeanManager implements BeanManager {
             for (final MetaParameter<?> parameter : method.getParameters()) {
                 if (parameter.isAnnotationPresent(Disposes.class)) {
                     disposesMethods.add(new DisposesMethod<>(
-                            parameter.getTypeClosure(), elementManager.getQualifiers(parameter), bean, method));
+                            parameter.getBaseType(), elementManager.getQualifiers(parameter), bean, method));
                 }
             }
         }
@@ -425,11 +425,6 @@ public class DefaultBeanManager implements BeanManager {
         scopes.clear();
     }
 
-    private static boolean areCollectionsIsomorphic(final Collection<?> left, final Collection<?> right) {
-        // isomorphism assumes .equals() is implemented according to the normal .equals() contract
-        return (left.isEmpty() && right.isEmpty()) || (left.size() == right.size() && left.containsAll(right));
-    }
-
     private static Optional<Bean<?>> findNonPrototypeScopedDependent(final InitializationContext<?> context) {
         return context.getParentContext().flatMap(parentContext ->
                 parentContext.getScoped()
@@ -440,14 +435,14 @@ public class DefaultBeanManager implements BeanManager {
     }
 
     private static class DisposesMethod<D> {
-        private final Collection<Type> types;
+        private final Type type;
         private final Qualifiers qualifiers;
         private final Bean<D> declaringBean;
         private final MetaMethod<D, ?> disposesMethod;
 
-        private DisposesMethod(final Collection<Type> types, final Qualifiers qualifiers,
+        private DisposesMethod(final Type type, final Qualifiers qualifiers,
                                final Bean<D> declaringBean, final MetaMethod<D, ?> disposesMethod) {
-            this.types = types;
+            this.type = type;
             this.qualifiers = qualifiers;
             this.declaringBean = declaringBean;
             this.disposesMethod = disposesMethod;
@@ -455,7 +450,7 @@ public class DefaultBeanManager implements BeanManager {
 
         boolean matches(final Variable<?> variable, final Bean<?> declaringBean) {
             return Objects.equals(declaringBean, this.declaringBean) &&
-                    areCollectionsIsomorphic(types, variable.getTypes()) &&
+                    variable.hasMatchingType(type) &&
                     qualifiers.equals(variable.getQualifiers());
         }
     }