From 20b05e72e5b9e4fa29c9b0d960fbba33b86ea1d2 Mon Sep 17 00:00:00 2001 From: Olya Gupalo Date: Thu, 22 May 2025 23:31:15 +0300 Subject: [PATCH] Upgrade What-the-Dickens workshop to GraalVM for JDK 24 --- .../github-actions-what-the-dickens.yml | 57 + .gitignore | 1 + .../what-the-dickens/.vscode/settings.json | 3 - native-image/what-the-dickens/README.md | 576 +- .../RMIL_Technology_Laptop_Bark_RGB_50.png | Bin 706 -> 0 bytes .../what-the-dickens/images/keyboard.jpg | Bin 1486 -> 0 bytes .../lab/.mvn/wrapper/maven-wrapper.properties | 8 +- .../lab/01-native-image/Dockerfile | 18 +- .../lab/02-smaller-containers/Dockerfile | 21 +- native-image/what-the-dickens/lab/HELP.md | 63 +- native-image/what-the-dickens/lab/mvnw | 218 +- native-image/what-the-dickens/lab/mvnw.cmd | 393 +- native-image/what-the-dickens/lab/pom.xml | 49 +- .../META-INF/native-image/jni-config.json | 37 - .../predefined-classes-config.json | 8 - .../META-INF/native-image/proxy-config.json | 20 - .../native-image/reachability-metadata.json | 4700 +++++++++++++++++ .../META-INF/native-image/reflect-config.json | 3084 ----------- .../native-image/resource-config.json | 589 --- .../native-image/serialization-config.json | 8 - .../src/main/resources/application.properties | 1 - 21 files changed, 5385 insertions(+), 4469 deletions(-) create mode 100644 .github/workflows/github-actions-what-the-dickens.yml delete mode 100644 native-image/what-the-dickens/.vscode/settings.json delete mode 100644 native-image/what-the-dickens/images/RMIL_Technology_Laptop_Bark_RGB_50.png delete mode 100644 native-image/what-the-dickens/images/keyboard.jpg delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/jni-config.json delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/predefined-classes-config.json delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/proxy-config.json create mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reachability-metadata.json delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reflect-config.json delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/resource-config.json delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/serialization-config.json delete mode 100644 native-image/what-the-dickens/lab/src/main/resources/application.properties diff --git a/.github/workflows/github-actions-what-the-dickens.yml b/.github/workflows/github-actions-what-the-dickens.yml new file mode 100644 index 00000000..350bf0e4 --- /dev/null +++ b/.github/workflows/github-actions-what-the-dickens.yml @@ -0,0 +1,57 @@ +name: Native Image What_the_Dickens Pipeline +on: + push: + paths: + - 'native-image/what-the-dickens/lab/**' + - '.github/workflows/github-actions-what-the-dickens.yml' +jobs: + build: + name: Native Image What_the_Dickens + runs-on: ubuntu-latest + timeout-minutes: 40 + steps: + - uses: actions/checkout@v4 + - name: Set up GraalVM + uses: graalvm/setup-graalvm@v1 + with: + java-version: '24' + distribution: 'graalvm' + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Build and Test Java Code + run: | + cd native-image/what-the-dickens/lab/ + # Build a JAR + ./mvnw --no-transfer-progress clean package + + # Generate reachability metadata with the Tracing agent + java -Dpring.aot.enabled=true \ + -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/ \ + -jar target/what_the_dickens-0.0.1-SNAPSHOT.jar & + pid=$! + kill $pid + + # Build a regular dynamic native image and containerize in docker.io/oraclelinux:8-slim container + docker build -f ./01-native-image/Dockerfile \ + -t what_the_dickens:native.01 . + container_id=$(docker run --rm -d --name "what_the_dickens-native" -p 8080:8080 what_the_dickens:native.01) + sleep 10 + docker ps + curl "http://localhost:8080/whatTheDickens" + docker kill $container_id + docker ps + + # Build a mostly-static native image and containerize in gcr.io/distroless/base container + docker build -f ./02-smaller-containers/Dockerfile \ + -t what_the_dickens:distroless.01 . + container_id=$(docker run --rm -d --name "what_the_dickens-distroless" -p 8081:8080 what_the_dickens:distroless.01) + sleep 10 + docker ps + curl "http://localhost:8081/whatTheDickens" + docker kill $container_id + docker ps + + # List container images + docker images + + # Build a native image + ./mvnw --no-transfer-progress -Pnative -DskipTests=true package \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6f946fe1..ac9d1fd4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Compiled class file *.class +.vscode # Log file *.log diff --git a/native-image/what-the-dickens/.vscode/settings.json b/native-image/what-the-dickens/.vscode/settings.json deleted file mode 100644 index 0ca4d0be..00000000 --- a/native-image/what-the-dickens/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.compile.nullAnalysis.mode": "automatic" -} \ No newline at end of file diff --git a/native-image/what-the-dickens/README.md b/native-image/what-the-dickens/README.md index ab58aaec..cb5a1453 100644 --- a/native-image/what-the-dickens/README.md +++ b/native-image/what-the-dickens/README.md @@ -1,78 +1,39 @@ - +# Understanding GraalVM Native Image and Containerization What do Micronaut, Spring Native, Quarkus and Helidon have in common? -They all support [GraalVM Native Image](https://docs.oracle.com/en/graalvm/enterprise/latest/docs/reference-manual/native-image/) ahead-of-time (AOT) compilation to transform a Java application into a native executable that starts almost instantaneously, provides peak performance with no warmup, and requires less memory and less CPU. +They all support [GraalVM Native Image](https://www.graalvm.org/latest/reference-manual/native-image/) - ahead-of-time (AOT) compilation to transform a Java application into a native executable that starts almost instantaneously, provides peak performance with no warmup, and requires less memory and less CPU. -It's perfect for your containerised workloads and microservices where it's critical to minimise your startup time and reduce your resource consumption. -In this lab we'll provide a practical introduction to GraalVM Native Image AOT covering how it works, what it can do, and when to use it. +It's perfect for your containerized workloads and microservices where it's critical to minimize startup time and reduce resources consumption. +In this workshop, we provide a practical introduction to GraalVM Native Image, covering how it works, what it can do, and when to use it. -### Lab Objectives +### Objectives -By the end of the lab you will have: -* Built, run and converted a basic Spring Boot application into a native executable -* Added the native Spring Boot application to a container image, deployed it and run it -* Shrunk the size of the container image using Distroless containers -* Seen how to use GraalVM Native Build tools as part of your CI/CD pipeline +During the workshop you will: +* Build, run, and convert a basic Spring Boot application into a native executable. +* Add the native Spring Boot application to a container image, and deploy it. +* Shrink the size of the container image using Distroless base containers. +* See how to use [Native Build Tools](https://graalvm.github.io/native-build-tools/latest/) as part of your CI/CD pipeline. -Estimated lab time: 60 minutes +Estimated workshop time: 60 minutes -# Understanding GraalVM Native Image and Containerisation +## Prerequisites -## Introduction +Before starting this workshop, you must have installed: -This lab takes you step by step through the process of how to containerise GraalVM Native Image applications. - -GraalVM Native Image technology compiles Java code ahead-of-time into a native executable file. -Only the code that is required at run time by the application is included in the executable file. - -An executable file produced by Native Image has several important advantages, in that it: - -- Uses a fraction of the resources required by the JVM, so is cheaper to run -- Starts in milliseconds -- Delivers peak performance immediately, with no warmup -- Can be packaged into a lightweight container image for faster and more efficient deployment -- Presents a reduced attack surface (more on this in future labs) - -Many of the leading microservice frameworks support ahead-of-time compilation with GraalVM Native Image, including -Micronaut, Spring, Helidon, and Quarkus. - -In addition, there are Maven and Gradle plugins for Native Image so you can easily build, -test, and run Java applications as executable files. - -(Oracle Cloud Infrastructure (OCI) provides GraalVM Enterprise at no additional cost.) - ->Note: If you see the laptop icon in the lab, this means you need to do something such as enter a command. Keep an eye out for it. - -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -``` -# This is where you will need to do something -``` - -## Lab Prerequisites - -Before starting this lab, you must have installed: - -* [GraalVM Installation 22 or later, JDK17 +](https://github.com/graalvm/get.graalvm.org/) - We recommend the Enterprise Edition -* The `native-image` tool (see [Native Image](https://www.graalvm.org/latest/docs/getting-started/#native-image)) -* Set your `JAVA_HOME` environment variable to point to your GraalVM installation -* Maven 3.0 or above -* A Docker-API compatible container runtime such as [Rancher Desktop](https://docs.rancherdesktop.io/getting-started/installation/), [Docker](https://www.docker.io/gettingstarted/), or [Podman](https://podman.io/getting-started/installation) +* [GraalVM for JDK 24](https://www.graalvm.org/downloads/) - you can use either the Community or Enterprise Edition. +* A Docker-API compatible container runtime such as [Rancher Desktop](https://docs.rancherdesktop.io/getting-started/installation/), [Docker](https://www.docker.io/gettingstarted/), or [Podman](https://podman.io/getting-started/installation). ## **STEP 1**: Introducing the Sample Java Application -In this lab you are going to build a sample application with a minimal REST-based API. -You are then going to containerise the application. -First, take a quick look at the sample application. +In this workshop you are going to run a sample application with a minimal REST-based API. The source code, resources, and build scripts for the application are in _native-image/what-the-dickens/lab/src_. The application is built on top of the [Spring Boot](https://spring.io/projects/spring-boot) framework. The application has two classes: -* `com.example.DickensApplication`: The main Spring Boot class -* `com.example.DickensController`: A REST controller class that implements the logic of the application and defines the HTTP endpoints `/whatTheDickens` and `/whatTheDickens/{number}` +* `com.example.DickensApplication`: The main Spring Boot class. +* `com.example.DickensController`: A REST controller class that implements the logic of the application and defines the HTTP endpoints `/whatTheDickens` and `/whatTheDickens/{number}`. So, what does the application do? If you call the endpoint `/whatTheDickens`, it will return 10 lines of nonsense prose generated in the style of [Charles Dickens' novels](https://en.wikipedia.org/wiki/Charles_Dickens#Novels). @@ -81,11 +42,11 @@ This model is then used to generate new text. The example application ingests the text of four of Dickens' novels (provided in _main/resources/_), from which it creates a model. The application then uses the model to generate new text that is similar to the original text. -The [RiTa](https://rednoise.org/rita/) library does the heavy lifting for you--it provides the functionality to build and use Markov Chains. +The [RiTa library](https://rednoise.org/rita/) does the heavy lifting for you--it provides the functionality to build and use Markov Chains. Below are two snippets from class `com.example.DickensController`. -1. The first snippet shows how the model is created and then populated with `prose` ingested from some of Dickens' novels. +- The first snippet shows how the model is created and then populated with `prose` ingested from some of Dickens' novels. The model is created and populated in the class initializer. ```java @@ -94,7 +55,7 @@ The model is created and populated in the class initializer. MARKOV_MODEL.addText(prose); ``` -2. In the second snippet you can see the method that generates new lines of prose from the model. +- In the second snippet, you can see the method that generates new lines of prose from the model. ```java public String generate(final int numLines) { @@ -109,67 +70,57 @@ The model is created and populated in the class initializer. } ``` -Take a little while to view the code and acquaint yourself with it. -Build your application: from the root directory of the project, run the following commands: +### Action -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -cd native-image/what-the-dickens/lab -./mvnw clean package -``` +1. Build the application from the root directory of the project: -This will generate an "executable" JAR file, one that contains all the application's dependencies as well as a correctly configured _MANIFEST_ -file. -You can run this JAR file as follows: + ```bash + cd native-image/what-the-dickens/lab + ./mvnw clean package + ``` -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -# Run the Java application in the background -java -jar ./target/What_the_Dickens-0.0.1-SNAPSHOT.jar & -``` + This will generate an runnable JAR file, one that contains all the application's dependencies as well as a correctly configured _MANIFEST_ file. -When the application starts, you should see something similar to the following: +2. Run this JAR file as follows: -``` -Started DickensApplication in 8.845 seconds (process running for 9.598) -``` + ```bash + java -jar ./target/what_the_dickens-0.0.1-SNAPSHOT.jar & + ``` + It runs the Java application in the background. + When the application starts, you should see something similar to the following: + ``` + Started DickensApplication in 2.768 seconds (process running for ...) + ``` -Use the `curl` command to call the application's endpoints to see what the application returns. +3. Use the `curl` command to call the application's endpoints to see what the application returns. -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -# Call the endpoints -curl http://localhost:8080/whatTheDickens -curl http://localhost:8080/whatTheDickens/30 -``` + ```bash + curl http://localhost:8080/whatTheDickens + curl http://localhost:8080/whatTheDickens/30 + ``` -Did you get the some nonsense sentences returned from the application? + Did you get the some nonsense sentences returned from the application? -Before moving on to the next step, stop the application with Ctrl-C. +4. Before moving on to the next step, bring the application to the foreground by typing `fg`, and then stop the application with Ctrl-C. ## **STEP 2**: Building a Native Executable Now you can create a native executable from your Java application using GraalVM Native Image. The native executable is going to exhibit two interesting characteristics, namely: -1. It is going to start really fast -2. It will use fewer resources than its corresponding Java application +- It is going to start really fast. +- It will use fewer resources than its corresponding Java application. -You can use the Native Image tooling installed with GraalVM to build a native executable of a Java -application from the command line, but as you are using Maven already, you are going to use the -[GraalVM Native Image Build Tools for Maven](https://graalvm.github.io/native-build-tools/latest/maven-plugin.html) which will -conveniently allow you to carry on using Maven. +You can use the `native-image` tool installed with GraalVM on the command line, but, since you are using Maven already, you better apply the +[Maven Plugin for Native Image](https://graalvm.github.io/native-build-tools/latest/end-to-end-maven-guide.html) which conveniently enables you to carry on using Maven. -One way of building a native executable is to use a Maven [profile](https://maven.apache.org/guides/introduction/introduction-to-profiles.html), -which will allow you to decide whether you want to build the JAR file or the native executable. +One way of building a native executable is to use a [Maven profile](https://maven.apache.org/guides/introduction/introduction-to-profiles.html), +which enables you to decide whether you want to build the JAR file or the native executable. -The Maven _pom.xml_ file contains a profile that builds a native executable. -(For more details see [Registering the plugin](https://graalvm.github.io/native-build-tools/latest/maven-plugin.html#configuration-registering-plugin).) +The Maven _pom.xml_ file contains a [profile that builds a native executable](https://graalvm.github.io/native-build-tools/latest/end-to-end-maven-guide.html#add-plugin). Take a closer look: -The profile is declared and given a name. - ```xml @@ -179,8 +130,8 @@ The profile is declared and given a name. ``` -Next, within the profile, the GraalVM Native Image Build Tools plugin is included and attached to the `package` phase in Maven. -This means it will run as a part of the `package` phase. +Next, within the profile, the `native-maven-plugin` is included and attached to the Maven `package` phase. +This means it will run as a part of the `package` phase. ```xml @@ -206,161 +157,134 @@ This means it will run as a part of the `package` phase. The Native Image tool relies on the static analysis of an application’s reachable code at runtime. However, the analysis cannot always completely predict all usages of the Java Native Interface (JNI), Java Reflection, Dynamic Proxy objects, or class path resources. -Undetected usages of these dynamic features must be provided to Native Image in the form of metadata (precomputed in code or as JSON configuration files). -GraalVM provides a [Tracing Agent](https://docs.oracle.com/graalvm/enterprise/22/docs/reference-manual/native-image/metadata/AutomaticMetadataCollection/) to easily gather metadata and create configuration files. -The agent tracks all usages of dynamic features during application execution on a regular Java VM. -Spring should generate most of this configuration automatically, but the tracing agent can be used to quickly identify missing entries. +Undetected usages of these dynamic features must be provided to Native Image in the form of JSON configuration. +GraalVM provides a [Tracing agent](https://www.graalvm.org/latest/reference-manual/native-image/metadata/AutomaticMetadataCollection/) to easily gather metadata and create configuration for you. -Use the command below to launch the Spring application with the Native Image tracing agent attached. -(For more information, see [Using the Tracing Agent](https://docs.spring.io/spring-boot/docs/3.0.5/reference/htmlsingle/#native-image.advanced.using-the-tracing-agent).) - -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -java -Dpring.aot.enabled=true \ --agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/ \ --jar target/What_the_Dickens-0.0.1-SNAPSHOT.jar -``` - -Stop the application with Ctrl-C. +The agent tracks all usages of dynamic features during application execution on a Java VM. +Spring should generate most of this configuration automatically, but the tracing agent can be used to quickly identify missing entries. -On application shutdown the tracing agent writes the configuration files to the specified output directory: _src/main/resources/META-INF/native-image/_. -In this case, it's the default directory that Native Image expects to find configuration files. +### Action -Now run the Maven build using the profile, as below (note that the profile name is specified with the `-P` option, and you can skip the tests from now on): +1. Use the command below to launch the Spring application with the Native Image tracing agent attached. -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -./mvnw -Pnative -DskipTests=true clean package -``` + ```bash + java -Dpring.aot.enabled=true \ + -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/ \ + -jar target/what_the_dickens-0.0.1-SNAPSHOT.jar + ``` -> Note: Depending on your platform, this can take several minutes. +2. Stop the application with Ctrl-C. -This will generate a native executable in the _target_ directory, named _What\_the\_Dickens_. + On application shutdown, the tracing agent writes the configuration file _reachability-metadata.json_ to the specified output directory: _src/main/resources/META-INF/native-image/_. + In this case, it's the default directory that Native Image expects to find the configuration file. -Run this native executable in the background: +3. Now run the Maven build using the profile, as below (note that the profile name is specified with the `-P` option, and you can skip the tests from now on): -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -./target/What_the_Dickens & -``` + ```bash + ./mvnw -Pnative -DskipTests=true package + ``` + This generates a native executable in the _target_ directory, named _what\_the\_dickens_. -When the application starts, you should see something similar to the following: +4. Run this native executable in the background: -``` -Started DickensApplication in 12.829 seconds (process running for 12.925) -``` + ```bash + ./target/what_the_dickens & + ``` + When the application starts, you should see something similar to the following: + ``` + Started DickensApplication in 2.86 seconds (process running for ...) + ``` -Test it, using the following commands: +5. Test it, using the following commands: -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -curl http://localhost:8080/What_the_Dickens -curl http://localhost:8080/What_the_Dickens/30 -``` + ```bash + curl http://localhost:8080/whatTheDickens + curl http://localhost:8080/whatTheDickens/30 + ``` -Now you have a native executable of your application--however, it starts no faster than the original Java version. -This is mainly because the performance is constrained by the amount of time the application takes to ingest the Dickens' novels. + Now you have a native executable of your application--however, it starts no faster than the original Java version. + This is mainly because the performance is constrained by the amount of time the application takes to ingest the Dickens' novels. -Stop the application before you move on, using Ctrl-C. +6. Stop the application before you move on as before (type `fg` and then Ctrl-C). ## **STEP 3**: Reducing the Startup Time of Your Native Executable -Notice that you can pass configuration options and parameters to the underlying Native Image -build tool using the `buildArgs` element of the _pom.xml_ file. -In individual `buildArg` elements you can pass in options in exactly the same way -as you do to Native Image, so you can use all of the options that Native Image accepts. -One of those is the option to [Specify Class Initialization Explicitly](https://docs.oracle.com/en/graalvm/enterprise/22/docs/reference-manual/native-image/guides/specify-class-initialization/) using the `initialize-at-build-time` option. - -Edit the `native` profile of the _pom.xml_ file so that passes in the `initialize-at-build-time` option as shown below: - -```xml - - - --initialize-at-build-time=com.example.DickensController,rita.RiMarkov,rita.Util,rita.Tokenizer,rita.RiTa - - - -``` +Notice that you can pass configuration options and parameters to the underlying `native-image` tool using the `buildArgs` element of the _pom.xml_ file. +In individual `buildArg` elements you can pass in options in exactly the same way as on the command line. +One of those is the option to [initialize some application classes explicitly](https://www.graalvm.org/latest/reference-manual/native-image/guides/specify-class-initialization/) using the `initialize-at-build-time` option. -This causes the static initializer of classes `com.example.DickensController` and several of the classes in the `rita` package to be run when Native Image builds the native executable. +### Action +1. Edit the `native` profile of the _pom.xml_ file so that passes in the `initialize-at-build-time` option as shown below: -Now run the Maven build using the profile again, as below: + ```xml + + + --initialize-at-build-time=com.example.DickensController,rita.RiMarkov,rita.Util,rita.Tokenizer,rita.RiTa + + + + ``` + This causes the static initializer of classes `com.example.DickensController` and several of the classes in the `rita` package to be run when `native-image` builds the native executable. -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -./mvnw -Pnative -DskipTests=true clean package -``` +2. Now run the Maven build using the profile again, as below: -> Note: Depending on your platform, this can take many minutes. To reduce the time, reduce the number of ingested novels in `com.example.DickensController`, -increase the memory dedicated to Native Image, or use the `quickBuild` option (see _pom.xml_). - -This will generate a new native executable in the _target_ directory, again named _What\_the\_Dickens_. The build output should contain something similar to: + ```bash + ./mvnw -Pnative -DskipTests=true package + ``` -``` -Apr 12, 2023 4:23:17 PM com.example.DickensController -INFO: Time taken to ingest novels: 5,625ms -``` + > Note: Depending on your platform, this can take many minutes. To reduce the time, reduce the number of ingested novels in `com.example.DickensController`, + increase the memory dedicated to Native Image, or use the `quickBuild` option (see _pom.xml_). -Run this native executable in the background: + This will generate a new native executable in the _target_ directory, again named _What\_the\_Dickens_. -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -./target/What_the_Dickens & -``` +3. Run this native executable in the background: -When the application starts, you should see something similar to the following: + ```bash + ./target/what_the_dickens & + ``` -``` -Started DickensApplication in 0.081 seconds (process running for 0.123) -``` + When the application starts, you should see something similar to the following: + ``` + Started DickensApplication in 0.081 seconds (process running for 0.123) + ``` -Test it, using the following commands: +4. Test it, using the following commands: -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -curl http://localhost:8080/What_the_Dickens -curl http://localhost:8080/What_the_Dickens/30 -``` + ```bash + curl http://localhost:8080/whatTheDickens + curl http://localhost:8080/whatTheDickens/30 + ``` -Now you have a native executable of your application that starts much faster than your original Java version. + Now you have a native executable of your application that starts much faster than your original Java version! -Stop the application before you move on, using Ctrl-C. +5. Stop the application before you move on as before (type `fg` and then Ctrl-C). -## **STEP 4**: Containerising your Native Executable +## **STEP 4**: Containerizing your Native Executable -So you have a native executable version of your application, and you have seen it working. Now to containerise it. +So you have a native executable version of your application, and you have seen it working. Now containerize it. -A Dockerfile for packaging this native executable is in _native-image/what-the-dickens/lab/01-native-image/Dockerfile_. +A Dockerfile for packaging this native executable is provided for you in _native-image/what-the-dickens/lab/01-native-image/Dockerfile_. The contents are shown below, along with explanatory comments. This is a two-step build: the first part builds the native executable, using GraalVM Native Image; the second step copies the native executable into a deployment container. > ### Note: Why Are We Using a Two-Step Build? > -> The native executable produced by GraalVM Native Image is compatible with the platform on which you run Native Image. -> -> So, if you are running on macOS, it will generate a mach64 executable. +> The native executable produced by GraalVM Native Image is compatible with the platform on which you run it. +> > If you are running on Linux, it will generate an ELF Linux executable (for the architecture of the chip you are running on). -> If you want to containerise your application in a container and you are running on macOS, -> then you can't simply build the executable locally (as that will be a macOS-compatible executable) and package it +> If you want to containerize your application in a container and you are running on macOS, +> then you can't simply build the executable locally (as that will be a macOS-compatible executable) and package it > within your container which expects the executable to be Linux-compatible. -> -> Therefore, if you are developing on any OS other than Linux, you need to first build within a container using a -> Linux version of GraalVM to create an executable that can then be packaged into another container. -> That is what the multi-stage build here achieves. +> +> Therefore, if you are developing on any OS other than Linux, you need to first build within a container using a +> Linux version of GraalVM to create an executable, and it can then be packaged into another container. +> This is what the multi-stage Docker build here achieves. > The first step in the process builds a Linux-compatible executable and the second step packages that into a container image for deployment. ```dockerfile # Base Container Image -FROM ghcr.io/graalvm/native-image:ol8-java17-22.3.1 AS builder - -# Install tar and gzip to extract the Maven binaries -RUN microdnf update \ - && microdnf install --nodocs \ - tar \ - gzip \ - && microdnf clean all \ - && rm -rf /var/cache/yum +FROM container-registry.oracle.com/graalvm/native-image:24 AS builder # Set the working directory to /build WORKDIR /build @@ -378,10 +302,10 @@ FROM docker.io/oraclelinux:8-slim EXPOSE 8080 # Copy the native executable into the container -COPY --from=builder /build/target/What_the_Dickens . +COPY --from=builder /build/target/what_the_dickens . -# Run What_the_Dickens when starting the container -ENTRYPOINT ["/What_the_Dickens"] +# Run what_the_dickens when starting the container +ENTRYPOINT ["/what_the_dickens"] ``` > ### Note: Building on Linux @@ -391,98 +315,85 @@ ENTRYPOINT ["/What_the_Dickens"] > ```bash > # Build the native executable again if anything has changed > ./mvnw -Pnative -DskipTests=true clean package -> docker build -f ./01-native-image/Dockerfile.linux --build-arg APP_FILE=target/What_the_Dickens -t What_the_Dickens:native.01 . +> docker build -f ./01-native-image/Dockerfile.linux --build-arg APP_FILE=target/what_the_dickenss -t what_the_dickens:native.01 . > ``` -To build a container image, run the following command: - -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -# First clean the development directory -./mvnw clean -# Build a Container Image -docker build -f ./01-native-image/Dockerfile \ - -t what_the_dickens:native.01 . -# List the newly built container image -docker images | head -n2 -``` +### Action -> Note: Depending on your platform, this can take many minutes. To reduce the time, reduce the number of ingested novels in `com.example.DickensController`, -increase the memory dedicated to Native Image, use the `quickBuild` option (see _pom.xml_), or increase the memory given to your container engine. +1. To build a container image, run the following commands. -And that is it. Use this command to run the container image: + - First clean the development directory: + ```bash + ./mvnw clean + ``` + - Now build a container: + ```bash + docker build -f ./01-native-image/Dockerfile \ + -t what_the_dickens:native.01 . + ``` + - List the newly built container image + ```bash + docker images | head -n2 + ``` -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -docker run --rm --name "what_the_dickens-native" -p 8080:8080 what_the_dickens:native.01 -``` + > Note: Depending on your platform, this can take many minutes. To reduce the time, reduce the number of ingested novels in `com.example.DickensController`, + increase the memory dedicated to Native Image, or use the `quickBuild` option (see _pom.xml_). -When the Spring application has started, test it as before: +2. Finally, run the container image: -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -curl http://localhost:8080/whatTheDickens -curl http://localhost:8080/whatTheDickens/30 -``` + ```bash + docker run --rm --name "what_the_dickens-native" -p 8080:8080 what_the_dickens:native.01 + ``` -Again, you should see more nonsense prose in the style of the Dickens' novels. +3. When the Spring application has started, test it as before: -You can see how long the application took to startup by inspecting the output from the container. -In our experiments, the native executable started up in 0.396s + ```bash + curl http://localhost:8080/whatTheDickens + curl http://localhost:8080/whatTheDickens/30 + ``` -``` -2023-04-14T13:59:26.864Z INFO 1 --- [ main] com.example.DickensApplication : Started DickensApplication in 0.396 seconds (process running for 0.528) -``` + Again, you should see more nonsense prose in the style of the Dickens' novels. -Before you go to the next step, take a look at the size of the container produced: + You can see how long the application took to start by inspecting the output from the container. + It should be around 0.396s. -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -size_in_bytes=`docker inspect -f "{{ .Size }}" what_the_dickens:native.01` -echo $((size_in_bytes/1024/1024)) -``` +4. Before you go to the next step, take a look at the size of the container produced: + + ```bash + size_in_bytes=`docker inspect -f "{{ .Size }}" what_the_dickens:native.01` + echo $((size_in_bytes/1024/1024)) + ``` -The container image size we saw in our experiments was 562MB. + The container image size we saw in our experiments was 562MB. -Stop your container (using Ctrl-C) before moving onto the next step. +5. Stop your container (using Ctrl+C) before moving onto the next step. ## **STEP 5**: Building a Mostly-Static Executable and Packaging it in a "Distroless" Container Image Let's recap, again, what you have done: -1. You have built a Spring Boot application with a HTTP endpoint, `/whatTheDickens` -2. You have built a native executable of your application using the Native Image build Tools for Maven -3. You have containerised your native executable +1. You have built a Spring Boot application with a HTTP endpoint, `/whatTheDickens`. +2. You have built a native executable of your application using the Maven plugin for Native Image. +3. You have containerized your native executable. In this step, you will shrink your container size even further--smaller containers are quicker to download and start. With GraalVM Native Image you have the ability to statically link system libraries into the native executable. -If you build a statically linked native executable, you can package the native executable directly into an empty -container image, also known as a "scratch" container. +If you build a statically linked native executable, you can package the native executable directly into an empty container image, also known as a "scratch" container. Another option is to produce what is known as a mostly-statically linked native executable. With this, you statically link in all system libraries except for the standard C library, `glibc`. With such a native executable you can use a small container, such as Google's "Distroless" which contains the `glibc` library, some standard files, and SSL security certificates. -The standard Distroless container is around 20MB in size. -You will build a mostly-statically linked executable and then package it into a Distroless container. +In this step, you will build a mostly-statically linked executable and then package it into a Distroless container. -A Dockerfile for packaging this native executable is in the directory -_native-image/what-the-dickens/lab/02-smaller-containers/Dockerfile_. +A Dockerfile for packaging this native executable is in the directory _native-image/what-the-dickens/lab/02-smaller-containers/Dockerfile_. The contents are shown below, along with explanatory comments. -As earlier, this is a two-step build: the first part builds the native executable, using GraalVM Native Image; +As earlier, this is a two-step build: the first part builds the native executable, using GraalVM Native Image; the second step copies the native executable into a Distroless container. ```dockerfile # Base Container Image -FROM ghcr.io/graalvm/native-image:ol8-java17-22.3.1 AS builder - -# Install tar and gzip to extract the Maven binaries -RUN microdnf update \ - && microdnf install --nodocs \ - tar \ - gzip \ - && microdnf clean all \ - && rm -rf /var/cache/yum +FROM container-registry.oracle.com/graalvm/native-image:24 AS builder # Set the working directory to /build WORKDIR /build @@ -501,92 +412,89 @@ FROM gcr.io/distroless/base EXPOSE 8080 # Copy the native executable into the container -COPY --from=builder /build/target/What_the_Dickens . - -# Run What_the_Dickens when starting the container -ENTRYPOINT ["/What_the_Dickens"] -``` +COPY --from=builder /build/target/what_the_dickens . -Edit the `native` profile of the _pom.xml_ file so that also passes in the `StaticExecutableWithDynamicLibC` option as shown below: - -This instructs Native Image to build a mostly-statically linked native executable. - -```xml - - - --initialize-at-build-time=com.example.DickensController,rita.RiMarkov,rita.Util,rita.Tokenizer,rita.RiTa - -H:+StaticExecutableWithDynamicLibC - - - +# Run what_the_dickens when starting the container +ENTRYPOINT ["/what_the_dickens"] ``` > ### Note: Building on Linux -> If you are using Linux you don't need to use a multi-stage build and your build times will be faster. +> If you are using Linux, you don't need to use a multi-stage build and your build times will be faster. > You can just build the native executable locally and package it in the deployment container _02-smaller-containers/Dockerfile.linux_ > as follows: > ```bash > # Build the native executable again if anything has changed > ./mvnw -Pnative -DskipTests=true clean package -> docker build -f ./02-smaller-containers/Dockerfile.linux --build-arg APP_FILE=target/What_the_Dickens -t What_the_Dickens:distroless.01 . +> docker build -f ./02-smaller-containers/Dockerfile.linux --build-arg APP_FILE=target/what_the_dickens -t what_the_dickens:distroless.01 . > ``` -To build a container image, run the following command: +### Action -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -# Build a Container Image -docker build -f ./02-smaller-containers/Dockerfile \ - -t what_the_dickens:distroless.01 . -# List the newly built image -docker images | head -n2 -``` +1. Edit the `native` profile of the _pom.xml_ file so that also passes in the `--static-nolibc` option as shown below. -> Note: Depending on your platform, this can take many minutes. To reduce the time, reduce the number of ingested novels in `com.example.DickensController`, -increase the memory dedicated to Native Image, use the `quickBuild` option (see _pom.xml_), or increase the memory given to your container engine. + ```xml + + + --static-nolibc + + + + ``` + This instructs Native Image to build a mostly-statically linked native executable. -Use this command to run the container image: +2. To build a container image, run the following command: -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```shell -docker run --rm --name "what_the_dickens-distroless" -p 8080:8080 what_the_dickens:distroless.01 -``` + ```bash + docker build -f ./02-smaller-containers/Dockerfile \ + -t what_the_dickens:distroless.01 . + ``` -When the Spring application has started, test it as before: + List the newly built image: + ```bash + docker images | head -n2 + ``` -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```bash -curl http://localhost:8080/whatTheDickens -curl http://localhost:8080/whatTheDickens/30 -``` + > Note: Depending on your platform, this can take many minutes. To reduce the time, reduce the number of ingested novels in `com.example.DickensController`, + increase the memory dedicated to Native Image, or use the `quickBuild` option (see _pom.xml_). -You can see how long the application took to startup by inspecting the output from the container. -In our experiments, the native executable started up in 0.31s (compared to 0.396s for the original container image in **Step 4**). A big improvement! +3. Now run the container image: -``` -2023-04-14T14:21:33.864Z INFO 1 --- [ main] com.example.DickensApplication : Started DickensApplication in 0.31 seconds (process running for 0.335) -``` + ```shell + docker run --rm --name "what_the_dickens-distroless" -p 8080:8080 what_the_dickens:distroless.01 + ``` -Great! It worked. But how small, or large, is your container? Use the following commands to check the image size: +4. When the Spring application has started, test it as before: -![](images/RMIL_Technology_Laptop_Bark_RGB_50.png#input) -```shell -size_in_bytes=`docker inspect -f "{{ .Size }}" what_the_dickens:distroless.01` -echo $((size_in_bytes/1024/1024)) -``` + ```bash + curl http://localhost:8080/whatTheDickens + curl http://localhost:8080/whatTheDickens/30 + ``` + + You can see how long the application took to startup by inspecting the output from the container. + In our experiments, the native executable started up in 0.31s (compared to 0.396s for the original container image in **Step 4**). + + Great! It worked. But how small, or large, is your container? + +5. Use the following commands to check the image size: + + ```shell + size_in_bytes=`docker inspect -f "{{ .Size }}" what_the_dickens:distroless.01` + echo $((size_in_bytes/1024/1024)) + ``` -In our experiments, we saw a size of around 484MB, compared to 562MB for an Oracle Linux 8 -container image. So, you have shrunk the container significantly. +In our experiments, we saw a size of around 484MB, compared to 562MB for an Oracle Linux 8 container image. So, you have shrunk the container significantly! ## Summary -We hope you have enjoyed this lab and learnt a few things along the way. We've looked at how you can convert a Java application into a native executable, which starts significantly -faster than the Java application. You then containerised the native executable. +We hope you have enjoyed this workshop and learnt a few things along the way. +You have seen how to convert a Java application into a native executable, which starts significantly faster than the Java application; and how to containerize that native executable. -Finally, we looked at how we can build a mostly-statically linked native executable with Native Image. -These can be packaged in smaller containers, such as Distroless and these let us shrink the size of the container image even further. +Finally, you looked at how to build a mostly-statically linked native executable. +Such an executable can be packaged in smaller Distroless containers, which enables you to significantly reduce the size of the container! ### Learn More -- Watch a presentation by Native Image architect Christian Wimmer [GraalVM Native Image: Large-scale static analysis for Java](https://www.youtube.com/embed/rLP-8q3Cb8M) -- [GraalVM Native Image reference documentation](https://docs.oracle.com/en/graalvm/enterprise/21/docs/reference-manual/native-image/) +- [Static and Mostly Static Images](https://www.graalvm.org/jdk24/reference-manual/native-image/guides/build-static-executables/) +- [Tiny Java Containers](https://github.com/graalvm/graalvm-demos/tree/master/native-image/tiny-java-containers) +- [Native Build Tools](https://graalvm.github.io/native-build-tools/latest/index.html) +- [Improving Java Application Security with Practical Hardening Strategies by Shaun Smith at DevoxxUK 2024](https://www.youtube.com/watch?v=dBbYnVSTwQs) \ No newline at end of file diff --git a/native-image/what-the-dickens/images/RMIL_Technology_Laptop_Bark_RGB_50.png b/native-image/what-the-dickens/images/RMIL_Technology_Laptop_Bark_RGB_50.png deleted file mode 100644 index adee63e736cc0e350a3ac60a3d91bd813376e226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706 zcmV;z0zLhSP)4^*IAa6Bi}y)ZEYEwH`Tf5c=^0=chG7_n$sJ@GC~UioQgIbC zLoaO@da~E^O`^}h5GoZv=pP$1LjiMzO?^`}i8gXXh^sb*g-xZRW!dR@_{Y@ib%cZ6 zdjx8$VN^A7rGOk#DwVV$DoB%)OCeccA$fy^*H&{sCU?F*fh2#z6e&iS-M5=fx zC1yc7Ayl}JgFz!rinv}wT7vB@5RsiG$4p3QHAWp9uw>pGk4c|_cs4prJWFwV{d`*d z)JYnR8oup7cZcN5&Zp)0SzKQ8h6{Wzr9uXDmq@xxe5K{wRn~4*N(?iB~CJS1MuW}cPvDR znm`CK{qHiEVa4Y|cXUFeab=<-j^n^>zdLlpidrYfjwbr;I1-E3RtumN7!X0N$@L94 zDW=(MD%W+NARMktbH$o85cqzX&dt5i@6?qaH(tYl%B72UbZIQzHP#lNpXprJ+65jQpSHr oFH?p7EItl048t%C!~8{l07Ns}r(k{YXaE2J07*qoM6N<$g2bdT>Hq)$ diff --git a/native-image/what-the-dickens/images/keyboard.jpg b/native-image/what-the-dickens/images/keyboard.jpg deleted file mode 100644 index bd0d1523ef3fdb64936f7ad97b8e3e0fae46653b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmbV~c~BE)6u`f|a={28+!RF=5fqghJVGTJK!_+6M44(KoMmVLLBe5zprF(OLQ#+w zIVxcNqaq@RRDn>TwqiNMp^|`zf>@&kqb6)O(ZQMi)%LeL-}h#}_ulSr=ix)R1ZeMI zd$9oo0pLko0GERF?fj^405}|A4FI436fy=F5fLeX37IU$Y-lw=)X!l6vZDa{A!jGC zt020mYu@ijIrJf$=u-|aW}B5GA7fP+J_}rSMe-7Oha!2gX7=kg02g;J4yx)-ppGrn zp?1INso^|u1$~-MEq*3<7vQacP61}X41vr6OotFUgm-{t#8+UD8g&`5Krn)0Br=6c z(;yNWv;hnu2#g{arg{x@gg6H%9n)EEyOqS)9ZWWl)3rN#x`ML8y{=8qujj=|`;hny zDox+O(8$mxmG(4=3@H zQ!iFe$XVt3hBG!4L$&NEiW$LQ+AYQPj{rps8kw3av$Oq6tLwKv9%T+}avc4ekF7{(u-u z7#{(e2t*7MLI-X@si?eVnU;(LEL&O9Vlw`~w|(TRym2jhXSL7#tdNVfVmIyWZr5u^*d}%VNB+=n;$ePsQ;IPJ`JD=NQ zUbMOqYO92?Q&jiXR`zPXS#I#cxBa0-47W37+X1WIXU{n|3r+j?8fP9@8}q0mh8v!* zUx+;3Rdvw}_Tas9n7+ku97`|5#7x^8UK3lqy)&l#*3*LAN;f>Lkbbk98+)8p>n{rZ zBH^bt91P!@pHyZs$$Tx5Q*&P1ENhQ!@O+H!xiigg1>YwoF)KxBuRIdt;-)Y=M*VYX zT&v@2VLA>ZmvK<`Dn=)1f+g_q3IGi$VC!Tg%cSG4Iym42Q~XOm|FRop#jGahtEDtGJa9%>(E_gVhF zuR6qOO3zO;Z;OMB90inp`ylP6mOQ1eW9brc!x|IO5!3Es=76#&cHP?hHuq(B86^L8 zrLjBNf$@SI92{$0(1^i-d)fInPnIbP_r~8d98BX$$24a){ycbgLYQUTsW4|+HONd) z`fA;qoUZ4mbE1;qyjf%+yXHcl_he{3*Zp9wfTFx4FfY9^!^<@GDKiqcY?1u-ZuHW6 zx?Jd+>eN3P5S(P!HM_a3sVnRg+@?`UOA$_$3tw{5W`yqyiFw&B zaAQfvjvqAKyd_GC19IfXqB+UUf+-)ju!VspXM@~;-sDw9U)$?)n#hQ?E7pn+{|y9^ BHJ1PY diff --git a/native-image/what-the-dickens/lab/.mvn/wrapper/maven-wrapper.properties b/native-image/what-the-dickens/lab/.mvn/wrapper/maven-wrapper.properties index 57bb5843..a6cd062b 100644 --- a/native-image/what-the-dickens/lab/.mvn/wrapper/maven-wrapper.properties +++ b/native-image/what-the-dickens/lab/.mvn/wrapper/maven-wrapper.properties @@ -5,14 +5,14 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar diff --git a/native-image/what-the-dickens/lab/01-native-image/Dockerfile b/native-image/what-the-dickens/lab/01-native-image/Dockerfile index 0f984693..76cb7846 100644 --- a/native-image/what-the-dickens/lab/01-native-image/Dockerfile +++ b/native-image/what-the-dickens/lab/01-native-image/Dockerfile @@ -1,13 +1,5 @@ # Base Container Image -FROM ghcr.io/graalvm/native-image:ol8-java17-22.3.1 AS builder - -# Install tar and gzip to extract the Maven binaries -RUN microdnf update \ - && microdnf install --nodocs \ - tar \ - gzip \ - && microdnf clean all \ - && rm -rf /var/cache/yum +FROM container-registry.oracle.com/graalvm/native-image:24 AS builder # Set the working directory to /build WORKDIR /build @@ -19,13 +11,13 @@ COPY . /build RUN ./mvnw --no-transfer-progress -Pnative -DskipTests=true clean package # The deployment container image -FROM docker.io/oraclelinux:8-slim +FROM gcr.io/distroless/java-base-debian12 # This container will expose TCP port 8080, as this is the port on which your app will listen EXPOSE 8080 # Copy the native executable into the container -COPY --from=builder /build/target/What_the_Dickens . +COPY --from=builder /build/target/what_the_dickens . -# Run What_the_Dickens when starting the container -ENTRYPOINT ["/What_the_Dickens"] \ No newline at end of file +# Run what_the_dickens when starting the container +ENTRYPOINT ["/what_the_dickens"] \ No newline at end of file diff --git a/native-image/what-the-dickens/lab/02-smaller-containers/Dockerfile b/native-image/what-the-dickens/lab/02-smaller-containers/Dockerfile index 134d41c4..825db8e1 100644 --- a/native-image/what-the-dickens/lab/02-smaller-containers/Dockerfile +++ b/native-image/what-the-dickens/lab/02-smaller-containers/Dockerfile @@ -1,13 +1,5 @@ # Base Container Image -FROM ghcr.io/graalvm/native-image:ol8-java17-22.3.1 AS builder - -# Install tar and gzip to extract the Maven binaries -RUN microdnf update \ - && microdnf install --nodocs \ - tar \ - gzip \ - && microdnf clean all \ - && rm -rf /var/cache/yum +FROM container-registry.oracle.com/graalvm/native-image:24 AS builder # Set the working directory to /build WORKDIR /build @@ -16,17 +8,16 @@ WORKDIR /build COPY . /build # Build -RUN ./mvnw --no-transfer-progress -Pnative -DskipTests=true clean package +RUN ./mvnw --no-transfer-progress -Pnative,mostly-static -DskipTests=true clean package # Deployment Container -# This time we use the distroless image - which is around 20 MB in size. Even smaller versions are available. -FROM gcr.io/distroless/base +FROM gcr.io/distroless/base-debian12 # This container will expose TCP port 8080, as this is the port on which your app will listen EXPOSE 8080 # Copy the native executable into the container -COPY --from=builder /build/target/What_the_Dickens . +COPY --from=builder /build/target/what_the_dickens . -# Run What_the_Dickens when starting the container -ENTRYPOINT ["/What_the_Dickens"] \ No newline at end of file +# Run what_the_dickens when starting the container +ENTRYPOINT ["/what_the_dickens"] \ No newline at end of file diff --git a/native-image/what-the-dickens/lab/HELP.md b/native-image/what-the-dickens/lab/HELP.md index 94bf6939..c252057c 100644 --- a/native-image/what-the-dickens/lab/HELP.md +++ b/native-image/what-the-dickens/lab/HELP.md @@ -1,62 +1,49 @@ -# Getting Started - -### Reference Documentation -For further reference, please consider the following sections: - -* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) -* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.0.5/maven-plugin/reference/html/) -* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.0.5/maven-plugin/reference/html/#build-image) -* [GraalVM Native Image Support](https://docs.spring.io/spring-boot/docs/3.0.5/reference/html/native-image.html#native-image) - -### Additional Links -These additional references should also help you: - -* [Configure AOT settings in Build Plugin](https://docs.spring.io/spring-boot/docs/3.0.5/maven-plugin/reference/htmlsingle/#aot) - -## GraalVM Native Support +# Help Guide This project has been configured to let you generate either a lightweight container or a native executable. -It is also possible to run your tests in a native image. +It is also possible to run your tests as a native code. + +### Lightweight Container with Paketo Buildpacks -### Lightweight Container with Cloud Native Buildpacks If you're already familiar with Spring Boot container images support, this is the easiest way to get started. -Docker should be installed and configured on your machine prior to creating the image. +Docker should be installed and configured on your machine prior to running the steps. To create the image, run the following goal: - -``` -$ ./mvnw spring-boot:build-image -Pnative +```bash +./mvnw spring-boot:build-image -Pnative ``` Then, you can run the app like any other container: - -``` -$ docker run --rm What_the_Dickens:0.0.1-SNAPSHOT +```bash +docker run --rm what_the_dickens:0.0.1-SNAPSHOT ``` ### Executable with Native Build Tools -Use this option if you want to explore more options such as running your tests in a native image. -The GraalVM `native-image` compiler should be installed and configured on your machine. -NOTE: GraalVM 22.3+ is required. +Use this option if you want to explore more options such as running your tests as a native code. +[GraalVM for JDK 24](https://www.graalvm.org/downloads/) should be installed on your machine. To create the executable, run the following goal: - -``` -$ ./mvnw native:compile -Pnative +```bash +./mvnw native:compile -Pnative ``` -Then, you can run the app as follows: -``` -$ target/What_the_Dickens +Then, you can run the application as follows: +```bash +./target/what_the_dickens ``` -You can also run your existing tests suite in a native image. +You can also run your existing tests suite as a native code. This is an efficient way to validate the compatibility of your application. To run your existing tests in a native image, run the following goal: - -``` -$ ./mvnw test -PnativeTest +```bash +./mvnw test -PnativeTest ``` +### Learn More + +For further reference, check the following: + +* [Build a Native Executable from a Spring Boot Application](https://www.graalvm.org/latest/reference-manual/native-image/guides/build-spring-boot-app-into-native-executable/) +* [Developing Your First GraalVM Native Application](https://docs.spring.io/spring-boot/how-to/native-image/developing-your-first-application.html) \ No newline at end of file diff --git a/native-image/what-the-dickens/lab/mvnw b/native-image/what-the-dickens/lab/mvnw index 5643201c..8d937f4c 100755 --- a/native-image/what-the-dickens/lab/mvnw +++ b/native-image/what-the-dickens/lab/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Maven Start Up Batch script +# Apache Maven Wrapper startup batch script, version 3.2.0 # # Required ENV vars: # ------------------ @@ -27,7 +27,6 @@ # # Optional ENV vars # ----------------- -# M2_HOME - location of maven2's installed home dir # MAVEN_OPTS - parameters passed to the Java VM when running Maven # e.g. to debug Maven itself, use # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 @@ -54,7 +53,7 @@ fi cygwin=false; darwin=false; mingw=false -case "`uname`" in +case "$(uname)" in CYGWIN*) cygwin=true ;; MINGW*) mingw=true;; Darwin*) darwin=true @@ -62,9 +61,9 @@ case "`uname`" in # See https://developer.apple.com/library/mac/qa/qa1170/_index.html if [ -z "$JAVA_HOME" ]; then if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME else - export JAVA_HOME="/Library/Java/Home" + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME fi fi ;; @@ -72,68 +71,38 @@ esac if [ -z "$JAVA_HOME" ] ; then if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` + JAVA_HOME=$(java-config --jre-home) fi fi -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - # For Cygwin, ensure paths are in UNIX format before anything is touched if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") fi # For Mingw, ensure paths are in UNIX format before anything is touched if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" fi if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" else - javaExecutable="`readlink -f \"$javaExecutable\"`" + javaExecutable="$(readlink -f "\"$javaExecutable\"")" fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') JAVA_HOME="$javaHome" export JAVA_HOME fi @@ -149,7 +118,7 @@ if [ -z "$JAVACMD" ] ; then JAVACMD="$JAVA_HOME/bin/java" fi else - JAVACMD="`\\unset -f command; \\command -v java`" + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" fi fi @@ -163,12 +132,9 @@ if [ -z "$JAVA_HOME" ] ; then echo "Warning: JAVA_HOME environment variable is not set." fi -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - # traverses directory structure from process work directory to filesystem root # first directory with .mvn subdirectory is considered project base directory find_maven_basedir() { - if [ -z "$1" ] then echo "Path not specified to find_maven_basedir" @@ -184,96 +150,99 @@ find_maven_basedir() { fi # workaround for JBEAP-8937 (on Solaris 10/Sparc) if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` + wdir=$(cd "$wdir/.." || exit 1; pwd) fi # end of workaround done - echo "${basedir}" + printf '%s' "$(cd "$basedir" || exit 1; pwd)" } # concatenates all lines of a file concat_lines() { if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" fi } -BASE_DIR=`find_maven_basedir "$(pwd)"` +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") if [ -z "$BASE_DIR" ]; then exit 1; fi +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + ########################################################################################## # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central # This allows using the maven wrapper in projects that prohibit checking in binary data. ########################################################################################## -if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found .mvn/wrapper/maven-wrapper.jar" - fi +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." - fi + log "Couldn't find $wrapperJarPath, downloading it ..." + if [ -n "$MVNW_REPOURL" ]; then - jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" else - jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" fi - while IFS="=" read key value; do - case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; esac - done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" - if [ "$MVNW_VERBOSE" = true ]; then - echo "Downloading from: $jarUrl" - fi - wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + if $cygwin; then - wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") fi if command -v wget > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found wget ... using wget" - fi + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" else - wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" fi elif command -v curl > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found curl ... using curl" - fi + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl -o "$wrapperJarPath" "$jarUrl" -f + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" else - curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" fi - else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Falling back to using Java to download" - fi - javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" # For Cygwin, switch paths to Windows format before running javac if $cygwin; then - javaClass=`cygpath --path --windows "$javaClass"` + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") fi - if [ -e "$javaClass" ]; then - if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Compiling MavenWrapperDownloader.java ..." - fi - # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") fi - if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - # Running the downloader - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Running MavenWrapperDownloader.java ..." - fi - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" fi fi fi @@ -282,35 +251,58 @@ fi # End of extension ########################################################################################## -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi fi + MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" # For Cygwin, switch paths to Windows format before running java if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") fi # Provide a "standardized" way to retrieve the CLI args that will # work with both Windows and non-Windows executions. -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" export MAVEN_CMD_LINE_ARGS WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain +# shellcheck disable=SC2086 # safe args exec "$JAVACMD" \ $MAVEN_OPTS \ $MAVEN_DEBUG_OPTS \ -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" \ "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/native-image/what-the-dickens/lab/mvnw.cmd b/native-image/what-the-dickens/lab/mvnw.cmd index 8a15b7f3..f80fbad3 100644 --- a/native-image/what-the-dickens/lab/mvnw.cmd +++ b/native-image/what-the-dickens/lab/mvnw.cmd @@ -1,188 +1,205 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* -if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" - -FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - if "%MVNW_VERBOSE%" == "true" ( - echo Found %WRAPPER_JAR% - ) -) else ( - if not "%MVNW_REPOURL%" == "" ( - SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" - ) - if "%MVNW_VERBOSE%" == "true" ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %DOWNLOAD_URL% - ) - - powershell -Command "&{"^ - "$webclient = new-object System.Net.WebClient;"^ - "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ - "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ - "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ - "}" - if "%MVNW_VERBOSE%" == "true" ( - echo Finished downloading %WRAPPER_JAR% - ) -) -@REM End of extension - -@REM Provide a "standardized" way to retrieve the CLI args that will -@REM work with both Windows and non-Windows executions. -set MAVEN_CMD_LINE_ARGS=%* - -%MAVEN_JAVA_EXE% ^ - %JVM_CONFIG_MAVEN_PROPS% ^ - %MAVEN_OPTS% ^ - %MAVEN_DEBUG_OPTS% ^ - -classpath %WRAPPER_JAR% ^ - "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ - %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" -if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%"=="on" pause - -if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% - -cmd /C exit /B %ERROR_CODE% +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/native-image/what-the-dickens/lab/pom.xml b/native-image/what-the-dickens/lab/pom.xml index b7995a7b..c3ba5a40 100644 --- a/native-image/what-the-dickens/lab/pom.xml +++ b/native-image/what-the-dickens/lab/pom.xml @@ -9,12 +9,12 @@ com.example - What_the_Dickens + what_the_dickens 0.0.1-SNAPSHOT - What_the_Dickens + what_the_dickens Generates random Dickens prose - 17 + 21 @@ -27,7 +27,7 @@ spring-boot-starter-test test - + org.rednoise rita @@ -40,14 +40,17 @@ org.graalvm.buildtools native-maven-plugin + 0.10.6 org.springframework.boot spring-boot-maven-plugin + + - + native @@ -70,19 +73,37 @@ -J-Xmx8G - - - - - - - - - + + + + + + + mostly-static + + + + org.graalvm.buildtools + native-maven-plugin + true + + + build-native + + compile-no-fork + + package + + + + + -J-Xmx8G + --static-nolibc + diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/jni-config.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/jni-config.json deleted file mode 100644 index a0449101..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/jni-config.json +++ /dev/null @@ -1,37 +0,0 @@ -[ -{ - "name":"java.lang.Boolean", - "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"java.lang.String", - "methods":[ - {"name":"lastIndexOf","parameterTypes":["int"] }, - {"name":"substring","parameterTypes":["int"] } - ] -}, -{ - "name":"java.lang.System", - "methods":[ - {"name":"getProperty","parameterTypes":["java.lang.String"] }, - {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] } - ] -}, -{ - "name":"org.springframework.boot.loader.JarLauncher", - "methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }] -}, -{ - "name":"sun.management.VMManagementImpl", - "fields":[ - {"name":"compTimeMonitoringSupport"}, - {"name":"currentThreadCpuTimeSupport"}, - {"name":"objectMonitorUsageSupport"}, - {"name":"otherThreadCpuTimeSupport"}, - {"name":"remoteDiagnosticCommandsSupport"}, - {"name":"synchronizerUsageSupport"}, - {"name":"threadAllocatedMemorySupport"}, - {"name":"threadContentionMonitoringSupport"} - ] -} -] diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/predefined-classes-config.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/predefined-classes-config.json deleted file mode 100644 index 0e79b2c5..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/predefined-classes-config.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "type":"agent-extracted", - "classes":[ - ] - } -] - diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/proxy-config.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/proxy-config.json deleted file mode 100644 index 739f3634..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/proxy-config.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "interfaces":["java.lang.reflect.ParameterizedType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"] - }, - { - "interfaces":["java.lang.reflect.TypeVariable","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"] - }, - { - "interfaces":["java.lang.reflect.WildcardType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"] - }, - { - "interfaces":["org.springframework.boot.context.properties.ConfigurationProperties"] - }, - { - "interfaces":["org.springframework.web.bind.annotation.PathVariable"] - }, - { - "interfaces":["org.springframework.web.bind.annotation.RequestMapping"] - } -] diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reachability-metadata.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reachability-metadata.json new file mode 100644 index 00000000..16b4ce2a --- /dev/null +++ b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reachability-metadata.json @@ -0,0 +1,4700 @@ +{ + "reflection": [ + { + "type": "[Lcom.fasterxml.jackson.databind.deser.Deserializers;" + }, + { + "type": "[Lcom.fasterxml.jackson.databind.deser.KeyDeserializers;" + }, + { + "type": "[Lcom.fasterxml.jackson.databind.deser.ValueInstantiators;" + }, + { + "type": "[Lcom.fasterxml.jackson.databind.ser.Serializers;" + }, + { + "type": "[Ljava.io.Serializable;" + }, + { + "type": "[Ljava.lang.CharSequence;" + }, + { + "type": "[Ljava.lang.Class;" + }, + { + "type": "[Ljava.lang.Comparable;" + }, + { + "type": "[Ljava.lang.Object;" + }, + { + "type": "[Ljava.lang.String;" + }, + { + "type": "[Ljava.lang.constant.Constable;" + }, + { + "type": "[Ljava.lang.constant.ConstantDesc;" + }, + { + "type": "[Lorg.springframework.boot.context.config.ConfigDataLocation;" + }, + { + "type": "[Lorg.springframework.core.annotation.AnnotationAttributes;" + }, + { + "type": "[Lorg.springframework.util.ConcurrentReferenceHashMap$Segment;" + }, + { + "type": "[Lorg.springframework.web.bind.annotation.RequestMethod;" + }, + { + "type": "[Z" + }, + { + "type": "apple.security.AppleProvider", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "boolean" + }, + { + "type": "ch.qos.logback.classic.LoggerContext" + }, + { + "type": "ch.qos.logback.classic.pattern.DateConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.pattern.LevelConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.pattern.LineSeparatorConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.pattern.LoggerConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.pattern.MessageConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.pattern.ThreadConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "ch.qos.logback.classic.spi.LogbackServiceProvider" + }, + { + "type": "ch.qos.logback.classic.util.DefaultJoranConfigurator" + }, + { + "type": "co.elastic.clients.elasticsearch.ElasticsearchClient" + }, + { + "type": "co.elastic.clients.transport.ElasticsearchTransport" + }, + { + "type": "com.couchbase.client.java.Bucket" + }, + { + "type": "com.couchbase.client.java.Cluster" + }, + { + "type": "com.datastax.oss.driver.api.core.CqlSession" + }, + { + "type": "com.example.DickensApplication", + "allDeclaredFields": true, + "methods": [ + { + "name": "main", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ] + }, + { + "type": "com.example.DickensApplication$$SpringCGLIB$$0", + "allDeclaredFields": true, + "fields": [ + { + "name": "CGLIB$FACTORY_DATA" + } + ], + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "CGLIB$SET_STATIC_CALLBACKS", + "parameterTypes": [ + "org.springframework.cglib.proxy.Callback[]" + ] + } + ] + }, + { + "type": "com.example.DickensController", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.fasterxml.jackson.core.JsonGenerator" + }, + { + "type": "com.fasterxml.jackson.core.ObjectCodec", + "allDeclaredFields": true + }, + { + "type": "com.fasterxml.jackson.core.TreeCodec", + "allDeclaredFields": true + }, + { + "type": "com.fasterxml.jackson.core.Versioned" + }, + { + "type": "com.fasterxml.jackson.databind.Module", + "allDeclaredFields": true + }, + { + "type": "com.fasterxml.jackson.databind.ObjectMapper", + "allDeclaredFields": true + }, + { + "type": "com.fasterxml.jackson.databind.ext.Java7SupportImpl", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.fasterxml.jackson.databind.module.SimpleModule", + "allDeclaredFields": true + }, + { + "type": "com.fasterxml.jackson.dataformat.cbor$CBORFactory" + }, + { + "type": "com.fasterxml.jackson.dataformat.cbor.CBORFactory" + }, + { + "type": "com.fasterxml.jackson.dataformat.smile$SmileFactory" + }, + { + "type": "com.fasterxml.jackson.dataformat.smile.SmileFactory" + }, + { + "type": "com.fasterxml.jackson.dataformat.xml$XmlMapper" + }, + { + "type": "com.fasterxml.jackson.dataformat.xml.XmlMapper" + }, + { + "type": "com.fasterxml.jackson.datatype.jdk8.Jdk8Module", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.fasterxml.jackson.datatype.jsr310.JavaTimeModule", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "com.fasterxml.jackson.module.paramnames.ParameterNamesModule", + "allDeclaredFields": true + }, + { + "type": "com.github.benmanes.caffeine.cache.Caffeine" + }, + { + "type": "com.google.gson.Gson", + "allDeclaredFields": true + }, + { + "type": "com.google.gson.GsonBuilder", + "allDeclaredFields": true + }, + { + "type": "com.hazelcast.core.HazelcastInstance" + }, + { + "type": "com.mongodb.client.MongoClient" + }, + { + "type": "com.mongodb.reactivestreams.client.MongoClient" + }, + { + "type": "com.rabbitmq.client.Channel" + }, + { + "type": "com.rometools.rome.feed$WireFeed" + }, + { + "type": "com.rometools.rome.feed.WireFeed" + }, + { + "type": "com.samskivert.mustache$Template" + }, + { + "type": "com.samskivert.mustache.Mustache" + }, + { + "type": "com.samskivert.mustache.Template" + }, + { + "type": "com.sendgrid.SendGrid" + }, + { + "type": "com.unboundid.ldap.listener.InMemoryDirectoryServer" + }, + { + "type": "freemarker.template$Configuration" + }, + { + "type": "freemarker.template.Configuration" + }, + { + "type": "graphql.GraphQL" + }, + { + "type": "groovy.lang$MetaClass" + }, + { + "type": "groovy.lang.MetaClass" + }, + { + "type": "groovy.text$TemplateEngine" + }, + { + "type": "groovy.text.TemplateEngine" + }, + { + "type": "groovy.text.markup.MarkupTemplateEngine" + }, + { + "type": "io.micrometer.context$ContextSnapshot" + }, + { + "type": "io.micrometer.context.ContextSnapshot" + }, + { + "type": "io.netty.buffer.PooledByteBufAllocator" + }, + { + "type": "io.netty.util.NettyRuntime" + }, + { + "type": "io.r2dbc.spi.ConnectionFactory" + }, + { + "type": "io.reactivex.rxjava3.core$Flowable" + }, + { + "type": "io.reactivex.rxjava3.core.Flowable" + }, + { + "type": "io.rsocket.RSocket" + }, + { + "type": "io.rsocket.core.RSocketServer" + }, + { + "type": "io.smallrye.mutiny$Multi" + }, + { + "type": "io.smallrye.mutiny.Multi" + }, + { + "type": "io.undertow.Undertow" + }, + { + "type": "io.undertow.websockets.jsr.Bootstrap" + }, + { + "type": "jakarta.activation.MimeType" + }, + { + "type": "jakarta.annotation.ManagedBean" + }, + { + "type": "jakarta.annotation.PostConstruct" + }, + { + "type": "jakarta.ejb$EJB" + }, + { + "type": "jakarta.ejb.EJB" + }, + { + "type": "jakarta.faces.context$FacesContext" + }, + { + "type": "jakarta.faces.context.FacesContext" + }, + { + "type": "jakarta.inject$Inject" + }, + { + "type": "jakarta.inject$Named" + }, + { + "type": "jakarta.inject$Provider" + }, + { + "type": "jakarta.inject$Qualifier" + }, + { + "type": "jakarta.inject.Inject" + }, + { + "type": "jakarta.inject.Named" + }, + { + "type": "jakarta.inject.Provider" + }, + { + "type": "jakarta.inject.Qualifier" + }, + { + "type": "jakarta.jms.ConnectionFactory" + }, + { + "type": "jakarta.jms.Message" + }, + { + "type": "jakarta.json.bind$Jsonb" + }, + { + "type": "jakarta.json.bind.Jsonb" + }, + { + "type": "jakarta.persistence$EntityManagerFactory" + }, + { + "type": "jakarta.persistence.EntityManager" + }, + { + "type": "jakarta.persistence.EntityManagerFactory" + }, + { + "type": "jakarta.persistence.PersistenceContext" + }, + { + "type": "jakarta.servlet.Filter" + }, + { + "type": "jakarta.servlet.GenericFilter" + }, + { + "type": "jakarta.servlet.GenericServlet", + "allDeclaredFields": true + }, + { + "type": "jakarta.servlet.MultipartConfigElement", + "allDeclaredFields": true + }, + { + "type": "jakarta.servlet.Servlet" + }, + { + "type": "jakarta.servlet.ServletConfig" + }, + { + "type": "jakarta.servlet.ServletContext" + }, + { + "type": "jakarta.servlet.ServletRegistration" + }, + { + "type": "jakarta.servlet.ServletRequest" + }, + { + "type": "jakarta.servlet.http.HttpServlet", + "allDeclaredFields": true + }, + { + "type": "jakarta.servlet.http.PushBuilder" + }, + { + "type": "jakarta.servlet.jsp.jstl.core$Config" + }, + { + "type": "jakarta.servlet.jsp.jstl.core.Config" + }, + { + "type": "jakarta.transaction.Transaction" + }, + { + "type": "jakarta.transaction.TransactionManager" + }, + { + "type": "jakarta.validation$Validator" + }, + { + "type": "jakarta.validation.Validator" + }, + { + "type": "jakarta.validation.executable.ExecutableValidator" + }, + { + "type": "jakarta.websocket.server.ServerContainer" + }, + { + "type": "jakarta.xml.bind$Binder" + }, + { + "type": "jakarta.xml.bind.Binder" + }, + { + "type": "jakarta.xml.ws.WebServiceRef" + }, + { + "type": "java.io.Serializable" + }, + { + "type": "java.lang.Boolean" + }, + { + "type": "java.lang.Class" + }, + { + "type": "java.lang.ClassLoader", + "fields": [ + { + "name": "classLoaderValueMap" + } + ] + }, + { + "type": "java.lang.Iterable" + }, + { + "type": "java.lang.Module" + }, + { + "type": "java.lang.Object" + }, + { + "type": "java.lang.String" + }, + { + "type": "java.lang.WrongThreadException" + }, + { + "type": "java.lang.annotation.Documented" + }, + { + "type": "java.lang.annotation.Inherited" + }, + { + "type": "java.lang.annotation.Repeatable" + }, + { + "type": "java.lang.annotation.Retention" + }, + { + "type": "java.lang.annotation.Target" + }, + { + "type": "java.lang.constant.Constable" + }, + { + "type": "java.lang.invoke.TypeDescriptor$OfField" + }, + { + "type": "java.lang.reflect.AnnotatedElement" + }, + { + "type": "java.lang.reflect.GenericDeclaration" + }, + { + "type": "java.lang.reflect.ParameterizedType", + "methods": [ + { + "name": "getActualTypeArguments", + "parameterTypes": [] + }, + { + "name": "getRawType", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.reflect.Type" + }, + { + "type": "java.lang.reflect.TypeVariable", + "methods": [ + { + "name": "getName", + "parameterTypes": [] + } + ] + }, + { + "type": "java.lang.reflect.WildcardType", + "methods": [ + { + "name": "getLowerBounds", + "parameterTypes": [] + }, + { + "name": "getUpperBounds", + "parameterTypes": [] + } + ] + }, + { + "type": "java.net.UnixDomainSocketAddress" + }, + { + "type": "java.nio.channels.ServerSocketChannel" + }, + { + "type": "java.nio.channels.SocketChannel" + }, + { + "type": "java.sql.Date" + }, + { + "type": "java.sql.DriverManager" + }, + { + "type": "java.util.ArrayList" + }, + { + "type": "java.util.Enumeration" + }, + { + "type": "java.util.HashSet" + }, + { + "type": "java.util.List" + }, + { + "type": "java.util.Set" + }, + { + "type": "java.util.concurrent.Executor" + }, + { + "type": "java.util.concurrent.ThreadFactory" + }, + { + "type": "java.util.logging.LogManager" + }, + { + "type": "java.util.logging.SimpleFormatter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "javax.annotation$PostConstruct" + }, + { + "type": "javax.annotation.PostConstruct" + }, + { + "type": "javax.cache.Caching" + }, + { + "type": "javax.inject$Inject" + }, + { + "type": "javax.inject.Inject" + }, + { + "type": "javax.money$MonetaryAmount" + }, + { + "type": "javax.money.MonetaryAmount" + }, + { + "type": "javax.naming.InitialContext" + }, + { + "type": "javax.naming.ldap.LdapContext" + }, + { + "type": "javax.sql.DataSource" + }, + { + "type": "jdk.internal.loader.ClassLoaders$AppClassLoader" + }, + { + "type": "jdk.internal.loader.ClassLoaders$PlatformClassLoader" + }, + { + "type": "jdk.internal.misc.Unsafe" + }, + { + "type": "kotlin$Metadata" + }, + { + "type": "kotlin.Metadata" + }, + { + "type": "kotlin.reflect.full$KClasses" + }, + { + "type": "kotlin.reflect.full.KClasses" + }, + { + "type": "kotlinx.coroutines.reactor$MonoKt" + }, + { + "type": "kotlinx.coroutines.reactor.MonoKt" + }, + { + "type": "kotlinx.serialization.cbor$Cbor" + }, + { + "type": "kotlinx.serialization.cbor.Cbor" + }, + { + "type": "kotlinx.serialization.json$Json" + }, + { + "type": "kotlinx.serialization.json.Json" + }, + { + "type": "kotlinx.serialization.protobuf$ProtoBuf" + }, + { + "type": "kotlinx.serialization.protobuf.ProtoBuf" + }, + { + "type": "liquibase.change.DatabaseChange" + }, + { + "type": "org.apache.catalina.core.ApplicationContextFacade" + }, + { + "type": "org.apache.catalina.loader.JdbcLeakPrevention", + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "clearJdbcDriverRegistrations", + "parameterTypes": [] + } + ] + }, + { + "type": "org.apache.catalina.startup.Tomcat" + }, + { + "type": "org.apache.catalina.util.CharsetMapper", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.apache.coyote.AbstractProtocol", + "methods": [ + { + "name": "getAddress", + "parameterTypes": [] + }, + { + "name": "getLocalPort", + "parameterTypes": [] + }, + { + "name": "setPort", + "parameterTypes": [ + "int" + ] + }, + { + "name": "setProperty", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + } + ] + }, + { + "type": "org.apache.coyote.UpgradeProtocol" + }, + { + "type": "org.apache.coyote.http11.AbstractHttp11Protocol", + "methods": [ + { + "name": "isSSLEnabled", + "parameterTypes": [] + } + ] + }, + { + "type": "org.apache.coyote.http11.Http11NioProtocol" + }, + { + "type": "org.apache.jasper.compiler$JspConfig" + }, + { + "type": "org.apache.jasper.compiler.JspConfig" + }, + { + "type": "org.apache.jasper.servlet$JspServlet" + }, + { + "type": "org.apache.jasper.servlet.JspServlet" + }, + { + "type": "org.apache.logging.log4j.core.impl$Log4jContextFactory" + }, + { + "type": "org.apache.logging.log4j.core.impl.Log4jContextFactory" + }, + { + "type": "org.apache.logging.log4j.spi.ExtendedLogger" + }, + { + "type": "org.apache.logging.slf4j.SLF4JProvider" + }, + { + "type": "org.apache.tomcat.util.net.AbstractEndpoint", + "methods": [ + { + "name": "setBindOnInit", + "parameterTypes": [ + "boolean" + ] + } + ] + }, + { + "type": "org.apache.tomcat.util.net.NioEndpoint" + }, + { + "type": "org.apache.tomcat.websocket.server.WsFilter" + }, + { + "type": "org.apache.tomcat.websocket.server.WsSci" + }, + { + "type": "org.aspectj.weaver.Advice" + }, + { + "type": "org.cache2k.Cache2kBuilder" + }, + { + "type": "org.eclipse.core.runtime$FileLocator" + }, + { + "type": "org.eclipse.core.runtime.FileLocator" + }, + { + "type": "org.eclipse.jetty.server.Server" + }, + { + "type": "org.eclipse.jetty.util.Loader" + }, + { + "type": "org.eclipse.jetty.webapp.WebAppContext" + }, + { + "type": "org.eclipse.jetty.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer" + }, + { + "type": "org.elasticsearch.client.RestClientBuilder" + }, + { + "type": "org.flywaydb.core.Flyway" + }, + { + "type": "org.glassfish.jersey.server.spring.SpringComponentProvider" + }, + { + "type": "org.graalvm.nativeimage.ImageInfo", + "methods": [ + { + "name": "inImageCode", + "parameterTypes": [] + } + ] + }, + { + "type": "org.h2.server.web.JakartaWebServlet" + }, + { + "type": "org.infinispan.spring.embedded.provider.SpringEmbeddedCacheManager" + }, + { + "type": "org.influxdb.InfluxDB" + }, + { + "type": "org.jboss.logging$Logger" + }, + { + "type": "org.jboss.logging.Logger" + }, + { + "type": "org.jooq.DSLContext" + }, + { + "type": "org.neo4j.driver.Driver" + }, + { + "type": "org.quartz.Scheduler" + }, + { + "type": "org.slf4j.Logger" + }, + { + "type": "org.slf4j.bridge.SLF4JBridgeHandler" + }, + { + "type": "org.slf4j.spi.LocationAwareLogger" + }, + { + "type": "org.springframework.aop.framework.AopInfrastructureBean" + }, + { + "type": "org.springframework.aop.framework.ProxyConfig", + "allDeclaredFields": true, + "methods": [ + { + "name": "setProxyTargetClass", + "parameterTypes": [ + "boolean" + ] + } + ] + }, + { + "type": "org.springframework.aop.framework.ProxyProcessorSupport", + "allDeclaredFields": true, + "methods": [ + { + "name": "setOrder", + "parameterTypes": [ + "int" + ] + } + ] + }, + { + "type": "org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator", + "allDeclaredFields": true + }, + { + "type": "org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator", + "allDeclaredFields": true + }, + { + "type": "org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.aot.hint.annotation.Reflective" + }, + { + "type": "org.springframework.batch.core.launch.JobLauncher" + }, + { + "type": "org.springframework.beans.factory.Aware" + }, + { + "type": "org.springframework.beans.factory.BeanClassLoaderAware" + }, + { + "type": "org.springframework.beans.factory.BeanFactoryAware" + }, + { + "type": "org.springframework.beans.factory.BeanNameAware" + }, + { + "type": "org.springframework.beans.factory.DisposableBean" + }, + { + "type": "org.springframework.beans.factory.FactoryBean" + }, + { + "type": "org.springframework.beans.factory.InitializingBean" + }, + { + "type": "org.springframework.beans.factory.annotation.Autowired" + }, + { + "type": "org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.beans.factory.annotation.Qualifier" + }, + { + "type": "org.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor" + }, + { + "type": "org.springframework.beans.factory.aot.BeanRegistrationAotProcessor" + }, + { + "type": "org.springframework.beans.factory.config.BeanFactoryPostProcessor" + }, + { + "type": "org.springframework.beans.factory.config.BeanPostProcessor" + }, + { + "type": "org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor" + }, + { + "type": "org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor" + }, + { + "type": "org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor" + }, + { + "type": "org.springframework.beans.factory.support.NullBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.beans.factory.xml.XmlBeanDefinitionReader", + "allPublicFields": true + }, + { + "type": "org.springframework.boot.ClearCachesApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.SpringApplication", + "fields": [ + { + "name": "this$0" + } + ] + }, + { + "type": "org.springframework.boot.SpringBootConfiguration" + }, + { + "type": "org.springframework.boot.ansi.AnsiOutput$Enabled" + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigurationImportSelector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigurationPackage" + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.lang.String[]" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigurationPackages$Registrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigureAfter" + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigureBefore" + }, + { + "type": "org.springframework.boot.autoconfigure.AutoConfigureOrder" + }, + { + "type": "org.springframework.boot.autoconfigure.BackgroundPreinitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.EnableAutoConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.SpringBootApplication" + }, + { + "type": "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "forceAutoProxyCreatorToUseClassProxying", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "applicationAvailability", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheConfigurationImportSelector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.cache.CacheCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.cache.CacheType" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnBean" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnClass" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnNotWarDeployment" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnProperty" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnResource" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication$Type" + }, + { + "type": "org.springframework.boot.autoconfigure.condition.OnBeanCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.OnClassCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.OnPropertyCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.OnResourceCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.OnWarDeploymentCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.condition.SearchStrategy" + }, + { + "type": "org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "defaultLifecycleProcessor", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.context.LifecycleProperties" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.context.LifecycleProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration$ResourceBundleCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "propertySourcesPlaceholderConfigurer", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializerDatabaseInitializerDetector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "gson", + "parameterTypes": [ + "com.google.gson.GsonBuilder" + ] + }, + { + "name": "gsonBuilder", + "parameterTypes": [ + "java.util.List" + ] + }, + { + "name": "standardGsonBuilderCustomizer", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.gson.GsonProperties" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$StandardGsonBuilderCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.gson.GsonBuilderCustomizer" + }, + { + "type": "org.springframework.boot.autoconfigure.gson.GsonProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.HttpMessageConverters", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "messageConverters", + "parameterTypes": [ + "org.springframework.beans.factory.ObjectProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$HttpMessageConvertersAutoConfigurationRuntimeHints" + }, + { + "type": "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "stringHttpMessageConverter", + "parameterTypes": [ + "org.springframework.core.env.Environment" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "mappingJackson2HttpMessageConverter", + "parameterTypes": [ + "com.fasterxml.jackson.databind.ObjectMapper" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.http.JsonbHttpMessageConvertersConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.info.ProjectInfoProperties" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration$GitResourceAvailableCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.info.ProjectInfoProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.integration.IntegrationPropertiesEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer" + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "jsonComponentModule", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "standardJacksonObjectMapperBuilderCustomizer", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.jackson.JacksonProperties", + "org.springframework.beans.factory.ObjectProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "jsonMixinModule", + "parameterTypes": [ + "org.springframework.context.ApplicationContext", + "org.springframework.boot.jackson.JsonMixinModuleEntries" + ] + }, + { + "name": "jsonMixinModuleEntries", + "parameterTypes": [ + "org.springframework.context.ApplicationContext" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "jacksonObjectMapperBuilder", + "parameterTypes": [ + "org.springframework.context.ApplicationContext", + "java.util.List" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "jacksonObjectMapper", + "parameterTypes": [ + "org.springframework.http.converter.json.Jackson2ObjectMapperBuilder" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "parameterNamesModule", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jackson.JacksonProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.sql.init.R2dbcInitializationConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration$SqlInitializationModeCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "applicationTaskExecutor", + "parameterTypes": [ + "org.springframework.boot.task.TaskExecutorBuilder" + ] + }, + { + "name": "taskExecutorBuilder", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.task.TaskExecutionProperties", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.task.TaskExecutionProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "taskSchedulerBuilder", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", + "org.springframework.beans.factory.ObjectProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration" + }, + { + "type": "org.springframework.boot.autoconfigure.web.ConditionalOnEnabledResourceChain" + }, + { + "type": "org.springframework.boot.autoconfigure.web.OnEnabledResourceChainCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.ServerProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.WebProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.WebResourcesRuntimeHints" + }, + { + "type": "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.client.RestTemplateBuilderConfigurer" + }, + { + "type": "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "tomcatWebServerFactoryCustomizer", + "parameterTypes": [ + "org.springframework.core.env.Environment", + "org.springframework.boot.autoconfigure.web.ServerProperties" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.format.WebConversionService", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ConditionalOnMissingFilterBean" + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DefaultDispatcherServletCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "dispatcherServlet", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "dispatcherServletRegistration", + "parameterTypes": [ + "org.springframework.web.servlet.DispatcherServlet", + "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties", + "org.springframework.beans.factory.ObjectProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath" + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.ServerProperties" + ] + }, + { + "name": "characterEncodingFilter", + "parameterTypes": [] + }, + { + "name": "localeCharsetMappingsCustomizer", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.JspTemplateAvailabilityProvider", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.servlet.MultipartProperties" + ] + }, + { + "name": "multipartConfigElement", + "parameterTypes": [] + }, + { + "name": "multipartResolver", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.MultipartProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "servletWebServerFactoryCustomizer", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.ServerProperties", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider" + ] + }, + { + "name": "tomcatServletWebServerFactoryCustomizer", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.ServerProperties" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration$BeanPostProcessorsRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedJetty" + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "tomcatServletWebServerFactory", + "parameterTypes": [ + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedUndertow" + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "formContentFilter", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties", + "org.springframework.boot.autoconfigure.web.WebProperties", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ListableBeanFactory" + ] + }, + { + "name": "flashMapManager", + "parameterTypes": [] + }, + { + "name": "localeResolver", + "parameterTypes": [] + }, + { + "name": "mvcContentNegotiationManager", + "parameterTypes": [] + }, + { + "name": "mvcConversionService", + "parameterTypes": [] + }, + { + "name": "mvcValidator", + "parameterTypes": [] + }, + { + "name": "requestMappingHandlerAdapter", + "parameterTypes": [ + "org.springframework.web.accept.ContentNegotiationManager", + "org.springframework.format.support.FormattingConversionService", + "org.springframework.validation.Validator" + ] + }, + { + "name": "themeResolver", + "parameterTypes": [] + }, + { + "name": "welcomePageHandlerMapping", + "parameterTypes": [ + "org.springframework.context.ApplicationContext", + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.resource.ResourceUrlProvider" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.WebProperties", + "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties", + "org.springframework.beans.factory.ListableBeanFactory", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider", + "org.springframework.beans.factory.ObjectProvider" + ] + }, + { + "name": "defaultViewResolver", + "parameterTypes": [] + }, + { + "name": "requestContextFilter", + "parameterTypes": [] + }, + { + "name": "viewResolver", + "parameterTypes": [ + "org.springframework.beans.factory.BeanFactory" + ] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.DefaultErrorViewResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.ServerProperties" + ] + }, + { + "name": "basicErrorController", + "parameterTypes": [ + "org.springframework.boot.web.servlet.error.ErrorAttributes", + "org.springframework.beans.factory.ObjectProvider" + ] + }, + { + "name": "errorAttributes", + "parameterTypes": [] + }, + { + "name": "errorPageCustomizer", + "parameterTypes": [ + "org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath" + ] + }, + { + "name": "preserveErrorControllerTargetClassPostProcessor", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.context.ApplicationContext", + "org.springframework.boot.autoconfigure.web.WebProperties" + ] + }, + { + "name": "conventionErrorViewResolver", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorPageCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorTemplateMissingCondition", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$PreserveErrorControllerTargetClassPostProcessor" + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$StaticView", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "beanNameViewResolver", + "parameterTypes": [] + }, + { + "name": "defaultErrorView", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver" + }, + { + "type": "org.springframework.boot.autoconfigure.websocket.servlet.TomcatWebSocketServletWebServerCustomizer", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "websocketServletWebServerCustomizer", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.availability.ApplicationAvailability" + }, + { + "type": "org.springframework.boot.availability.ApplicationAvailabilityBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.builder.ParentContextCloserApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.cloud.CloudFoundryVcapEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.logging.DeferredLogFactory" + ] + } + ] + }, + { + "type": "org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.ContextIdApplicationContextInitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.FileEncodingApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.TypeExcludeFilter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.config.AnsiOutputApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.logging.DeferredLogFactory", + "org.springframework.boot.ConfigurableBootstrapContext" + ] + } + ] + }, + { + "type": "org.springframework.boot.context.config.ConfigDataNotFoundAction" + }, + { + "type": "org.springframework.boot.context.config.ConfigTreeConfigDataLoader", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.config.ConfigTreeConfigDataLocationResolver", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.core.io.ResourceLoader" + ] + } + ] + }, + { + "type": "org.springframework.boot.context.config.DelegatingApplicationContextInitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.config.DelegatingApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.config.StandardConfigDataLoader", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.config.StandardConfigDataLocationResolver", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.logging.DeferredLogFactory", + "org.springframework.boot.context.properties.bind.Binder", + "org.springframework.core.io.ResourceLoader" + ] + } + ] + }, + { + "type": "org.springframework.boot.context.event.EventPublishingRunListener", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.SpringApplication", + "java.lang.String[]" + ] + } + ] + }, + { + "type": "org.springframework.boot.context.logging.LoggingApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.properties.BoundConfigurationProperties", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.properties.ConfigurationProperties" + }, + { + "type": "org.springframework.boot.context.properties.ConfigurationPropertiesBinder$ConfigurationPropertiesBinderFactory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.properties.DeprecatedConfigurationProperty" + }, + { + "type": "org.springframework.boot.context.properties.EnableConfigurationProperties" + }, + { + "type": "org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.context.properties.NestedConfigurationProperty" + }, + { + "type": "org.springframework.boot.context.properties.bind.Nested" + }, + { + "type": "org.springframework.boot.env.EnvironmentPostProcessorApplicationListener", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.env.PropertiesPropertySourceLoader", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.env.RandomValuePropertySourceEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.boot.logging.DeferredLogFactory" + ] + } + ] + }, + { + "type": "org.springframework.boot.env.SpringApplicationJsonEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.env.YamlPropertySourceLoader", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.flyway.FlywayDatabaseInitializerDetector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.jackson.JsonComponentModule", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.jackson.JsonMixinModule", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.jackson.JsonMixinModuleEntries", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializerDetector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.liquibase.LiquibaseDatabaseInitializerDetector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.loader.LaunchedURLClassLoader", + "methods": [ + { + "name": "clearCache", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.logging.java.JavaLoggingSystem$Factory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.logging.java.JavaLoggingSystem.Factory" + }, + { + "type": "org.springframework.boot.logging.log4j2.Log4J2LoggingSystem$Factory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.Factory" + }, + { + "type": "org.springframework.boot.logging.logback.ColorConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.logging.logback.LogbackLoggingSystem$Factory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.logging.logback.LogbackLoggingSystem.Factory" + }, + { + "type": "org.springframework.boot.orm.jpa.JpaDatabaseInitializerDetector", + "methods": [ + { + "name": "", + "parameterTypes": [ + "org.springframework.core.env.Environment" + ] + } + ] + }, + { + "type": "org.springframework.boot.r2dbc.init.R2dbcScriptDatabaseInitializerDetector", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.reactor.DebugAgentEnvironmentPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.rsocket.context.RSocketPortInfoApplicationContextInitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.task.TaskExecutorBuilder", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.task.TaskSchedulerBuilder", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.type.classreading.ConcurrentReferenceCachingMetadataReaderFactory" + }, + { + "type": "org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter", + "methods": [ + { + "name": "byAnnotation", + "parameterTypes": [ + "java.lang.Class" + ] + } + ] + }, + { + "type": "org.springframework.boot.web.client.RestTemplateBuilder" + }, + { + "type": "org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.web.embedded.tomcat.ConfigurableTomcatWebServerFactory" + }, + { + "type": "org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContextFactory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.web.server.AbstractConfigurableWebServerFactory", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.server.ConfigurableWebServerFactory" + }, + { + "type": "org.springframework.boot.web.server.ErrorPageRegistrar" + }, + { + "type": "org.springframework.boot.web.server.ErrorPageRegistrarBeanPostProcessor", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.web.server.WebServerFactoryCustomizer" + }, + { + "type": "org.springframework.boot.web.server.WebServerFactoryCustomizerBeanPostProcessor", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.web.servlet.DynamicRegistrationBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.FilterRegistrationBean" + }, + { + "type": "org.springframework.boot.web.servlet.RegistrationBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.ServletContextInitializer" + }, + { + "type": "org.springframework.boot.web.servlet.ServletRegistrationBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.context.ServletWebServerApplicationContextFactory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.web.servlet.error.DefaultErrorAttributes", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.error.ErrorAttributes" + }, + { + "type": "org.springframework.boot.web.servlet.error.ErrorController" + }, + { + "type": "org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.filter.OrderedFilter" + }, + { + "type": "org.springframework.boot.web.servlet.filter.OrderedFormContentFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory", + "allDeclaredFields": true + }, + { + "type": "org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory" + }, + { + "type": "org.springframework.boot.web.servlet.server.Encoding", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.boot.web.servlet.server.ServletWebServerFactory" + }, + { + "type": "org.springframework.cache.Cache" + }, + { + "type": "org.springframework.cache.CacheManager" + }, + { + "type": "org.springframework.cache.interceptor.CacheAspectSupport" + }, + { + "type": "org.springframework.context.ApplicationContextAware" + }, + { + "type": "org.springframework.context.ApplicationListener" + }, + { + "type": "org.springframework.context.ApplicationStartupAware" + }, + { + "type": "org.springframework.context.EmbeddedValueResolverAware" + }, + { + "type": "org.springframework.context.EnvironmentAware" + }, + { + "type": "org.springframework.context.LifecycleProcessor" + }, + { + "type": "org.springframework.context.ResourceLoaderAware" + }, + { + "type": "org.springframework.context.annotation.AnnotationScopeMetadataResolver", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.context.annotation.Bean" + }, + { + "type": "org.springframework.context.annotation.CommonAnnotationBeanPostProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.context.annotation.ComponentScan" + }, + { + "type": "org.springframework.context.annotation.ComponentScan$Filter" + }, + { + "type": "org.springframework.context.annotation.Conditional" + }, + { + "type": "org.springframework.context.annotation.Configuration" + }, + { + "type": "org.springframework.context.annotation.ConfigurationClassEnhancer$EnhancedConfiguration" + }, + { + "type": "org.springframework.context.annotation.ConfigurationClassPostProcessor", + "allDeclaredFields": true, + "methods": [ + { + "name": "", + "parameterTypes": [] + }, + { + "name": "setMetadataReaderFactory", + "parameterTypes": [ + "org.springframework.core.type.classreading.MetadataReaderFactory" + ] + } + ] + }, + { + "type": "org.springframework.context.annotation.Import" + }, + { + "type": "org.springframework.context.annotation.ImportRuntimeHints" + }, + { + "type": "org.springframework.context.annotation.Lazy" + }, + { + "type": "org.springframework.context.annotation.Primary" + }, + { + "type": "org.springframework.context.annotation.Scope" + }, + { + "type": "org.springframework.context.event.DefaultEventListenerFactory", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.context.event.EventListenerMethodProcessor", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.context.support.ApplicationObjectSupport", + "allDeclaredFields": true + }, + { + "type": "org.springframework.context.support.DefaultLifecycleProcessor", + "allDeclaredFields": true + }, + { + "type": "org.springframework.context.support.PropertySourcesPlaceholderConfigurer" + }, + { + "type": "org.springframework.core.Ordered" + }, + { + "type": "org.springframework.core.PriorityOrdered" + }, + { + "type": "org.springframework.core.annotation.AliasFor" + }, + { + "type": "org.springframework.core.annotation.Order" + }, + { + "type": "org.springframework.core.convert.support.ConfigurableConversionService" + }, + { + "type": "org.springframework.core.convert.support.GenericConversionService", + "allDeclaredFields": true + }, + { + "type": "org.springframework.core.env.EnvironmentCapable" + }, + { + "type": "org.springframework.core.task.AsyncListenableTaskExecutor" + }, + { + "type": "org.springframework.core.type.classreading.MetadataReaderFactory" + }, + { + "type": "org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" + }, + { + "type": "org.springframework.data.cassandra.ReactiveSession" + }, + { + "type": "org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate" + }, + { + "type": "org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient" + }, + { + "type": "org.springframework.data.elasticsearch.repository.ElasticsearchRepository" + }, + { + "type": "org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration" + }, + { + "type": "org.springframework.data.jpa.repository.JpaRepository" + }, + { + "type": "org.springframework.data.ldap.repository.LdapRepository" + }, + { + "type": "org.springframework.data.r2dbc.core.R2dbcEntityTemplate" + }, + { + "type": "org.springframework.data.redis.connection.RedisConnectionFactory" + }, + { + "type": "org.springframework.data.redis.core.RedisOperations" + }, + { + "type": "org.springframework.data.redis.repository.configuration.EnableRedisRepositories" + }, + { + "type": "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter" + }, + { + "type": "org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration" + }, + { + "type": "org.springframework.data.web.PageableHandlerMethodArgumentResolver" + }, + { + "type": "org.springframework.format.FormatterRegistry" + }, + { + "type": "org.springframework.format.support.DefaultFormattingConversionService", + "allDeclaredFields": true + }, + { + "type": "org.springframework.format.support.FormattingConversionService", + "allDeclaredFields": true + }, + { + "type": "org.springframework.hateoas.EntityModel" + }, + { + "type": "org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter" + }, + { + "type": "org.springframework.http.ReactiveHttpInputMessage" + }, + { + "type": "org.springframework.http.codec.CodecConfigurer" + }, + { + "type": "org.springframework.http.codec.multipart.DefaultPartHttpMessageReader" + }, + { + "type": "org.springframework.http.converter.AbstractGenericHttpMessageConverter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.http.converter.AbstractHttpMessageConverter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.http.converter.GenericHttpMessageConverter" + }, + { + "type": "org.springframework.http.converter.HttpMessageConverter" + }, + { + "type": "org.springframework.http.converter.StringHttpMessageConverter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.http.converter.json.GsonHttpMessageConverter" + }, + { + "type": "org.springframework.http.converter.json.Jackson2ObjectMapperBuilder", + "allDeclaredFields": true + }, + { + "type": "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.http.server.reactive.HttpHandler" + }, + { + "type": "org.springframework.integration.config.EnableIntegration" + }, + { + "type": "org.springframework.jdbc.core.JdbcTemplate" + }, + { + "type": "org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType" + }, + { + "type": "org.springframework.jdbc.datasource.init.DatabasePopulator" + }, + { + "type": "org.springframework.jms.core.JmsTemplate" + }, + { + "type": "org.springframework.jmx.export.MBeanExporter" + }, + { + "type": "org.springframework.kafka.core.KafkaTemplate" + }, + { + "type": "org.springframework.ldap.core.ContextSource" + }, + { + "type": "org.springframework.mail.javamail.JavaMailSenderImpl" + }, + { + "type": "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" + }, + { + "type": "org.springframework.oxm.Marshaller" + }, + { + "type": "org.springframework.r2dbc.connection.R2dbcTransactionManager" + }, + { + "type": "org.springframework.r2dbc.connection.init.DatabasePopulator" + }, + { + "type": "org.springframework.scheduling.SchedulingTaskExecutor" + }, + { + "type": "org.springframework.scheduling.concurrent.CustomizableThreadFactory", + "allDeclaredFields": true + }, + { + "type": "org.springframework.scheduling.concurrent.ExecutorConfigurationSupport", + "allDeclaredFields": true + }, + { + "type": "org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor", + "allDeclaredFields": true + }, + { + "type": "org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler" + }, + { + "type": "org.springframework.security.authentication.AuthenticationManager" + }, + { + "type": "org.springframework.security.authentication.DefaultAuthenticationEventPublisher" + }, + { + "type": "org.springframework.security.authentication.ReactiveAuthenticationManager" + }, + { + "type": "org.springframework.security.config.annotation.web.configuration.EnableWebSecurity" + }, + { + "type": "org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity" + }, + { + "type": "org.springframework.security.config.http.SessionCreationPolicy" + }, + { + "type": "org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken" + }, + { + "type": "org.springframework.security.rsocket.core.SecuritySocketAcceptorInterceptor" + }, + { + "type": "org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrationRepository" + }, + { + "type": "org.springframework.session.Session" + }, + { + "type": "org.springframework.stereotype.Component" + }, + { + "type": "org.springframework.stereotype.Controller" + }, + { + "type": "org.springframework.stereotype.Indexed" + }, + { + "type": "org.springframework.transaction.PlatformTransactionManager" + }, + { + "type": "org.springframework.util.AntPathMatcher", + "allDeclaredFields": true + }, + { + "type": "org.springframework.util.CustomizableThreadCreator", + "allDeclaredFields": true + }, + { + "type": "org.springframework.util.PathMatcher" + }, + { + "type": "org.springframework.validation.Validator" + }, + { + "type": "org.springframework.web.accept.ContentNegotiationManager", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.accept.ContentNegotiationStrategy" + }, + { + "type": "org.springframework.web.accept.MediaTypeFileExtensionResolver" + }, + { + "type": "org.springframework.web.bind.annotation.ExceptionHandler" + }, + { + "type": "org.springframework.web.bind.annotation.GetMapping" + }, + { + "type": "org.springframework.web.bind.annotation.Mapping" + }, + { + "type": "org.springframework.web.bind.annotation.RequestMapping" + }, + { + "type": "org.springframework.web.bind.annotation.ResponseBody" + }, + { + "type": "org.springframework.web.bind.annotation.RestController" + }, + { + "type": "org.springframework.web.client.RestTemplate" + }, + { + "type": "org.springframework.web.context.ConfigurableWebApplicationContext" + }, + { + "type": "org.springframework.web.context.ServletContextAware" + }, + { + "type": "org.springframework.web.context.request.RequestContextListener" + }, + { + "type": "org.springframework.web.context.support.GenericWebApplicationContext" + }, + { + "type": "org.springframework.web.context.support.WebApplicationObjectSupport", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.filter.CharacterEncodingFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.filter.FormContentFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.filter.GenericFilterBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.filter.OncePerRequestFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.filter.RequestContextFilter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.method.support.CompositeUriComponentsContributor", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.method.support.UriComponentsContributor" + }, + { + "type": "org.springframework.web.multipart.MultipartResolver" + }, + { + "type": "org.springframework.web.multipart.support.StandardServletMultipartResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.reactive$DispatcherHandler" + }, + { + "type": "org.springframework.web.reactive.DispatcherHandler" + }, + { + "type": "org.springframework.web.reactive.HandlerResult" + }, + { + "type": "org.springframework.web.reactive.config.WebFluxConfigurer" + }, + { + "type": "org.springframework.web.reactive.function.client.WebClient" + }, + { + "type": "org.springframework.web.servlet.DispatcherServlet", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.FlashMapManager" + }, + { + "type": "org.springframework.web.servlet.FrameworkServlet", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.HandlerAdapter" + }, + { + "type": "org.springframework.web.servlet.HandlerExceptionResolver" + }, + { + "type": "org.springframework.web.servlet.HandlerMapping" + }, + { + "type": "org.springframework.web.servlet.HttpServletBean", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.LocaleResolver" + }, + { + "type": "org.springframework.web.servlet.RequestToViewNameTranslator" + }, + { + "type": "org.springframework.web.servlet.ThemeResolver" + }, + { + "type": "org.springframework.web.servlet.View" + }, + { + "type": "org.springframework.web.servlet.ViewResolver" + }, + { + "type": "org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration", + "allDeclaredFields": true, + "methods": [ + { + "name": "setConfigurers", + "parameterTypes": [ + "java.util.List" + ] + } + ] + }, + { + "type": "org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport", + "allDeclaredFields": true, + "methods": [ + { + "name": "beanNameHandlerMapping", + "parameterTypes": [ + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.resource.ResourceUrlProvider" + ] + }, + { + "name": "defaultServletHandlerMapping", + "parameterTypes": [] + }, + { + "name": "handlerExceptionResolver", + "parameterTypes": [ + "org.springframework.web.accept.ContentNegotiationManager" + ] + }, + { + "name": "handlerFunctionAdapter", + "parameterTypes": [] + }, + { + "name": "httpRequestHandlerAdapter", + "parameterTypes": [] + }, + { + "name": "mvcPathMatcher", + "parameterTypes": [] + }, + { + "name": "mvcPatternParser", + "parameterTypes": [] + }, + { + "name": "mvcResourceUrlProvider", + "parameterTypes": [] + }, + { + "name": "mvcUriComponentsContributor", + "parameterTypes": [ + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" + ] + }, + { + "name": "mvcUrlPathHelper", + "parameterTypes": [] + }, + { + "name": "mvcViewResolver", + "parameterTypes": [ + "org.springframework.web.accept.ContentNegotiationManager" + ] + }, + { + "name": "requestMappingHandlerMapping", + "parameterTypes": [ + "org.springframework.web.accept.ContentNegotiationManager", + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.resource.ResourceUrlProvider" + ] + }, + { + "name": "resourceHandlerMapping", + "parameterTypes": [ + "org.springframework.web.accept.ContentNegotiationManager", + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.resource.ResourceUrlProvider" + ] + }, + { + "name": "routerFunctionMapping", + "parameterTypes": [ + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.resource.ResourceUrlProvider" + ] + }, + { + "name": "simpleControllerHandlerAdapter", + "parameterTypes": [] + }, + { + "name": "viewControllerHandlerMapping", + "parameterTypes": [ + "org.springframework.format.support.FormattingConversionService", + "org.springframework.web.servlet.resource.ResourceUrlProvider" + ] + }, + { + "name": "viewNameTranslator", + "parameterTypes": [] + } + ] + }, + { + "type": "org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$NoOpValidator", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.config.annotation.WebMvcConfigurer" + }, + { + "type": "org.springframework.web.servlet.function.support.HandlerFunctionAdapter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.function.support.RouterFunctionMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.AbstractHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.AbstractHandlerMethodMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$EmptyHandler" + }, + { + "type": "org.springframework.web.servlet.handler.AbstractUrlHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.HandlerExceptionResolverComposite", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.handler.MatchableHandlerMapping" + }, + { + "type": "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.i18n.AbstractLocaleResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping$HttpOptionsHandler" + }, + { + "type": "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.resource.ResourceUrlProvider", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.support.AbstractFlashMapManager", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.support.SessionFlashMapManager", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.support.WebContentGenerator", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.theme.AbstractThemeResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.theme.FixedThemeResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.AbstractCachingViewResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.BeanNameViewResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.ContentNegotiatingViewResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.InternalResourceViewResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.UrlBasedViewResolver", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.servlet.view.ViewResolverComposite", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer" + }, + { + "type": "org.springframework.web.util.UrlPathHelper", + "allDeclaredFields": true + }, + { + "type": "org.springframework.web.util.pattern.PathPatternParser", + "allDeclaredFields": true + }, + { + "type": "org.springframework.ws.transport.http.MessageDispatcherServlet" + }, + { + "type": "org.thymeleaf.spring6$SpringTemplateEngine" + }, + { + "type": "org.thymeleaf.spring6.SpringTemplateEngine" + }, + { + "type": "org.webjars$WebJarAssetLocator" + }, + { + "type": "org.webjars.WebJarAssetLocator" + }, + { + "type": "org.xnio.SslClientAuthMode" + }, + { + "type": "reactor.core.publisher$Flux" + }, + { + "type": "reactor.core.publisher.Flux" + }, + { + "type": "reactor.core.publisher.Mono" + }, + { + "type": "reactor.netty.http.server.HttpServer" + }, + { + "type": "reactor.tools.agent$ReactorDebugAgent" + }, + { + "type": "reactor.tools.agent.ReactorDebugAgent" + }, + { + "type": "sun.security.provider.NativePRNG", + "methods": [ + { + "name": "", + "parameterTypes": [ + "java.security.SecureRandomParameters" + ] + } + ] + }, + { + "type": "sun.security.provider.SHA", + "methods": [ + { + "name": "", + "parameterTypes": [] + } + ] + }, + { + "type": { + "proxy": [ + "java.lang.reflect.ParameterizedType", + "org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy", + "java.io.Serializable" + ] + } + }, + { + "type": { + "proxy": [ + "java.lang.reflect.TypeVariable", + "org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy", + "java.io.Serializable" + ] + } + }, + { + "type": { + "proxy": [ + "java.lang.reflect.WildcardType", + "org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy", + "java.io.Serializable" + ] + } + }, + { + "type": { + "proxy": [ + "org.springframework.boot.context.properties.ConfigurationProperties" + ] + } + }, + { + "type": { + "proxy": [ + "org.springframework.web.bind.annotation.RequestMapping" + ] + } + } + ], + "resources": [ + { + "glob": "A_Tale_of_Two_Cities.txt" + }, + { + "glob": "Christmas_Carol.txt" + }, + { + "glob": "Hard_Times.txt" + }, + { + "glob": "META-INF/build-info.properties" + }, + { + "glob": "META-INF/resources/index.html" + }, + { + "glob": "META-INF/services/ch.qos.logback.classic.spi.Configurator" + }, + { + "glob": "META-INF/services/java.lang.System$LoggerFinder" + }, + { + "glob": "META-INF/services/java.nio.channels.spi.SelectorProvider" + }, + { + "glob": "META-INF/services/java.sql.Driver" + }, + { + "glob": "META-INF/services/java.time.zone.ZoneRulesProvider" + }, + { + "glob": "META-INF/services/java.util.spi.ResourceBundleControlProvider" + }, + { + "glob": "META-INF/services/org.apache.juli.logging.Log" + }, + { + "glob": "META-INF/services/org.slf4j.spi.SLF4JServiceProvider" + }, + { + "glob": "META-INF/spring-autoconfigure-metadata.properties" + }, + { + "glob": "META-INF/spring.components" + }, + { + "glob": "META-INF/spring.factories" + }, + { + "glob": "META-INF/spring.integration.properties" + }, + { + "glob": "META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports" + }, + { + "glob": "Oliver_Twist.txt" + }, + { + "glob": "application-default.properties" + }, + { + "glob": "application-default.xml" + }, + { + "glob": "application-default.yaml" + }, + { + "glob": "application-default.yml" + }, + { + "glob": "application.properties" + }, + { + "glob": "application.xml" + }, + { + "glob": "application.yaml" + }, + { + "glob": "application.yml" + }, + { + "glob": "banner.txt" + }, + { + "glob": "com/example" + }, + { + "glob": "com/example/DickensController.class" + }, + { + "glob": "config/application-default.properties" + }, + { + "glob": "config/application-default.xml" + }, + { + "glob": "config/application-default.yaml" + }, + { + "glob": "config/application-default.yml" + }, + { + "glob": "config/application.properties" + }, + { + "glob": "config/application.xml" + }, + { + "glob": "config/application.yaml" + }, + { + "glob": "config/application.yml" + }, + { + "glob": "git.properties" + }, + { + "glob": "jakarta/servlet/http/LocalStrings.properties" + }, + { + "glob": "jakarta/servlet/http/LocalStrings_en.properties" + }, + { + "glob": "jakarta/servlet/http/LocalStrings_en_UA.properties" + }, + { + "glob": "jndi.properties" + }, + { + "glob": "logback-spring.groovy" + }, + { + "glob": "logback-spring.xml" + }, + { + "glob": "logback-test-spring.groovy" + }, + { + "glob": "logback-test-spring.xml" + }, + { + "glob": "logback-test.groovy" + }, + { + "glob": "logback-test.xml" + }, + { + "glob": "logback.groovy" + }, + { + "glob": "logback.xml" + }, + { + "glob": "messages.properties" + }, + { + "glob": "org/apache/catalina/authenticator/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/connector/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/core/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/core/RestrictedFilters.properties" + }, + { + "glob": "org/apache/catalina/core/RestrictedListeners.properties" + }, + { + "glob": "org/apache/catalina/core/RestrictedServlets.properties" + }, + { + "glob": "org/apache/catalina/deploy/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/loader/JdbcLeakPrevention.class" + }, + { + "glob": "org/apache/catalina/loader/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/mapper/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/mbeans/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/realm/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/security/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/session/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/startup/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/util/CharsetMapperDefault.properties" + }, + { + "glob": "org/apache/catalina/util/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/util/ServerInfo.properties" + }, + { + "glob": "org/apache/catalina/valves/LocalStrings.properties" + }, + { + "glob": "org/apache/catalina/webresources/LocalStrings.properties" + }, + { + "glob": "org/apache/coyote/LocalStrings.properties" + }, + { + "glob": "org/apache/coyote/http11/LocalStrings.properties" + }, + { + "glob": "org/apache/naming/LocalStrings.properties" + }, + { + "glob": "org/apache/naming/LocalStrings_en.properties" + }, + { + "glob": "org/apache/naming/LocalStrings_en_UA.properties" + }, + { + "glob": "org/apache/tomcat/util/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/buf/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/compat/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/descriptor/web/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/http/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/modeler/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/net/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/scan/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/util/threads/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/websocket/LocalStrings.properties" + }, + { + "glob": "org/apache/tomcat/websocket/server/LocalStrings.properties" + }, + { + "glob": "org/springframework/beans/factory/Aware.class" + }, + { + "glob": "org/springframework/beans/factory/BeanFactoryAware.class" + }, + { + "glob": "org/springframework/beans/factory/config/BeanFactoryPostProcessor.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/AbstractDependsOnBeanFactoryPostProcessor.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/AutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/AutoConfigureAfter.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/AutoConfigureBefore.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/AutoConfigureOrder.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/aop/AopAutoConfiguration$AspectJAutoProxyingConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/aop/AopAutoConfiguration$ClassProxyingConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/aop/AopAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheConfigurationImportSelector.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheManagerEntityManagerFactoryDependsOnPostProcessor.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheManagerValidator.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/GenericCacheConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/NoOpCacheConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/cache/SimpleCacheConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnBean.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnMissingClass.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnNotWarDeployment.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/condition/ConditionalOnWebApplication.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/context/ConfigurationPropertiesAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/context/LifecycleAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/context/MessageSourceAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/context/PropertyPlaceholderAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration$StandardGsonBuilderCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$GsonHttpMessageConverterConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition$JacksonAvailable.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition$JsonbPreferred.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition$GsonPreferred.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition$JacksonJsonbUnavailable.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$HttpMessageConvertersAutoConfigurationRuntimeHints.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/http/JsonbHttpMessageConvertersConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration$GitResourceAvailableCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonAutoConfigurationRuntimeHints.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonMixinConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$ParameterNamesModuleConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/jmx/JmxAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/orm/jpa/EntityManagerFactoryDependsOnPostProcessor.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/sql/init/R2dbcInitializationConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration$SqlInitializationModeCondition$ModeIsNever.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration$SqlInitializationModeCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/task/TaskExecutionAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/task/TaskSchedulingAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$JettyWebServerFactoryCustomizerConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$UndertowWebServerFactoryCustomizerConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DefaultDispatcherServletCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$BeanPostProcessorsRegistrar.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$ForwardedHeaderFilterConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$ForwardedHeaderFilterCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedJetty.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedTomcat.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedUndertow.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$OptionalPathExtensionContentNegotiationStrategy.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ProblemDetailsErrorHandlingConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceChainCustomizerConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceChainResourceHandlerRegistrationCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceHandlerRegistrationCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$ErrorPageCustomizer.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$ErrorTemplateMissingCondition.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$PreserveErrorControllerTargetClassPostProcessor.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$StaticView.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$JettyWebSocketConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$UndertowWebSocketConfiguration.class" + }, + { + "glob": "org/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration.class" + }, + { + "glob": "org/springframework/boot/context/properties/EnableConfigurationProperties.class" + }, + { + "glob": "org/springframework/boot/context/properties/EnableConfigurationPropertiesRegistrar.class" + }, + { + "glob": "org/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.class" + }, + { + "glob": "org/springframework/context/ApplicationContextAware.class" + }, + { + "glob": "org/springframework/context/ResourceLoaderAware.class" + }, + { + "glob": "org/springframework/context/annotation/Conditional.class" + }, + { + "glob": "org/springframework/context/annotation/Configuration.class" + }, + { + "glob": "org/springframework/context/annotation/Import.class" + }, + { + "glob": "org/springframework/context/annotation/ImportBeanDefinitionRegistrar.class" + }, + { + "glob": "org/springframework/context/annotation/ImportRuntimeHints.class" + }, + { + "glob": "org/springframework/core/Ordered.class" + }, + { + "glob": "org/springframework/core/annotation/Order.class" + }, + { + "glob": "org/springframework/web/bind/annotation/ResponseBody.class" + }, + { + "glob": "org/springframework/web/bind/annotation/RestController.class" + }, + { + "glob": "org/springframework/web/context/ServletContextAware.class" + }, + { + "glob": "org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class" + }, + { + "glob": "org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport$NoOpValidator.class" + }, + { + "glob": "org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.class" + }, + { + "glob": "org/springframework/web/servlet/config/annotation/WebMvcConfigurer.class" + }, + { + "glob": "public/index.html" + }, + { + "glob": "resources/index.html" + }, + { + "glob": "spring.properties" + }, + { + "glob": "static/index.html" + } + ], + "bundles": [ + { + "name": "jakarta.servlet.http.LocalStrings", + "locales": [ + "en-UA" + ] + }, + { + "name": "org.apache.catalina.authenticator.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.connector.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.core.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.deploy.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.loader.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.mapper.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.mbeans.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.realm.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.security.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.session.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.startup.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.util.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.valves.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.catalina.webresources.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.coyote.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.coyote.http11.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.naming.LocalStrings", + "locales": [ + "en-UA" + ] + }, + { + "name": "org.apache.tomcat.util.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.buf.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.compat.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.descriptor.web.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.http.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.modeler.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.net.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.scan.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.util.threads.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.websocket.LocalStrings", + "locales": [ + "und" + ] + }, + { + "name": "org.apache.tomcat.websocket.server.LocalStrings", + "locales": [ + "und" + ] + } + ], + "jni": [ + { + "type": "java.lang.Boolean", + "methods": [ + { + "name": "getBoolean", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + }, + { + "type": "sun.management.VMManagementImpl", + "fields": [ + { + "name": "compTimeMonitoringSupport" + }, + { + "name": "currentThreadCpuTimeSupport" + }, + { + "name": "objectMonitorUsageSupport" + }, + { + "name": "otherThreadCpuTimeSupport" + }, + { + "name": "remoteDiagnosticCommandsSupport" + }, + { + "name": "synchronizerUsageSupport" + }, + { + "name": "threadAllocatedMemorySupport" + }, + { + "name": "threadContentionMonitoringSupport" + } + ] + } + ] +} \ No newline at end of file diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reflect-config.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reflect-config.json deleted file mode 100644 index d955a93d..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/reflect-config.json +++ /dev/null @@ -1,3084 +0,0 @@ -[ -{ - "name":"[Lcom.fasterxml.jackson.databind.deser.Deserializers;" -}, -{ - "name":"[Lcom.fasterxml.jackson.databind.deser.KeyDeserializers;" -}, -{ - "name":"[Lcom.fasterxml.jackson.databind.deser.ValueInstantiators;" -}, -{ - "name":"[Lcom.fasterxml.jackson.databind.ser.Serializers;" -}, -{ - "name":"[Ljava.io.Serializable;" -}, -{ - "name":"[Ljava.lang.CharSequence;" -}, -{ - "name":"[Ljava.lang.Class;" -}, -{ - "name":"[Ljava.lang.Comparable;" -}, -{ - "name":"[Ljava.lang.Object;" -}, -{ - "name":"[Ljava.lang.String;" -}, -{ - "name":"[Ljava.lang.annotation.Annotation;" -}, -{ - "name":"[Ljava.lang.constant.Constable;" -}, -{ - "name":"[Ljava.lang.constant.ConstantDesc;" -}, -{ - "name":"[Lorg.springframework.boot.context.config.ConfigDataLocation;" -}, -{ - "name":"[Lorg.springframework.core.annotation.AnnotationAttributes;" -}, -{ - "name":"[Lorg.springframework.util.ConcurrentReferenceHashMap$Segment;" -}, -{ - "name":"[Lorg.springframework.web.bind.annotation.RequestMethod;" -}, -{ - "name":"[Z" -}, -{ - "name":"apple.security.AppleProvider", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"boolean", - "queryAllDeclaredMethods":true -}, -{ - "name":"ch.qos.logback.classic.LoggerContext" -}, -{ - "name":"ch.qos.logback.classic.pattern.DateConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"ch.qos.logback.classic.pattern.LevelConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"ch.qos.logback.classic.pattern.LineSeparatorConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"ch.qos.logback.classic.pattern.LoggerConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"ch.qos.logback.classic.pattern.MessageConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"ch.qos.logback.classic.pattern.ThreadConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.example.DickensApplication", - "allDeclaredFields":true, - "allDeclaredClasses":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"main","parameterTypes":["java.lang.String[]"] } - ] -}, -{ - "name":"com.example.DickensApplication$$SpringCGLIB$$0", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "fields":[{"name":"CGLIB$FACTORY_DATA"}], - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"CGLIB$SET_STATIC_CALLBACKS","parameterTypes":["org.springframework.cglib.proxy.Callback[]"] }, - {"name":"CGLIB$SET_THREAD_CALLBACKS","parameterTypes":["org.springframework.cglib.proxy.Callback[]"] } - ] -}, -{ - "name":"com.example.DickensController", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"whatTheDickensN","parameterTypes":["int"] } - ] -}, -{ - "name":"com.fasterxml.jackson.core.JsonGenerator" -}, -{ - "name":"com.fasterxml.jackson.core.ObjectCodec", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getJsonFactory","parameterTypes":[] }, - {"name":"readValues","parameterTypes":["com.fasterxml.jackson.core.JsonParser","com.fasterxml.jackson.core.type.ResolvedType"] }, - {"name":"readValues","parameterTypes":["com.fasterxml.jackson.core.JsonParser","com.fasterxml.jackson.core.type.TypeReference"] }, - {"name":"readValues","parameterTypes":["com.fasterxml.jackson.core.JsonParser","java.lang.Class"] } - ] -}, -{ - "name":"com.fasterxml.jackson.core.TreeCodec", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"com.fasterxml.jackson.core.Versioned", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"com.fasterxml.jackson.databind.Module", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"getDependencies","parameterTypes":[] }] -}, -{ - "name":"com.fasterxml.jackson.databind.ObjectMapper", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"createArrayNode","parameterTypes":[] }, - {"name":"createObjectNode","parameterTypes":[] }, - {"name":"getFactory","parameterTypes":[] }, - {"name":"missingNode","parameterTypes":[] }, - {"name":"nullNode","parameterTypes":[] }, - {"name":"readTree","parameterTypes":["com.fasterxml.jackson.core.JsonParser"] }, - {"name":"readValue","parameterTypes":["com.fasterxml.jackson.core.JsonParser","com.fasterxml.jackson.core.type.ResolvedType"] }, - {"name":"readValue","parameterTypes":["com.fasterxml.jackson.core.JsonParser","com.fasterxml.jackson.core.type.TypeReference"] }, - {"name":"readValue","parameterTypes":["com.fasterxml.jackson.core.JsonParser","java.lang.Class"] }, - {"name":"readValues","parameterTypes":["com.fasterxml.jackson.core.JsonParser","com.fasterxml.jackson.core.type.ResolvedType"] }, - {"name":"readValues","parameterTypes":["com.fasterxml.jackson.core.JsonParser","com.fasterxml.jackson.core.type.TypeReference"] }, - {"name":"readValues","parameterTypes":["com.fasterxml.jackson.core.JsonParser","java.lang.Class"] }, - {"name":"treeAsTokens","parameterTypes":["com.fasterxml.jackson.core.TreeNode"] }, - {"name":"treeToValue","parameterTypes":["com.fasterxml.jackson.core.TreeNode","java.lang.Class"] }, - {"name":"version","parameterTypes":[] }, - {"name":"writeTree","parameterTypes":["com.fasterxml.jackson.core.JsonGenerator","com.fasterxml.jackson.core.TreeNode"] }, - {"name":"writeValue","parameterTypes":["com.fasterxml.jackson.core.JsonGenerator","java.lang.Object"] } - ] -}, -{ - "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.fasterxml.jackson.databind.module.SimpleModule", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addAbstractTypeMapping","parameterTypes":["java.lang.Class","java.lang.Class"] }, - {"name":"addDeserializer","parameterTypes":["java.lang.Class","com.fasterxml.jackson.databind.JsonDeserializer"] }, - {"name":"addKeyDeserializer","parameterTypes":["java.lang.Class","com.fasterxml.jackson.databind.KeyDeserializer"] }, - {"name":"addKeySerializer","parameterTypes":["java.lang.Class","com.fasterxml.jackson.databind.JsonSerializer"] }, - {"name":"addSerializer","parameterTypes":["com.fasterxml.jackson.databind.JsonSerializer"] }, - {"name":"addSerializer","parameterTypes":["java.lang.Class","com.fasterxml.jackson.databind.JsonSerializer"] }, - {"name":"addValueInstantiator","parameterTypes":["java.lang.Class","com.fasterxml.jackson.databind.deser.ValueInstantiator"] }, - {"name":"getModuleName","parameterTypes":[] }, - {"name":"getTypeId","parameterTypes":[] }, - {"name":"registerSubtypes","parameterTypes":["java.util.Collection"] }, - {"name":"registerSubtypes","parameterTypes":["com.fasterxml.jackson.databind.jsontype.NamedType[]"] }, - {"name":"registerSubtypes","parameterTypes":["java.lang.Class[]"] }, - {"name":"setAbstractTypes","parameterTypes":["com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver"] }, - {"name":"setDeserializerModifier","parameterTypes":["com.fasterxml.jackson.databind.deser.BeanDeserializerModifier"] }, - {"name":"setDeserializers","parameterTypes":["com.fasterxml.jackson.databind.module.SimpleDeserializers"] }, - {"name":"setKeyDeserializers","parameterTypes":["com.fasterxml.jackson.databind.module.SimpleKeyDeserializers"] }, - {"name":"setKeySerializers","parameterTypes":["com.fasterxml.jackson.databind.module.SimpleSerializers"] }, - {"name":"setMixInAnnotation","parameterTypes":["java.lang.Class","java.lang.Class"] }, - {"name":"setSerializerModifier","parameterTypes":["com.fasterxml.jackson.databind.ser.BeanSerializerModifier"] }, - {"name":"setSerializers","parameterTypes":["com.fasterxml.jackson.databind.module.SimpleSerializers"] }, - {"name":"setValueInstantiators","parameterTypes":["com.fasterxml.jackson.databind.module.SimpleValueInstantiators"] }, - {"name":"setupModule","parameterTypes":["com.fasterxml.jackson.databind.Module$SetupContext"] }, - {"name":"version","parameterTypes":[] } - ] -}, -{ - "name":"com.fasterxml.jackson.datatype.jdk8.Jdk8Module", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.fasterxml.jackson.datatype.jsr310.JavaTimeModule", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.fasterxml.jackson.module.paramnames.ParameterNamesModule", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"setupModule","parameterTypes":["com.fasterxml.jackson.databind.Module$SetupContext"] }] -}, -{ - "name":"com.google.gson.Gson", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"com.google.gson.GsonBuilder", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"jakarta.annotation.ManagedBean" -}, -{ - "name":"jakarta.annotation.PostConstruct" -}, -{ - "name":"jakarta.servlet.Filter", - "queryAllPublicMethods":true -}, -{ - "name":"jakarta.servlet.GenericFilter", - "queryAllDeclaredMethods":true -}, -{ - "name":"jakarta.servlet.GenericServlet", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getInitParameter","parameterTypes":["java.lang.String"] }, - {"name":"getInitParameterNames","parameterTypes":[] }, - {"name":"getServletConfig","parameterTypes":[] }, - {"name":"getServletContext","parameterTypes":[] }, - {"name":"getServletInfo","parameterTypes":[] }, - {"name":"log","parameterTypes":["java.lang.String"] }, - {"name":"log","parameterTypes":["java.lang.String","java.lang.Throwable"] } - ] -}, -{ - "name":"jakarta.servlet.MultipartConfigElement", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"jakarta.servlet.Servlet", - "queryAllPublicMethods":true -}, -{ - "name":"jakarta.servlet.ServletConfig", - "queryAllPublicMethods":true -}, -{ - "name":"jakarta.servlet.ServletContext", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"jakarta.servlet.ServletRegistration" -}, -{ - "name":"jakarta.servlet.ServletRequest" -}, -{ - "name":"jakarta.servlet.http.HttpServlet", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"init","parameterTypes":["jakarta.servlet.ServletConfig"] }, - {"name":"service","parameterTypes":["jakarta.servlet.ServletRequest","jakarta.servlet.ServletResponse"] } - ] -}, -{ - "name":"jakarta.servlet.http.PushBuilder" -}, -{ - "name":"jakarta.websocket.server.ServerContainer" -}, -{ - "name":"java.io.FilePermission" -}, -{ - "name":"java.io.Serializable", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"java.lang.Class", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.ClassLoader", - "methods":[{"name":"defineClass","parameterTypes":["java.lang.String","byte[]","int","int","java.security.ProtectionDomain"] }] -}, -{ - "name":"java.lang.Iterable", - "queryAllPublicMethods":true, - "methods":[ - {"name":"forEach","parameterTypes":["java.util.function.Consumer"] }, - {"name":"spliterator","parameterTypes":[] } - ] -}, -{ - "name":"java.lang.Module", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.Object", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.RuntimePermission" -}, -{ - "name":"java.lang.String", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.annotation.Documented", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.annotation.Inherited", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.annotation.Repeatable", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.annotation.Retention", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.annotation.Target", - "queryAllDeclaredMethods":true -}, -{ - "name":"java.lang.constant.Constable", - "queryAllPublicMethods":true -}, -{ - "name":"java.lang.invoke.TypeDescriptor$OfField", - "queryAllPublicMethods":true -}, -{ - "name":"java.lang.reflect.AnnotatedElement", - "queryAllPublicMethods":true -}, -{ - "name":"java.lang.reflect.GenericDeclaration", - "queryAllPublicMethods":true -}, -{ - "name":"java.lang.reflect.ParameterizedType", - "methods":[ - {"name":"getActualTypeArguments","parameterTypes":[] }, - {"name":"getRawType","parameterTypes":[] } - ] -}, -{ - "name":"java.lang.reflect.Type", - "queryAllPublicMethods":true -}, -{ - "name":"java.lang.reflect.TypeVariable", - "methods":[{"name":"getName","parameterTypes":[] }] -}, -{ - "name":"java.lang.reflect.WildcardType", - "methods":[ - {"name":"getLowerBounds","parameterTypes":[] }, - {"name":"getUpperBounds","parameterTypes":[] } - ] -}, -{ - "name":"java.net.NetPermission" -}, -{ - "name":"java.net.SocketPermission" -}, -{ - "name":"java.net.URLPermission", - "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String"] }] -}, -{ - "name":"java.net.UnixDomainSocketAddress", - "methods":[{"name":"of","parameterTypes":["java.lang.String"] }] -}, -{ - "name":"java.nio.channels.ServerSocketChannel", - "methods":[{"name":"open","parameterTypes":["java.net.ProtocolFamily"] }] -}, -{ - "name":"java.nio.channels.SocketChannel", - "methods":[{"name":"open","parameterTypes":["java.net.ProtocolFamily"] }] -}, -{ - "name":"java.security.AllPermission" -}, -{ - "name":"java.security.SecureRandomParameters" -}, -{ - "name":"java.security.SecurityPermission" -}, -{ - "name":"java.sql.Date" -}, -{ - "name":"java.sql.DriverManager" -}, -{ - "name":"java.util.ArrayList" -}, -{ - "name":"java.util.Enumeration" -}, -{ - "name":"java.util.HashSet" -}, -{ - "name":"java.util.PropertyPermission" -}, -{ - "name":"java.util.concurrent.Callable", - "methods":[{"name":"call","parameterTypes":[] }] -}, -{ - "name":"java.util.concurrent.Executor" -}, -{ - "name":"java.util.concurrent.ThreadFactory", - "queryAllPublicMethods":true -}, -{ - "name":"java.util.logging.LogManager" -}, -{ - "name":"java.util.logging.SimpleFormatter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"javax.naming.InitialContext" -}, -{ - "name":"javax.naming.ldap.LdapContext" -}, -{ - "name":"javax.sql.DataSource" -}, -{ - "name":"org.apache.catalina.core.ApplicationContextFacade", - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addFilter","parameterTypes":["java.lang.String","jakarta.servlet.Filter"] }, - {"name":"addFilter","parameterTypes":["java.lang.String","java.lang.Class"] }, - {"name":"addFilter","parameterTypes":["java.lang.String","java.lang.String"] }, - {"name":"addJspFile","parameterTypes":["java.lang.String","java.lang.String"] }, - {"name":"addListener","parameterTypes":["java.lang.Class"] }, - {"name":"addListener","parameterTypes":["java.lang.String"] }, - {"name":"addListener","parameterTypes":["java.util.EventListener"] }, - {"name":"addServlet","parameterTypes":["java.lang.String","jakarta.servlet.Servlet"] }, - {"name":"addServlet","parameterTypes":["java.lang.String","java.lang.Class"] }, - {"name":"addServlet","parameterTypes":["java.lang.String","java.lang.String"] }, - {"name":"createFilter","parameterTypes":["java.lang.Class"] }, - {"name":"createListener","parameterTypes":["java.lang.Class"] }, - {"name":"createServlet","parameterTypes":["java.lang.Class"] }, - {"name":"declareRoles","parameterTypes":["java.lang.String[]"] }, - {"name":"getAttribute","parameterTypes":["java.lang.String"] }, - {"name":"getAttributeNames","parameterTypes":[] }, - {"name":"getClassLoader","parameterTypes":[] }, - {"name":"getContext","parameterTypes":["java.lang.String"] }, - {"name":"getContextPath","parameterTypes":[] }, - {"name":"getDefaultSessionTrackingModes","parameterTypes":[] }, - {"name":"getEffectiveMajorVersion","parameterTypes":[] }, - {"name":"getEffectiveMinorVersion","parameterTypes":[] }, - {"name":"getEffectiveSessionTrackingModes","parameterTypes":[] }, - {"name":"getFilterRegistration","parameterTypes":["java.lang.String"] }, - {"name":"getFilterRegistrations","parameterTypes":[] }, - {"name":"getInitParameter","parameterTypes":["java.lang.String"] }, - {"name":"getInitParameterNames","parameterTypes":[] }, - {"name":"getJspConfigDescriptor","parameterTypes":[] }, - {"name":"getMajorVersion","parameterTypes":[] }, - {"name":"getMimeType","parameterTypes":["java.lang.String"] }, - {"name":"getMinorVersion","parameterTypes":[] }, - {"name":"getNamedDispatcher","parameterTypes":["java.lang.String"] }, - {"name":"getRealPath","parameterTypes":["java.lang.String"] }, - {"name":"getRequestCharacterEncoding","parameterTypes":[] }, - {"name":"getRequestDispatcher","parameterTypes":["java.lang.String"] }, - {"name":"getResource","parameterTypes":["java.lang.String"] }, - {"name":"getResourceAsStream","parameterTypes":["java.lang.String"] }, - {"name":"getResourcePaths","parameterTypes":["java.lang.String"] }, - {"name":"getResponseCharacterEncoding","parameterTypes":[] }, - {"name":"getServerInfo","parameterTypes":[] }, - {"name":"getServletContextName","parameterTypes":[] }, - {"name":"getServletRegistration","parameterTypes":["java.lang.String"] }, - {"name":"getServletRegistrations","parameterTypes":[] }, - {"name":"getSessionCookieConfig","parameterTypes":[] }, - {"name":"getSessionTimeout","parameterTypes":[] }, - {"name":"getVirtualServerName","parameterTypes":[] }, - {"name":"log","parameterTypes":["java.lang.String"] }, - {"name":"log","parameterTypes":["java.lang.String","java.lang.Throwable"] }, - {"name":"removeAttribute","parameterTypes":["java.lang.String"] }, - {"name":"setAttribute","parameterTypes":["java.lang.String","java.lang.Object"] }, - {"name":"setInitParameter","parameterTypes":["java.lang.String","java.lang.String"] }, - {"name":"setRequestCharacterEncoding","parameterTypes":["java.lang.String"] }, - {"name":"setResponseCharacterEncoding","parameterTypes":["java.lang.String"] }, - {"name":"setSessionTimeout","parameterTypes":["int"] }, - {"name":"setSessionTrackingModes","parameterTypes":["java.util.Set"] } - ] -}, -{ - "name":"org.apache.catalina.loader.JdbcLeakPrevention", - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"clearJdbcDriverRegistrations","parameterTypes":[] } - ] -}, -{ - "name":"org.apache.catalina.startup.Tomcat" -}, -{ - "name":"org.apache.catalina.util.CharsetMapper", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.apache.coyote.AbstractProtocol", - "methods":[ - {"name":"getAddress","parameterTypes":[] }, - {"name":"getLocalPort","parameterTypes":[] }, - {"name":"setPort","parameterTypes":["int"] }, - {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] } - ] -}, -{ - "name":"org.apache.coyote.UpgradeProtocol" -}, -{ - "name":"org.apache.coyote.http11.AbstractHttp11Protocol", - "methods":[{"name":"isSSLEnabled","parameterTypes":[] }] -}, -{ - "name":"org.apache.coyote.http11.Http11NioProtocol", - "queryAllPublicMethods":true -}, -{ - "name":"org.apache.logging.log4j.spi.ExtendedLogger" -}, -{ - "name":"org.apache.logging.slf4j.SLF4JProvider" -}, -{ - "name":"org.apache.tomcat.util.net.AbstractEndpoint", - "methods":[{"name":"setBindOnInit","parameterTypes":["boolean"] }] -}, -{ - "name":"org.apache.tomcat.util.net.NioEndpoint", - "queryAllPublicMethods":true -}, -{ - "name":"org.apache.tomcat.websocket.server.WsFilter", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.apache.tomcat.websocket.server.WsSci" -}, -{ - "name":"org.graalvm.nativeimage.ImageInfo", - "methods":[{"name":"inImageCode","parameterTypes":[] }] -}, -{ - "name":"org.slf4j.Logger" -}, -{ - "name":"org.slf4j.bridge.SLF4JBridgeHandler" -}, -{ - "name":"org.slf4j.spi.LocationAwareLogger" -}, -{ - "name":"org.springframework.aop.framework.AopInfrastructureBean", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.aop.framework.ProxyConfig", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"copyFrom","parameterTypes":["org.springframework.aop.framework.ProxyConfig"] }, - {"name":"isExposeProxy","parameterTypes":[] }, - {"name":"isOpaque","parameterTypes":[] }, - {"name":"isOptimize","parameterTypes":[] }, - {"name":"isProxyTargetClass","parameterTypes":[] }, - {"name":"setExposeProxy","parameterTypes":["boolean"] }, - {"name":"setOpaque","parameterTypes":["boolean"] }, - {"name":"setOptimize","parameterTypes":["boolean"] }, - {"name":"setProxyTargetClass","parameterTypes":["boolean"] }, - {"name":"toString","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.aop.framework.ProxyProcessorSupport", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getOrder","parameterTypes":[] }, - {"name":"setBeanClassLoader","parameterTypes":["java.lang.ClassLoader"] }, - {"name":"setOrder","parameterTypes":["int"] }, - {"name":"setProxyClassLoader","parameterTypes":["java.lang.ClassLoader"] } - ] -}, -{ - "name":"org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"setBeanFactory","parameterTypes":["org.springframework.beans.factory.BeanFactory"] }] -}, -{ - "name":"org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"determineBeanType","parameterTypes":["java.lang.Class","java.lang.String"] }, - {"name":"determineCandidateConstructors","parameterTypes":["java.lang.Class","java.lang.String"] }, - {"name":"getEarlyBeanReference","parameterTypes":["java.lang.Object","java.lang.String"] }, - {"name":"isFrozen","parameterTypes":[] }, - {"name":"postProcessAfterInitialization","parameterTypes":["java.lang.Object","java.lang.String"] }, - {"name":"postProcessBeforeInstantiation","parameterTypes":["java.lang.Class","java.lang.String"] }, - {"name":"postProcessProperties","parameterTypes":["org.springframework.beans.PropertyValues","java.lang.Object","java.lang.String"] }, - {"name":"predictBeanType","parameterTypes":["java.lang.Class","java.lang.String"] }, - {"name":"setAdvisorAdapterRegistry","parameterTypes":["org.springframework.aop.framework.adapter.AdvisorAdapterRegistry"] }, - {"name":"setApplyCommonInterceptorsFirst","parameterTypes":["boolean"] }, - {"name":"setCustomTargetSourceCreators","parameterTypes":["org.springframework.aop.framework.autoproxy.TargetSourceCreator[]"] }, - {"name":"setFrozen","parameterTypes":["boolean"] }, - {"name":"setInterceptorNames","parameterTypes":["java.lang.String[]"] } - ] -}, -{ - "name":"org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.aot.hint.annotation.Reflective", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.beans.factory.Aware", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.BeanClassLoaderAware", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.BeanFactoryAware", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.BeanNameAware", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.DisposableBean", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.FactoryBean", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.InitializingBean", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.annotation.Autowired", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.beans.factory.annotation.Qualifier", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.aot.BeanRegistrationAotProcessor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.config.BeanFactoryPostProcessor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.config.BeanPostProcessor", - "queryAllPublicMethods":true, - "methods":[{"name":"postProcessBeforeInitialization","parameterTypes":["java.lang.Object","java.lang.String"] }] -}, -{ - "name":"org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor", - "queryAllPublicMethods":true, - "methods":[{"name":"postProcessAfterInstantiation","parameterTypes":["java.lang.Object","java.lang.String"] }] -}, -{ - "name":"org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.beans.factory.support.NullBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.beans.factory.xml.XmlBeanDefinitionReader", - "allPublicFields":true -}, -{ - "name":"org.springframework.boot.ClearCachesApplicationListener", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.SpringApplication", - "queryAllDeclaredConstructors":true -}, -{ - "name":"org.springframework.boot.SpringBootConfiguration", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfiguration", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigurationImportSelector", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigurationPackage", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":["java.lang.String[]"] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigurationPackages$Registrar", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigureAfter", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigureBefore", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.AutoConfigureOrder", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.BackgroundPreinitializer", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.EnableAutoConfiguration", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.SpringBootApplication", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.aop.AopAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"forceAutoProxyCreatorToUseClassProxying","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"applicationAvailability","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration$CacheConfigurationImportSelector", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.cache.CacheCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnBean", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnClass", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnNotWarDeployment", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnProperty", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnResource", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication$Type" -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.OnBeanCondition", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.OnClassCondition", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.OnPropertyCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.OnResourceCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.OnWarDeploymentCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.condition.SearchStrategy" -}, -{ - "name":"org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"defaultLifecycleProcessor","parameterTypes":["org.springframework.boot.autoconfigure.context.LifecycleProperties"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.context.LifecycleProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration$ResourceBundleCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"propertySourcesPlaceholderConfigurer","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializerDatabaseInitializerDetector", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"gson","parameterTypes":["com.google.gson.GsonBuilder"] }, - {"name":"gsonBuilder","parameterTypes":["java.util.List"] }, - {"name":"standardGsonBuilderCustomizer","parameterTypes":["org.springframework.boot.autoconfigure.gson.GsonProperties"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$StandardGsonBuilderCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.gson.GsonBuilderCustomizer", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.gson.GsonProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.HttpMessageConverters", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"messageConverters","parameterTypes":["org.springframework.beans.factory.ObjectProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$HttpMessageConvertersAutoConfigurationRuntimeHints" -}, -{ - "name":"org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"stringHttpMessageConverter","parameterTypes":["org.springframework.core.env.Environment"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"mappingJackson2HttpMessageConverter","parameterTypes":["com.fasterxml.jackson.databind.ObjectMapper"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.http.JsonbHttpMessageConvertersConfiguration" -}, -{ - "name":"org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.boot.autoconfigure.info.ProjectInfoProperties"] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration$GitResourceAvailableCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.info.ProjectInfoProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.integration.IntegrationPropertiesEnvironmentPostProcessor", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"jsonComponentModule","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"standardJacksonObjectMapperBuilderCustomizer","parameterTypes":["org.springframework.boot.autoconfigure.jackson.JacksonProperties","org.springframework.beans.factory.ObjectProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"jsonMixinModule","parameterTypes":["org.springframework.context.ApplicationContext","org.springframework.boot.jackson.JsonMixinModuleEntries"] }, - {"name":"jsonMixinModuleEntries","parameterTypes":["org.springframework.context.ApplicationContext"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"jacksonObjectMapperBuilder","parameterTypes":["org.springframework.context.ApplicationContext","java.util.List"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"jacksonObjectMapper","parameterTypes":["org.springframework.http.converter.json.Jackson2ObjectMapperBuilder"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"parameterNamesModule","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.jackson.JacksonProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration" -}, -{ - "name":"org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration" -}, -{ - "name":"org.springframework.boot.autoconfigure.sql.init.R2dbcInitializationConfiguration" -}, -{ - "name":"org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration$SqlInitializationModeCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"applicationTaskExecutor","parameterTypes":["org.springframework.boot.task.TaskExecutorBuilder"] }, - {"name":"taskExecutorBuilder","parameterTypes":["org.springframework.boot.autoconfigure.task.TaskExecutionProperties","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.task.TaskExecutionProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"taskSchedulerBuilder","parameterTypes":["org.springframework.boot.autoconfigure.task.TaskSchedulingProperties","org.springframework.beans.factory.ObjectProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.task.TaskSchedulingProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration" -}, -{ - "name":"org.springframework.boot.autoconfigure.web.ConditionalOnEnabledResourceChain", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.OnEnabledResourceChainCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.ServerProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.WebProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.WebResourcesRuntimeHints" -}, -{ - "name":"org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.client.RestTemplateBuilderConfigurer" -}, -{ - "name":"org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"tomcatWebServerFactoryCustomizer","parameterTypes":["org.springframework.core.env.Environment","org.springframework.boot.autoconfigure.web.ServerProperties"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.format.WebConversionService", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ConditionalOnMissingFilterBean", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DefaultDispatcherServletCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"dispatcherServlet","parameterTypes":["org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"dispatcherServletRegistration","parameterTypes":["org.springframework.web.servlet.DispatcherServlet","org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties","org.springframework.beans.factory.ObjectProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath", - "queryAllPublicMethods":true, - "methods":[ - {"name":"getPrefix","parameterTypes":[] }, - {"name":"getRelativePath","parameterTypes":["java.lang.String"] }, - {"name":"getServletUrlMapping","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addUrlMappings","parameterTypes":["java.lang.String[]"] }, - {"name":"setUrlMappings","parameterTypes":["java.util.Collection"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":["org.springframework.boot.autoconfigure.web.ServerProperties"] }, - {"name":"characterEncodingFilter","parameterTypes":[] }, - {"name":"localeCharsetMappingsCustomizer","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.JspTemplateAvailabilityProvider", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":["org.springframework.boot.autoconfigure.web.servlet.MultipartProperties"] }, - {"name":"multipartConfigElement","parameterTypes":[] }, - {"name":"multipartResolver","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.MultipartProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"servletWebServerFactoryCustomizer","parameterTypes":["org.springframework.boot.autoconfigure.web.ServerProperties","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider"] }, - {"name":"tomcatServletWebServerFactoryCustomizer","parameterTypes":["org.springframework.boot.autoconfigure.web.ServerProperties"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration$BeanPostProcessorsRegistrar", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedJetty" -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"tomcatServletWebServerFactory","parameterTypes":["org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedUndertow" -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.TomcatServletWebServerFactoryCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"formContentFilter","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":["org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties","org.springframework.boot.autoconfigure.web.WebProperties","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ListableBeanFactory"] }, - {"name":"flashMapManager","parameterTypes":[] }, - {"name":"localeResolver","parameterTypes":[] }, - {"name":"mvcContentNegotiationManager","parameterTypes":[] }, - {"name":"mvcConversionService","parameterTypes":[] }, - {"name":"mvcValidator","parameterTypes":[] }, - {"name":"requestMappingHandlerAdapter","parameterTypes":["org.springframework.web.accept.ContentNegotiationManager","org.springframework.format.support.FormattingConversionService","org.springframework.validation.Validator"] }, - {"name":"setResourceLoader","parameterTypes":["org.springframework.core.io.ResourceLoader"] }, - {"name":"themeResolver","parameterTypes":[] }, - {"name":"welcomePageHandlerMapping","parameterTypes":["org.springframework.context.ApplicationContext","org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.resource.ResourceUrlProvider"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":["org.springframework.boot.autoconfigure.web.WebProperties","org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties","org.springframework.beans.factory.ListableBeanFactory","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider","org.springframework.beans.factory.ObjectProvider"] }, - {"name":"addFormatters","parameterTypes":["org.springframework.format.FormatterRegistry"] }, - {"name":"addResourceHandlers","parameterTypes":["org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry"] }, - {"name":"configureAsyncSupport","parameterTypes":["org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer"] }, - {"name":"configureContentNegotiation","parameterTypes":["org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer"] }, - {"name":"configureMessageConverters","parameterTypes":["java.util.List"] }, - {"name":"configurePathMatch","parameterTypes":["org.springframework.web.servlet.config.annotation.PathMatchConfigurer"] }, - {"name":"defaultViewResolver","parameterTypes":[] }, - {"name":"getMessageCodesResolver","parameterTypes":[] }, - {"name":"requestContextFilter","parameterTypes":[] }, - {"name":"setServletContext","parameterTypes":["jakarta.servlet.ServletContext"] }, - {"name":"viewResolver","parameterTypes":["org.springframework.beans.factory.BeanFactory"] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.DefaultErrorViewResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":["org.springframework.boot.autoconfigure.web.ServerProperties"] }, - {"name":"basicErrorController","parameterTypes":["org.springframework.boot.web.servlet.error.ErrorAttributes","org.springframework.beans.factory.ObjectProvider"] }, - {"name":"errorAttributes","parameterTypes":[] }, - {"name":"errorPageCustomizer","parameterTypes":["org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath"] }, - {"name":"preserveErrorControllerTargetClassPostProcessor","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":["org.springframework.context.ApplicationContext","org.springframework.boot.autoconfigure.web.WebProperties"] }, - {"name":"conventionErrorViewResolver","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorPageCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$ErrorTemplateMissingCondition", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$StaticView", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"getContentType","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"beanNameViewResolver","parameterTypes":[] }, - {"name":"defaultErrorView","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.websocket.servlet.TomcatWebSocketServletWebServerCustomizer", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"websocketServletWebServerCustomizer","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.availability.ApplicationAvailability", - "queryAllPublicMethods":true, - "methods":[ - {"name":"getLivenessState","parameterTypes":[] }, - {"name":"getReadinessState","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.availability.ApplicationAvailabilityBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.builder.ParentContextCloserApplicationListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.cloud.CloudFoundryVcapEnvironmentPostProcessor", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.boot.logging.DeferredLogFactory"] }] -}, -{ - "name":"org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.ContextIdApplicationContextInitializer", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.FileEncodingApplicationListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.TypeExcludeFilter", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.config.AnsiOutputApplicationListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.boot.logging.DeferredLogFactory","org.springframework.boot.ConfigurableBootstrapContext"] }] -}, -{ - "name":"org.springframework.boot.context.config.ConfigTreeConfigDataLoader", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.config.ConfigTreeConfigDataLocationResolver", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.core.io.ResourceLoader"] }] -}, -{ - "name":"org.springframework.boot.context.config.DelegatingApplicationContextInitializer", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.config.DelegatingApplicationListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.config.StandardConfigDataLoader", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.config.StandardConfigDataLocationResolver", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.boot.logging.DeferredLogFactory","org.springframework.boot.context.properties.bind.Binder","org.springframework.core.io.ResourceLoader"] }] -}, -{ - "name":"org.springframework.boot.context.event.EventPublishingRunListener", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.boot.SpringApplication","java.lang.String[]"] }] -}, -{ - "name":"org.springframework.boot.context.logging.LoggingApplicationListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.properties.BoundConfigurationProperties", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.properties.ConfigurationProperties", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.context.properties.ConfigurationPropertiesBinder$ConfigurationPropertiesBinderFactory", - "queryAllDeclaredMethods":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.properties.DeprecatedConfigurationProperty", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.context.properties.EnableConfigurationProperties", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.context.properties.NestedConfigurationProperty", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.context.properties.bind.Nested", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.env.EnvironmentPostProcessorApplicationListener", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.env.PropertiesPropertySourceLoader", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.env.RandomValuePropertySourceEnvironmentPostProcessor", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.boot.logging.DeferredLogFactory"] }] -}, -{ - "name":"org.springframework.boot.env.SpringApplicationJsonEnvironmentPostProcessor", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.env.YamlPropertySourceLoader", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.flyway.FlywayDatabaseInitializerDetector", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.jackson.JsonComponentModule", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.jackson.JsonMixinModule", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.jackson.JsonMixinModuleEntries", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializerDetector", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.liquibase.LiquibaseDatabaseInitializerDetector", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.loader.LaunchedURLClassLoader", - "methods":[{"name":"clearCache","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.logging.java.JavaLoggingSystem$Factory", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.logging.log4j2.Log4J2LoggingSystem$Factory", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.logging.logback.ColorConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.logging.logback.LogbackLoggingSystem$Factory", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.orm.jpa.JpaDatabaseInitializerDetector", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":["org.springframework.core.env.Environment"] }] -}, -{ - "name":"org.springframework.boot.r2dbc.init.R2dbcScriptDatabaseInitializerDetector", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.reactor.DebugAgentEnvironmentPostProcessor", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.rsocket.context.RSocketPortInfoApplicationContextInitializer", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer", - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.task.TaskExecutorBuilder", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.task.TaskSchedulerBuilder", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true, - "methods":[{"name":"byAnnotation","parameterTypes":["java.lang.Class"] }] -}, -{ - "name":"org.springframework.boot.web.client.RestTemplateBuilder" -}, -{ - "name":"org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer", - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.web.embedded.tomcat.ConfigurableTomcatWebServerFactory", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContextFactory", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.web.server.AbstractConfigurableWebServerFactory", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addErrorPages","parameterTypes":["org.springframework.boot.web.server.ErrorPage[]"] }, - {"name":"getAddress","parameterTypes":[] }, - {"name":"getCompression","parameterTypes":[] }, - {"name":"getErrorPages","parameterTypes":[] }, - {"name":"getHttp2","parameterTypes":[] }, - {"name":"getOrCreateSslStoreProvider","parameterTypes":[] }, - {"name":"getPort","parameterTypes":[] }, - {"name":"getServerHeader","parameterTypes":[] }, - {"name":"getShutdown","parameterTypes":[] }, - {"name":"getSsl","parameterTypes":[] }, - {"name":"getSslStoreProvider","parameterTypes":[] }, - {"name":"setAddress","parameterTypes":["java.net.InetAddress"] }, - {"name":"setCompression","parameterTypes":["org.springframework.boot.web.server.Compression"] }, - {"name":"setErrorPages","parameterTypes":["java.util.Set"] }, - {"name":"setHttp2","parameterTypes":["org.springframework.boot.web.server.Http2"] }, - {"name":"setPort","parameterTypes":["int"] }, - {"name":"setServerHeader","parameterTypes":["java.lang.String"] }, - {"name":"setShutdown","parameterTypes":["org.springframework.boot.web.server.Shutdown"] }, - {"name":"setSsl","parameterTypes":["org.springframework.boot.web.server.Ssl"] }, - {"name":"setSslStoreProvider","parameterTypes":["org.springframework.boot.web.server.SslStoreProvider"] } - ] -}, -{ - "name":"org.springframework.boot.web.server.ConfigurableWebServerFactory", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.server.ErrorPageRegistrar", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.server.ErrorPageRegistrarBeanPostProcessor", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"postProcessAfterInitialization","parameterTypes":["java.lang.Object","java.lang.String"] }, - {"name":"postProcessBeforeInitialization","parameterTypes":["java.lang.Object","java.lang.String"] } - ] -}, -{ - "name":"org.springframework.boot.web.server.WebServerFactoryCustomizer", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.server.WebServerFactoryCustomizerBeanPostProcessor", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"postProcessAfterInitialization","parameterTypes":["java.lang.Object","java.lang.String"] }, - {"name":"postProcessBeforeInitialization","parameterTypes":["java.lang.Object","java.lang.String"] } - ] -}, -{ - "name":"org.springframework.boot.web.servlet.DynamicRegistrationBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addInitParameter","parameterTypes":["java.lang.String","java.lang.String"] }, - {"name":"configure","parameterTypes":["jakarta.servlet.Registration$Dynamic"] }, - {"name":"getInitParameters","parameterTypes":[] }, - {"name":"isAsyncSupported","parameterTypes":[] }, - {"name":"setAsyncSupported","parameterTypes":["boolean"] }, - {"name":"setInitParameters","parameterTypes":["java.util.Map"] }, - {"name":"setName","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"org.springframework.boot.web.servlet.FilterRegistrationBean" -}, -{ - "name":"org.springframework.boot.web.servlet.RegistrationBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getOrder","parameterTypes":[] }, - {"name":"isEnabled","parameterTypes":[] }, - {"name":"onStartup","parameterTypes":["jakarta.servlet.ServletContext"] }, - {"name":"setEnabled","parameterTypes":["boolean"] }, - {"name":"setOrder","parameterTypes":["int"] } - ] -}, -{ - "name":"org.springframework.boot.web.servlet.ServletContextInitializer", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.ServletRegistrationBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getMultipartConfig","parameterTypes":[] }, - {"name":"getServlet","parameterTypes":[] }, - {"name":"getServletName","parameterTypes":[] }, - {"name":"getUrlMappings","parameterTypes":[] }, - {"name":"setLoadOnStartup","parameterTypes":["int"] }, - {"name":"setMultipartConfig","parameterTypes":["jakarta.servlet.MultipartConfigElement"] }, - {"name":"setServlet","parameterTypes":["jakarta.servlet.Servlet"] }, - {"name":"toString","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.boot.web.servlet.context.ServletWebServerApplicationContextFactory", - "queryAllDeclaredConstructors":true, - "queryAllPublicConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.web.servlet.error.DefaultErrorAttributes", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"getErrorAttributes","parameterTypes":["org.springframework.web.context.request.WebRequest","org.springframework.boot.web.error.ErrorAttributeOptions"] }] -}, -{ - "name":"org.springframework.boot.web.servlet.error.ErrorAttributes", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.error.ErrorController", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.filter.OrderedFilter", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.filter.OrderedFormContentFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addCookieSameSiteSuppliers","parameterTypes":["org.springframework.boot.web.servlet.server.CookieSameSiteSupplier[]"] }, - {"name":"addInitializers","parameterTypes":["org.springframework.boot.web.servlet.ServletContextInitializer[]"] }, - {"name":"addWebListeners","parameterTypes":["java.lang.String[]"] }, - {"name":"getContextPath","parameterTypes":[] }, - {"name":"getCookieSameSiteSuppliers","parameterTypes":[] }, - {"name":"getDisplayName","parameterTypes":[] }, - {"name":"getDocumentRoot","parameterTypes":[] }, - {"name":"getInitParameters","parameterTypes":[] }, - {"name":"getJsp","parameterTypes":[] }, - {"name":"getLocaleCharsetMappings","parameterTypes":[] }, - {"name":"getMimeMappings","parameterTypes":[] }, - {"name":"getSession","parameterTypes":[] }, - {"name":"isRegisterDefaultServlet","parameterTypes":[] }, - {"name":"setContextPath","parameterTypes":["java.lang.String"] }, - {"name":"setCookieSameSiteSuppliers","parameterTypes":["java.util.List"] }, - {"name":"setDisplayName","parameterTypes":["java.lang.String"] }, - {"name":"setDocumentRoot","parameterTypes":["java.io.File"] }, - {"name":"setInitParameters","parameterTypes":["java.util.Map"] }, - {"name":"setInitializers","parameterTypes":["java.util.List"] }, - {"name":"setJsp","parameterTypes":["org.springframework.boot.web.servlet.server.Jsp"] }, - {"name":"setLocaleCharsetMappings","parameterTypes":["java.util.Map"] }, - {"name":"setMimeMappings","parameterTypes":["org.springframework.boot.web.server.MimeMappings"] }, - {"name":"setRegisterDefaultServlet","parameterTypes":["boolean"] }, - {"name":"setSession","parameterTypes":["org.springframework.boot.web.servlet.server.Session"] } - ] -}, -{ - "name":"org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.boot.web.servlet.server.Encoding", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "queryAllDeclaredConstructors":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.boot.web.servlet.server.ServletWebServerFactory" -}, -{ - "name":"org.springframework.cache.Cache" -}, -{ - "name":"org.springframework.cache.CacheManager" -}, -{ - "name":"org.springframework.cache.interceptor.CacheAspectSupport" -}, -{ - "name":"org.springframework.context.ApplicationContextAware", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.ApplicationListener", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.ApplicationStartupAware", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.EmbeddedValueResolverAware", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.EnvironmentAware", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.LifecycleProcessor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.ResourceLoaderAware", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.annotation.AnnotationScopeMetadataResolver", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.context.annotation.Bean", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.CommonAnnotationBeanPostProcessor", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.context.annotation.ComponentScan", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.ComponentScan$Filter", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.Conditional", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.Configuration", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.ConfigurationClassEnhancer$EnhancedConfiguration", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.context.annotation.ConfigurationClassPostProcessor", - "allDeclaredFields":true, - "queryAllPublicMethods":true, - "methods":[ - {"name":"","parameterTypes":[] }, - {"name":"setMetadataReaderFactory","parameterTypes":["org.springframework.core.type.classreading.MetadataReaderFactory"] } - ] -}, -{ - "name":"org.springframework.context.annotation.Import", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.ImportRuntimeHints", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.Lazy", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.Primary", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.annotation.Scope", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.event.DefaultEventListenerFactory", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.context.event.EventListenerMethodProcessor", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.springframework.context.support.ApplicationObjectSupport", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getApplicationContext","parameterTypes":[] }, - {"name":"setApplicationContext","parameterTypes":["org.springframework.context.ApplicationContext"] } - ] -}, -{ - "name":"org.springframework.context.support.DefaultLifecycleProcessor", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.context.support.PropertySourcesPlaceholderConfigurer" -}, -{ - "name":"org.springframework.core.Ordered", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.core.PriorityOrdered", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.core.annotation.AliasFor", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.core.annotation.Order", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.core.convert.support.ConfigurableConversionService", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.core.convert.support.GenericConversionService", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addConverter","parameterTypes":["java.lang.Class","java.lang.Class","org.springframework.core.convert.converter.Converter"] }, - {"name":"addConverter","parameterTypes":["org.springframework.core.convert.converter.Converter"] }, - {"name":"addConverter","parameterTypes":["org.springframework.core.convert.converter.GenericConverter"] }, - {"name":"addConverterFactory","parameterTypes":["org.springframework.core.convert.converter.ConverterFactory"] }, - {"name":"canBypassConvert","parameterTypes":["org.springframework.core.convert.TypeDescriptor","org.springframework.core.convert.TypeDescriptor"] }, - {"name":"canConvert","parameterTypes":["java.lang.Class","java.lang.Class"] }, - {"name":"canConvert","parameterTypes":["org.springframework.core.convert.TypeDescriptor","org.springframework.core.convert.TypeDescriptor"] }, - {"name":"convert","parameterTypes":["java.lang.Object","java.lang.Class"] }, - {"name":"convert","parameterTypes":["java.lang.Object","org.springframework.core.convert.TypeDescriptor"] }, - {"name":"convert","parameterTypes":["java.lang.Object","org.springframework.core.convert.TypeDescriptor","org.springframework.core.convert.TypeDescriptor"] }, - {"name":"removeConvertible","parameterTypes":["java.lang.Class","java.lang.Class"] }, - {"name":"toString","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.core.env.EnvironmentCapable", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.core.task.AsyncListenableTaskExecutor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.core.task.AsyncTaskExecutor", - "methods":[ - {"name":"submitCompletable","parameterTypes":["java.lang.Runnable"] }, - {"name":"submitCompletable","parameterTypes":["java.util.concurrent.Callable"] } - ] -}, -{ - "name":"org.springframework.core.type.classreading.MetadataReaderFactory", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.format.FormatterRegistry", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.format.support.DefaultFormattingConversionService", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"addDefaultFormatters","parameterTypes":["org.springframework.format.FormatterRegistry"] }] -}, -{ - "name":"org.springframework.format.support.FormattingConversionService", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addFormatter","parameterTypes":["org.springframework.format.Formatter"] }, - {"name":"addFormatterForFieldAnnotation","parameterTypes":["org.springframework.format.AnnotationFormatterFactory"] }, - {"name":"addFormatterForFieldType","parameterTypes":["java.lang.Class","org.springframework.format.Formatter"] }, - {"name":"addFormatterForFieldType","parameterTypes":["java.lang.Class","org.springframework.format.Printer","org.springframework.format.Parser"] }, - {"name":"addParser","parameterTypes":["org.springframework.format.Parser"] }, - {"name":"addPrinter","parameterTypes":["org.springframework.format.Printer"] }, - {"name":"setEmbeddedValueResolver","parameterTypes":["org.springframework.util.StringValueResolver"] } - ] -}, -{ - "name":"org.springframework.http.ReactiveHttpInputMessage" -}, -{ - "name":"org.springframework.http.codec.CodecConfigurer" -}, -{ - "name":"org.springframework.http.codec.multipart.DefaultPartHttpMessageReader" -}, -{ - "name":"org.springframework.http.converter.AbstractGenericHttpMessageConverter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"canWrite","parameterTypes":["java.lang.reflect.Type","java.lang.Class","org.springframework.http.MediaType"] }, - {"name":"write","parameterTypes":["java.lang.Object","java.lang.reflect.Type","org.springframework.http.MediaType","org.springframework.http.HttpOutputMessage"] } - ] -}, -{ - "name":"org.springframework.http.converter.AbstractHttpMessageConverter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"addDefaultHeaders","parameterTypes":["org.springframework.http.HttpHeaders","java.lang.Object","org.springframework.http.MediaType"] }, - {"name":"canRead","parameterTypes":["java.lang.Class","org.springframework.http.MediaType"] }, - {"name":"canWrite","parameterTypes":["java.lang.Class","org.springframework.http.MediaType"] }, - {"name":"getContentLength","parameterTypes":["java.lang.Object","org.springframework.http.MediaType"] }, - {"name":"getDefaultCharset","parameterTypes":[] }, - {"name":"getSupportedMediaTypes","parameterTypes":[] }, - {"name":"read","parameterTypes":["java.lang.Class","org.springframework.http.HttpInputMessage"] }, - {"name":"setDefaultCharset","parameterTypes":["java.nio.charset.Charset"] }, - {"name":"setSupportedMediaTypes","parameterTypes":["java.util.List"] }, - {"name":"write","parameterTypes":["java.lang.Object","org.springframework.http.MediaType","org.springframework.http.HttpOutputMessage"] }, - {"name":"writeInternal","parameterTypes":["java.lang.Object","org.springframework.http.HttpOutputMessage"] } - ] -}, -{ - "name":"org.springframework.http.converter.GenericHttpMessageConverter", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.http.converter.HttpMessageConverter", - "queryAllPublicMethods":true, - "methods":[{"name":"getSupportedMediaTypes","parameterTypes":["java.lang.Class"] }] -}, -{ - "name":"org.springframework.http.converter.StringHttpMessageConverter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"canRead","parameterTypes":["java.lang.Class","org.springframework.http.MediaType"] }, - {"name":"canRead","parameterTypes":["java.lang.reflect.Type","java.lang.Class","org.springframework.http.MediaType"] }, - {"name":"canWrite","parameterTypes":["java.lang.Class","org.springframework.http.MediaType"] }, - {"name":"getObjectMapper","parameterTypes":[] }, - {"name":"getObjectMappersForType","parameterTypes":["java.lang.Class"] }, - {"name":"getSupportedMediaTypes","parameterTypes":["java.lang.Class"] }, - {"name":"read","parameterTypes":["java.lang.reflect.Type","java.lang.Class","org.springframework.http.HttpInputMessage"] }, - {"name":"registerObjectMappersForType","parameterTypes":["java.lang.Class","java.util.function.Consumer"] }, - {"name":"setObjectMapper","parameterTypes":["com.fasterxml.jackson.databind.ObjectMapper"] }, - {"name":"setPrettyPrint","parameterTypes":["boolean"] }, - {"name":"setSupportedMediaTypes","parameterTypes":["java.util.List"] } - ] -}, -{ - "name":"org.springframework.http.converter.json.GsonHttpMessageConverter" -}, -{ - "name":"org.springframework.http.converter.json.Jackson2ObjectMapperBuilder", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.http.converter.json.MappingJackson2HttpMessageConverter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.http.server.reactive.HttpHandler" -}, -{ - "name":"org.springframework.jmx.export.MBeanExporter" -}, -{ - "name":"org.springframework.scheduling.SchedulingTaskExecutor", - "queryAllPublicMethods":true, - "methods":[{"name":"prefersShortLivedTasks","parameterTypes":[] }] -}, -{ - "name":"org.springframework.scheduling.concurrent.CustomizableThreadFactory", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"newThread","parameterTypes":["java.lang.Runnable"] }] -}, -{ - "name":"org.springframework.scheduling.concurrent.ExecutorConfigurationSupport", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"afterPropertiesSet","parameterTypes":[] }, - {"name":"destroy","parameterTypes":[] }, - {"name":"initialize","parameterTypes":[] }, - {"name":"setAwaitTerminationMillis","parameterTypes":["long"] }, - {"name":"setAwaitTerminationSeconds","parameterTypes":["int"] }, - {"name":"setBeanName","parameterTypes":["java.lang.String"] }, - {"name":"setRejectedExecutionHandler","parameterTypes":["java.util.concurrent.RejectedExecutionHandler"] }, - {"name":"setThreadFactory","parameterTypes":["java.util.concurrent.ThreadFactory"] }, - {"name":"setThreadNamePrefix","parameterTypes":["java.lang.String"] }, - {"name":"setWaitForTasksToCompleteOnShutdown","parameterTypes":["boolean"] }, - {"name":"shutdown","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler" -}, -{ - "name":"org.springframework.stereotype.Component", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.stereotype.Controller", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.stereotype.Indexed", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.util.AntPathMatcher", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.util.CustomizableThreadCreator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"createThread","parameterTypes":["java.lang.Runnable"] }, - {"name":"getThreadGroup","parameterTypes":[] }, - {"name":"getThreadNamePrefix","parameterTypes":[] }, - {"name":"getThreadPriority","parameterTypes":[] }, - {"name":"isDaemon","parameterTypes":[] }, - {"name":"setDaemon","parameterTypes":["boolean"] }, - {"name":"setThreadGroup","parameterTypes":["java.lang.ThreadGroup"] }, - {"name":"setThreadGroupName","parameterTypes":["java.lang.String"] }, - {"name":"setThreadPriority","parameterTypes":["int"] } - ] -}, -{ - "name":"org.springframework.util.PathMatcher", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.validation.Validator", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.accept.ContentNegotiationManager", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.accept.ContentNegotiationStrategy", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.accept.MediaTypeFileExtensionResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.ExceptionHandler", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.GetMapping", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.Mapping", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.PathVariable", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.RequestMapping", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.ResponseBody", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.bind.annotation.RestController", - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.client.RestTemplate" -}, -{ - "name":"org.springframework.web.context.ConfigurableWebApplicationContext" -}, -{ - "name":"org.springframework.web.context.ServletContextAware", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.context.request.RequestContextListener" -}, -{ - "name":"org.springframework.web.context.support.GenericWebApplicationContext" -}, -{ - "name":"org.springframework.web.context.support.WebApplicationObjectSupport", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"setServletContext","parameterTypes":["jakarta.servlet.ServletContext"] }] -}, -{ - "name":"org.springframework.web.filter.CharacterEncodingFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getEncoding","parameterTypes":[] }, - {"name":"isForceRequestEncoding","parameterTypes":[] }, - {"name":"isForceResponseEncoding","parameterTypes":[] }, - {"name":"setEncoding","parameterTypes":["java.lang.String"] }, - {"name":"setForceEncoding","parameterTypes":["boolean"] }, - {"name":"setForceRequestEncoding","parameterTypes":["boolean"] }, - {"name":"setForceResponseEncoding","parameterTypes":["boolean"] } - ] -}, -{ - "name":"org.springframework.web.filter.FormContentFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"setCharset","parameterTypes":["java.nio.charset.Charset"] }, - {"name":"setFormConverter","parameterTypes":["org.springframework.http.converter.FormHttpMessageConverter"] } - ] -}, -{ - "name":"org.springframework.web.filter.GenericFilterBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"afterPropertiesSet","parameterTypes":[] }, - {"name":"destroy","parameterTypes":[] }, - {"name":"getEnvironment","parameterTypes":[] }, - {"name":"getFilterConfig","parameterTypes":[] }, - {"name":"init","parameterTypes":["jakarta.servlet.FilterConfig"] }, - {"name":"setBeanName","parameterTypes":["java.lang.String"] }, - {"name":"setEnvironment","parameterTypes":["org.springframework.core.env.Environment"] }, - {"name":"setServletContext","parameterTypes":["jakarta.servlet.ServletContext"] } - ] -}, -{ - "name":"org.springframework.web.filter.OncePerRequestFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"doFilter","parameterTypes":["jakarta.servlet.ServletRequest","jakarta.servlet.ServletResponse","jakarta.servlet.FilterChain"] }] -}, -{ - "name":"org.springframework.web.filter.RequestContextFilter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"setThreadContextInheritable","parameterTypes":["boolean"] }] -}, -{ - "name":"org.springframework.web.method.support.CompositeUriComponentsContributor", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.method.support.UriComponentsContributor", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.multipart.MultipartResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.multipart.support.StandardServletMultipartResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.DispatcherServlet", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.FlashMapManager", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.FrameworkServlet", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"destroy","parameterTypes":[] }, - {"name":"getContextAttribute","parameterTypes":[] }, - {"name":"getContextClass","parameterTypes":[] }, - {"name":"getContextConfigLocation","parameterTypes":[] }, - {"name":"getContextId","parameterTypes":[] }, - {"name":"getNamespace","parameterTypes":[] }, - {"name":"getServletContextAttributeName","parameterTypes":[] }, - {"name":"getWebApplicationContext","parameterTypes":[] }, - {"name":"isEnableLoggingRequestDetails","parameterTypes":[] }, - {"name":"onApplicationEvent","parameterTypes":["org.springframework.context.event.ContextRefreshedEvent"] }, - {"name":"refresh","parameterTypes":[] }, - {"name":"setApplicationContext","parameterTypes":["org.springframework.context.ApplicationContext"] }, - {"name":"setContextAttribute","parameterTypes":["java.lang.String"] }, - {"name":"setContextClass","parameterTypes":["java.lang.Class"] }, - {"name":"setContextConfigLocation","parameterTypes":["java.lang.String"] }, - {"name":"setContextId","parameterTypes":["java.lang.String"] }, - {"name":"setContextInitializerClasses","parameterTypes":["java.lang.String"] }, - {"name":"setContextInitializers","parameterTypes":["org.springframework.context.ApplicationContextInitializer[]"] }, - {"name":"setDispatchOptionsRequest","parameterTypes":["boolean"] }, - {"name":"setDispatchTraceRequest","parameterTypes":["boolean"] }, - {"name":"setEnableLoggingRequestDetails","parameterTypes":["boolean"] }, - {"name":"setNamespace","parameterTypes":["java.lang.String"] }, - {"name":"setPublishContext","parameterTypes":["boolean"] }, - {"name":"setPublishEvents","parameterTypes":["boolean"] }, - {"name":"setThreadContextInheritable","parameterTypes":["boolean"] } - ] -}, -{ - "name":"org.springframework.web.servlet.HandlerAdapter", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.HandlerExceptionResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.HandlerMapping", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.HttpServletBean", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getEnvironment","parameterTypes":[] }, - {"name":"getServletName","parameterTypes":[] }, - {"name":"init","parameterTypes":[] }, - {"name":"setEnvironment","parameterTypes":["org.springframework.core.env.Environment"] } - ] -}, -{ - "name":"org.springframework.web.servlet.LocaleResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.RequestToViewNameTranslator", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.ThemeResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.View", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.ViewResolver", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"setConfigurers","parameterTypes":["java.util.List"] }] -}, -{ - "name":"org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"beanNameHandlerMapping","parameterTypes":["org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.resource.ResourceUrlProvider"] }, - {"name":"defaultServletHandlerMapping","parameterTypes":[] }, - {"name":"getApplicationContext","parameterTypes":[] }, - {"name":"getServletContext","parameterTypes":[] }, - {"name":"handlerExceptionResolver","parameterTypes":["org.springframework.web.accept.ContentNegotiationManager"] }, - {"name":"handlerFunctionAdapter","parameterTypes":[] }, - {"name":"httpRequestHandlerAdapter","parameterTypes":[] }, - {"name":"mvcHandlerMappingIntrospector","parameterTypes":[] }, - {"name":"mvcPathMatcher","parameterTypes":[] }, - {"name":"mvcPatternParser","parameterTypes":[] }, - {"name":"mvcResourceUrlProvider","parameterTypes":[] }, - {"name":"mvcUriComponentsContributor","parameterTypes":["org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"] }, - {"name":"mvcUrlPathHelper","parameterTypes":[] }, - {"name":"mvcViewResolver","parameterTypes":["org.springframework.web.accept.ContentNegotiationManager"] }, - {"name":"requestMappingHandlerMapping","parameterTypes":["org.springframework.web.accept.ContentNegotiationManager","org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.resource.ResourceUrlProvider"] }, - {"name":"resourceHandlerMapping","parameterTypes":["org.springframework.web.accept.ContentNegotiationManager","org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.resource.ResourceUrlProvider"] }, - {"name":"routerFunctionMapping","parameterTypes":["org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.resource.ResourceUrlProvider"] }, - {"name":"setApplicationContext","parameterTypes":["org.springframework.context.ApplicationContext"] }, - {"name":"setServletContext","parameterTypes":["jakarta.servlet.ServletContext"] }, - {"name":"simpleControllerHandlerAdapter","parameterTypes":[] }, - {"name":"viewControllerHandlerMapping","parameterTypes":["org.springframework.format.support.FormattingConversionService","org.springframework.web.servlet.resource.ResourceUrlProvider"] }, - {"name":"viewNameTranslator","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$NoOpValidator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.config.annotation.WebMvcConfigurer", - "queryAllDeclaredMethods":true, - "queryAllPublicMethods":true, - "methods":[ - {"name":"addArgumentResolvers","parameterTypes":["java.util.List"] }, - {"name":"addCorsMappings","parameterTypes":["org.springframework.web.servlet.config.annotation.CorsRegistry"] }, - {"name":"addInterceptors","parameterTypes":["org.springframework.web.servlet.config.annotation.InterceptorRegistry"] }, - {"name":"addReturnValueHandlers","parameterTypes":["java.util.List"] }, - {"name":"addViewControllers","parameterTypes":["org.springframework.web.servlet.config.annotation.ViewControllerRegistry"] }, - {"name":"configureDefaultServletHandling","parameterTypes":["org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer"] }, - {"name":"configureHandlerExceptionResolvers","parameterTypes":["java.util.List"] }, - {"name":"configureViewResolvers","parameterTypes":["org.springframework.web.servlet.config.annotation.ViewResolverRegistry"] }, - {"name":"extendHandlerExceptionResolvers","parameterTypes":["java.util.List"] }, - {"name":"extendMessageConverters","parameterTypes":["java.util.List"] }, - {"name":"getValidator","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.web.servlet.function.support.HandlerFunctionAdapter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.function.support.RouterFunctionMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"initApplicationContext","parameterTypes":[] }, - {"name":"setDetectHandlersInAncestorContexts","parameterTypes":["boolean"] } - ] -}, -{ - "name":"org.springframework.web.servlet.handler.AbstractHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getAdaptedInterceptors","parameterTypes":[] }, - {"name":"getCorsConfigurationSource","parameterTypes":[] }, - {"name":"getCorsProcessor","parameterTypes":[] }, - {"name":"getDefaultHandler","parameterTypes":[] }, - {"name":"getHandler","parameterTypes":["jakarta.servlet.http.HttpServletRequest"] }, - {"name":"getOrder","parameterTypes":[] }, - {"name":"getPathMatcher","parameterTypes":[] }, - {"name":"getPatternParser","parameterTypes":[] }, - {"name":"getUrlPathHelper","parameterTypes":[] }, - {"name":"setAlwaysUseFullPath","parameterTypes":["boolean"] }, - {"name":"setBeanName","parameterTypes":["java.lang.String"] }, - {"name":"setCorsConfigurationSource","parameterTypes":["org.springframework.web.cors.CorsConfigurationSource"] }, - {"name":"setCorsConfigurations","parameterTypes":["java.util.Map"] }, - {"name":"setCorsProcessor","parameterTypes":["org.springframework.web.cors.CorsProcessor"] }, - {"name":"setDefaultHandler","parameterTypes":["java.lang.Object"] }, - {"name":"setInterceptors","parameterTypes":["java.lang.Object[]"] }, - {"name":"setOrder","parameterTypes":["int"] }, - {"name":"setPathMatcher","parameterTypes":["org.springframework.util.PathMatcher"] }, - {"name":"setPatternParser","parameterTypes":["org.springframework.web.util.pattern.PathPatternParser"] }, - {"name":"setRemoveSemicolonContent","parameterTypes":["boolean"] }, - {"name":"setUrlDecode","parameterTypes":["boolean"] }, - {"name":"setUrlPathHelper","parameterTypes":["org.springframework.web.util.UrlPathHelper"] }, - {"name":"usesPathPatterns","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.web.servlet.handler.AbstractHandlerMethodMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getDirectPaths","parameterTypes":["java.lang.Object"] }, - {"name":"getHandlerMethods","parameterTypes":[] }, - {"name":"getHandlerMethodsForMappingName","parameterTypes":["java.lang.String"] }, - {"name":"getMappingPathPatterns","parameterTypes":["java.lang.Object"] }, - {"name":"getMatchingMapping","parameterTypes":["java.lang.Object","jakarta.servlet.http.HttpServletRequest"] }, - {"name":"getNamingStrategy","parameterTypes":[] }, - {"name":"handleMatch","parameterTypes":["java.lang.Object","java.lang.String","jakarta.servlet.http.HttpServletRequest"] }, - {"name":"initCorsConfiguration","parameterTypes":["java.lang.Object","java.lang.reflect.Method","java.lang.Object"] }, - {"name":"registerHandlerMethod","parameterTypes":["java.lang.Object","java.lang.reflect.Method","java.lang.Object"] }, - {"name":"registerMapping","parameterTypes":["java.lang.Object","java.lang.Object","java.lang.reflect.Method"] }, - {"name":"setDetectHandlerMethodsInAncestorContexts","parameterTypes":["boolean"] }, - {"name":"setHandlerMethodMappingNamingStrategy","parameterTypes":["org.springframework.web.servlet.handler.HandlerMethodMappingNamingStrategy"] }, - {"name":"unregisterMapping","parameterTypes":["java.lang.Object"] } - ] -}, -{ - "name":"org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$EmptyHandler", - "methods":[{"name":"handle","parameterTypes":[] }] -}, -{ - "name":"org.springframework.web.servlet.handler.AbstractUrlHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getHandlerMap","parameterTypes":[] }, - {"name":"getPathPatternHandlerMap","parameterTypes":[] }, - {"name":"getRootHandler","parameterTypes":[] }, - {"name":"match","parameterTypes":["jakarta.servlet.http.HttpServletRequest","java.lang.String"] }, - {"name":"setLazyInitHandlers","parameterTypes":["boolean"] }, - {"name":"setPatternParser","parameterTypes":["org.springframework.web.util.pattern.PathPatternParser"] }, - {"name":"setRootHandler","parameterTypes":["java.lang.Object"] }, - {"name":"setUseTrailingSlashMatch","parameterTypes":["boolean"] }, - {"name":"useTrailingSlashMatch","parameterTypes":[] } - ] -}, -{ - "name":"org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.handler.HandlerExceptionResolverComposite", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.handler.MatchableHandlerMapping", - "queryAllPublicMethods":true -}, -{ - "name":"org.springframework.web.servlet.handler.SimpleUrlHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.i18n.AbstractLocaleResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[{"name":"setDefaultLocale","parameterTypes":["java.util.Locale"] }] -}, -{ - "name":"org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getLastModified","parameterTypes":["jakarta.servlet.http.HttpServletRequest","java.lang.Object"] }, - {"name":"getOrder","parameterTypes":[] }, - {"name":"handle","parameterTypes":["jakarta.servlet.http.HttpServletRequest","jakarta.servlet.http.HttpServletResponse","java.lang.Object"] }, - {"name":"setOrder","parameterTypes":["int"] }, - {"name":"supports","parameterTypes":["java.lang.Object"] } - ] -}, -{ - "name":"org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping$HttpOptionsHandler", - "methods":[{"name":"handle","parameterTypes":[] }] -}, -{ - "name":"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"afterPropertiesSet","parameterTypes":[] }, - {"name":"registerMapping","parameterTypes":["java.lang.Object","java.lang.Object","java.lang.reflect.Method"] }, - {"name":"setPatternParser","parameterTypes":["org.springframework.web.util.pattern.PathPatternParser"] } - ] -}, -{ - "name":"org.springframework.web.servlet.resource.ResourceUrlProvider", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.support.AbstractFlashMapManager", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getFlashMapTimeout","parameterTypes":[] }, - {"name":"getUrlPathHelper","parameterTypes":[] }, - {"name":"retrieveAndUpdate","parameterTypes":["jakarta.servlet.http.HttpServletRequest","jakarta.servlet.http.HttpServletResponse"] }, - {"name":"saveOutputFlashMap","parameterTypes":["org.springframework.web.servlet.FlashMap","jakarta.servlet.http.HttpServletRequest","jakarta.servlet.http.HttpServletResponse"] }, - {"name":"setFlashMapTimeout","parameterTypes":["int"] }, - {"name":"setUrlPathHelper","parameterTypes":["org.springframework.web.util.UrlPathHelper"] } - ] -}, -{ - "name":"org.springframework.web.servlet.support.SessionFlashMapManager", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.support.WebContentGenerator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getCacheControl","parameterTypes":[] }, - {"name":"getCacheSeconds","parameterTypes":[] }, - {"name":"getSupportedMethods","parameterTypes":[] }, - {"name":"getVaryByRequestHeaders","parameterTypes":[] }, - {"name":"isAlwaysMustRevalidate","parameterTypes":[] }, - {"name":"isRequireSession","parameterTypes":[] }, - {"name":"isUseCacheControlHeader","parameterTypes":[] }, - {"name":"isUseCacheControlNoStore","parameterTypes":[] }, - {"name":"isUseExpiresHeader","parameterTypes":[] }, - {"name":"setAlwaysMustRevalidate","parameterTypes":["boolean"] }, - {"name":"setCacheControl","parameterTypes":["org.springframework.http.CacheControl"] }, - {"name":"setCacheSeconds","parameterTypes":["int"] }, - {"name":"setRequireSession","parameterTypes":["boolean"] }, - {"name":"setSupportedMethods","parameterTypes":["java.lang.String[]"] }, - {"name":"setUseCacheControlHeader","parameterTypes":["boolean"] }, - {"name":"setUseCacheControlNoStore","parameterTypes":["boolean"] }, - {"name":"setUseExpiresHeader","parameterTypes":["boolean"] }, - {"name":"setVaryByRequestHeaders","parameterTypes":["java.lang.String[]"] } - ] -}, -{ - "name":"org.springframework.web.servlet.theme.AbstractThemeResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getDefaultThemeName","parameterTypes":[] }, - {"name":"setDefaultThemeName","parameterTypes":["java.lang.String"] } - ] -}, -{ - "name":"org.springframework.web.servlet.theme.FixedThemeResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.view.AbstractCachingViewResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"clearCache","parameterTypes":[] }, - {"name":"getCacheFilter","parameterTypes":[] }, - {"name":"getCacheLimit","parameterTypes":[] }, - {"name":"isCache","parameterTypes":[] }, - {"name":"isCacheUnresolved","parameterTypes":[] }, - {"name":"removeFromCache","parameterTypes":["java.lang.String","java.util.Locale"] }, - {"name":"resolveViewName","parameterTypes":["java.lang.String","java.util.Locale"] }, - {"name":"setCache","parameterTypes":["boolean"] }, - {"name":"setCacheFilter","parameterTypes":["org.springframework.web.servlet.view.AbstractCachingViewResolver$CacheFilter"] }, - {"name":"setCacheLimit","parameterTypes":["int"] }, - {"name":"setCacheUnresolved","parameterTypes":["boolean"] } - ] -}, -{ - "name":"org.springframework.web.servlet.view.BeanNameViewResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.view.ContentNegotiatingViewResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.view.InternalResourceViewResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.servlet.view.UrlBasedViewResolver", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true, - "methods":[ - {"name":"getAttributesMap","parameterTypes":[] }, - {"name":"getOrder","parameterTypes":[] }, - {"name":"getRedirectHosts","parameterTypes":[] }, - {"name":"setAttributes","parameterTypes":["java.util.Properties"] }, - {"name":"setAttributesMap","parameterTypes":["java.util.Map"] }, - {"name":"setContentType","parameterTypes":["java.lang.String"] }, - {"name":"setExposeContextBeansAsAttributes","parameterTypes":["boolean"] }, - {"name":"setExposePathVariables","parameterTypes":["java.lang.Boolean"] }, - {"name":"setExposedContextBeanNames","parameterTypes":["java.lang.String[]"] }, - {"name":"setOrder","parameterTypes":["int"] }, - {"name":"setPrefix","parameterTypes":["java.lang.String"] }, - {"name":"setRedirectContextRelative","parameterTypes":["boolean"] }, - {"name":"setRedirectHosts","parameterTypes":["java.lang.String[]"] }, - {"name":"setRedirectHttp10Compatible","parameterTypes":["boolean"] }, - {"name":"setRequestContextAttribute","parameterTypes":["java.lang.String"] }, - {"name":"setSuffix","parameterTypes":["java.lang.String"] }, - {"name":"setViewClass","parameterTypes":["java.lang.Class"] }, - {"name":"setViewNames","parameterTypes":["java.lang.String[]"] } - ] -}, -{ - "name":"org.springframework.web.servlet.view.ViewResolverComposite", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.util.UrlPathHelper", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"org.springframework.web.util.pattern.PathPatternParser", - "allDeclaredFields":true, - "queryAllDeclaredMethods":true -}, -{ - "name":"sun.security.provider.NativePRNG", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"sun.security.provider.SHA", - "methods":[{"name":"","parameterTypes":[] }] -} -] diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/resource-config.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/resource-config.json deleted file mode 100644 index 80c44618..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/resource-config.json +++ /dev/null @@ -1,589 +0,0 @@ -{ - "resources":{ - "includes":[ - { - "pattern":"\\QA_Tale_of_Two_Cities.txt\\E" - }, - { - "pattern":"\\QChristmas_Carol.txt\\E" - }, - { - "pattern":"\\QGreat_Expectations.txt\\E" - }, - { - "pattern":"\\QHard_Times.txt\\E" - }, - { - "pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E" - }, - { - "pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E" - }, - { - "pattern":"\\QMETA-INF/spring-autoconfigure-metadata.properties\\E" - }, - { - "pattern":"\\QMETA-INF/spring.factories\\E" - }, - { - "pattern":"\\QMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports\\E" - }, - { - "pattern":"\\QOliver_Twist.txt\\E" - }, - { - "pattern":"\\QThe_Old_Curiosity_Shop.txt\\E" - }, - { - "pattern":"\\Qapplication.properties\\E" - }, - { - "pattern":"\\Qcom/example/DickensController.class\\E" - }, - { - "pattern":"\\Qcom/example/\\E" - }, - { - "pattern":"\\Qorg/apache/catalina/core/RestrictedFilters.properties\\E" - }, - { - "pattern":"\\Qorg/apache/catalina/core/RestrictedListeners.properties\\E" - }, - { - "pattern":"\\Qorg/apache/catalina/core/RestrictedServlets.properties\\E" - }, - { - "pattern":"\\Qorg/apache/catalina/loader/JdbcLeakPrevention.class\\E" - }, - { - "pattern":"\\Qorg/apache/catalina/util/CharsetMapperDefault.properties\\E" - }, - { - "pattern":"\\Qorg/apache/catalina/util/ServerInfo.properties\\E" - }, - { - "pattern":"\\Qorg/springframework/beans/factory/Aware.class\\E" - }, - { - "pattern":"\\Qorg/springframework/beans/factory/BeanFactoryAware.class\\E" - }, - { - "pattern":"\\Qorg/springframework/beans/factory/config/BeanFactoryPostProcessor.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/AbstractDependsOnBeanFactoryPostProcessor.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfigureAfter.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfigureBefore.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfigureOrder.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/aop/AopAutoConfiguration$AspectJAutoProxyingConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/aop/AopAutoConfiguration$ClassProxyingConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/aop/AopAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheConfigurationImportSelector.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheManagerEntityManagerFactoryDependsOnPostProcessor.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheManagerValidator.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/GenericCacheConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/NoOpCacheConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/cache/SimpleCacheConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnBean.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnClass.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnMissingClass.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnNotWarDeployment.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnWebApplication.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/context/ConfigurationPropertiesAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/context/LifecycleAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/context/MessageSourceAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/context/PropertyPlaceholderAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/gson/GsonAutoConfiguration$StandardGsonBuilderCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$GsonHttpMessageConverterConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition$JacksonAvailable.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition$JsonbPreferred.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$JacksonAndJsonbUnavailableCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition$GsonPreferred.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition$JacksonJsonbUnavailable.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration$PreferGsonOrJacksonAndJsonbUnavailableCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$HttpMessageConvertersAutoConfigurationRuntimeHints.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/http/JsonbHttpMessageConvertersConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration$GitResourceAvailableCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonAutoConfigurationRuntimeHints.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonMixinConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$ParameterNamesModuleConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/jmx/JmxAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/orm/jpa/EntityManagerFactoryDependsOnPostProcessor.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/R2dbcInitializationConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration$SqlInitializationModeCondition$ModeIsNever.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration$SqlInitializationModeCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskExecutionAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$JettyWebServerFactoryCustomizerConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$UndertowWebServerFactoryCustomizerConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DefaultDispatcherServletCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$BeanPostProcessorsRegistrar.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$ForwardedHeaderFilterConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$ForwardedHeaderFilterCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedJetty.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedTomcat.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedUndertow.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$OptionalPathExtensionContentNegotiationStrategy.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ProblemDetailsErrorHandlingConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceChainCustomizerConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceChainResourceHandlerRegistrationCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceHandlerRegistrationCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$ErrorPageCustomizer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$ErrorTemplateMissingCondition.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$PreserveErrorControllerTargetClassPostProcessor.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$StaticView.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$JettyWebSocketConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$UndertowWebSocketConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/context/properties/EnableConfigurationProperties.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/context/properties/EnableConfigurationPropertiesRegistrar.class\\E" - }, - { - "pattern":"\\Qorg/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/ApplicationContextAware.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/ResourceLoaderAware.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/annotation/Conditional.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/annotation/Configuration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/annotation/Import.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/annotation/ImportBeanDefinitionRegistrar.class\\E" - }, - { - "pattern":"\\Qorg/springframework/context/annotation/ImportRuntimeHints.class\\E" - }, - { - "pattern":"\\Qorg/springframework/core/Ordered.class\\E" - }, - { - "pattern":"\\Qorg/springframework/core/annotation/Order.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/bind/annotation/ResponseBody.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/bind/annotation/RestController.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/context/ServletContextAware.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport$NoOpValidator.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.class\\E" - }, - { - "pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurer.class\\E" - } - ]}, - "bundles":[ - { - "name":"jakarta.servlet.LocalStrings", - "locales":[""] - }, - { - "name":"jakarta.servlet.http.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.authenticator.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.authenticator.jaspic.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.connector.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.core.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.deploy.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.loader.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.mapper.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.mbeans.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.realm.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.security.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.session.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.startup.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.util.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.valves.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.catalina.webresources.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.coyote.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.coyote.http11.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.coyote.http11.filters.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.naming.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.buf.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.compat.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.descriptor.web.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.http.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.http.parser.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.modeler.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.net.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.scan.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.util.threads.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.websocket.LocalStrings", - "locales":[""] - }, - { - "name":"org.apache.tomcat.websocket.server.LocalStrings", - "locales":[""] - } - ] -} diff --git a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/serialization-config.json b/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/serialization-config.json deleted file mode 100644 index f3d7e06e..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/META-INF/native-image/serialization-config.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "types":[ - ], - "lambdaCapturingTypes":[ - ], - "proxies":[ - ] -} diff --git a/native-image/what-the-dickens/lab/src/main/resources/application.properties b/native-image/what-the-dickens/lab/src/main/resources/application.properties deleted file mode 100644 index 8b137891..00000000 --- a/native-image/what-the-dickens/lab/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -