From e15b3e463f312524495349673a16cb67cfaa2eae Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 28 Nov 2016 11:30:34 +0100 Subject: [PATCH] Fix compatibility with JDK9 Cast runtime object retrieved reflectively to their public interface counterpart. See gh-7226 --- .../fieldvalues/javac/ExpressionTree.java | 4 ++-- .../fieldvalues/javac/ReflectionWrapper.java | 9 ++------- .../configurationprocessor/fieldvalues/javac/Trees.java | 4 ++-- .../fieldvalues/javac/VariableTree.java | 4 ++-- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java index a8e991feef..467e06dcdf 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ExpressionTree.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,7 +47,7 @@ class ExpressionTree extends ReflectionWrapper { "getInitializers"); ExpressionTree(Object instance) { - super(instance); + super("com.sun.source.tree.ExpressionTree", instance); } public String getKind() throws Exception { diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ReflectionWrapper.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ReflectionWrapper.java index 9237cac278..a9c1493a19 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ReflectionWrapper.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/ReflectionWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,14 +31,9 @@ class ReflectionWrapper { private final Object instance; - ReflectionWrapper(Object instance) { - this.type = instance.getClass(); - this.instance = instance; - } - ReflectionWrapper(String type, Object instance) { this.type = findClass(instance.getClass().getClassLoader(), type); - this.instance = instance; + this.instance = this.type.cast(instance); } protected final Object getInstance() { diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/Trees.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/Trees.java index 8a52524104..e3aae832b3 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/Trees.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/Trees.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import javax.lang.model.element.Element; final class Trees extends ReflectionWrapper { private Trees(Object instance) { - super(instance); + super("com.sun.source.util.Trees", instance); } public Tree getTree(Element element) throws Exception { diff --git a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/VariableTree.java b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/VariableTree.java index c543fc06c8..b3b34cec65 100644 --- a/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/VariableTree.java +++ b/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/VariableTree.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2014 the original author or authors. + * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import javax.lang.model.element.Modifier; class VariableTree extends ReflectionWrapper { VariableTree(Object instance) { - super(instance); + super("com.sun.source.tree.VariableTree", instance); } public String getName() throws Exception {