From f0bc3c08e1ebe133a8b3d94c96ae3bc853ceb285 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 8 Dec 2014 13:35:13 -0800 Subject: [PATCH] Add additional ElementExcludeFilter items Fixes gh-2088 --- ...figurationMetadataAnnotationProcessor.java | 3 ++- .../ElementExcludeFilter.java | 23 +++++++++++++++---- ...ationMetadataAnnotationProcessorTests.java | 1 + .../specific/ExcludedTypesPojo.java | 10 ++++++++ 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java index 124b1d2196a..1fa2eecc921 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessor.java @@ -179,7 +179,8 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor VariableElement field = members.getFields().get(name); Element returnType = this.processingEnv.getTypeUtils().asElement( getter.getReturnType()); - boolean isExcluded = this.elementExcludeFilter.isExcluded(returnType); + boolean isExcluded = this.elementExcludeFilter.isExcluded(getter + .getReturnType()); boolean isNested = isNested(returnType, field, element); boolean isCollection = this.typeUtils.isCollectionOrMap(getter .getReturnType()); diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ElementExcludeFilter.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ElementExcludeFilter.java index eb3433fcaf2..a5b468d7a6c 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ElementExcludeFilter.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/ElementExcludeFilter.java @@ -19,7 +19,7 @@ package org.springframework.boot.configurationprocessor; import java.util.HashSet; import java.util.Set; -import javax.lang.model.element.Element; +import javax.lang.model.type.TypeMirror; /** * Filter to excluded elements that don't make sense to process. @@ -34,19 +34,32 @@ class ElementExcludeFilter { public ElementExcludeFilter() { add("java.io.Writer"); add("java.io.PrintWriter"); - add("javax.sql.DataSource"); add("java.lang.ClassLoader"); + add("java.util.concurrent.ThreadFactory"); + add("javax.sql.DataSource"); + add("com.zaxxer.hikari.IConnectionCustomizer"); + add("groovy.text.markup.MarkupTemplateEngine"); + add("org.apache.tomcat.jdbc.pool.PoolConfiguration"); + add("org.apache.tomcat.jdbc.pool.Validator"); + add("org.flywaydb.core.api.MigrationVersion"); + add("org.flywaydb.core.api.callback.FlywayCallback"); + add("org.flywaydb.core.api.resolver.MigrationResolver"); + add("org.springframework.http.MediaType"); } private void add(String className) { this.excludes.add(className); } - public boolean isExcluded(Element element) { - if (element == null) { + public boolean isExcluded(TypeMirror type) { + if (type == null) { return false; } - return this.excludes.contains(element.toString()); + String typeName = type.toString(); + if (typeName.endsWith("[]")) { + typeName = typeName.substring(0, typeName.length() - 2); + } + return this.excludes.contains(typeName); } } diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java index 0e553305139..58479cbe705 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java @@ -283,6 +283,7 @@ public class ConfigurationMetadataAnnotationProcessorTests { assertThat(metadata, not(containsProperty("excluded.data-source"))); assertThat(metadata, not(containsProperty("excluded.print-writer"))); assertThat(metadata, not(containsProperty("excluded.writer"))); + assertThat(metadata, not(containsProperty("excluded.writer-array"))); } private ConfigurationMetadata compile(Class... types) throws IOException { diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/ExcludedTypesPojo.java b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/ExcludedTypesPojo.java index d636ed0ae38..f3eda06e463 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/ExcludedTypesPojo.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/ExcludedTypesPojo.java @@ -42,6 +42,8 @@ public class ExcludedTypesPojo { private Writer writer; + private Writer[] writerArray; + public String getName() { return this.name; } @@ -82,4 +84,12 @@ public class ExcludedTypesPojo { this.writer = writer; } + public Writer[] getWriterArray() { + return this.writerArray; + } + + public void setWriterArray(Writer[] writerArray) { + this.writerArray = writerArray; + } + }