This is an automated email from the ASF dual-hosted git repository. mattsicker pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit d4aa73b307afa201965621fd476622117e8016f3 Author: Matt Sicker <[email protected]> AuthorDate: Fri May 27 15:28:33 2022 -0500 Remove unused PluginType::getImplementedInterfaces Signed-off-by: Matt Sicker <[email protected]> --- .../log4j/plugin/processor/PluginProcessor.java | 73 +++++----------------- .../log4j/plugins/processor/PluginEntry.java | 31 --------- .../logging/log4j/plugins/util/PluginType.java | 18 +----- 3 files changed, 15 insertions(+), 107 deletions(-) diff --git a/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/plugin/processor/PluginProcessor.java b/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/plugin/processor/PluginProcessor.java index 88c64ae613..590e81f531 100644 --- a/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/plugin/processor/PluginProcessor.java +++ b/log4j-plugin-processor/src/main/java/org/apache/logging/log4j/plugin/processor/PluginProcessor.java @@ -34,16 +34,10 @@ import javax.lang.model.SourceVersion; import javax.lang.model.element.AnnotationValue; import javax.lang.model.element.Element; import javax.lang.model.element.ElementVisitor; -import javax.lang.model.element.Modifier; import javax.lang.model.element.Name; import javax.lang.model.element.TypeElement; -import javax.lang.model.type.DeclaredType; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.util.ElementKindVisitor9; import javax.lang.model.util.Elements; import javax.lang.model.util.SimpleElementVisitor8; -import javax.lang.model.util.SimpleTypeVisitor9; -import javax.lang.model.util.Types; import javax.tools.Diagnostic.Kind; import javax.tools.FileObject; import javax.tools.JavaFileObject; @@ -55,7 +49,6 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -97,7 +90,7 @@ public class PluginProcessor extends AbstractProcessor { return false; } messager.printMessage(Kind.NOTE, "Retrieved " + elements.size() + " Plugin elements"); - List<PluginEntryMirror> list = new ArrayList<>(); + List<PluginEntry> list = new ArrayList<>(); packageName = collectPlugins(packageName, elements, list); writeClassFile(packageName, list); writeServiceFile(packageName); @@ -112,18 +105,18 @@ public class PluginProcessor extends AbstractProcessor { processingEnv.getMessager().printMessage(Kind.ERROR, message); } - private String collectPlugins(String packageName, final Iterable<? extends Element> elements, List<PluginEntryMirror> list) { + private String collectPlugins(String packageName, final Iterable<? extends Element> elements, List<PluginEntry> list) { boolean calculatePackage = packageName == null; final Elements elementUtils = processingEnv.getElementUtils(); - final ElementVisitor<PluginEntryMirror, Plugin> pluginVisitor = new PluginElementVisitor(elementUtils); - final ElementVisitor<Collection<PluginEntryMirror>, Plugin> pluginAliasesVisitor = new PluginAliasesElementVisitor( + final ElementVisitor<PluginEntry, Plugin> pluginVisitor = new PluginElementVisitor(elementUtils); + final ElementVisitor<Collection<PluginEntry>, Plugin> pluginAliasesVisitor = new PluginAliasesElementVisitor( elementUtils); for (final Element element : elements) { final Plugin plugin = element.getAnnotation(Plugin.class); if (plugin == null) { continue; } - final PluginEntryMirror entry = element.accept(pluginVisitor, plugin); + final PluginEntry entry = element.accept(pluginVisitor, plugin); list.add(entry); if (calculatePackage) { packageName = calculatePackage(elementUtils, element, packageName); @@ -160,7 +153,7 @@ public class PluginProcessor extends AbstractProcessor { } } - private void writeClassFile(String pkg, List<PluginEntryMirror> list) { + private void writeClassFile(String pkg, List<PluginEntry> list) { String fqcn = createFqcn(pkg); try (final PrintWriter writer = createSourceFile(fqcn)) { writer.println("package " + pkg + ".plugins;"); @@ -174,8 +167,7 @@ public class PluginProcessor extends AbstractProcessor { StringBuilder sb = new StringBuilder(); int max = list.size() - 1; for (int i = 0; i < list.size(); ++i) { - PluginEntryMirror mirror = list.get(i); - final PluginEntry entry = mirror.entry; + final PluginEntry entry = list.get(i); sb.append(" ").append("new PluginEntry(\""); sb.append(entry.getKey()).append("\", \""); sb.append(entry.getClassName()).append("\", \""); @@ -188,9 +180,6 @@ public class PluginProcessor extends AbstractProcessor { sb.append(entry.isPrintable()).append(", "); sb.append(entry.isDeferChildren()).append(", \""); sb.append(entry.getNamespace()).append("\""); - for (final Name implementedInterface : getImplementedInterfaces(mirror.element.asType())) { - sb.append(", ").append(implementedInterface).append(".class"); - } sb.append(')'); if (i < max) { sb.append(","); @@ -218,16 +207,6 @@ public class PluginProcessor extends AbstractProcessor { return packageName + ".plugins.Log4jPlugins"; } - private static class PluginEntryMirror { - private final TypeElement element; - private final PluginEntry entry; - - private PluginEntryMirror(final TypeElement element, final PluginEntry entry) { - this.element = element; - this.entry = entry; - } - } - private static String getNamespace(final TypeElement e) { return Optional.ofNullable(e.getAnnotation(Namespace.class)).map(Namespace::value).orElseGet( () -> e.getAnnotationMirrors().stream().flatMap( @@ -242,7 +221,7 @@ public class PluginProcessor extends AbstractProcessor { /** * ElementVisitor to scan the Plugin annotation. */ - private static class PluginElementVisitor extends SimpleElementVisitor8<PluginEntryMirror, Plugin> { + private static class PluginElementVisitor extends SimpleElementVisitor8<PluginEntry, Plugin> { private final Elements elements; @@ -251,7 +230,7 @@ public class PluginProcessor extends AbstractProcessor { } @Override - public PluginEntryMirror visitType(final TypeElement e, final Plugin plugin) { + public PluginEntry visitType(final TypeElement e, final Plugin plugin) { Objects.requireNonNull(plugin, "Plugin annotation is null."); String name = plugin.value(); if (name.isEmpty()) { @@ -270,34 +249,10 @@ public class PluginProcessor extends AbstractProcessor { } else { builder.setNamespace(getNamespace(e)); } - return new PluginEntryMirror(e, builder.get()); + return builder.get(); } } - private Set<Name> getImplementedInterfaces(final TypeMirror base) { - final Set<Name> implementedInterfaces = new LinkedHashSet<>(); - final Types types = processingEnv.getTypeUtils(); - base.accept(new SimpleTypeVisitor9<Void, Void>() { - @Override - public Void visitDeclared(final DeclaredType t, final Void unused) { - for (final TypeMirror directSupertype : types.directSupertypes(t)) { - directSupertype.accept(this, null); - } - t.asElement().accept(new ElementKindVisitor9<Void, Void>() { - @Override - public Void visitTypeAsInterface(final TypeElement e, final Void unused) { - if (e.getModifiers().contains(Modifier.PUBLIC)) { - implementedInterfaces.add(e.getQualifiedName()); - } - return null; - } - }, null); - return null; - } - }, null); - return implementedInterfaces; - } - private String commonPrefix(String str1, String str2) { int minLength = Math.min(str1.length(), str2.length()); for (int i = 0; i < minLength; i++) { @@ -315,7 +270,7 @@ public class PluginProcessor extends AbstractProcessor { /** * ElementVisitor to scan the PluginAliases annotation. */ - private static class PluginAliasesElementVisitor extends SimpleElementVisitor8<Collection<PluginEntryMirror>, Plugin> { + private static class PluginAliasesElementVisitor extends SimpleElementVisitor8<Collection<PluginEntry>, Plugin> { private final Elements elements; @@ -325,7 +280,7 @@ public class PluginProcessor extends AbstractProcessor { } @Override - public Collection<PluginEntryMirror> visitType(final TypeElement e, final Plugin plugin) { + public Collection<PluginEntry> visitType(final TypeElement e, final Plugin plugin) { final PluginAliases aliases = e.getAnnotation(PluginAliases.class); if (aliases == null) { return DEFAULT_VALUE; @@ -346,10 +301,10 @@ public class PluginProcessor extends AbstractProcessor { } else { builder.setNamespace(getNamespace(e)); } - final Collection<PluginEntryMirror> entries = new ArrayList<>(aliases.value().length); + final Collection<PluginEntry> entries = new ArrayList<>(aliases.value().length); for (final String alias : aliases.value()) { final PluginEntry entry = builder.setKey(alias.toLowerCase(Locale.ROOT)).get(); - entries.add(new PluginEntryMirror(e, entry)); + entries.add(entry); } return entries; } diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/processor/PluginEntry.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/processor/PluginEntry.java index d8c34f7a4a..5dcd25b3bb 100644 --- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/processor/PluginEntry.java +++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/processor/PluginEntry.java @@ -30,7 +30,6 @@ public class PluginEntry { private final boolean printable; private final boolean deferChildren; private final String namespace; - private final Class<?>[] interfaces; public PluginEntry( String key, String className, String name, String elementType, boolean printable, boolean deferChildren, String namespace) { @@ -41,20 +40,6 @@ public class PluginEntry { this.printable = printable; this.deferChildren = deferChildren; this.namespace = namespace; - this.interfaces = null; - } - - public PluginEntry( - final String key, final String className, final String name, final String elementType, final boolean printable, - final boolean deferChildren, final String namespace, final Class<?>... interfaces) { - this.key = key; - this.className = className; - this.name = name; - this.elementType = elementType; - this.printable = printable; - this.deferChildren = deferChildren; - this.namespace = namespace; - this.interfaces = interfaces; } private PluginEntry(final Builder builder) { @@ -65,8 +50,6 @@ public class PluginEntry { printable = builder.isPrintable(); deferChildren = builder.isDeferChildren(); namespace = builder.getNamespace(); - final Class<?>[] classes = builder.getInterfaces(); - interfaces = classes != null ? classes.clone() : null; } public String getKey() { @@ -97,10 +80,6 @@ public class PluginEntry { return namespace; } - public Class<?>[] getInterfaces() { - return interfaces; - } - @Override public String toString() { return "PluginEntry [key=" + key + ", className=" + className + ", name=" + name + ", printable=" + printable @@ -119,7 +98,6 @@ public class PluginEntry { private boolean printable; private boolean deferChildren; private String namespace; - private Class<?>[] interfaces; public String getKey() { return key; @@ -184,15 +162,6 @@ public class PluginEntry { return this; } - public Class<?>[] getInterfaces() { - return interfaces; - } - - public Builder setInterfaces(final Class<?>... interfaces) { - this.interfaces = interfaces; - return this; - } - @Override public PluginEntry get() { return new PluginEntry(this); diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginType.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginType.java index dfafe901e7..cd344b8f66 100644 --- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginType.java +++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/util/PluginType.java @@ -19,7 +19,6 @@ package org.apache.logging.log4j.plugins.util; import org.apache.logging.log4j.plugins.processor.PluginEntry; import org.apache.logging.log4j.util.LazyValue; -import java.util.Set; import java.util.function.Supplier; /** @@ -32,7 +31,6 @@ public class PluginType<T> { private final PluginEntry pluginEntry; private final Supplier<Class<T>> pluginClass; - private final Supplier<Set<Class<?>>> implementedInterfaces; /** * Constructor. @@ -44,8 +42,6 @@ public class PluginType<T> { final PluginEntry pluginEntry, final Class<T> pluginClass) { this.pluginEntry = pluginEntry; this.pluginClass = () -> pluginClass; - final var interfaces = Set.of(pluginClass.getInterfaces()); - this.implementedInterfaces = () -> interfaces; } /** @@ -55,7 +51,7 @@ public class PluginType<T> { */ public PluginType(final PluginEntry pluginEntry, final ClassLoader classLoader) { this.pluginEntry = pluginEntry; - final LazyValue<Class<T>> classProvider = LazyValue.from(() -> { + this.pluginClass = LazyValue.from(() -> { try { return TypeUtil.cast(classLoader.loadClass(pluginEntry.getClassName())); } catch (final ClassNotFoundException e) { @@ -63,14 +59,6 @@ public class PluginType<T> { " located for element " + pluginEntry.getName(), e); } }); - this.pluginClass = classProvider; - final Class<?>[] interfaces = pluginEntry.getInterfaces(); - if (interfaces != null) { - final var implementedInterfaces = Set.of(interfaces); - this.implementedInterfaces = () -> implementedInterfaces; - } else { - this.implementedInterfaces = classProvider.map(clazz -> Set.of(clazz.getInterfaces())); - } } public PluginEntry getPluginEntry() { @@ -81,10 +69,6 @@ public class PluginType<T> { return pluginClass.get(); } - public Set<Class<?>> getImplementedInterfaces() { - return implementedInterfaces.get(); - } - public String getElementType() { return pluginEntry.getElementType(); }
