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/15 17:26:36 UTC
[logging-log4j2] 02/07: Remove unused type parameter in Variable
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 f089940964de2ff32555d7e83cb7f5fd9865b702
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sat Mar 14 13:54:07 2020 -0500
Remove unused type parameter in Variable
Signed-off-by: Matt Sicker <bo...@gmail.com>
---
.../log4j/plugins/defaults/bean/AbstractBean.java | 4 +-
.../plugins/defaults/bean/DefaultBeanManager.java | 62 ++++++++++------------
.../plugins/defaults/bean/InjectionTargetBean.java | 2 +-
.../log4j/plugins/defaults/bean/OptionalBean.java | 2 +-
.../log4j/plugins/defaults/bean/ProducerBean.java | 2 +-
.../log4j/plugins/defaults/bean/ProvidedBean.java | 2 +-
.../log4j/plugins/defaults/bean/ProviderBean.java | 2 +-
.../log4j/plugins/defaults/bean/SystemBean.java | 4 +-
.../defaults/model/DefaultElementManager.java | 6 +--
.../plugins/defaults/model/DefaultVariable.java | 10 ++--
.../logging/log4j/plugins/spi/bean/Bean.java | 2 +-
.../log4j/plugins/spi/model/ElementManager.java | 4 +-
.../logging/log4j/plugins/spi/model/Variable.java | 6 +--
13 files changed, 50 insertions(+), 58 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 e46f7d2..947d722 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
@@ -28,10 +28,10 @@ import java.util.Collection;
import java.util.Objects;
abstract class AbstractBean<D, T> implements Bean<T> {
- private final Variable<T> variable;
+ private final Variable variable;
private final MetaClass<D> declaringClass;
- AbstractBean(final Variable<T> variable, final MetaClass<D> declaringClass) {
+ AbstractBean(final Variable variable, final MetaClass<D> declaringClass) {
this.variable = Objects.requireNonNull(variable);
this.declaringClass = declaringClass;
}
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 8163bbf..6028c43 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
@@ -103,7 +103,7 @@ public class DefaultBeanManager implements BeanManager {
private <T> Collection<Bean<?>> loadBeans(final MetaClass<T> metaClass) {
final Bean<T> created;
if (elementManager.isInjectable(metaClass)) {
- final Variable<T> variable = elementManager.createVariable(metaClass);
+ final Variable variable = elementManager.createVariable(metaClass);
final InjectionTargetFactory<T> factory =
new DefaultInjectionTargetFactory<>(elementManager, injector, metaClass);
created = addBean(new InjectionTargetBean<>(variable, metaClass, factory));
@@ -162,47 +162,47 @@ public class DefaultBeanManager implements BeanManager {
}
}
- private <T> Collection<Bean<?>> loadProducerBeans(final MetaClass<T> metaClass, final Bean<T> bean) {
+ private <P> Collection<Bean<?>> loadProducerBeans(final MetaClass<P> producingClass, final Bean<P> producingBean) {
final Collection<Bean<?>> beans = new HashSet<>();
- for (final MetaMethod<T, ?> method : metaClass.getMethods()) {
+ for (final MetaMethod<P, ?> method : producingClass.getMethods()) {
if (method.isAnnotationPresent(Produces.class)) {
- beans.add(loadProducerBean(method, bean));
+ beans.add(loadProducerBean(method, producingBean));
}
}
- for (final MetaField<T, ?> field : metaClass.getFields()) {
+ for (final MetaField<P, ?> field : producingClass.getFields()) {
if (field.isAnnotationPresent(Produces.class)) {
- beans.add(loadProducerBean(field, bean));
+ beans.add(loadProducerBean(field, producingBean));
}
}
return beans;
}
- private <D, T> Bean<T> loadProducerBean(final MetaMember<D, T> member, final Bean<D> bean) {
- final Variable<T> variable = elementManager.createVariable(member);
- final MetaClass<D> declaringType = member.getDeclaringClass();
- final ProducerFactory<D> factory = getProducerFactory(member, bean);
+ private <P, T> Bean<T> loadProducerBean(final MetaMember<P, T> member, final Bean<P> producingBean) {
+ final Variable variable = elementManager.createVariable(member);
+ final MetaClass<P> declaringType = member.getDeclaringClass();
+ final ProducerFactory<P> factory = getProducerFactory(member, producingBean);
return addBean(new ProducerBean<>(variable, declaringType, factory));
}
- private <D> ProducerFactory<D> getProducerFactory(final MetaMember<D, ?> member, final Bean<D> declaringBean) {
- final Variable<?> variable = elementManager.createVariable(member);
- final MetaMethod<D, ?> disposerMethod = resolveDisposerMethod(variable, declaringBean);
+ private <P> ProducerFactory<P> 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() :
- elementManager.createExecutableInjectionPoints(disposerMethod, declaringBean);
+ elementManager.createExecutableInjectionPoints(disposerMethod, producingBean);
if (member instanceof MetaField<?, ?>) {
- final MetaField<D, ?> field = TypeUtil.cast(member);
- return new FieldProducerFactory<>(this, declaringBean, field, disposerMethod, disposerIPs);
+ final MetaField<P, ?> field = TypeUtil.cast(member);
+ return new FieldProducerFactory<>(this, producingBean, field, disposerMethod, disposerIPs);
} else {
- final MetaMethod<D, ?> method = TypeUtil.cast(member);
+ final MetaMethod<P, ?> method = TypeUtil.cast(member);
final Collection<InjectionPoint<?>> producerIPs =
- elementManager.createExecutableInjectionPoints(method, declaringBean);
- return new MethodProducerFactory<>(this, declaringBean, method, producerIPs, disposerMethod, disposerIPs);
+ elementManager.createExecutableInjectionPoints(method, producingBean);
+ return new MethodProducerFactory<>(this, producingBean, method, producerIPs, disposerMethod, disposerIPs);
}
}
- private <D, T> MetaMethod<D, ?> resolveDisposerMethod(final Variable<T> variable, final Bean<D> bean) {
+ private <D> MetaMethod<D, ?> resolveDisposerMethod(final Variable variable, final Bean<D> disposingBean) {
final List<MetaMethod<?, ?>> methods = disposesMethods.stream()
- .filter(method -> method.matches(variable, bean))
+ .filter(method -> method.matches(variable, disposingBean))
.map(method -> method.disposesMethod)
.collect(Collectors.toList());
if (methods.isEmpty()) {
@@ -286,8 +286,8 @@ public class DefaultBeanManager implements BeanManager {
// first, look for an existing bean
final Type type = point.getType();
final Qualifiers qualifiers = point.getQualifiers();
- final Optional<Bean<T>> existingBean = getExistingOrProvidedBean(type, qualifiers,
- () -> elementManager.createVariable(point));
+ final Variable variable = elementManager.createVariable(point);
+ final Optional<Bean<T>> existingBean = getExistingOrProvidedBean(type, qualifiers, () -> variable);
if (existingBean.isPresent()) {
return existingBean;
}
@@ -295,22 +295,17 @@ public class DefaultBeanManager implements BeanManager {
final Class<?> rawType = TypeUtil.getRawType(type);
final Type actualType = ((ParameterizedType) type).getActualTypeArguments()[0];
if (rawType.equals(Provider.class)) {
- // generics abuse ahoy
- final InjectionPoint<Provider<T>> ip = TypeUtil.cast(point);
- final Variable<Provider<T>> variable = elementManager.createVariable(ip);
// if a Provider<T> is requested, we can convert an existing Bean<T> into a Bean<Provider<T>>
return this.<T>getBean(actualType, qualifiers)
.map(bean -> new ProviderBean<>(variable, context -> getValue(bean, context)))
.map(this::addBean)
.map(TypeUtil::cast);
} else if (rawType.equals(Optional.class)) {
- final InjectionPoint<Optional<T>> ip = TypeUtil.cast(point);
- final Variable<Optional<T>> optionalVariable = elementManager.createVariable(ip);
final Optional<Bean<T>> actualExistingBean = getExistingOrProvidedBean(actualType, qualifiers,
// FIXME: remove need for DefaultVariable to be public
() -> DefaultVariable.newVariable(
- TypeUtil.getTypeClosure(actualType), qualifiers, optionalVariable.getScopeType()));
- final Bean<Optional<T>> optionalBean = addBean(new OptionalBean<>(optionalVariable,
+ TypeUtil.getTypeClosure(actualType), qualifiers, variable.getScopeType()));
+ final Bean<Optional<T>> optionalBean = addBean(new OptionalBean<>(variable,
context -> actualExistingBean.map(bean -> getValue(bean, context))));
return Optional.of(TypeUtil.cast(optionalBean));
}
@@ -319,18 +314,19 @@ public class DefaultBeanManager implements BeanManager {
}
private <T> Optional<Bean<T>> getExistingOrProvidedBean(final Type type, final Qualifiers qualifiers,
- final Supplier<Variable<T>> variableSupplier) {
+ final Supplier<Variable> variableSupplier) {
final Optional<Bean<T>> existingBean = getBean(type, qualifiers);
if (existingBean.isPresent()) {
return existingBean;
}
- final Variable<T> variable = variableSupplier.get();
+ final Variable variable = variableSupplier.get();
final Type providerType = new ParameterizedTypeImpl(null, Provider.class, type);
final Optional<Bean<Provider<T>>> providerBean = getBean(providerType, qualifiers);
return providerBean.map(bean -> new ProvidedBean<>(variable, context -> getValue(bean, context).get()))
.map(this::addBean);
}
+ // FIXME: this needs to consider scopes
private <T> Optional<Bean<T>> getBean(final Type type, final Qualifiers qualifiers) {
final Set<Bean<T>> beans = this.<T>streamBeansMatchingType(type)
.filter(bean -> qualifiers.equals(bean.getQualifiers()))
@@ -427,7 +423,7 @@ public class DefaultBeanManager implements BeanManager {
this.disposesMethod = disposesMethod;
}
- boolean matches(final Variable<?> variable, final Bean<?> declaringBean) {
+ boolean matches(final Variable variable, final Bean<?> declaringBean) {
return Objects.equals(declaringBean, this.declaringBean) &&
variable.hasMatchingType(type) &&
qualifiers.equals(variable.getQualifiers());
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 a5f071d..9535f02 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
@@ -31,7 +31,7 @@ import java.util.Objects;
class InjectionTargetBean<T> extends AbstractBean<T, T> {
private final InjectionTarget<T> injectionTarget;
- InjectionTargetBean(final Variable<T> variable, final MetaClass<T> declaringClass,
+ InjectionTargetBean(final Variable variable, final MetaClass<T> declaringClass,
final InjectionTargetFactory<T> factory) {
super(variable, declaringClass);
Objects.requireNonNull(factory);
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/OptionalBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/OptionalBean.java
index 0d753c8..d98ce88 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/OptionalBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/OptionalBean.java
@@ -26,7 +26,7 @@ import java.util.function.Function;
class OptionalBean<T> extends SystemBean<Optional<T>> {
private final Function<InitializationContext<?>, Optional<T>> optionalValueFactory;
- OptionalBean(final Variable<Optional<T>> variable, final Function<InitializationContext<?>, Optional<T>> optionalValueFactory) {
+ OptionalBean(final Variable variable, final Function<InitializationContext<?>, Optional<T>> optionalValueFactory) {
super(variable);
this.optionalValueFactory = optionalValueFactory;
}
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 6a382fe..5eea07b 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
@@ -33,7 +33,7 @@ class ProducerBean<D, T> extends AbstractBean<D, T> {
private final Producer<T> producer;
private final Type type;
- ProducerBean(final Variable<T> variable, final MetaClass<D> declaringClass, final ProducerFactory<D> factory) {
+ ProducerBean(final Variable variable, final MetaClass<D> declaringClass, final ProducerFactory<D> factory) {
super(variable, declaringClass);
Objects.requireNonNull(factory);
producer = factory.createProducer(this);
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProvidedBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProvidedBean.java
index 632218d..80a6c26 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProvidedBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProvidedBean.java
@@ -25,7 +25,7 @@ import java.util.function.Function;
class ProvidedBean<T> extends SystemBean<T> {
private final Function<InitializationContext<?>, T> providedValueFactory;
- ProvidedBean(final Variable<T> variable, final Function<InitializationContext<?>, T> providedValueFactory) {
+ ProvidedBean(final Variable variable, final Function<InitializationContext<?>, T> providedValueFactory) {
super(variable);
this.providedValueFactory = providedValueFactory;
}
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProviderBean.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProviderBean.java
index bbd8522..d3ae88f 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProviderBean.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/bean/ProviderBean.java
@@ -26,7 +26,7 @@ import java.util.function.Function;
class ProviderBean<T> extends SystemBean<Provider<T>> {
private final Function<InitializationContext<?>, T> providedValueFactory;
- ProviderBean(final Variable<Provider<T>> variable, final Function<InitializationContext<?>, T> providedValueFactory) {
+ ProviderBean(final Variable variable, final Function<InitializationContext<?>, T> providedValueFactory) {
super(variable);
this.providedValueFactory = providedValueFactory;
}
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 b5c9519..8b55f3d 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
@@ -30,9 +30,9 @@ import java.util.Collection;
import java.util.Collections;
abstract class SystemBean<T> implements Bean<T> {
- private final Variable<T> variable;
+ private final Variable variable;
- SystemBean(final Variable<T> variable) {
+ SystemBean(final Variable variable) {
this.variable = variable;
}
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 9daaf65..6144a14 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
@@ -154,18 +154,18 @@ public class DefaultElementManager implements ElementManager {
}
@Override
- public <T> Variable<T> createVariable(final MetaElement<T> element) {
+ public Variable createVariable(final MetaElement<?> element) {
Objects.requireNonNull(element);
return createVariable(element, getQualifiers(element));
}
@Override
- public <T> Variable<T> createVariable(final InjectionPoint<T> point) {
+ public Variable createVariable(final InjectionPoint<?> point) {
Objects.requireNonNull(point);
return createVariable(point.getElement(), point.getQualifiers());
}
- private <T> Variable<T> createVariable(final MetaElement<T> 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/DefaultVariable.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultVariable.java
index f756908..f06d8b4 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultVariable.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/defaults/model/DefaultVariable.java
@@ -25,11 +25,11 @@ import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Objects;
-public class DefaultVariable<T> implements Variable<T> {
+public class DefaultVariable implements Variable {
- public static <T> DefaultVariable<T> newVariable(final Collection<Type> types, final Qualifiers qualifiers,
- final Class<? extends Annotation> scopeType) {
- return new DefaultVariable<>(types, qualifiers, scopeType);
+ public static DefaultVariable newVariable(final Collection<Type> types, final Qualifiers qualifiers,
+ final Class<? extends Annotation> scopeType) {
+ return new DefaultVariable(types, qualifiers, scopeType);
}
private final Collection<Type> types;
@@ -62,7 +62,7 @@ public class DefaultVariable<T> implements Variable<T> {
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- final DefaultVariable<?> that = (DefaultVariable<?>) o;
+ final DefaultVariable that = (DefaultVariable) o;
return types.equals(that.types) &&
qualifiers.equals(that.qualifiers) &&
scopeType.equals(that.scopeType);
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 3e93e2f..482aeec 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
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.plugins.spi.model.Variable;
import java.util.Collection;
-public interface Bean<T> extends Variable<T> {
+public interface Bean<T> extends Variable {
/**
* Creates a new instance of this bean. The given {@link InitializationContext} should be used by implementations
* to track dependent objects.
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 00aa67d..c979eee 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
@@ -147,12 +147,12 @@ public interface ElementManager extends AutoCloseable {
/**
* Creates a variable for an element.
*/
- <T> Variable<T> createVariable(final MetaElement<T> element);
+ Variable createVariable(final MetaElement<?> element);
/**
* Creates a variable for an injection point.
*/
- <T> Variable<T> createVariable(final InjectionPoint<T> point);
+ Variable createVariable(final InjectionPoint<?> point);
@Override
void close();
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/Variable.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/Variable.java
index 1cc9186..af703ac 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/Variable.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/spi/model/Variable.java
@@ -25,7 +25,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Collection;
-public interface Variable<T> {
+public interface Variable {
Collection<Type> getTypes();
default boolean hasMatchingType(final Type requiredType) {
@@ -44,8 +44,4 @@ public interface Variable<T> {
default boolean isDependentScoped() {
return getScopeType() == Dependent.class;
}
-
- default boolean isSingletonScoped() {
- return getScopeType() == Singleton.class;
- }
}