163 Commits

Author SHA1 Message Date
Andy Wilkinson
f1af8c5510 Merge branch '2.1.x'
Closes gh-18889
2019-11-05 15:50:51 +00:00
Andy Wilkinson
59bc3c5602 Prevent recursive config props from causing a stack overflow
Previously, when the configuration properties annotation processor
encountered a property that was the same as an outer type that had
already been processed, it would fail with a stack overflow error.

This commit introduces the use of a stack to track the types that
have been processed. Types that have been seen before are skipped,
thereby preventing a failure from occurring. We do not fail upon
encountering a recursive type to allow metadata generation to
complete. At runtime, the recursive property will not cause a problem
if it is not bound.

Fixes gh-18365
2019-11-05 15:35:11 +00:00
Johnny Lim
45d85778b8 Polish
See gh-18838
2019-11-01 09:01:24 +02:00
Stephane Nicoll
d6d32ec01d Polish 2019-10-29 09:02:25 +01:00
Phillip Webb
386c0a60a7 Relax @ConstructorBinding member class requirement
Update `@ConfigurationProperties` so that `@ConstructorBinding` classes
no longer need to repeat the annotation for their members.

Closes gh-18481
2019-10-02 17:17:44 -07:00
Stephane Nicoll
45f6668d03 Use @ConstructorBinding when generating meta-data
Update the configuration processor to use the newly introduced
`@ConstructorBinding` annotation to determine when meta data
should be generated from constructor parameters.

Prior to this commit, the processor had no good way to tell when
constructor parameters should be used instead of getters/setters.

Closes gh-17035
2019-10-02 13:36:27 -07:00
Stephane Nicoll
39fed4a9d9 Fix binding detection of ConfigurationProperties contributed by @Bean
This commit makes sure that a ConfigurationProperties type contributed
by a `@Bean` factory method uses properties binding regardless of the
presence of a matching constructor.

`@Bean` method makes sure the user is in control and will be responsible
of creating the instance. As a result, binding of properties will not
happen there and therefore can only happen with regular JavaBean
accessors.

Closes gh-18184
2019-09-09 13:29:31 +02:00
Andy Wilkinson
4b5ebd8505 Process all non-private methods, not just public methods
Previously, the configuration processor would ignore any
@ConfigurationProperties-annotated methods that were not public. This
prevented metadata generation for package-private @Bean methods such
as those in DataSourceConfiguration's inner-classes for DBCP2, Hikari,
and Tomcat JDBC.

This commit updates the annotation processor so that it will process
any non-private method annotated with @ConfigurationProperties.

Fixes gh-18124
2019-09-04 14:26:12 +01:00
Andy Wilkinson
a4b8d2401f Merge branch '2.1.x'
Closes gh-18094
2019-09-02 14:54:48 +01:00
Andy Wilkinson
abba4fa9c9 Include exception's message in message printed by AP
Fixes gh-17974
2019-09-02 14:52:14 +01:00
Andy Wilkinson
b463acb10f Merge branch '2.1.x'
Closes gh-18093
2019-09-02 14:42:21 +01:00
Andy Wilkinson
edcaee375f Consider @Deprecated on field when determining property's deprecation
Fixes gh-17550
2019-09-02 14:39:24 +01:00
SaberXu
c6c3a91f8d Simplify if statements
See gh-17785
2019-08-08 14:32:37 +02:00
Phillip Webb
8bc780762a Merge branch '2.1.x' 2019-07-24 11:42:48 +01:00
Phillip Webb
fb1dd8fe93 Merge branch '2.0.x' into 2.1.x 2019-07-24 11:41:32 +01:00
Phillip Webb
913e831f4e Merge '1.5.x' into 2.0.x 2019-07-24 11:39:58 +01:00
Phillip Webb
01933f9b06 Merge previously split strings
Merge some string lines that were previously split because of the
90 chars wide formatting.
2019-07-15 00:24:19 +01:00
Phillip Webb
a66c4d3096 Unify method visibility of private classes
Apply checkstyle rule to ensure that private and package private
classes do not have unnecessary public methods. Test classes have
also been unified as much as possible to use default scoped
inner-classes.

