Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
d7b43a3c
Commit
d7b43a3c
authored
Apr 09, 2021
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Filter out non-public classes when documenting auto-config classes
Fixes gh-25948
parent
73559731
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
3 deletions
+36
-3
AutoConfigurationMetadata.java
...k/boot/build/autoconfigure/AutoConfigurationMetadata.java
+36
-3
No files found.
buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java
View file @
d7b43a3c
/*
/*
* Copyright 2012-202
0
the original author or authors.
* Copyright 2012-202
1
the original author or authors.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* you may not use this file except in compliance with the License.
...
@@ -17,11 +17,15 @@
...
@@ -17,11 +17,15 @@
package
org
.
springframework
.
boot
.
build
.
autoconfigure
;
package
org
.
springframework
.
boot
.
build
.
autoconfigure
;
import
java.io.File
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileReader
;
import
java.io.FileReader
;
import
java.io.FileWriter
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.Reader
;
import
java.io.Reader
;
import
java.util.LinkedHashSet
;
import
java.util.Properties
;
import
java.util.Properties
;
import
java.util.Set
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.Callable
;
import
org.gradle.api.DefaultTask
;
import
org.gradle.api.DefaultTask
;
...
@@ -30,7 +34,10 @@ import org.gradle.api.tasks.OutputFile;
...
@@ -30,7 +34,10 @@ import org.gradle.api.tasks.OutputFile;
import
org.gradle.api.tasks.SourceSet
;
import
org.gradle.api.tasks.SourceSet
;
import
org.gradle.api.tasks.TaskAction
;
import
org.gradle.api.tasks.TaskAction
;
import
org.springframework.asm.ClassReader
;
import
org.springframework.asm.Opcodes
;
import
org.springframework.core.CollectionFactory
;
import
org.springframework.core.CollectionFactory
;
import
org.springframework.util.StringUtils
;
/**
/**
* A {@link Task} for generating metadata describing a project's auto-configuration
* A {@link Task} for generating metadata describing a project's auto-configuration
...
@@ -78,12 +85,38 @@ public class AutoConfigurationMetadata extends DefaultTask {
...
@@ -78,12 +85,38 @@ public class AutoConfigurationMetadata extends DefaultTask {
Properties
autoConfiguration
=
CollectionFactory
.
createSortedProperties
(
true
);
Properties
autoConfiguration
=
CollectionFactory
.
createSortedProperties
(
true
);
Properties
springFactories
=
readSpringFactories
(
Properties
springFactories
=
readSpringFactories
(
new
File
(
this
.
sourceSet
.
getOutput
().
getResourcesDir
(),
"META-INF/spring.factories"
));
new
File
(
this
.
sourceSet
.
getOutput
().
getResourcesDir
(),
"META-INF/spring.factories"
));
autoConfiguration
.
setProperty
(
"autoConfigurationClassNames"
,
String
enableAutoConfiguration
=
springFactories
springFactories
.
getProperty
(
"org.springframework.boot.autoconfigure.EnableAutoConfiguration"
));
.
getProperty
(
"org.springframework.boot.autoconfigure.EnableAutoConfiguration"
);
Set
<
String
>
classNames
=
StringUtils
.
commaDelimitedListToSet
(
enableAutoConfiguration
);
Set
<
String
>
publicClassNames
=
new
LinkedHashSet
<>();
for
(
String
className
:
classNames
)
{
File
classFile
=
findClassFile
(
className
);
if
(
classFile
==
null
)
{
throw
new
IllegalStateException
(
"Auto-configuration class '"
+
className
+
"' not found."
);
}
try
(
InputStream
in
=
new
FileInputStream
(
classFile
))
{
int
access
=
new
ClassReader
(
in
).
getAccess
();
if
((
access
&
Opcodes
.
ACC_PUBLIC
)
==
Opcodes
.
ACC_PUBLIC
)
{
publicClassNames
.
add
(
className
);
}
}
}
autoConfiguration
.
setProperty
(
"autoConfigurationClassNames"
,
String
.
join
(
","
,
publicClassNames
));
autoConfiguration
.
setProperty
(
"module"
,
getProject
().
getName
());
autoConfiguration
.
setProperty
(
"module"
,
getProject
().
getName
());
return
autoConfiguration
;
return
autoConfiguration
;
}
}
private
File
findClassFile
(
String
className
)
{
String
classFileName
=
className
.
replace
(
"."
,
"/"
)
+
".class"
;
for
(
File
classesDir
:
this
.
sourceSet
.
getOutput
().
getClassesDirs
())
{
File
classFile
=
new
File
(
classesDir
,
classFileName
);
if
(
classFile
.
isFile
())
{
return
classFile
;
}
}
return
null
;
}
private
Properties
readSpringFactories
(
File
file
)
throws
IOException
{
private
Properties
readSpringFactories
(
File
file
)
throws
IOException
{
Properties
springFactories
=
new
Properties
();
Properties
springFactories
=
new
Properties
();
try
(
Reader
in
=
new
FileReader
(
file
))
{
try
(
Reader
in
=
new
FileReader
(
file
))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment