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/22 17:40:01 UTC
[logging-log4j2] 01/06: Remove unused type parameters
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 b95c818cfb6baea30a8b49d16ccbd08a02402271
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sat Mar 21 12:40:49 2020 -0500
Remove unused type parameters
These type parameters are occasionally used by their concrete implementations,
but this can be a hidden detail.
Signed-off-by: Matt Sicker <bo...@gmail.com>
---
.../log4j/plugins/defaults/bean/AbstractBean.java | 10 +++---
.../plugins/defaults/bean/AbstractProducer.java | 4 +--
.../defaults/bean/AbstractProducerFactory.java | 11 ++++---
.../plugins/defaults/bean/DefaultBeanManager.java | 36 +++++++++++-----------
.../bean/DefaultInitializationContext.java | 2 +-
.../defaults/bean/DefaultInjectionTarget.java | 29 ++++++-----------
.../bean/DefaultInjectionTargetFactory.java | 2 +-
.../plugins/defaults/bean/DefaultInjector.java | 18 ++++++-----
.../log4j/plugins/defaults/bean/FieldProducer.java | 6 ++--
.../defaults/bean/FieldProducerFactory.java | 2 +-
.../plugins/defaults/bean/InjectionTargetBean.java | 4 +--
.../plugins/defaults/bean/MethodProducer.java | 8 ++---
.../defaults/bean/MethodProducerFactory.java | 6 ++--
.../log4j/plugins/defaults/bean/ProducerBean.java | 8 ++---
.../log4j/plugins/defaults/bean/SystemBean.java | 8 ++---
.../defaults/model/AbstractMetaExecutable.java | 8 ++---
.../plugins/defaults/model/AbstractMetaMember.java | 2 +-
.../defaults/model/DefaultElementManager.java | 22 ++++++-------
.../defaults/model/DefaultInjectionPoint.java | 14 ++++-----
.../model/DefaultMetaAnnotationElement.java | 6 ----
.../defaults/model/DefaultMetaParameter.java | 10 +++---
.../plugins/spi/UnsatisfiedBeanException.java | 2 +-
.../logging/log4j/plugins/spi/bean/Bean.java | 2 +-
.../log4j/plugins/spi/bean/BeanManager.java | 2 +-
.../logging/log4j/plugins/spi/bean/Injector.java | 10 +++---
.../logging/log4j/plugins/spi/bean/Producer.java | 2 +-
.../log4j/plugins/spi/bean/ProducerFactory.java | 2 +-
.../log4j/plugins/spi/model/ElementManager.java | 18 +++++------
.../log4j/plugins/spi/model/InjectionPoint.java | 8 ++---
.../plugins/spi/model/MetaAnnotationElement.java | 2 +-
.../logging/log4j/plugins/spi/model/MetaClass.java | 2 +-
.../log4j/plugins/spi/model/MetaConstructor.java | 2 +-
.../log4j/plugins/spi/model/MetaElement.java | 7 +++--
.../log4j/plugins/spi/model/MetaExecutable.java | 4 +--
.../logging/log4j/plugins/spi/model/MetaField.java | 2 +-
.../log4j/plugins/spi/model/MetaMember.java | 2 +-
.../log4j/plugins/spi/model/MetaMethod.java | 2 +-
.../log4j/plugins/spi/model/MetaParameter.java | 2 +-
.../log4j/plugins/test/BeanJUnit4Runner.java | 2 +-
39 files changed, 137 insertions(+), 152 deletions(-)
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractBean.java
index 947d722..c9110bf 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractBean.java
@@ -27,17 +27,17 @@ import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Objects;
-abstract class AbstractBean<D, T> implements Bean<T> {
+abstract class AbstractBean<T> implements Bean<T> {
private final Variable variable;
- private final MetaClass<D> declaringClass;
+ private final MetaClass<?> declaringClass;
- AbstractBean(final Variable variable, final MetaClass<D> declaringClass) {
+ AbstractBean(final Variable variable, final MetaClass<?> declaringClass) {
this.variable = Objects.requireNonNull(variable);
this.declaringClass = declaringClass;
}
@Override
- public MetaClass<D> getDeclaringClass() {
+ public MetaClass<?> getDeclaringClass() {
return declaringClass;
}
@@ -60,7 +60,7 @@ abstract class AbstractBean<D, T> implements Bean<T> {
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- final AbstractBean<?, ?> that = (AbstractBean<?, ?>) o;
+ final AbstractBean<?> that = (AbstractBean<?>) o;
return variable.equals(that.variable) &&
Objects.equals(declaringClass, that.declaringClass);
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducer.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducer.java
index 5781a2b..df73dc6 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducer.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducer.java
@@ -33,11 +33,11 @@ abstract class AbstractProducer<P, T> implements Producer<T> {
private final BeanManager beanManager;
private final Bean<P> producerBean;
private final MetaMethod<P, ?> disposerMethod;
- private final Collection<InjectionPoint<?>> disposerInjectionPoints;
+ private final Collection<InjectionPoint> disposerInjectionPoints;
final Injector injector;
AbstractProducer(final BeanManager beanManager, final Bean<P> producerBean, final MetaMethod<P, ?> disposerMethod,
- final Collection<InjectionPoint<?>> disposerInjectionPoints) {
+ final Collection<InjectionPoint> disposerInjectionPoints) {
this.beanManager = beanManager;
this.producerBean = producerBean;
this.disposerMethod = disposerMethod;
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducerFactory.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducerFactory.java
index a73840f..2ded1aa 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducerFactory.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/AbstractProducerFactory.java
@@ -26,14 +26,15 @@ import org.apache.logging.log4j.plugins.spi.model.MetaMethod;
import java.util.Collection;
import java.util.Objects;
-abstract class AbstractProducerFactory<D> implements ProducerFactory<D> {
+abstract class AbstractProducerFactory<D> implements ProducerFactory {
final Bean<D> declaringBean;
- final MetaMember<D, ?> producerMember;
+ final MetaMember<D> producerMember;
final MetaMethod<D, ?> disposerMethod;
- final Collection<InjectionPoint<?>> disposerInjectionPoints;
+ final Collection<InjectionPoint> disposerInjectionPoints;
- AbstractProducerFactory(final Bean<D> declaringBean, final MetaMember<D, ?> producerMember,
- final MetaMethod<D, ?> disposerMethod, final Collection<InjectionPoint<?>> disposerInjectionPoints) {
+ AbstractProducerFactory(final Bean<D> declaringBean, final MetaMember<D> producerMember,
+ final MetaMethod<D, ?> disposerMethod,
+ final Collection<InjectionPoint> disposerInjectionPoints) {
this.declaringBean = declaringBean;
this.producerMember = Objects.requireNonNull(producerMember);
this.disposerMethod = disposerMethod;
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 eb369be..592a279 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
@@ -154,7 +154,7 @@ public class DefaultBeanManager implements BeanManager {
private <T> void loadDisposerMethods(final MetaClass<T> metaClass, final Bean<T> bean) {
for (final MetaMethod<T, ?> method : metaClass.getMethods()) {
- for (final MetaParameter<?> parameter : method.getParameters()) {
+ for (final MetaParameter parameter : method.getParameters()) {
if (parameter.isAnnotationPresent(Disposes.class)) {
disposesMethods.add(new DisposesMethod<>(
parameter.getType(), elementManager.getQualifiers(parameter), bean, method));
@@ -178,24 +178,24 @@ public class DefaultBeanManager implements BeanManager {
return beans;
}
- private <P, T> Bean<T> loadProducerBean(final MetaMember<P, T> member, final Bean<P> producingBean) {
+ private <P> Bean<?> loadProducerBean(final MetaMember<P> member, final Bean<P> producingBean) {
final Variable variable = elementManager.createVariable(member);
final MetaClass<P> declaringType = member.getDeclaringClass();
- final ProducerFactory<P> factory = getProducerFactory(member, producingBean);
+ final ProducerFactory factory = getProducerFactory(member, producingBean);
return addBean(new ProducerBean<>(variable, declaringType, factory));
}
- private <P> ProducerFactory<P> getProducerFactory(final MetaMember<P, ?> member, final Bean<P> producingBean) {
+ private <P> ProducerFactory getProducerFactory(final MetaMember<P> member, final Bean<P> producingBean) {
final Variable variable = elementManager.createVariable(member);
final MetaMethod<P, ?> disposerMethod = resolveDisposerMethod(variable, producingBean);
- final Collection<InjectionPoint<?>> disposerIPs = disposerMethod == null ? Collections.emptySet() :
+ final Collection<InjectionPoint> disposerIPs = disposerMethod == null ? Collections.emptySet() :
elementManager.createExecutableInjectionPoints(disposerMethod, producingBean);
if (member instanceof MetaField<?, ?>) {
- final MetaField<P, ?> field = TypeUtil.cast(member);
+ final MetaField<P, ?> field = (MetaField<P, ?>) member;
return new FieldProducerFactory<>(this, producingBean, field, disposerMethod, disposerIPs);
} else {
- final MetaMethod<P, ?> method = TypeUtil.cast(member);
- final Collection<InjectionPoint<?>> producerIPs =
+ final MetaMethod<P, ?> method = (MetaMethod<P, ?>) member;
+ final Collection<InjectionPoint> producerIPs =
elementManager.createExecutableInjectionPoints(method, producingBean);
return new MethodProducerFactory<>(this, producingBean, method, producerIPs, disposerMethod, disposerIPs);
}
@@ -219,7 +219,7 @@ public class DefaultBeanManager implements BeanManager {
public void validateBeans(final Iterable<Bean<?>> beans) {
final List<Throwable> errors = new ArrayList<>();
for (final Bean<?> bean : beans) {
- for (final InjectionPoint<?> point : bean.getInjectionPoints()) {
+ for (final InjectionPoint point : bean.getInjectionPoints()) {
try {
validateInjectionPoint(point);
} catch (final InjectionException e) {
@@ -232,8 +232,8 @@ public class DefaultBeanManager implements BeanManager {
}
}
- private <T> void validateInjectionPoint(final InjectionPoint<T> point) {
- final MetaElement<T> element = point.getElement();
+ private <T> void validateInjectionPoint(final InjectionPoint point) {
+ final MetaElement element = point.getElement();
if (element.isAnnotationPresent(Produces.class)) {
throw new DefinitionException("Cannot inject into a @Produces element: " + element);
}
@@ -253,8 +253,8 @@ public class DefaultBeanManager implements BeanManager {
final Bean<?> bean = point.getBean().orElseThrow(() -> new UnsatisfiedBeanException(point));
if (bean instanceof InjectionTargetBean<?>) {
validateBeanInjectionPoint(point, bean.getDeclaringClass().getType());
- } else if (bean instanceof ProducerBean<?, ?>) {
- validateBeanInjectionPoint(point, ((ProducerBean<?, ?>) bean).getType());
+ } else if (bean instanceof ProducerBean<?>) {
+ validateBeanInjectionPoint(point, ((ProducerBean<?>) bean).getType());
}
}
final Optional<Bean<T>> bean = getInjectionPointBean(point);
@@ -263,7 +263,7 @@ public class DefaultBeanManager implements BeanManager {
}
}
- private void validateBeanInjectionPoint(final InjectionPoint<?> point, final Type expectedType) {
+ private void validateBeanInjectionPoint(final InjectionPoint point, final Type expectedType) {
final Type type = point.getType();
if (!(type instanceof ParameterizedType)) {
throw new DefinitionException("Expected parameterized type for " + point + " but got " + expectedType);
@@ -282,7 +282,7 @@ public class DefaultBeanManager implements BeanManager {
}
}
- private <T> Optional<Bean<T>> getInjectionPointBean(final InjectionPoint<T> point) {
+ private <T> Optional<Bean<T>> getInjectionPointBean(final InjectionPoint point) {
// TODO: this will need to allow for TypeConverter usage somehow
// first, look for an existing bean
final Type type = point.getType();
@@ -373,9 +373,9 @@ public class DefaultBeanManager implements BeanManager {
}
@Override
- public <T> Optional<T> getInjectableValue(final InjectionPoint<T> point, final InitializationContext<?> parentContext) {
- final Bean<T> resolvedBean = getInjectionPointBean(point)
- .orElseThrow(() -> new UnsatisfiedBeanException(point));
+ public <T> Optional<T> getInjectableValue(final InjectionPoint point, final InitializationContext<?> parentContext) {
+ final Optional<Bean<T>> optionalResolvedBean = getInjectionPointBean(point);
+ final Bean<T> resolvedBean = optionalResolvedBean.orElseThrow(() -> new UnsatisfiedBeanException(point));
final Optional<T> existingValue = point.getBean()
.filter(bean -> !bean.equals(resolvedBean))
.flatMap(bean -> getExistingValue(resolvedBean, bean, parentContext));
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInitializationContext.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInitializationContext.java
index 3ed8893..7e54175 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInitializationContext.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInitializationContext.java
@@ -67,7 +67,7 @@ public class DefaultInitializationContext<T> implements InitializationContext<T>
@Override
public boolean isTrackingDependencies(final Bean<T> bean) {
return !dependentInstances.isEmpty() ||
- (bean instanceof AbstractBean<?, ?> && ((AbstractBean<?, ?>) bean).isTrackingDependencies());
+ (bean instanceof AbstractBean<?> && ((AbstractBean<?>) bean).isTrackingDependencies());
}
@Override
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTarget.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTarget.java
index 869fa00..069ead6 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTarget.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTarget.java
@@ -27,7 +27,6 @@ import org.apache.logging.log4j.plugins.spi.model.ElementManager;
import org.apache.logging.log4j.plugins.spi.model.InjectionPoint;
import org.apache.logging.log4j.plugins.spi.model.MetaClass;
import org.apache.logging.log4j.plugins.spi.model.MetaConstructor;
-import org.apache.logging.log4j.plugins.spi.model.MetaElement;
import org.apache.logging.log4j.plugins.spi.model.MetaField;
import org.apache.logging.log4j.plugins.spi.model.MetaMember;
import org.apache.logging.log4j.plugins.spi.model.MetaMethod;
@@ -44,13 +43,13 @@ import java.util.stream.Collectors;
class DefaultInjectionTarget<T> implements InjectionTarget<T> {
private final Injector injector;
private final ElementManager elementManager;
- private final Collection<InjectionPoint<?>> injectionPoints;
+ private final Collection<InjectionPoint> injectionPoints;
private final MetaConstructor<T> constructor;
private final List<MetaMethod<T, ?>> postConstructMethods;
private final List<MetaMethod<T, ?>> preDestroyMethods;
DefaultInjectionTarget(final Injector injector, final ElementManager elementManager,
- final Collection<InjectionPoint<?>> injectionPoints, final MetaConstructor<T> constructor,
+ final Collection<InjectionPoint> injectionPoints, final MetaConstructor<T> constructor,
final List<MetaMethod<T, ?>> postConstructMethods, final List<MetaMethod<T, ?>> preDestroyMethods) {
this.injector = injector;
this.elementManager = elementManager;
@@ -62,7 +61,7 @@ class DefaultInjectionTarget<T> implements InjectionTarget<T> {
@Override
public T produce(final InitializationContext<T> context) {
- final Set<InjectionPoint<?>> constructorInjectionPoints = injectionPoints.stream()
+ final Set<InjectionPoint> constructorInjectionPoints = injectionPoints.stream()
.filter(point -> constructor.equals(point.getMember()))
.collect(Collectors.toSet());
return injector.construct(constructor, constructorInjectionPoints, context);
@@ -82,29 +81,21 @@ class DefaultInjectionTarget<T> implements InjectionTarget<T> {
}
private void injectFields(final T instance, final InitializationContext<T> context) {
- for (final InjectionPoint<?> point : injectionPoints) {
- injectField(instance, context, point);
- }
- }
-
- private <F> void injectField(final T instance, final InitializationContext<T> context, final InjectionPoint<F> point) {
- final MetaElement<F> element = point.getElement();
- if (element instanceof MetaField<?, ?> && ((MetaField<?, F>) element).getDeclaringClass().getJavaClass().isInstance(instance)) {
- final MetaField<T, F> field = (MetaField<T, F>) element;
- injector.set(instance, field, point, context);
- }
+ injectionPoints.stream()
+ .filter(point -> point.getElement() instanceof MetaField<?, ?>)
+ .forEachOrdered(point -> injector.set(instance, TypeUtil.cast(point.getElement()), point, context));
}
private void injectMethods(final T instance, final InitializationContext<T> context) {
- final Set<MetaMember<?, ?>> injectedMethods = new HashSet<>();
- for (final InjectionPoint<?> point : injectionPoints) {
+ final Set<MetaMember<?>> injectedMethods = new HashSet<>();
+ for (final InjectionPoint point : injectionPoints) {
if (point.getMember() instanceof MetaMethod<?, ?> &&
point.getMember().getDeclaringClass().getJavaClass().isInstance(instance) &&
!injectedMethods.contains(point.getMember()) &&
!point.getElement().isAnnotationPresent(Produces.class) &&
!point.getElement().isAnnotationPresent(Disposes.class)) {
final MetaMethod<T, ?> method = TypeUtil.cast(point.getMember());
- final Set<InjectionPoint<?>> methodInjectionPoints = injectionPoints.stream()
+ final Set<InjectionPoint> methodInjectionPoints = injectionPoints.stream()
.filter(p -> method.equals(p.getMember()))
.collect(Collectors.toSet());
injector.invoke(instance, method, methodInjectionPoints, context);
@@ -128,7 +119,7 @@ class DefaultInjectionTarget<T> implements InjectionTarget<T> {
}
@Override
- public Collection<InjectionPoint<?>> getInjectionPoints() {
+ public Collection<InjectionPoint> getInjectionPoints() {
return injectionPoints;
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTargetFactory.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTargetFactory.java
index 30c30ec..78ab70d 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTargetFactory.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjectionTargetFactory.java
@@ -53,7 +53,7 @@ class DefaultInjectionTargetFactory<T> implements InjectionTargetFactory<T> {
@Override
public InjectionTarget<T> createInjectionTarget(final Bean<T> bean) {
final MetaConstructor<T> constructor = getInjectableConstructor();
- final Collection<InjectionPoint<?>> injectionPoints =
+ final Collection<InjectionPoint> injectionPoints =
new HashSet<>(elementManager.createExecutableInjectionPoints(constructor, bean));
for (final MetaField<T, ?> field : type.getFields()) {
if (elementManager.isInjectable(field)) {
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjector.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjector.java
index 0d12b6f..6e228a8 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjector.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/DefaultInjector.java
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.plugins.spi.model.MetaParameter;
import java.util.Collection;
import java.util.List;
+import java.util.Optional;
public class DefaultInjector implements Injector {
private final BeanManager beanManager;
@@ -37,8 +38,8 @@ public class DefaultInjector implements Injector {
this.beanManager = beanManager;
}
- private Object[] createArguments(final List<MetaParameter<?>> parameters,
- final Collection<InjectionPoint<?>> injectionPoints,
+ private Object[] createArguments(final List<MetaParameter> parameters,
+ final Collection<InjectionPoint> injectionPoints,
final InitializationContext<?> context, final Object producedInstance) {
return parameters.stream().map(parameter ->
parameter.isAnnotationPresent(Disposes.class) ? producedInstance : injectionPoints.stream()
@@ -50,33 +51,34 @@ public class DefaultInjector implements Injector {
}
@Override
- public <T> T construct(final MetaConstructor<T> constructor, final Collection<InjectionPoint<?>> points,
+ public <T> T construct(final MetaConstructor<T> constructor, final Collection<InjectionPoint> points,
final InitializationContext<T> context) {
return constructor.construct(createArguments(constructor.getParameters(), points, context, null));
}
@Override
public <D, T> T produce(final D producerInstance, final MetaMethod<D, T> producerMethod,
- final Collection<InjectionPoint<?>> points, final InitializationContext<D> context) {
+ final Collection<InjectionPoint> points, final InitializationContext<D> context) {
return producerMethod.invoke(producerInstance, createArguments(producerMethod.getParameters(), points, context, null));
}
@Override
public <T> void dispose(final T disposerInstance, final MetaMethod<T, ?> disposerMethod,
- final Collection<InjectionPoint<?>> points, final Object instance,
+ final Collection<InjectionPoint> points, final Object instance,
final InitializationContext<T> context) {
disposerMethod.invoke(disposerInstance, createArguments(disposerMethod.getParameters(), points, context, instance));
}
@Override
- public <T> void invoke(final T instance, final MetaMethod<T, ?> method, final Collection<InjectionPoint<?>> points,
+ public <T> void invoke(final T instance, final MetaMethod<T, ?> method, final Collection<InjectionPoint> points,
final InitializationContext<T> context) {
method.invoke(instance, createArguments(method.getParameters(), points, context, null));
}
@Override
- public <D, T> void set(final D instance, final MetaField<D, T> field, final InjectionPoint<T> point,
+ public <D, T> void set(final D instance, final MetaField<D, T> field, final InjectionPoint point,
final InitializationContext<D> context) {
- beanManager.getInjectableValue(point, context).ifPresent(value -> field.set(instance, value));
+ final Optional<T> optionalValue = beanManager.getInjectableValue(point, context);
+ optionalValue.ifPresent(value -> field.set(instance, value));
}
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducer.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducer.java
index 8c21750..7529ee1 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducer.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducer.java
@@ -19,10 +19,10 @@ package org.apache.logging.log4j.plugins.defaults.bean;
import org.apache.logging.log4j.plugins.spi.bean.Bean;
import org.apache.logging.log4j.plugins.spi.bean.BeanManager;
+import org.apache.logging.log4j.plugins.spi.bean.InitializationContext;
import org.apache.logging.log4j.plugins.spi.model.InjectionPoint;
import org.apache.logging.log4j.plugins.spi.model.MetaField;
import org.apache.logging.log4j.plugins.spi.model.MetaMethod;
-import org.apache.logging.log4j.plugins.spi.bean.InitializationContext;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -32,7 +32,7 @@ class FieldProducer<P, T> extends AbstractProducer<P, T> {
private final MetaField<P, T> field;
FieldProducer(final BeanManager beanManager, final Bean<P> producerBean, final MetaField<P, T> field,
- final MetaMethod<P, ?> disposerMethod, final Collection<InjectionPoint<?>> disposerInjectionPoints) {
+ final MetaMethod<P, ?> disposerMethod, final Collection<InjectionPoint> disposerInjectionPoints) {
super(beanManager, producerBean, disposerMethod, disposerInjectionPoints);
this.field = field;
}
@@ -53,7 +53,7 @@ class FieldProducer<P, T> extends AbstractProducer<P, T> {
}
@Override
- public Collection<InjectionPoint<?>> getInjectionPoints() {
+ public Collection<InjectionPoint> getInjectionPoints() {
return Collections.emptySet();
}
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducerFactory.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducerFactory.java
index 8ac3097..f629a45 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducerFactory.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/FieldProducerFactory.java
@@ -32,7 +32,7 @@ class FieldProducerFactory<D> extends AbstractProducerFactory<D> {
FieldProducerFactory(final BeanManager beanManager, final Bean<D> declaringBean,
final MetaField<D, ?> producerField, final MetaMethod<D, ?> disposerMethod,
- final Collection<InjectionPoint<?>> disposerInjectionPoints) {
+ final Collection<InjectionPoint> disposerInjectionPoints) {
super(declaringBean, producerField, disposerMethod, disposerInjectionPoints);
this.beanManager = beanManager;
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/InjectionTargetBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/InjectionTargetBean.java
index d71839a..663ecd4 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/InjectionTargetBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/InjectionTargetBean.java
@@ -28,7 +28,7 @@ import org.apache.logging.log4j.plugins.spi.model.Variable;
import java.util.Collection;
import java.util.Objects;
-class InjectionTargetBean<T> extends AbstractBean<T, T> {
+class InjectionTargetBean<T> extends AbstractBean<T> {
private final InjectionTarget<T> injectionTarget;
InjectionTargetBean(final Variable variable, final MetaClass<T> declaringClass,
@@ -39,7 +39,7 @@ class InjectionTargetBean<T> extends AbstractBean<T, T> {
}
@Override
- public Collection<InjectionPoint<?>> getInjectionPoints() {
+ public Collection<InjectionPoint> getInjectionPoints() {
return injectionTarget.getInjectionPoints();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducer.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducer.java
index 8b80a4a..8baf1c2 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducer.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducer.java
@@ -29,11 +29,11 @@ import java.util.Collection;
class MethodProducer<P, T> extends AbstractProducer<P, T> {
private final MetaMethod<P, T> producerMethod;
- private final Collection<InjectionPoint<?>> producerInjectionPoints;
+ private final Collection<InjectionPoint> producerInjectionPoints;
MethodProducer(final BeanManager beanManager, final Bean<P> producerBean,
- final MetaMethod<P, T> producerMethod, final Collection<InjectionPoint<?>> producerInjectionPoints,
- final MetaMethod<P, ?> disposerMethod, final Collection<InjectionPoint<?>> disposerInjectionPoints) {
+ final MetaMethod<P, T> producerMethod, final Collection<InjectionPoint> producerInjectionPoints,
+ final MetaMethod<P, ?> disposerMethod, final Collection<InjectionPoint> disposerInjectionPoints) {
super(beanManager, producerBean, disposerMethod, disposerInjectionPoints);
if (!producerMethod.isStatic() && producerBean == null) {
throw new DefinitionException("Producer instance method must be in a bean");
@@ -56,7 +56,7 @@ class MethodProducer<P, T> extends AbstractProducer<P, T> {
}
@Override
- public Collection<InjectionPoint<?>> getInjectionPoints() {
+ public Collection<InjectionPoint> getInjectionPoints() {
return producerInjectionPoints;
}
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducerFactory.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducerFactory.java
index 73e4b35..d503cea 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducerFactory.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/MethodProducerFactory.java
@@ -28,11 +28,11 @@ import java.util.Collection;
class MethodProducerFactory<D> extends AbstractProducerFactory<D> {
private final BeanManager beanManager;
- private final Collection<InjectionPoint<?>> producerInjectionPoints;
+ private final Collection<InjectionPoint> producerInjectionPoints;
MethodProducerFactory(final BeanManager beanManager, final Bean<D> declaringBean,
- final MetaMethod<D, ?> producerMethod, final Collection<InjectionPoint<?>> producerInjectionPoints,
- final MetaMethod<D, ?> disposerMethod, final Collection<InjectionPoint<?>> disposerInjectionPoints) {
+ final MetaMethod<D, ?> producerMethod, final Collection<InjectionPoint> producerInjectionPoints,
+ final MetaMethod<D, ?> disposerMethod, final Collection<InjectionPoint> disposerInjectionPoints) {
super(declaringBean, producerMethod, disposerMethod, disposerInjectionPoints);
this.producerInjectionPoints = producerInjectionPoints;
this.beanManager = beanManager;
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProducerBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProducerBean.java
index 5eea07b..a70f1fd 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProducerBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProducerBean.java
@@ -18,22 +18,22 @@
package org.apache.logging.log4j.plugins.defaults.bean;
import org.apache.logging.log4j.plugins.spi.IllegalProductException;
+import org.apache.logging.log4j.plugins.spi.bean.InitializationContext;
import org.apache.logging.log4j.plugins.spi.bean.Producer;
import org.apache.logging.log4j.plugins.spi.bean.ProducerFactory;
import org.apache.logging.log4j.plugins.spi.model.InjectionPoint;
import org.apache.logging.log4j.plugins.spi.model.MetaClass;
import org.apache.logging.log4j.plugins.spi.model.Variable;
-import org.apache.logging.log4j.plugins.spi.bean.InitializationContext;
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Objects;
-class ProducerBean<D, T> extends AbstractBean<D, T> {
+class ProducerBean<T> extends AbstractBean<T> {
private final Producer<T> producer;
private final Type type;
- ProducerBean(final Variable variable, final MetaClass<D> declaringClass, final ProducerFactory<D> factory) {
+ ProducerBean(final Variable variable, final MetaClass<?> declaringClass, final ProducerFactory factory) {
super(variable, declaringClass);
Objects.requireNonNull(factory);
producer = factory.createProducer(this);
@@ -49,7 +49,7 @@ class ProducerBean<D, T> extends AbstractBean<D, T> {
}
@Override
- public Collection<InjectionPoint<?>> getInjectionPoints() {
+ public Collection<InjectionPoint> getInjectionPoints() {
return producer.getInjectionPoints();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/SystemBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/SystemBean.java
index 8b55f3d..97cfb94 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/SystemBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/SystemBean.java
@@ -17,12 +17,12 @@
package org.apache.logging.log4j.plugins.defaults.bean;
-import org.apache.logging.log4j.plugins.spi.model.MetaClass;
import org.apache.logging.log4j.plugins.spi.bean.Bean;
+import org.apache.logging.log4j.plugins.spi.bean.InitializationContext;
+import org.apache.logging.log4j.plugins.spi.model.InjectionPoint;
+import org.apache.logging.log4j.plugins.spi.model.MetaClass;
import org.apache.logging.log4j.plugins.spi.model.Qualifiers;
import org.apache.logging.log4j.plugins.spi.model.Variable;
-import org.apache.logging.log4j.plugins.spi.model.InjectionPoint;
-import org.apache.logging.log4j.plugins.spi.bean.InitializationContext;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -52,7 +52,7 @@ abstract class SystemBean<T> implements Bean<T> {
}
@Override
- public Collection<InjectionPoint<?>> getInjectionPoints() {
+ public Collection<InjectionPoint> getInjectionPoints() {
return Collections.emptySet();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaExecutable.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaExecutable.java
index 60a6fb7..e34a5cc 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaExecutable.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaExecutable.java
@@ -26,19 +26,19 @@ import java.lang.reflect.Parameter;
import java.util.ArrayList;
import java.util.List;
-abstract class AbstractMetaExecutable<D, T> extends AbstractMetaMember<D, T> implements MetaExecutable<D, T> {
- private final List<MetaParameter<?>> parameters;
+abstract class AbstractMetaExecutable<D, T> extends AbstractMetaMember<D, T> implements MetaExecutable<D> {
+ private final List<MetaParameter> parameters;
AbstractMetaExecutable(final MetaClass<D> declaringClass, final Executable executable, final MetaClass<T> type) {
super(declaringClass, executable, type);
parameters = new ArrayList<>(executable.getParameterCount());
for (final Parameter parameter : executable.getParameters()) {
- parameters.add(new DefaultMetaParameter<>(parameter));
+ parameters.add(new DefaultMetaParameter(parameter));
}
}
@Override
- public List<MetaParameter<?>> getParameters() {
+ public List<MetaParameter> getParameters() {
return parameters;
}
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaMember.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaMember.java
index 52dbad2..a7cecdc 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaMember.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/AbstractMetaMember.java
@@ -27,7 +27,7 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.Collection;
-abstract class AbstractMetaMember<D, T> implements MetaMember<D, T> {
+abstract class AbstractMetaMember<D, T> implements MetaMember<D> {
private final String name;
private final Collection<MetaAnnotation> annotations;
private final MetaClass<D> declaringClass;
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultElementManager.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultElementManager.java
index 8193144..b1a4066 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultElementManager.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultElementManager.java
@@ -90,7 +90,7 @@ public class DefaultElementManager implements ElementManager {
}
@Override
- public Qualifiers getQualifiers(final MetaElement<?> element) {
+ public Qualifiers getQualifiers(final MetaElement element) {
final String elementName = element.getName();
final String defaultNamedValue;
if (element instanceof MetaMethod<?, ?>) {
@@ -136,7 +136,7 @@ public class DefaultElementManager implements ElementManager {
return new DefaultMetaAnnotation(annotationType, elements);
}
- private Class<? extends Annotation> getScopeType(final MetaElement<?> element) {
+ private Class<? extends Annotation> getScopeType(final MetaElement element) {
final Collection<Class<? extends Annotation>> scopeTypes = filterScopeTypes(element.getAnnotations());
return scopeTypes.isEmpty() ? Dependent.class : scopeTypes.iterator().next();
}
@@ -162,35 +162,35 @@ public class DefaultElementManager implements ElementManager {
}
@Override
- public <D, T> InjectionPoint<T> createFieldInjectionPoint(final MetaField<D, T> field, final Bean<D> owner) {
+ public <D> InjectionPoint createFieldInjectionPoint(final MetaField<D, ?> field, final Bean<D> owner) {
Objects.requireNonNull(field);
final Qualifiers qualifiers = getQualifiers(field);
- return new DefaultInjectionPoint<>(field.getType(), qualifiers, owner, field, field);
+ return new DefaultInjectionPoint(field.getType(), qualifiers, owner, field, field);
}
@Override
- public <D, P> InjectionPoint<P> createParameterInjectionPoint(final MetaExecutable<D, ?> executable,
- final MetaParameter<P> parameter,
- final Bean<D> owner) {
+ public <D> InjectionPoint createParameterInjectionPoint(final MetaExecutable<D> executable,
+ final MetaParameter parameter,
+ final Bean<D> owner) {
Objects.requireNonNull(executable);
Objects.requireNonNull(parameter);
final Qualifiers qualifiers = getQualifiers(parameter);
- return new DefaultInjectionPoint<>(parameter.getType(), qualifiers, owner, executable, parameter);
+ return new DefaultInjectionPoint(parameter.getType(), qualifiers, owner, executable, parameter);
}
@Override
- public Variable createVariable(final MetaElement<?> element) {
+ public Variable createVariable(final MetaElement element) {
Objects.requireNonNull(element);
return createVariable(element, getQualifiers(element));
}
@Override
- public Variable createVariable(final InjectionPoint<?> point) {
+ public Variable createVariable(final InjectionPoint point) {
Objects.requireNonNull(point);
return createVariable(point.getElement(), point.getQualifiers());
}
- private Variable createVariable(final MetaElement<?> element, final Qualifiers qualifiers) {
+ private Variable createVariable(final MetaElement element, final Qualifiers qualifiers) {
final Collection<Type> types = element.getTypeClosure();
final Class<? extends Annotation> scopeType = getScopeType(element);
return DefaultVariable.newVariable(types, qualifiers, scopeType);
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultInjectionPoint.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultInjectionPoint.java
index c79405c..eba0996 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultInjectionPoint.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultInjectionPoint.java
@@ -27,15 +27,15 @@ import java.lang.reflect.Type;
import java.util.Objects;
import java.util.Optional;
-class DefaultInjectionPoint<T> implements InjectionPoint<T> {
+class DefaultInjectionPoint implements InjectionPoint {
private final Type type;
private final Qualifiers qualifiers;
private final Bean<?> bean;
- private final MetaMember<?, ?> member;
- private final MetaElement<T> element;
+ private final MetaMember<?> member;
+ private final MetaElement element;
DefaultInjectionPoint(final Type type, final Qualifiers qualifiers, final Bean<?> bean,
- final MetaMember<?, ?> member, final MetaElement<T> element) {
+ final MetaMember<?> member, final MetaElement element) {
this.type = type;
this.qualifiers = qualifiers;
this.bean = bean;
@@ -59,12 +59,12 @@ class DefaultInjectionPoint<T> implements InjectionPoint<T> {
}
@Override
- public MetaMember<?, ?> getMember() {
+ public MetaMember<?> getMember() {
return member;
}
@Override
- public MetaElement<T> getElement() {
+ public MetaElement getElement() {
return element;
}
@@ -72,7 +72,7 @@ class DefaultInjectionPoint<T> implements InjectionPoint<T> {
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- final DefaultInjectionPoint<?> that = (DefaultInjectionPoint<?>) o;
+ final DefaultInjectionPoint that = (DefaultInjectionPoint) o;
return qualifiers.equals(that.qualifiers) &&
Objects.equals(bean, that.bean) &&
member.equals(that.member) &&
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaAnnotationElement.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaAnnotationElement.java
index acd3e48..ce436c0 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaAnnotationElement.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaAnnotationElement.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.plugins.defaults.model;
import org.apache.logging.log4j.plugins.spi.model.MetaAnnotation;
import org.apache.logging.log4j.plugins.spi.model.MetaAnnotationElement;
-import org.apache.logging.log4j.plugins.util.TypeUtil;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -48,11 +47,6 @@ class DefaultMetaAnnotationElement<T> implements MetaAnnotationElement<T> {
}
@Override
- public Collection<Type> getTypeClosure() {
- return TypeUtil.getTypeClosure(getType());
- }
-
- @Override
public Collection<MetaAnnotation> getAnnotations() {
return annotations;
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaParameter.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaParameter.java
index 2b7af20..e581fa4 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaParameter.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultMetaParameter.java
@@ -20,22 +20,20 @@ package org.apache.logging.log4j.plugins.defaults.model;
import org.apache.logging.log4j.plugins.spi.model.MetaAnnotation;
import org.apache.logging.log4j.plugins.spi.model.MetaClass;
import org.apache.logging.log4j.plugins.spi.model.MetaParameter;
-import org.apache.logging.log4j.plugins.util.TypeUtil;
import java.lang.reflect.Parameter;
import java.lang.reflect.Type;
import java.util.Collection;
-class DefaultMetaParameter<T> implements MetaParameter<T> {
+class DefaultMetaParameter implements MetaParameter {
private final String name;
- private final MetaClass<T> parameterClass;
+ private final MetaClass<?> parameterClass;
private final String toString;
DefaultMetaParameter(final Parameter parameter) {
name = parameter.getName();
- final Type type = parameter.getParameterizedType();
- final Class<T> javaClass = TypeUtil.cast(parameter.getType());
- parameterClass = DefaultMetaClass.newMetaClass(type, javaClass, parameter.getAnnotations());
+ parameterClass = DefaultMetaClass.newMetaClass(
+ parameter.getParameterizedType(), parameter.getType(), parameter.getAnnotations());
toString = parameter.toString();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/UnsatisfiedBeanException.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/UnsatisfiedBeanException.java
index 3b17bf6..2fc2dff 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/UnsatisfiedBeanException.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/UnsatisfiedBeanException.java
@@ -22,7 +22,7 @@ import org.apache.logging.log4j.plugins.spi.model.InjectionPoint;
import java.lang.reflect.Type;
public class UnsatisfiedBeanException extends ResolutionException {
- public UnsatisfiedBeanException(final InjectionPoint<?> point) {
+ public UnsatisfiedBeanException(final InjectionPoint point) {
super("No beans found for " + point);
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Bean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Bean.java
index 482aeec..4950ac8 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Bean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Bean.java
@@ -42,7 +42,7 @@ public interface Bean<T> extends Variable {
*/
void destroy(final T instance, final InitializationContext<T> context);
- Collection<InjectionPoint<?>> getInjectionPoints();
+ Collection<InjectionPoint> getInjectionPoints();
// for a managed bean: that class
// for a producer field or producer method: the declaring class
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/BeanManager.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/BeanManager.java
index a66d1b1..acd772e 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/BeanManager.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/BeanManager.java
@@ -86,7 +86,7 @@ public interface BeanManager extends AutoCloseable {
* @param <T> type of injectable value
* @return value to inject if defined or empty otherwise
*/
- <T> Optional<T> getInjectableValue(final InjectionPoint<T> point, final InitializationContext<?> parentContext);
+ <T> Optional<T> getInjectableValue(final InjectionPoint point, final InitializationContext<?> parentContext);
@Override
void close();
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Injector.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Injector.java
index a2c0c4f..e803790 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Injector.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Injector.java
@@ -25,19 +25,19 @@ import org.apache.logging.log4j.plugins.spi.model.MetaMethod;
import java.util.Collection;
public interface Injector {
- <T> T construct(final MetaConstructor<T> constructor, final Collection<InjectionPoint<?>> points,
+ <T> T construct(final MetaConstructor<T> constructor, final Collection<InjectionPoint> points,
final InitializationContext<T> context);
<D, T> T produce(final D producerInstance, final MetaMethod<D, T> producerMethod,
- final Collection<InjectionPoint<?>> points, final InitializationContext<D> context);
+ final Collection<InjectionPoint> points, final InitializationContext<D> context);
<T> void dispose(final T disposerInstance, final MetaMethod<T, ?> disposerMethod,
- final Collection<InjectionPoint<?>> points, final Object instance,
+ final Collection<InjectionPoint> points, final Object instance,
final InitializationContext<T> context);
- <T> void invoke(final T instance, final MetaMethod<T, ?> method, final Collection<InjectionPoint<?>> points,
+ <T> void invoke(final T instance, final MetaMethod<T, ?> method, final Collection<InjectionPoint> points,
final InitializationContext<T> context);
- <D, T> void set(final D instance, final MetaField<D, T> field, final InjectionPoint<T> point,
+ <D, T> void set(final D instance, final MetaField<D, T> field, final InjectionPoint point,
final InitializationContext<D> context);
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Producer.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Producer.java
index 4a8f27a..b598f46 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Producer.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/Producer.java
@@ -33,5 +33,5 @@ public interface Producer<T> {
// for a class: injected fields, @Inject constructor parameters, and initializer method params
// for a producer method: method params
- Collection<InjectionPoint<?>> getInjectionPoints();
+ Collection<InjectionPoint> getInjectionPoints();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/ProducerFactory.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/ProducerFactory.java
index c266224..29e0684 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/ProducerFactory.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/bean/ProducerFactory.java
@@ -17,7 +17,7 @@
package org.apache.logging.log4j.plugins.spi.bean;
-public interface ProducerFactory<D> {
+public interface ProducerFactory {
// only time bean is null is static @Produces potentially?
<T> Producer<T> createProducer(final Bean<T> bean);
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/ElementManager.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/ElementManager.java
index ee213c3..32d94e2 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/ElementManager.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/ElementManager.java
@@ -53,7 +53,7 @@ public interface ElementManager extends AutoCloseable {
* @param element program element to extract qualifiers from
* @return qualifiers present on the element
*/
- Qualifiers getQualifiers(MetaElement<?> element);
+ Qualifiers getQualifiers(MetaElement element);
/**
* Checks if a class has exactly one injectable constructor. A constructor is <i>injectable</i> if:
@@ -98,7 +98,7 @@ public interface ElementManager extends AutoCloseable {
* @param element field, method, or parameter to check
* @return true if the element is injectable or false otherwise
*/
- default boolean isInjectable(final MetaElement<?> element) {
+ default boolean isInjectable(final MetaElement element) {
return element.isAnnotationPresent(Inject.class) ||
(element.getAnnotations().stream().map(MetaAnnotation::getAnnotationType).anyMatch(this::isQualifierType) &&
!element.isAnnotationPresent(Produces.class));
@@ -110,10 +110,9 @@ public interface ElementManager extends AutoCloseable {
* @param field field where injection will take place
* @param owner bean where field is located or null for static fields
* @param <D> bean type
- * @param <T> field type
* @return an injection point describing the field
*/
- <D, T> InjectionPoint<T> createFieldInjectionPoint(final MetaField<D, T> field, final Bean<D> owner);
+ <D> InjectionPoint createFieldInjectionPoint(final MetaField<D, ?> field, final Bean<D> owner);
/**
* Creates an injection point for a method or constructor parameter with an optional owning bean.
@@ -122,11 +121,10 @@ public interface ElementManager extends AutoCloseable {
* @param parameter which parameter of that executable to create a point at
* @param owner bean where executable is located or null for static methods
* @param <D> bean type
- * @param <P> parameter type
* @return an injection point describing the parameter
*/
- <D, P> InjectionPoint<P> createParameterInjectionPoint(final MetaExecutable<D, ?> executable,
- final MetaParameter<P> parameter, final Bean<D> owner);
+ <D> InjectionPoint createParameterInjectionPoint(final MetaExecutable<D> executable,
+ final MetaParameter parameter, final Bean<D> owner);
/**
* Creates a collection of injection points for all the parameters of a method or constructor with an optional
@@ -137,7 +135,7 @@ public interface ElementManager extends AutoCloseable {
* @param <D> bean type
* @return collection of injection points describing the executable parameters
*/
- default <D> Collection<InjectionPoint<?>> createExecutableInjectionPoints(final MetaExecutable<D, ?> executable, final Bean<D> owner) {
+ default <D> Collection<InjectionPoint> createExecutableInjectionPoints(final MetaExecutable<D> executable, final Bean<D> owner) {
Objects.requireNonNull(executable);
return executable.getParameters().stream()
.map(parameter -> createParameterInjectionPoint(executable, parameter, owner))
@@ -147,12 +145,12 @@ public interface ElementManager extends AutoCloseable {
/**
* Creates a variable for an element.
*/
- Variable createVariable(final MetaElement<?> element);
+ Variable createVariable(final MetaElement element);
/**
* Creates a variable for an injection point.
*/
- Variable createVariable(final InjectionPoint<?> point);
+ Variable createVariable(final InjectionPoint point);
@Override
void close();
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/InjectionPoint.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/InjectionPoint.java
index 6e47521..05e09db 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/InjectionPoint.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/InjectionPoint.java
@@ -24,10 +24,8 @@ import java.util.Optional;
/**
* Represents metadata about an element in a program where a value should be injected.
- *
- * @param <T> type of element
*/
-public interface InjectionPoint<T> {
+public interface InjectionPoint {
/**
* Gets the generic type information of this point.
@@ -48,11 +46,11 @@ public interface InjectionPoint<T> {
/**
* Gets the field, method, or constructor where injection takes place.
*/
- MetaMember<?, ?> getMember();
+ MetaMember<?> getMember();
/**
* Gets the program element corresponding to this injection point.
*/
- MetaElement<T> getElement();
+ MetaElement getElement();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaAnnotationElement.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaAnnotationElement.java
index 28506fe..460d6b8 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaAnnotationElement.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaAnnotationElement.java
@@ -17,7 +17,7 @@
package org.apache.logging.log4j.plugins.spi.model;
-public interface MetaAnnotationElement<T> extends MetaElement<T> {
+public interface MetaAnnotationElement<T> extends MetaElement {
T getValue();
MetaAnnotationElement<T> withNewValue(final T value);
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaClass.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaClass.java
index 48159bf..7d3b4d9 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaClass.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaClass.java
@@ -23,7 +23,7 @@ import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Optional;
-public interface MetaClass<T> extends MetaElement<T> {
+public interface MetaClass<T> extends MetaElement {
Class<T> getJavaClass();
Collection<MetaConstructor<T>> getConstructors();
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaConstructor.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaConstructor.java
index 766d353..4402259 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaConstructor.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaConstructor.java
@@ -17,6 +17,6 @@
package org.apache.logging.log4j.plugins.spi.model;
-public interface MetaConstructor<T> extends MetaExecutable<T, T> {
+public interface MetaConstructor<T> extends MetaExecutable<T> {
T construct(final Object... args);
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaElement.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaElement.java
index dec4495..4ebe48c 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaElement.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaElement.java
@@ -18,12 +18,13 @@
package org.apache.logging.log4j.plugins.spi.model;
import org.apache.logging.log4j.plugins.api.AnnotationAlias;
+import org.apache.logging.log4j.plugins.util.TypeUtil;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Collection;
-public interface MetaElement<T> {
+public interface MetaElement {
/**
* Returns the source code name of this element.
@@ -32,7 +33,9 @@ public interface MetaElement<T> {
Type getType();
- Collection<Type> getTypeClosure();
+ default Collection<Type> getTypeClosure() {
+ return TypeUtil.getTypeClosure(getType());
+ }
/**
* Returns all the annotations present on this element.
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaExecutable.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaExecutable.java
index b2ae5e1..049cf21 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaExecutable.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaExecutable.java
@@ -19,6 +19,6 @@ package org.apache.logging.log4j.plugins.spi.model;
import java.util.List;
-public interface MetaExecutable<D, T> extends MetaMember<D, T> {
- List<MetaParameter<?>> getParameters();
+public interface MetaExecutable<T> extends MetaMember<T> {
+ List<MetaParameter> getParameters();
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaField.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaField.java
index 9767eba..a406a96 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaField.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaField.java
@@ -17,7 +17,7 @@
package org.apache.logging.log4j.plugins.spi.model;
-public interface MetaField<D, T> extends MetaMember<D, T> {
+public interface MetaField<D, T> extends MetaMember<D> {
T get(final D target);
void set(final D target, final T value);
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMember.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMember.java
index b718867..4fc34a4 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMember.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMember.java
@@ -17,7 +17,7 @@
package org.apache.logging.log4j.plugins.spi.model;
-public interface MetaMember<D, T> extends MetaElement<T> {
+public interface MetaMember<D> extends MetaElement {
MetaClass<D> getDeclaringClass();
boolean isStatic();
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMethod.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMethod.java
index 80989b8..7e79f89 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMethod.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaMethod.java
@@ -17,6 +17,6 @@
package org.apache.logging.log4j.plugins.spi.model;
-public interface MetaMethod<D, T> extends MetaExecutable<D, T> {
+public interface MetaMethod<D, T> extends MetaExecutable<D> {
T invoke(final D target, final Object... args);
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaParameter.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaParameter.java
index cac9b58..9ceaef0 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaParameter.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/MetaParameter.java
@@ -17,5 +17,5 @@
package org.apache.logging.log4j.plugins.spi.model;
-public interface MetaParameter<T> extends MetaElement<T> {
+public interface MetaParameter extends MetaElement {
}
diff --git a/log4j-plugins/src/test/java/org/apache/logging/log4j/plugins/test/BeanJUnit4Runner.java b/log4j-plugins/src/test/java/org/apache/logging/log4j/plugins/test/BeanJUnit4Runner.java
index 06a07bf..7376ab7 100644
--- a/log4j-plugins/src/test/java/org/apache/logging/log4j/plugins/test/BeanJUnit4Runner.java
+++ b/log4j-plugins/src/test/java/org/apache/logging/log4j/plugins/test/BeanJUnit4Runner.java
@@ -123,7 +123,7 @@ public class BeanJUnit4Runner extends BlockJUnit4ClassRunner {
final Class<T> testClass = TypeUtil.cast(getTestClass().getJavaClass());
final MetaClass<T> metaClass = elementManager.getMetaClass(testClass);
final MetaMethod<T, Void> metaMethod = metaClass.getMetaMethod(method.getMethod());
- final Collection<InjectionPoint<?>> points =
+ final Collection<InjectionPoint> points =
elementManager.createExecutableInjectionPoints(metaMethod, testClassBean);
injector.invoke(testInstance, metaMethod, points, context);
} finally {