Closes gh-7316
2019-07-03 11:39:47 -07:00
Phillip Webb
605599138e Merge branch '2.1.x' 2019-06-28 23:56:02 -07:00
Phillip Webb
92bff3c328 Merge branch '2.0.x' into 2.1.x 2019-06-28 23:42:28 -07:00
Phillip Webb
cfeb0239b7 Merge branch '1.5.x' into 2.0.x 2019-06-28 23:28:34 -07:00
Andy Wilkinson
aef92b9295 Merge branch '2.1.x'
Closes gh-17079
2019-06-07 11:00:44 +01:00
Andy Wilkinson
24925c3dae Merge branch '2.0.x' into 2.1.x
Closes gh-17078
2019-06-07 10:50:34 +01:00
Andy Wilkinson
c6c139d980 Merge branch '1.5.x' into 2.0.x 2019-06-07 10:46:31 +01:00
Phillip Webb
988f02d766 Merge branch '2.1.x'
Closes gh-16996
2019-05-28 16:46:09 -07:00
Phillip Webb
f380ba63eb Exclude Groovy MetaClass from property meta-data
Update `TypeExcludeFilter` to exclude `groovy.lang.MetaClass`.

Closes gh-16981
2019-05-28 16:42:42 -07:00
Phillip Webb
2dfd916c96 Polish 2019-04-15 17:51:08 -07:00
Stephane Nicoll
0972ef3422 Merge branch '2.1.x'
Closes gh-16451
2019-04-04 16:00:34 +02:00
Stephane Nicoll
fbb5ffe0a4 Avoid infinite cycle resolving generic type that refers itself
This commit improves type resolution for a unresolved generic type that
uses itself in its upper bound declaration.

Closes gh-16451
2019-04-04 15:55:55 +02:00
Stephane Nicoll
3125f424ce Add metadata support for immutable ConfigurationProperties type
Closes gh-16071
2019-03-22 15:33:35 +01:00
Andy Wilkinson
36c1c051b8 Merge branch '2.1.x' 2019-03-20 16:55:10 +00:00
Andy Wilkinson
e23f72c8b0 Merge branch '2.0.x' into 2.1.x 2019-03-20 16:53:48 +00:00
Andy Wilkinson
9fbd38ab3c Merge branch '1.5.x' into 2.0.x 2019-03-20 16:45:26 +00:00
Stephane Nicoll
75c248dcba Move setter attribute in PropertyDescriptor proper 2019-03-04 10:53:13 +01:00
Stephane Nicoll
00a18c32ab Restructure metadata generation
This commit restructures the annotation processor to off-load most of
its logic in a PropertyDescriptor abstraction that is consumed to
generate the relevant metadata.

This has the benefit to isolate the various way properties can be
identified (java bean and lombok for now).

Closes gh-16036
2019-02-26 10:10:33 +01:00
Stephane Nicoll
c44a1e129d Polish 2019-02-22 14:04:37 +01:00
Stephane Nicoll
34f28b4cbd Merge branch '2.1.x' 2019-02-20 13:25:01 +01:00
Stephane Nicoll
91a005f578 Resolve generic types in generated metadata
Closes gh-15850
2019-02-20 13:24:40 +01:00
dreis2211
46e59503ec Use JSONObject.putOpt in JsonConverter
Closes gh-15595
2019-01-02 09:48:35 +01:00
igor-suhorukov
cbf6b330ba Simplify code by using Map computeIfAbsent
Closes gh-15543
2018-12-21 11:12:56 +01:00
Phillip Webb
f3fa20b2d1 Polish 2018-10-29 14:25:45 -07:00
Madhura Bhave
f0004c4ade Merge branch '2.0.x' 2018-10-22 14:57:10 -07:00
dreis2211
5c0d7f4ac0 Avoid creation of unnecessary collections
Closes gh-14916
2018-10-22 14:54:39 -07:00
durigon
7aaeefbc0e Use Matcher from pre-compiled Pattern rather than String for replaceAll
Closes gh-14483
2018-09-17 10:54:54 +01:00
Stephane Nicoll
0493355241 Use deterministic order for configuration properties metadata
This commit updates the annotation processor to write metadata in a
consistent way. Groups, properties and hints are written and each item
is ordered alphabetically based on its name.

Also, deprecated items are written last.

Closes gh-14347
2018-09-08 08:20:43 +02:00
Stephane Nicoll
c0e45b7333 Adapt to Spring Framework API change 2018-09-04 14:09:57 +02:00
Stephane Nicoll
91af9e2ca9 Merge branch '2.0.x' 2018-08-20 10:34:03 +02:00
Stephane Nicoll
d80ed27339 Fix checkstyle violation 2018-08-20 10:33:46 +02:00
Stephane Nicoll
b26dedb547 Merge branch '2.0.x' 2018-08-20 10:26:21 +02:00
dreis2211
0bc66dc4a9 Replace loops with Arrays.setAll where possible
See gh-14125
2018-08-20 10:16:50 +02:00