The initial solution to gh-11512 was still using a plain `toString` that
could potentially break with a JDK upgrade. Turns out that JDK9 actually
uses the same type for AnnotatedType and ClassType so the trick of using
a visitor doesn't work anymore.
Retrospectively, it is quite easy to generate the full type once we have
the DeclaredType as we already have some logic to get the qualified,
that is raw, type and we have access to the type parameters.
This commit still uses a `toString` to generate the representation of
the type parameters but this looks much safer than trying to redo what
such a simple `toString` should do. Also, the additional metadata that
we could get on an ExecutableElement does not apply to them.
Closes gh-11512
This commit makes sure that the `type` of a property is generated
property if the getter of the property is annotated. Previously, a type
implementation may expose the annotation information.
Closes gh-11512
Move the 'shade' copy of the JSON API to a separate src folder to make
it clearer that we don't own the code. Also polished some formatting
and suppressed a few warnings.
Closes gh-10307
This commit removes MediaType from the list of exclude types as it looks
like an error: MediaType has a constructor taking a `String` and binding
works fine with it.
This has the effect of properly generating the metadata for the only key
that Spring Boot exposes with a MediaType type:
spring.data.rest.default-media-type.
Closes gh-11568
Previously, a condition on a class targeting an inner class would
generate an invalid String representation of it. Unfortunately, the
`toString` representation misses the `$` sign between the outer class
and the inner class name.
This commit post-processes the values to generate the appropriate
representation.
Closes gh-11282
Previously when Handler was creating a URL from a context URL and a
spec, any occurrances of /../ or /./ in the spec would be left as-is.
This differed from the JDK's Handler implementation which normalizes
the URL by modifying the path to remove any occurrences of /../ or
/./
This commit updates our Handler implementation to align it with the
JDK's. Tests have been added to assert that, given the same inputs,
the two Handler classes produce the same output.
Closes gh-9917
Update nested JAR support to only obtain JUL loggers when absolutely
necessary and to defensively deal with failures.
Prior to this commit it was not possible to override
`java.util.logging.manager` to use a nested JAR as the logger
implementation.
Fixes gh-9848
In Gradle 4.x, SourceSetOutput now has multiple classes directories
and getClassesDir() has been deprecated. This commit introduces the
use of reflection to use getClassesDirs() when it's available rather
than getClassesDir().
Closes gh-9559
Calling launch of PropertiesLauncherTests sets the thread context
class loader to an instance of LaunchedURLClassLoader. To avoid this
class loader being used beyond the scope of the test and launcher
that created it, this commit updates PropertiesLauncherTests to
capture the TCCL before each test and restore it after each test.
Closes gh-9378
This commit allows to specify a deprecation level to a manual metadata
entry. The purpose of that new attribute is to distinguish cases where
the property is still bound (default) from cases where the property no
longer exists and won't be bound.
This gives the opportunity to IDEs to still show the property as an
error and offer documentation and an action to rename it if a
replacement exists.
Closes gh-9074