From e69d231b074b149375cc937d2c3de5cd39ca0817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:27:06 +0900 Subject: [PATCH 001/177] =?UTF-8?q?chore:=20readme=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..094de84 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +## ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ Poptato Backend Server ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ +README ์ˆ˜์ •์ค‘.. From 9d61586299a6026b3da6c6d2d75f5849b6ec68cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:27:45 +0900 Subject: [PATCH 002/177] chore --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 094de84..6188acf 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -## ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ Poptato Backend Server ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ +## ๐Ÿฅ” Poptato Backend Server ๐Ÿฅ” README ์ˆ˜์ •์ค‘.. From 5a4fb50f47a0f870d5ac7c8cf382f1ea52c46bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:27:45 +0900 Subject: [PATCH 003/177] =?UTF-8?q?chore:=20readme=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 094de84..6188acf 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -## ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ Poptato Backend Server ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ +## ๐Ÿฅ” Poptato Backend Server ๐Ÿฅ” README ์ˆ˜์ •์ค‘.. From 5c9120a0ac419b760d25cc9d50542ac9a8f06f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:40:20 +0900 Subject: [PATCH 004/177] =?UTF-8?q?chore:=20issue=20template=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...7\245\224poptato-server-issue-template.md" | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 ".github/ISSUE_TEMPLATE/\360\237\245\224poptato-server-issue-template.md" diff --git "a/.github/ISSUE_TEMPLATE/\360\237\245\224poptato-server-issue-template.md" "b/.github/ISSUE_TEMPLATE/\360\237\245\224poptato-server-issue-template.md" new file mode 100644 index 0000000..5393749 --- /dev/null +++ "b/.github/ISSUE_TEMPLATE/\360\237\245\224poptato-server-issue-template.md" @@ -0,0 +1,31 @@ +--- +name: "\U0001F954Poptato Server Issue Template" +about: PoptatoํŒ€์˜ Server Issue Template ์ž…๋‹ˆ๋‹ค. +title: '' +labels: '' +assignees: '' + +--- + + + +## ๐Ÿ“Œ ๋ชฉ์  / ์ด์Šˆ ๋‚ด์šฉ + +> ๋‚ด์šฉ + +## ๐Ÿ“ ์ƒ์„ธ ๋‚ด์šฉ + +- ๋‚ด์šฉ + +## โœ” ์ฒดํฌ ๋ฆฌ์ŠคํŠธ +- [ ] ๋‚ด์šฉ + +## ๐Ÿ’ก ๋น„๊ณ  + +- (์ฐธ๊ณ  ์‚ฌํ•ญ ๋ฐ ๋ ˆํผ๋Ÿฐ์Šค) +- ๋‚ด์šฉ From 6de6f7373abe51dc405ed6b4e1a2b2d0806a1603 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 4 Oct 2024 11:49:34 +0900 Subject: [PATCH 005/177] =?UTF-8?q?chore:=20pr=20template=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/PULL_REQUEST_TEMPLATE.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ce86a52 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,24 @@ + + +Resolves #{์ด์Šˆ-๋ฒˆํ˜ธ} + + +## Issue Define + +- + +## Summary of resolutions or improvements + +- + +### Note + + +- From c05dbd91b997f6370e9c3840e87491da3d1389a5 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 4 Oct 2024 12:56:26 +0900 Subject: [PATCH 006/177] =?UTF-8?q?chore:=20=EC=9E=90=EB=8F=99=20reviewer,?= =?UTF-8?q?=20assignee=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/CODEOWNERS | 1 + .github/auto_assign.yml | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/auto_assign.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..fe5def0 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @yeonjookang @pkl0912 \ No newline at end of file diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 0000000..7c96020 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,2 @@ +addReviewers: false +addAssignees: author \ No newline at end of file From 4ac0f0e9f55e59a8b50a3aa4084bfa29efc18263 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 4 Oct 2024 13:15:32 +0900 Subject: [PATCH 007/177] =?UTF-8?q?chore:=20=EC=9E=90=EB=8F=99=20label=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/labeler.yml diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..c901f46 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,12 @@ +feature: + - feature/* +fix: + - fix/* +chore: + - chore/* +docs: + - docs/* +refactor: + - refactor/* +bug: + - bug/* \ No newline at end of file From 88bb69d194e703748bd0c26a9804c6b73b2269fd Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 4 Oct 2024 15:57:41 +0900 Subject: [PATCH 008/177] =?UTF-8?q?feat:=20ci/cd=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 51 ++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..7fee449 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,51 @@ +name: Java CD with Gradle + +on: + pull_request: + types: [ closed ] + branches: [ "dev","main" ] + +jobs: + deploy: + if: ${{ github.event.workflow_run.conclusion == 'success' }} + runs-on: ubuntu-latest + steps: + - name: Connect to EC2 via SSH + uses: appleboy/ssh-action@master + env: + APPLICATION_YML: ${{ secrets.APPLICATION_YML }} + TEST_APPLICATION_YML: ${{ secrets.APPLICATION_TEST_YML }} + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.EC2_PRIVATE_KEY }} + script_stop: true + envs: APPLICATION_YML,TEST_APPLICATION_YML + script: | + cd /home/ubuntu/poptato_server + + git switch dev + + git pull origin dev + + rm -rf src/main/resources/application.yml + + mkdir -p src/main/resources + + echo "$APPLICATION_YML" > src/main/resources/application.yml + + rm -rf src/test/resources/application.yml + + echo "$TEST_APPLICATION_YML" > src/test/resources/application.yml + + chmod +x gradlew + + ./gradlew clean + + ./gradlew build + + ./gradlew asciidoctor + + sudo fuser -k -n tcp "${{ secrets.SERVER_PORT }}" || true + + nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..01260f4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: Java CI with Gradle + +#dev ๋ธŒ๋žœ์น˜๋กœ prํ•  ๋•Œ CI ์ ์šฉ +on: + pull_request: + branches: [ "dev" ] + types: [ opened, synchronize ] + push: # push ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ + branches: # ํƒ€๊ฒŸ ๋ธŒ๋žœ์น˜ + - dev + +#build ์ž‘์—… +jobs: + build: + #์ž‘์—…์ด ์‹คํ–‰๋  ํ™˜๊ฒฝ ์ง€์ • + runs-on: ubuntu-latest + permissions: + contents: read + #๊ฐ ๋‹จ๊ณ„๊ฐ€ ์ˆœ์ž์ ์œผ๋กœ ์ง„ํ–‰ + steps: + - uses: actions/checkout@v4 + #JDK 17 ์„ค์น˜ + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + # main์˜ application.yml ์ƒ์„ฑ + - name: Set Release YML File + run: | + cd ./src/main/resources + touch ./application.yml + echo "${{ secrets.APPLICATION_YML }}" >./application.yml + + # test์˜ application.yml ์ƒ์„ฑ + - name: Set Release Test YML File + run: | + cd ./src/test/resources + touch ./application.yml + echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml + + # test์˜ data.sql ์ƒ์„ฑ + - name: Set Test DATA SQL File + run: | + cd ./src/test/resources + touch ./data.sql + echo "${{ secrets.TEST_DATA_SQL }}" >./data.sql + + #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด + - name: Setup Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + + #Permission Denied ํ•ด๊ฒฐ + - name: Make gradlew executable + run: chmod +x ./gradlew + + #๋นŒ๋“œ ์ž‘์—… ์‹คํ–‰(ํ…Œ์ŠคํŠธ๋„ ๊ฐ™์ด ์ง„ํ–‰) + - name: Build with Gradle Wrapper + run: ./gradlew build \ No newline at end of file From 78b63e4f778ff3baf744aac3d5ee44cbffa23e63 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 4 Oct 2024 16:20:55 +0900 Subject: [PATCH 009/177] =?UTF-8?q?chore:=20=EC=99=B8=EB=B6=80=20=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/build.gradle b/build.gradle index 2b21ddb..4fda7cc 100644 --- a/build.gradle +++ b/build.gradle @@ -24,11 +24,27 @@ repositories { } dependencies { + //spring implementation 'org.springframework.boot:spring-boot-starter-web' + + //lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' + + //jpa + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + //validation + implementation 'org.springframework.boot:spring-boot-starter-validation' + + //database + implementation 'org.springframework.boot:spring-boot-starter-jdbc' + runtimeOnly 'com.mysql:mysql-connector-j' + + //test testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + testImplementation 'com.h2database:h2' } tasks.named('test') { From 90ec71f27ff10286047adb78be2a0852ce47c8f2 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 5 Oct 2024 23:42:39 +0900 Subject: [PATCH 010/177] =?UTF-8?q?feat:=20Base=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4,=20=EC=97=90=EB=9F=AC=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 + .../global/exception/BaseException.java | 20 ++++ .../errorcode/BaseExceptionErrorCode.java | 51 ++++++++ .../handler/BaseExceptionHandler.java | 109 ++++++++++++++++++ .../global/response/BaseErrorResponse.java | 56 +++++++++ .../poptato/global/response/BaseResponse.java | 47 ++++++++ .../response/status/ResponseStatus.java | 7 ++ 7 files changed, 293 insertions(+) create mode 100644 src/main/java/server/poptato/global/exception/BaseException.java create mode 100644 src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java create mode 100644 src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java create mode 100644 src/main/java/server/poptato/global/response/BaseErrorResponse.java create mode 100644 src/main/java/server/poptato/global/response/BaseResponse.java create mode 100644 src/main/java/server/poptato/global/response/status/ResponseStatus.java diff --git a/build.gradle b/build.gradle index 4fda7cc..5d11fdc 100644 --- a/build.gradle +++ b/build.gradle @@ -41,6 +41,9 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.mysql:mysql-connector-j' + // redis + implementation 'org.springframework.boot:spring-boot-starter-data-redis' + //test testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/src/main/java/server/poptato/global/exception/BaseException.java b/src/main/java/server/poptato/global/exception/BaseException.java new file mode 100644 index 0000000..14089fd --- /dev/null +++ b/src/main/java/server/poptato/global/exception/BaseException.java @@ -0,0 +1,20 @@ +package server.poptato.global.exception; + +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +@Getter +public class BaseException extends RuntimeException{ + private final ResponseStatus exceptionStatus; + + + public BaseException(ResponseStatus exceptionStatus) { + super(exceptionStatus.getMessage()); + this.exceptionStatus = exceptionStatus; + } + + public BaseException(String exceptionMessage, ResponseStatus exceptionStatus) { + super(exceptionMessage); + this.exceptionStatus = exceptionStatus; + } +} diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java new file mode 100644 index 0000000..e127d6a --- /dev/null +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -0,0 +1,51 @@ +package server.poptato.global.exception.errorcode; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import server.poptato.global.response.status.ResponseStatus; + +@RequiredArgsConstructor +public enum BaseExceptionErrorCode implements ResponseStatus { + + /** + * 1000: ์š”์ฒญ ์„ฑ๊ณต (OK) + */ + SUCCESS(1000, HttpStatus.OK.value(), "์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), + + /** + * 2000: Request ์˜ค๋ฅ˜ (BAD_REQUEST) + */ + BAD_REQUEST(2000, HttpStatus.BAD_REQUEST.value(), "์œ ํšจํ•˜์ง€ ์•Š์€ ์š”์ฒญ์ž…๋‹ˆ๋‹ค."), + URL_NOT_FOUND(2001, HttpStatus.BAD_REQUEST.value(), "์œ ํšจํ•˜์ง€ ์•Š์€ URL ์ž…๋‹ˆ๋‹ค."), + METHOD_NOT_ALLOWED(2002, HttpStatus.METHOD_NOT_ALLOWED.value(), "ํ•ด๋‹น URL์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š” HTTP Method ์ž…๋‹ˆ๋‹ค."), + INAPPROPRIATE_DATA(2003, HttpStatus.BAD_REQUEST.value(), "์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), + NO_COOKIE(2004,HttpStatus.BAD_REQUEST.value(),"์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), + NO_REQUEST_PARAMETER(2005,HttpStatus.BAD_REQUEST.value(),"์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."), + + /** + * 3000: Server, Database ์˜ค๋ฅ˜ (INTERNAL_SERVER_ERROR) + */ + SERVER_ERROR(3000, HttpStatus.INTERNAL_SERVER_ERROR.value(), "์„œ๋ฒ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค."), + DATABASE_ERROR(3001, HttpStatus.INTERNAL_SERVER_ERROR.value(), "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค."), + BAD_SQL_GRAMMAR(3002, HttpStatus.INTERNAL_SERVER_ERROR.value(), "SQL์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."); + + private final int code; + private final int status; + private final String message; + + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java b/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java new file mode 100644 index 0000000..06db5b9 --- /dev/null +++ b/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java @@ -0,0 +1,109 @@ +package server.poptato.global.exception.handler; + +import lombok.extern.slf4j.Slf4j; +import org.hibernate.TypeMismatchException; +import org.hibernate.exception.ConstraintViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.multipart.support.MissingServletRequestPartException; +import org.springframework.web.servlet.NoHandlerFoundException; +import server.poptato.global.exception.BaseException; +import server.poptato.global.exception.errorcode.BaseExceptionErrorCode; +import server.poptato.global.response.BaseErrorResponse; + +import java.io.IOException; +import java.util.stream.Collectors; + +@Slf4j +@RestControllerAdvice +public class BaseExceptionHandler { + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler({BaseException.class, NoHandlerFoundException.class, TypeMismatchException.class}) + public BaseErrorResponse handle_BadRequest(Exception exception) { + log.error("[BaseExceptionControllerAdvice: handle_BadRequest ํ˜ธ์ถœ]", exception); + return new BaseErrorResponse(BaseExceptionErrorCode.URL_NOT_FOUND); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public BaseErrorResponse handle_HttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) { + log.error("[BaseExceptionControllerAdvice: handle_HttpRequestMethodNotSupportedException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.METHOD_NOT_ALLOWED); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(ConstraintViolationException.class) + public BaseErrorResponse handle_ConstraintViolationException(ConstraintViolationException e) { + log.error("[handle_ConstraintViolationException]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IllegalArgumentException.class) + public BaseErrorResponse handle_IllegalArgumentException(IllegalArgumentException e) { + log.error("[BaseExceptionControllerAdvice: handle_IllegalArgumentException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IllegalStateException.class) + public BaseErrorResponse handle_IllegalStatusException(IllegalStateException e) { + log.error("[BaseExceptionControllerAdvice: handle_IllegalStatusException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(IOException.class) + public BaseErrorResponse handle_IOException(IOException e) { + log.error("[BaseExceptionControllerAdvice: handle_IOException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.BAD_REQUEST, e.getMessage()); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(MethodArgumentNotValidException.class) + public BaseErrorResponse handle_MethodArgumentNotValidException(MethodArgumentNotValidException e) { + log.error("[BaseExceptionControllerAdvice: handle_MethodArgumentNotValidException ํ˜ธ์ถœ]", e); + + String errorMessages = e.getBindingResult() + .getFieldErrors() + .stream() + .map(fieldError -> fieldError.getField() + ": " + fieldError.getDefaultMessage()) + .collect(Collectors.joining(", ")); + + return new BaseErrorResponse(BaseExceptionErrorCode.INAPPROPRIATE_DATA,errorMessages); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(MissingServletRequestPartException.class) + public BaseErrorResponse handle_MissingServletRequestPartException(MissingServletRequestPartException e) { + log.error("[BaseExceptionControllerAdvice: handle_MissingServletRequestPartException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.INAPPROPRIATE_DATA); + } + + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(MissingServletRequestParameterException.class) + public BaseErrorResponse handleMissingServletRequestParameterException(MissingServletRequestParameterException e) { + log.error("[GlobalExceptionHandler] MissingServletRequestParameterException", e); + return new BaseErrorResponse(BaseExceptionErrorCode.NO_REQUEST_PARAMETER); + } + + @ResponseStatus(HttpStatus.FORBIDDEN) + @ExceptionHandler(HttpClientErrorException.Forbidden.class) + public BaseErrorResponse handle_ForbiddenException(HttpClientErrorException.Forbidden e){ + log.error("[BaseExceptionControllerAdvice: handle_ForbiddenException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.INAPPROPRIATE_DATA); + } + + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + @ExceptionHandler(RuntimeException.class) + public BaseErrorResponse handle_RuntimeException(Exception e) { + log.error("[BaseExceptionControllerAdvice: handle_RuntimeException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(BaseExceptionErrorCode.SERVER_ERROR); + } +} diff --git a/src/main/java/server/poptato/global/response/BaseErrorResponse.java b/src/main/java/server/poptato/global/response/BaseErrorResponse.java new file mode 100644 index 0000000..b926686 --- /dev/null +++ b/src/main/java/server/poptato/global/response/BaseErrorResponse.java @@ -0,0 +1,56 @@ +package server.poptato.global.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +import java.time.LocalDateTime; + +@Getter +@JsonPropertyOrder({"code","status","message","timestamp"}) +public class BaseErrorResponse implements ResponseStatus { + private final int code; + private final int status; + private final String message; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") + private final LocalDateTime timestamp; + + public BaseErrorResponse(ResponseStatus status) { + this.code = status.getCode(); + this.status = status.getStatus(); + this.message = status.getMessage(); + this.timestamp = LocalDateTime.now(); + } + + public BaseErrorResponse(ResponseStatus status, String message) { + this.code = status.getCode(); + this.status = status.getStatus(); + this.message = message; + this.timestamp = LocalDateTime.now(); + } + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } + + public String convertToJson() throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + return objectMapper.writeValueAsString(this); + } +} diff --git a/src/main/java/server/poptato/global/response/BaseResponse.java b/src/main/java/server/poptato/global/response/BaseResponse.java new file mode 100644 index 0000000..b6679bf --- /dev/null +++ b/src/main/java/server/poptato/global/response/BaseResponse.java @@ -0,0 +1,47 @@ +package server.poptato.global.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; + +@Getter +@JsonPropertyOrder({"code","status","message","result"}) +public class BaseResponse implements ResponseStatus { + private final int code; + private final int status; + private final String message; + + @JsonInclude(JsonInclude.Include.NON_NULL) + private final T result; + + + public BaseResponse(T result) { + this.code = SUCCESS.getCode(); + this.status = SUCCESS.getStatus(); + this.message = SUCCESS.getMessage(); + this.result = result; + } + + public BaseResponse() { + this.code = SUCCESS.getCode(); + this.status = SUCCESS.getStatus(); + this.message = SUCCESS.getMessage(); + this.result = null; + } + + public int getCode() { + return code; + } + + public int getStatus() { + return status; + } + + public String getMessage() { + return message; + } +} + diff --git a/src/main/java/server/poptato/global/response/status/ResponseStatus.java b/src/main/java/server/poptato/global/response/status/ResponseStatus.java new file mode 100644 index 0000000..a6ba87b --- /dev/null +++ b/src/main/java/server/poptato/global/response/status/ResponseStatus.java @@ -0,0 +1,7 @@ +package server.poptato.global.response.status; + +public interface ResponseStatus { + int getCode(); + int getStatus(); + String getMessage(); +} \ No newline at end of file From 6005762377e3a56df403e7fa0f4261511f2a72d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Sun, 6 Oct 2024 22:50:14 +0900 Subject: [PATCH 011/177] =?UTF-8?q?fix:=20ci.yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 01260f4..68be742 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,6 +25,12 @@ jobs: with: java-version: '17' distribution: 'temurin' + + - name: Create main resources directory + run: mkdir -p src/main/resources + + - name: Create test resources directory + run: mkdir -p src/test/resources # main์˜ application.yml ์ƒ์„ฑ - name: Set Release YML File @@ -57,4 +63,4 @@ jobs: #๋นŒ๋“œ ์ž‘์—… ์‹คํ–‰(ํ…Œ์ŠคํŠธ๋„ ๊ฐ™์ด ์ง„ํ–‰) - name: Build with Gradle Wrapper - run: ./gradlew build \ No newline at end of file + run: ./gradlew build From 3dbbc04c368a05552ed91d840431fe094bd87d94 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 6 Oct 2024 23:39:35 +0900 Subject: [PATCH 012/177] =?UTF-8?q?fix:=20ci=20=EC=8B=9C=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68be742..6c99ce8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,4 +63,4 @@ jobs: #๋นŒ๋“œ ์ž‘์—… ์‹คํ–‰(ํ…Œ์ŠคํŠธ๋„ ๊ฐ™์ด ์ง„ํ–‰) - name: Build with Gradle Wrapper - run: ./gradlew build + run: ./gradlew build --exclude-task test From 5e3e0a5c65a66767973b14df21ebeca37685b136 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 6 Oct 2024 23:50:00 +0900 Subject: [PATCH 013/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 7fee449..c505ce2 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -7,7 +7,6 @@ on: jobs: deploy: - if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - name: Connect to EC2 via SSH From 6c9e9086d2f63565f3eaea7c3d530da1d0cdd919 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 6 Oct 2024 23:52:02 +0900 Subject: [PATCH 014/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c505ce2..aa7ab64 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -4,6 +4,8 @@ on: pull_request: types: [ closed ] branches: [ "dev","main" ] + push: + branches: [ "dev", "main" ] jobs: deploy: From 015e7ba9a683f0b8dab01a78029cae122bb7d104 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 6 Oct 2024 23:55:04 +0900 Subject: [PATCH 015/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index aa7ab64..20501c0 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -36,6 +36,8 @@ jobs: echo "$APPLICATION_YML" > src/main/resources/application.yml rm -rf src/test/resources/application.yml + + mkdir -p src/test/resources echo "$TEST_APPLICATION_YML" > src/test/resources/application.yml From 05bee64e581e3959a6e09036bbc61cb4d37c10f3 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 6 Oct 2024 23:56:32 +0900 Subject: [PATCH 016/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 20501c0..6ef5a00 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -23,6 +23,8 @@ jobs: script_stop: true envs: APPLICATION_YML,TEST_APPLICATION_YML script: | + mkdir -p /home/ubuntu/poptato_server + cd /home/ubuntu/poptato_server git switch dev From ed61ff56ee39cd78f4e209b9cfb7d08e55f8e6f6 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 7 Oct 2024 11:21:42 +0900 Subject: [PATCH 017/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 6ef5a00..72b39d1 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -22,10 +22,9 @@ jobs: key: ${{ secrets.EC2_PRIVATE_KEY }} script_stop: true envs: APPLICATION_YML,TEST_APPLICATION_YML + # git clone ๊ฐ™์€ ์ดˆ๊ธฐ ์ž‘์—…์€ ec2์—์„œ ๋จผ์ € ์ง„ํ–‰ script: | - mkdir -p /home/ubuntu/poptato_server - - cd /home/ubuntu/poptato_server + cd /home/ubuntu/poptato_server/Poptato_Server git switch dev From 5fa618bc62794e2553690a4b15d1f0030c243a9c Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 7 Oct 2024 11:27:58 +0900 Subject: [PATCH 018/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 72b39d1..a767a9c 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -45,10 +45,8 @@ jobs: chmod +x gradlew ./gradlew clean - - ./gradlew build - - ./gradlew asciidoctor + ./gradlew build -x test + ./gradlew asciidoctor -x test sudo fuser -k -n tcp "${{ secrets.SERVER_PORT }}" || true From 3e79b46cc76a1a04c58878874b9148cf227771a2 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 7 Oct 2024 11:32:19 +0900 Subject: [PATCH 019/177] =?UTF-8?q?fix:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index a767a9c..9cb9f22 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -46,7 +46,6 @@ jobs: ./gradlew clean ./gradlew build -x test - ./gradlew asciidoctor -x test sudo fuser -k -n tcp "${{ secrets.SERVER_PORT }}" || true From 2572b87b3516bd5fb82fa8aec69a25f47dd15cb7 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 17:28:51 +0900 Subject: [PATCH 020/177] =?UTF-8?q?chore:=20token=20record=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/global/dto/TokenPair.java | 6 ++++++ .../java/server/poptato/global/dto/UserCreateResponse.java | 7 +++++++ 2 files changed, 13 insertions(+) create mode 100644 src/main/java/server/poptato/global/dto/TokenPair.java create mode 100644 src/main/java/server/poptato/global/dto/UserCreateResponse.java diff --git a/src/main/java/server/poptato/global/dto/TokenPair.java b/src/main/java/server/poptato/global/dto/TokenPair.java new file mode 100644 index 0000000..872b327 --- /dev/null +++ b/src/main/java/server/poptato/global/dto/TokenPair.java @@ -0,0 +1,6 @@ +package server.poptato.global.dto; + +public record TokenPair( + String accessToken, String refreshToken +) { +} diff --git a/src/main/java/server/poptato/global/dto/UserCreateResponse.java b/src/main/java/server/poptato/global/dto/UserCreateResponse.java new file mode 100644 index 0000000..eda7edd --- /dev/null +++ b/src/main/java/server/poptato/global/dto/UserCreateResponse.java @@ -0,0 +1,7 @@ +package server.poptato.global.dto; + +public record UserCreateResponse( + String accessToken, + String refreshToken +) { +} From b8c7df5ffa3eb9ecd561c5b85c7e87b2701f71e4 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 17:52:27 +0900 Subject: [PATCH 021/177] =?UTF-8?q?chore:=20config=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 14 +- .../java/server/poptato/config/WebConfig.java | 36 +++++ .../server/poptato/config/jwt/JwtService.java | 136 ++++++++++++++++++ .../poptato/config/redis/RedisConfig.java | 34 +++++ .../config/resolver/kakao/KakaoCode.java | 11 ++ .../resolver/kakao/KakaoCodeResolver.java | 38 +++++ .../poptato/config/resolver/user/UserId.java | 11 ++ .../config/resolver/user/UserResolver.java | 47 ++++++ .../errorcode/BaseExceptionErrorCode.java | 4 + 9 files changed, 329 insertions(+), 2 deletions(-) create mode 100644 src/main/java/server/poptato/config/WebConfig.java create mode 100644 src/main/java/server/poptato/config/jwt/JwtService.java create mode 100644 src/main/java/server/poptato/config/redis/RedisConfig.java create mode 100644 src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java create mode 100644 src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java create mode 100644 src/main/java/server/poptato/config/resolver/user/UserId.java create mode 100644 src/main/java/server/poptato/config/resolver/user/UserResolver.java diff --git a/build.gradle b/build.gradle index 5d11fdc..053341f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.3.4' - id 'io.spring.dependency-management' version '1.1.6' + id 'org.springframework.boot' version '3.2.1' + id 'io.spring.dependency-management' version '1.1.4' } group = 'server' @@ -48,6 +48,16 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation 'com.h2database:h2' + + implementation 'com.squareup.okhttp3:okhttp:4.9.3' + implementation 'com.google.code.gson:gson:2.9.0' + + //JWT + implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2' + implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2' + implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2' + + implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:4.1.0' } tasks.named('test') { diff --git a/src/main/java/server/poptato/config/WebConfig.java b/src/main/java/server/poptato/config/WebConfig.java new file mode 100644 index 0000000..45543be --- /dev/null +++ b/src/main/java/server/poptato/config/WebConfig.java @@ -0,0 +1,36 @@ +package server.poptato.config; + +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import server.poptato.config.resolver.kakao.KakaoCodeResolver; +import server.poptato.config.resolver.user.UserResolver; + +import java.util.List; + +@Configuration +@RequiredArgsConstructor +public class WebConfig implements WebMvcConfigurer { + private final UserResolver userResolver; + private final KakaoCodeResolver kakaoCodeResolver; + + @Override + public void addCorsMappings(final CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedMethods(HttpMethod.GET.name(), HttpMethod.POST.name(), HttpMethod.PUT.name(), HttpMethod.DELETE.name()) + .allowedHeaders("Authorization", "Content-Type") + .allowCredentials(true) + .maxAge(3000); + } + + @Override + public void addArgumentResolvers(List resolvers) { + resolvers.add(userResolver); + resolvers.add(kakaoCodeResolver); + + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/config/jwt/JwtService.java b/src/main/java/server/poptato/config/jwt/JwtService.java new file mode 100644 index 0000000..0434a2f --- /dev/null +++ b/src/main/java/server/poptato/config/jwt/JwtService.java @@ -0,0 +1,136 @@ +package server.poptato.config.jwt; + + + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Header; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import server.poptato.global.dto.TokenPair; +import server.poptato.global.exception.BaseException; +import server.poptato.global.response.BaseErrorResponse; + +import java.nio.charset.StandardCharsets; +import java.security.Key; +import java.util.Base64; +import java.util.Date; +import java.util.concurrent.TimeUnit; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.TOKEN_TIME_EXPIRED_EXCEPTION; + + +@Service +@RequiredArgsConstructor +public class JwtService { + @Value("${jwt.secret}") + private String jwtSecret; + private static final String USER_ID = "USER_ID"; + private static final String ACCESS_TOKEN = "ACCESS_TOKEN"; + private static final String REFRESH_TOKEN = "REFRESH_TOKEN"; + public static final int MINUTE_IN_MILLISECONDS = 60 * 1000; + public static final long DAYS_IN_MILLISECONDS = 24 * 60 * 60 * 1000L; + public static final int ACCESS_TOKEN_EXPIRATION_MINUTE = 10; + public static final int REFRESH_TOKEN_EXPIRATION_DAYS = 14; + private final RedisTemplate redisTemplate; + + @PostConstruct + protected void init() { + jwtSecret = Base64.getEncoder() + .encodeToString(jwtSecret.getBytes(StandardCharsets.UTF_8)); + } + + public String createAccessToken(final String userId) { + final Claims claims = getAccessTokenClaims(); + + claims.put(USER_ID, userId); + return createToken(claims); + } + + public String createRefreshToken(final String userId) { + final Claims claims = getRefreshTokenClaims(); + + claims.put(USER_ID, userId); + return createToken(claims); + } + + public boolean verifyToken(final String token) { + try { + final Claims claims = getBody(token); + return true; + } catch (RuntimeException e) { + if (e instanceof ExpiredJwtException) { + throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); + } + return false; + } + } + + public String getUserIdInToken(final String token) { + final Claims claims = getBody(token); + return (String) claims.get(USER_ID); + } + + public TokenPair generateTokenPair(final String userId) { + final String accessToken = createAccessToken(userId); + final String refreshToken = createRefreshToken(userId); + saveRefreshToken(userId, refreshToken); + return new TokenPair(accessToken, refreshToken); + } + + public boolean compareRefreshToken(final String userId, final String refreshToken) { + final String storedRefreshToken = redisTemplate.opsForValue().get(userId); + if (storedRefreshToken == null) return false; + return storedRefreshToken.equals(refreshToken); + } + + public void saveRefreshToken(final String userId, final String refreshToken) { + redisTemplate.opsForValue().set(userId, refreshToken, REFRESH_TOKEN_EXPIRATION_DAYS, TimeUnit.DAYS); + } + + private String createToken(final Claims claims) { + return Jwts.builder() + .setHeaderParam(Header.TYPE, Header.JWT_TYPE) + .setClaims(claims) + .signWith(getSigningKey()) + .compact(); + } + + private Claims getRefreshTokenClaims() { + final Date now = new Date(); + return Jwts.claims() + .setSubject(REFRESH_TOKEN) + .setIssuedAt(now) + .setExpiration(new Date(now.getTime() + REFRESH_TOKEN_EXPIRATION_DAYS * DAYS_IN_MILLISECONDS)); + } + + private Claims getAccessTokenClaims() { + final Date now = new Date(); + return Jwts.claims() + .setSubject(ACCESS_TOKEN) + .setIssuedAt(now) + .setExpiration(new Date(now.getTime() + ACCESS_TOKEN_EXPIRATION_MINUTE * MINUTE_IN_MILLISECONDS)); + } + + private Claims getBody(final String token) { + return Jwts.parserBuilder() + .setSigningKey(getSigningKey()) + .build() + .parseClaimsJws(token) + .getBody(); + } + + private Key getSigningKey() { + final byte[] keyBytes = jwtSecret.getBytes(StandardCharsets.UTF_8); + return Keys.hmacShaKeyFor(keyBytes); + } + + public void deleteRefreshToken(final String userId) { + redisTemplate.delete(userId); + } +} diff --git a/src/main/java/server/poptato/config/redis/RedisConfig.java b/src/main/java/server/poptato/config/redis/RedisConfig.java new file mode 100644 index 0000000..a3b853e --- /dev/null +++ b/src/main/java/server/poptato/config/redis/RedisConfig.java @@ -0,0 +1,34 @@ +package server.poptato.config.redis; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +public class RedisConfig { + @Value("${spring.data.redis.host}") + private String host; + + @Value("${spring.data.redis.port}") + private int port; + + @Bean + public RedisConnectionFactory redisConnectionFactory() { + return new LettuceConnectionFactory(host, port); + } + + @Bean + @Primary + public RedisTemplate getRedisTemplate() { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory()); + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(new StringRedisSerializer()); + return redisTemplate; + } +} diff --git a/src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java b/src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java new file mode 100644 index 0000000..e7d4622 --- /dev/null +++ b/src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java @@ -0,0 +1,11 @@ +package server.poptato.config.resolver.kakao; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) +public @interface KakaoCode { +} diff --git a/src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java b/src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java new file mode 100644 index 0000000..1c64f24 --- /dev/null +++ b/src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java @@ -0,0 +1,38 @@ +package server.poptato.config.resolver.kakao; + + +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.core.MethodParameter; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; +import server.poptato.global.exception.BaseException; +import server.poptato.global.response.BaseErrorResponse; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.EMPTY_KAKAO_CODE_EXCEPTION; +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.NO_REQUEST_PARAMETER; + + +@Component +@RequiredArgsConstructor +public class KakaoCodeResolver implements HandlerMethodArgumentResolver { + private static final String AUTHORIZATION = "authorization"; + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.hasParameterAnnotation(KakaoCode.class) && String.class.equals(parameter.getParameterType()); + } + + @Override + public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { + final HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest(); + final String token = request.getHeader(AUTHORIZATION); + if (token == null || token.isBlank() || !token.startsWith("Bearer ")) { + throw new BaseException(EMPTY_KAKAO_CODE_EXCEPTION); + } + return token.substring("Bearer ".length()); + } +} diff --git a/src/main/java/server/poptato/config/resolver/user/UserId.java b/src/main/java/server/poptato/config/resolver/user/UserId.java new file mode 100644 index 0000000..bf46ab0 --- /dev/null +++ b/src/main/java/server/poptato/config/resolver/user/UserId.java @@ -0,0 +1,11 @@ +package server.poptato.config.resolver.user; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) +public @interface UserId { +} diff --git a/src/main/java/server/poptato/config/resolver/user/UserResolver.java b/src/main/java/server/poptato/config/resolver/user/UserResolver.java new file mode 100644 index 0000000..9ad250b --- /dev/null +++ b/src/main/java/server/poptato/config/resolver/user/UserResolver.java @@ -0,0 +1,47 @@ +package server.poptato.config.resolver.user; + + +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.core.MethodParameter; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; +import server.poptato.config.jwt.JwtService; +import server.poptato.global.exception.BaseException; +import server.poptato.global.response.BaseErrorResponse; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; + + +@Component +@RequiredArgsConstructor +public class UserResolver implements HandlerMethodArgumentResolver { + private final JwtService jwtService; + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.hasParameterAnnotation(UserId.class) && Long.class.equals(parameter.getParameterType()); + } + + @Override + public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { + final HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest(); + final String token = request.getHeader("Authorization"); + if (token == null || token.isBlank() || !token.startsWith("Bearer ")) { + throw new BaseException(TOKEN_NOT_CONTAINED_EXCEPTION); + } + final String encodedUserId = token.substring("Bearer ".length()); + if (!jwtService.verifyToken(encodedUserId)) { + throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); + } + final String decodedUserId = jwtService.getUserIdInToken(encodedUserId); + try { + return Long.parseLong(decodedUserId); + } catch (NumberFormatException e) { + return new BaseErrorResponse(INVALID_TOKEN_EXCEPTION); + } + } +} diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index e127d6a..8d7c932 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -21,6 +21,10 @@ public enum BaseExceptionErrorCode implements ResponseStatus { INAPPROPRIATE_DATA(2003, HttpStatus.BAD_REQUEST.value(), "์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), NO_COOKIE(2004,HttpStatus.BAD_REQUEST.value(),"์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), NO_REQUEST_PARAMETER(2005,HttpStatus.BAD_REQUEST.value(),"์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."), + TOKEN_NOT_CONTAINED_EXCEPTION(2006,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ์€ ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."), + TOKEN_TIME_EXPIRED_EXCEPTION(2007,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."), + INVALID_TOKEN_EXCEPTION(2008,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), + EMPTY_KAKAO_CODE_EXCEPTION(2009,HttpStatus.BAD_REQUEST.value(),"์นด์นด์˜ค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"), /** * 3000: Server, Database ์˜ค๋ฅ˜ (INTERNAL_SERVER_ERROR) From f37f39467d6be03f5ef1b1af2f7ba5f3edd83326 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 17:59:55 +0900 Subject: [PATCH 022/177] =?UTF-8?q?chore:=20auth=20dto=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/application/dto/request/TokenRequestDto.java | 4 ++++ .../auth/application/dto/response/LoginResponseDto.java | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 src/main/java/server/poptato/auth/application/dto/request/TokenRequestDto.java create mode 100644 src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java diff --git a/src/main/java/server/poptato/auth/application/dto/request/TokenRequestDto.java b/src/main/java/server/poptato/auth/application/dto/request/TokenRequestDto.java new file mode 100644 index 0000000..29ea5a1 --- /dev/null +++ b/src/main/java/server/poptato/auth/application/dto/request/TokenRequestDto.java @@ -0,0 +1,4 @@ +package server.poptato.auth.application.dto.request; + +public record TokenRequestDto(String accessToken, String refreshToken) { +} diff --git a/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java b/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java new file mode 100644 index 0000000..0bab349 --- /dev/null +++ b/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java @@ -0,0 +1,4 @@ +package server.poptato.auth.application.dto.response; + +public record LoginResponseDto(String accessToken, String refreshToken) { +} From ceca9bda7df977b8607d8e7456bd285592325c4a Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 18:06:54 +0900 Subject: [PATCH 023/177] =?UTF-8?q?feat:=20Auth=20service,=20controller=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthController.java | 41 ++++++++++++ .../auth/application/service/AuthService.java | 62 +++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 src/main/java/server/poptato/auth/api/AuthController.java create mode 100644 src/main/java/server/poptato/auth/application/service/AuthService.java diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java new file mode 100644 index 0000000..32c2b04 --- /dev/null +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -0,0 +1,41 @@ +package server.poptato.auth.api; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import server.poptato.auth.application.dto.response.LoginResponseDto; +import server.poptato.config.resolver.kakao.KakaoCode; +import server.poptato.global.response.BaseResponse; + +@RestController +@RequestMapping("/auth") +@RequiredArgsConstructor +public class AuthController { + + private static final String ORIGIN = "origin"; + private final AuthService authService; + + @PostMapping("/login") + public BaseResponse login( + @KakaoCode String kakaoCode, + HttpServletRequest request) { + String originHeader = request.getHeader(ORIGIN); + authService.login(originHeader, kakaoCode) + return BaseResponse.success(SOCIAL_LOGIN_SUCCESS, ); + } + + @PostMapping("/logout") + public SuccessNonDataResponse logout(HttpServletRequest request) { + Long userId = (Long) request.getAttribute("userId"); // `userId`๋ฅผ ํ—ค๋”์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ๊ฐ€์ • + authService.logout(userId); + return SuccessNonDataResponse.success(LOGOUT_SUCCESS); + } + + @PostMapping("/refresh") + public SuccessResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { + return SuccessResponse.success(REFRESH_SUCCESS, authService.refresh(tokenRequestDto)); + } +} diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java new file mode 100644 index 0000000..069030c --- /dev/null +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -0,0 +1,62 @@ +package server.poptato.auth.application.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import server.poptato.auth.application.dto.response.LoginResponseDto; +import server.poptato.config.jwt.JwtService; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class AuthService { + private final JwtService jwtService; + private final KakaoSocialService kakaoSocialService; + private final UserRepository userRepository; + + public LoginResponseDto login(final String baseUrl, final String kakaoCode) { + String kakaoId = kakaoSocialService.getIdFromKakao(baseUrl, kakaoCode); + Optional user = userRepository.findByKakaoId(kakaoId); + if (user.isEmpty()) { + User newUser = User.builder() + .kakaoId(kakaoId) + .build(); + userRepository.save(newUser); + + TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); + throw new NotFoundUserException(USER_NOT_FOUND_EXCEPTION, tokenPair); + } + TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.get().getId())); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken()); + } + + public UserCreateResponse createUserToken(String useId) { + + TokenPair tokenPair = jwtService.generateTokenPair(useId); + UserCreateResponse userCreateResponse = new UserCreateResponse(tokenPair.accessToken(), tokenPair.refreshToken()); + + return userCreateResponse; + } + + + + public void logout(final Long userId) { + final User user = userRepository.findById(userId).orElseThrow(() -> new NotFoundException(USER_NOT_FOUND_EXCEPTION)); + jwtService.deleteRefreshToken(String.valueOf(userId)); + } + + public TokenPair refresh(final TokenRequestDto tokenRequestDto) { + if (!jwtService.verifyToken(tokenRequestDto.refreshToken())) + throw new UnAuthorizedException(TOKEN_TIME_EXPIRED_EXCEPTION); + + final String userId = jwtService.getUserIdInToken(tokenRequestDto.refreshToken()); + final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new NotFoundException(USER_NOT_FOUND_EXCEPTION)); + + if (!jwtService.compareRefreshToken(userId, tokenRequestDto.refreshToken())) + throw new UnAuthorizedException(TOKEN_TIME_EXPIRED_EXCEPTION); + + final TokenPair tokenPair = jwtService.generateTokenPair(userId); + jwtService.saveRefreshToken(userId, tokenPair.refreshToken()); + return tokenPair; + } +} From 3321ca91e1d9f1fee2dd4054a5ee31ab46af286a Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 18:10:37 +0900 Subject: [PATCH 024/177] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?-=20external=20=ED=8C=A8=ED=82=A4=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../external/kakao/SocialPlatform.java | 13 +++++++ .../external/kakao/SocialServiceProvider.java | 30 +++++++++++++++ .../response/KakaoAccessTokenResponse.java | 8 ++++ .../kakao/dto/response/KakaoUserResponse.java | 4 ++ .../external/kakao/feign/KakaoApiClient.java | 19 ++++++++++ .../kakao/feign/KakaoAuthApiClient.java | 21 +++++++++++ .../kakao/service/KakaoSocialService.java | 37 +++++++++++++++++++ .../external/kakao/service/SocialService.java | 7 ++++ 8 files changed, 139 insertions(+) create mode 100644 src/main/java/server/poptato/external/kakao/SocialPlatform.java create mode 100644 src/main/java/server/poptato/external/kakao/SocialServiceProvider.java create mode 100644 src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java create mode 100644 src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java create mode 100644 src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java create mode 100644 src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java create mode 100644 src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java create mode 100644 src/main/java/server/poptato/external/kakao/service/SocialService.java diff --git a/src/main/java/server/poptato/external/kakao/SocialPlatform.java b/src/main/java/server/poptato/external/kakao/SocialPlatform.java new file mode 100644 index 0000000..ee34584 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/SocialPlatform.java @@ -0,0 +1,13 @@ +package server.poptato.external.kakao; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) +public enum SocialPlatform { + KAKAO("์นด์นด์˜ค"); + + private final String value; +} diff --git a/src/main/java/server/poptato/external/kakao/SocialServiceProvider.java b/src/main/java/server/poptato/external/kakao/SocialServiceProvider.java new file mode 100644 index 0000000..8b98435 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/SocialServiceProvider.java @@ -0,0 +1,30 @@ +package server.poptato.external.kakao; + + + +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import server.poptato.external.kakao.service.KakaoSocialService; +import server.poptato.external.kakao.service.SocialService; + +import java.util.HashMap; +import java.util.Map; + +@Component +@RequiredArgsConstructor +public class SocialServiceProvider { + + private static final Map socialServiceMap = new HashMap<>(); + + private final KakaoSocialService kakaoSocialService; + + @PostConstruct + void initializeSocialServiceMap() { + socialServiceMap.put(SocialPlatform.KAKAO, kakaoSocialService); + } + + public SocialService getSocialService(SocialPlatform socialPlatform) { + return socialServiceMap.get(socialPlatform); + } +} diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java new file mode 100644 index 0000000..566a5df --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java @@ -0,0 +1,8 @@ +package server.poptato.external.kakao.dto.response; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; + +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public record KakaoAccessTokenResponse(String accessToken, String refreshToken) { +} diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java new file mode 100644 index 0000000..8092a6a --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java @@ -0,0 +1,4 @@ +package server.poptato.external.kakao.dto.response; + +public record KakaoUserResponse(Long id) { +} diff --git a/src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java b/src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java new file mode 100644 index 0000000..a742e64 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java @@ -0,0 +1,19 @@ +package server.poptato.external.kakao.feign; + + + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import server.poptato.external.kakao.dto.response.KakaoUserResponse; + + +@ComponentScan +@FeignClient(name = "kakaoApiClient", url = "https://kapi.kakao.com") +public interface KakaoApiClient { + + @GetMapping(value = "/v2/user/me") + KakaoUserResponse getUserInformation(@RequestHeader(HttpHeaders.AUTHORIZATION) String accessToken); +} diff --git a/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java b/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java new file mode 100644 index 0000000..9336827 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java @@ -0,0 +1,21 @@ +package server.poptato.external.kakao.feign; + + + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import server.poptato.external.kakao.dto.response.KakaoAccessTokenResponse; + +@FeignClient(name = "kakaoAuthApiClient", url = "https://kauth.kakao.com") +public interface KakaoAuthApiClient { + + @PostMapping(value = "/oauth/token", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE) + KakaoAccessTokenResponse getOAuth2AccessToken( + @RequestParam("grant_type") String grantType, + @RequestParam("client_id") String clientId, + @RequestParam("redirect_uri") String redirectUri, + @RequestParam("code") String code + ); +} diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java new file mode 100644 index 0000000..3e7e410 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -0,0 +1,37 @@ +package server.poptato.external.kakao.service; + + +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import server.poptato.external.kakao.dto.response.KakaoAccessTokenResponse; +import server.poptato.external.kakao.dto.response.KakaoUserResponse; +import server.poptato.external.kakao.feign.KakaoApiClient; +import server.poptato.external.kakao.feign.KakaoAuthApiClient; + +@Service +@RequiredArgsConstructor +public class KakaoSocialService extends SocialService { + + @Value("${kakao.client-id}") + private String clientId; + private static final String Bearer = "Bearer "; + private static final String GRANT_TYPE = "authorization_code"; + private static final String KAKAO_ROUTER = "/login/oauth2/code/kakao"; + private final KakaoAuthApiClient kakaoAuthApiClient; + private final KakaoApiClient kakaoApiClient; + + @Override + public String getIdFromKakao(String baseUrl, String kakaoCode) { + String redirectUrl = baseUrl + KAKAO_ROUTER; + KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( + GRANT_TYPE, + clientId, + redirectUrl, + kakaoCode + ); + + KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + tokenResponse.accessToken()); + return String.valueOf(userResponse.id()); + } +} diff --git a/src/main/java/server/poptato/external/kakao/service/SocialService.java b/src/main/java/server/poptato/external/kakao/service/SocialService.java new file mode 100644 index 0000000..719f3c5 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/service/SocialService.java @@ -0,0 +1,7 @@ +package server.poptato.external.kakao.service; + + +public abstract class SocialService { + public abstract String getIdFromKakao(String baseUrl, String kakaoCode); + +} \ No newline at end of file From 1edacc531bb02cbe8a1574abc155d8396d56085c Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 18:31:28 +0900 Subject: [PATCH 025/177] =?UTF-8?q?chore:=20user=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EB=B0=8F=20=EC=97=94=ED=8B=B0=EB=94=94=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20response=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/PoptatoApplication.java | 2 ++ .../poptato/auth/api/AuthController.java | 18 ++++++++----- .../auth/application/service/AuthService.java | 20 ++++++++++---- .../errorcode/BaseExceptionErrorCode.java | 1 + .../poptato/user/domain/entity/User.java | 27 +++++++++++++++++++ .../domain/repository/UserRepository.java | 10 +++++++ 6 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 src/main/java/server/poptato/user/domain/entity/User.java create mode 100644 src/main/java/server/poptato/user/domain/repository/UserRepository.java diff --git a/src/main/java/server/poptato/PoptatoApplication.java b/src/main/java/server/poptato/PoptatoApplication.java index 7e98553..3baf390 100644 --- a/src/main/java/server/poptato/PoptatoApplication.java +++ b/src/main/java/server/poptato/PoptatoApplication.java @@ -2,8 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication +@EnableFeignClients public class PoptatoApplication { public static void main(String[] args) { diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 32c2b04..3d2f4db 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -6,10 +6,15 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import server.poptato.auth.application.dto.request.TokenRequestDto; import server.poptato.auth.application.dto.response.LoginResponseDto; +import server.poptato.auth.application.service.AuthService; import server.poptato.config.resolver.kakao.KakaoCode; +import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; + @RestController @RequestMapping("/auth") @RequiredArgsConstructor @@ -23,19 +28,20 @@ public BaseResponse login( @KakaoCode String kakaoCode, HttpServletRequest request) { String originHeader = request.getHeader(ORIGIN); - authService.login(originHeader, kakaoCode) - return BaseResponse.success(SOCIAL_LOGIN_SUCCESS, ); + LoginResponseDto response = authService.login(originHeader, kakaoCode); + return new BaseResponse<>(response); } @PostMapping("/logout") - public SuccessNonDataResponse logout(HttpServletRequest request) { + public BaseResponse logout(HttpServletRequest request) { Long userId = (Long) request.getAttribute("userId"); // `userId`๋ฅผ ํ—ค๋”์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ๊ฐ€์ • authService.logout(userId); - return SuccessNonDataResponse.success(LOGOUT_SUCCESS); + return new BaseResponse(SUCCESS); } @PostMapping("/refresh") - public SuccessResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { - return SuccessResponse.success(REFRESH_SUCCESS, authService.refresh(tokenRequestDto)); + public BaseResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { + TokenPair response = authService.refresh(tokenRequestDto); + return new BaseResponse<>(response); } } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 069030c..8434fd1 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -2,11 +2,21 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import server.poptato.auth.application.dto.request.TokenRequestDto; import server.poptato.auth.application.dto.response.LoginResponseDto; import server.poptato.config.jwt.JwtService; +import server.poptato.external.kakao.service.KakaoSocialService; +import server.poptato.global.dto.TokenPair; +import server.poptato.global.dto.UserCreateResponse; +import server.poptato.global.exception.BaseException; +import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; import java.util.Optional; +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.TOKEN_TIME_EXPIRED_EXCEPTION; +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.USER_NOT_FOUND_EXCEPTION; + @Service @RequiredArgsConstructor public class AuthService { @@ -24,7 +34,7 @@ public LoginResponseDto login(final String baseUrl, final String kakaoCode) { userRepository.save(newUser); TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); - throw new NotFoundUserException(USER_NOT_FOUND_EXCEPTION, tokenPair); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken()); } TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.get().getId())); return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken()); @@ -41,19 +51,19 @@ public UserCreateResponse createUserToken(String useId) { public void logout(final Long userId) { - final User user = userRepository.findById(userId).orElseThrow(() -> new NotFoundException(USER_NOT_FOUND_EXCEPTION)); + final User user = userRepository.findById(userId).orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); jwtService.deleteRefreshToken(String.valueOf(userId)); } public TokenPair refresh(final TokenRequestDto tokenRequestDto) { if (!jwtService.verifyToken(tokenRequestDto.refreshToken())) - throw new UnAuthorizedException(TOKEN_TIME_EXPIRED_EXCEPTION); + throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); final String userId = jwtService.getUserIdInToken(tokenRequestDto.refreshToken()); - final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new NotFoundException(USER_NOT_FOUND_EXCEPTION)); + final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); if (!jwtService.compareRefreshToken(userId, tokenRequestDto.refreshToken())) - throw new UnAuthorizedException(TOKEN_TIME_EXPIRED_EXCEPTION); + throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); final TokenPair tokenPair = jwtService.generateTokenPair(userId); jwtService.saveRefreshToken(userId, tokenPair.refreshToken()); diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index 8d7c932..13e37fb 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -25,6 +25,7 @@ public enum BaseExceptionErrorCode implements ResponseStatus { TOKEN_TIME_EXPIRED_EXCEPTION(2007,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."), INVALID_TOKEN_EXCEPTION(2008,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), EMPTY_KAKAO_CODE_EXCEPTION(2009,HttpStatus.BAD_REQUEST.value(),"์นด์นด์˜ค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"), + USER_NOT_FOUND_EXCEPTION(2009,HttpStatus.NOT_FOUND.value(),"์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), /** * 3000: Server, Database ์˜ค๋ฅ˜ (INTERNAL_SERVER_ERROR) diff --git a/src/main/java/server/poptato/user/domain/entity/User.java b/src/main/java/server/poptato/user/domain/entity/User.java new file mode 100644 index 0000000..7300ee5 --- /dev/null +++ b/src/main/java/server/poptato/user/domain/entity/User.java @@ -0,0 +1,27 @@ +package server.poptato.user.domain.entity; + +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@Entity +@Getter +@SuperBuilder +@Inheritance(strategy = InheritanceType.JOINED) +@NoArgsConstructor +@AllArgsConstructor +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotNull + private String kakaoId; + + private String name; + +} diff --git a/src/main/java/server/poptato/user/domain/repository/UserRepository.java b/src/main/java/server/poptato/user/domain/repository/UserRepository.java new file mode 100644 index 0000000..edad900 --- /dev/null +++ b/src/main/java/server/poptato/user/domain/repository/UserRepository.java @@ -0,0 +1,10 @@ +package server.poptato.user.domain.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import server.poptato.user.domain.entity.User; + +import java.util.Optional; + +public interface UserRepository extends JpaRepository { + public Optional findByKakaoId(String kakaoId); +} From 31807702c95dc18a5ab71ab6fbcb396c5a560cb1 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 19:24:36 +0900 Subject: [PATCH 026/177] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85,=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=8B=9C=20?= =?UTF-8?q?=EC=9D=91=EB=8B=B5=20=EA=B5=AC=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/auth/api/AuthController.java | 9 +++++++-- .../application/dto/response/LoginResponseDto.java | 2 +- .../poptato/auth/application/service/AuthService.java | 4 ++-- .../exception/errorcode/BaseExceptionErrorCode.java | 3 +++ .../server/poptato/global/response/BaseResponse.java | 10 +++++----- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 3d2f4db..6e011bc 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -12,8 +12,9 @@ import server.poptato.config.resolver.kakao.KakaoCode; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; +import server.poptato.global.response.status.ResponseStatus; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; @RestController @RequestMapping("/auth") @@ -29,7 +30,11 @@ public BaseResponse login( HttpServletRequest request) { String originHeader = request.getHeader(ORIGIN); LoginResponseDto response = authService.login(originHeader, kakaoCode); - return new BaseResponse<>(response); + if (response.isNewUser()) { + return new BaseResponse<>(SUCCESS_REGISTER, response); // ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ์‘๋‹ต + } else { + return new BaseResponse<>(SUCCESS_LOGIN, response); // ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‘๋‹ต + } } @PostMapping("/logout") diff --git a/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java b/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java index 0bab349..20e1035 100644 --- a/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java +++ b/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java @@ -1,4 +1,4 @@ package server.poptato.auth.application.dto.response; -public record LoginResponseDto(String accessToken, String refreshToken) { +public record LoginResponseDto(String accessToken, String refreshToken, boolean isNewUser) { } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 8434fd1..0b4063a 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -34,10 +34,10 @@ public LoginResponseDto login(final String baseUrl, final String kakaoCode) { userRepository.save(newUser); TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken()); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), true); } TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.get().getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken()); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), false); } public UserCreateResponse createUserToken(String useId) { diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index 13e37fb..5637840 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -11,6 +11,9 @@ public enum BaseExceptionErrorCode implements ResponseStatus { * 1000: ์š”์ฒญ ์„ฑ๊ณต (OK) */ SUCCESS(1000, HttpStatus.OK.value(), "์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), + SUCCESS_LOGIN(1001, HttpStatus.OK.value(), "๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), + SUCCESS_REGISTER(1002, HttpStatus.OK.value(), "ํšŒ์›๊ฐ€์ž…์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), + /** * 2000: Request ์˜ค๋ฅ˜ (BAD_REQUEST) diff --git a/src/main/java/server/poptato/global/response/BaseResponse.java b/src/main/java/server/poptato/global/response/BaseResponse.java index b6679bf..8759924 100644 --- a/src/main/java/server/poptato/global/response/BaseResponse.java +++ b/src/main/java/server/poptato/global/response/BaseResponse.java @@ -18,14 +18,14 @@ public class BaseResponse implements ResponseStatus { private final T result; - public BaseResponse(T result) { - this.code = SUCCESS.getCode(); - this.status = SUCCESS.getStatus(); - this.message = SUCCESS.getMessage(); + public BaseResponse(ResponseStatus status, T result) { + this.code = status.getCode(); + this.status = status.getStatus(); + this.message = status.getMessage(); this.result = result; } - public BaseResponse() { + public BaseResponse(T result) { this.code = SUCCESS.getCode(); this.status = SUCCESS.getStatus(); this.message = SUCCESS.getMessage(); From feed5eab037f7730adb3a44137fafe8c7aafe361 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 20:24:44 +0900 Subject: [PATCH 027/177] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=9D=B4=EB=A6=84=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EA=B8=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/application/service/AuthService.java | 6 +++++- .../external/kakao/dto/response/KakaoUserInfo.java | 4 ++++ .../external/kakao/dto/response/KakaoUserResponse.java | 7 +++++-- .../external/kakao/service/KakaoSocialService.java | 8 ++++++-- .../poptato/external/kakao/service/SocialService.java | 4 +++- 5 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 0b4063a..d793949 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -5,6 +5,7 @@ import server.poptato.auth.application.dto.request.TokenRequestDto; import server.poptato.auth.application.dto.response.LoginResponseDto; import server.poptato.config.jwt.JwtService; +import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.service.KakaoSocialService; import server.poptato.global.dto.TokenPair; import server.poptato.global.dto.UserCreateResponse; @@ -25,11 +26,14 @@ public class AuthService { private final UserRepository userRepository; public LoginResponseDto login(final String baseUrl, final String kakaoCode) { - String kakaoId = kakaoSocialService.getIdFromKakao(baseUrl, kakaoCode); + KakaoUserInfo info = kakaoSocialService.getIdAndNickNameFromKakao(baseUrl, kakaoCode); + String kakaoId = info.kakaoId(); + String name = info.nickname(); Optional user = userRepository.findByKakaoId(kakaoId); if (user.isEmpty()) { User newUser = User.builder() .kakaoId(kakaoId) + .name(name) .build(); userRepository.save(newUser); diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java new file mode 100644 index 0000000..e716748 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java @@ -0,0 +1,4 @@ +package server.poptato.external.kakao.dto.response; + +public record KakaoUserInfo(String kakaoId, String nickname) { +} diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java index 8092a6a..cc7966f 100644 --- a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java +++ b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java @@ -1,4 +1,7 @@ package server.poptato.external.kakao.dto.response; -public record KakaoUserResponse(Long id) { -} +public record KakaoUserResponse(Long id, KakaoUserProperties properties) { + + public record KakaoUserProperties(String nickname) { + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java index 3e7e410..8be53b1 100644 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import server.poptato.external.kakao.dto.response.KakaoAccessTokenResponse; +import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.dto.response.KakaoUserResponse; import server.poptato.external.kakao.feign.KakaoApiClient; import server.poptato.external.kakao.feign.KakaoAuthApiClient; @@ -22,7 +23,7 @@ public class KakaoSocialService extends SocialService { private final KakaoApiClient kakaoApiClient; @Override - public String getIdFromKakao(String baseUrl, String kakaoCode) { + public KakaoUserInfo getIdAndNickNameFromKakao(String baseUrl, String kakaoCode) { String redirectUrl = baseUrl + KAKAO_ROUTER; KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( GRANT_TYPE, @@ -31,7 +32,10 @@ public String getIdFromKakao(String baseUrl, String kakaoCode) { kakaoCode ); + // ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญ KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + tokenResponse.accessToken()); - return String.valueOf(userResponse.id()); + + // ID์™€ ๋‹‰๋„ค์ž„์„ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ + return new KakaoUserInfo(String.valueOf(userResponse.id()), userResponse.properties().nickname()); } } diff --git a/src/main/java/server/poptato/external/kakao/service/SocialService.java b/src/main/java/server/poptato/external/kakao/service/SocialService.java index 719f3c5..d0ac2bd 100644 --- a/src/main/java/server/poptato/external/kakao/service/SocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/SocialService.java @@ -1,7 +1,9 @@ package server.poptato.external.kakao.service; +import server.poptato.external.kakao.dto.response.KakaoUserInfo; + public abstract class SocialService { - public abstract String getIdFromKakao(String baseUrl, String kakaoCode); + public abstract KakaoUserInfo getIdAndNickNameFromKakao(String baseUrl, String kakaoCode); } \ No newline at end of file From 193b15d59e6dd063bd177b6f5421809b8abc57ff Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 7 Oct 2024 20:42:09 +0900 Subject: [PATCH 028/177] =?UTF-8?q?fix:=20userId=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/dto/response/LoginResponseDto.java | 2 +- .../server/poptato/auth/application/service/AuthService.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java b/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java index 20e1035..322b370 100644 --- a/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java +++ b/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java @@ -1,4 +1,4 @@ package server.poptato.auth.application.dto.response; -public record LoginResponseDto(String accessToken, String refreshToken, boolean isNewUser) { +public record LoginResponseDto(String accessToken, String refreshToken, boolean isNewUser, Long userId) { } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index d793949..179e1b9 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -38,10 +38,10 @@ public LoginResponseDto login(final String baseUrl, final String kakaoCode) { userRepository.save(newUser); TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), true); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), true, newUser.getId()); } TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.get().getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), false); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), false, user.get().getId()); } public UserCreateResponse createUserToken(String useId) { From 5f70786326aa0b3bbf6d3aa1690212be710b4efb Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 8 Oct 2024 13:15:20 +0900 Subject: [PATCH 029/177] =?UTF-8?q?feat:=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{application/dto => api}/request/TokenRequestDto.java | 0 .../application/{dto => }/response/LoginResponseDto.java | 0 .../java/server/poptato/global/dto/UserCreateResponse.java | 7 ------- 3 files changed, 7 deletions(-) rename src/main/java/server/poptato/auth/{application/dto => api}/request/TokenRequestDto.java (100%) rename src/main/java/server/poptato/auth/application/{dto => }/response/LoginResponseDto.java (100%) delete mode 100644 src/main/java/server/poptato/global/dto/UserCreateResponse.java diff --git a/src/main/java/server/poptato/auth/application/dto/request/TokenRequestDto.java b/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java similarity index 100% rename from src/main/java/server/poptato/auth/application/dto/request/TokenRequestDto.java rename to src/main/java/server/poptato/auth/api/request/TokenRequestDto.java diff --git a/src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java b/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java similarity index 100% rename from src/main/java/server/poptato/auth/application/dto/response/LoginResponseDto.java rename to src/main/java/server/poptato/auth/application/response/LoginResponseDto.java diff --git a/src/main/java/server/poptato/global/dto/UserCreateResponse.java b/src/main/java/server/poptato/global/dto/UserCreateResponse.java deleted file mode 100644 index eda7edd..0000000 --- a/src/main/java/server/poptato/global/dto/UserCreateResponse.java +++ /dev/null @@ -1,7 +0,0 @@ -package server.poptato.global.dto; - -public record UserCreateResponse( - String accessToken, - String refreshToken -) { -} From e38ea07312305a9d5fa534e9cc524cbf8ed4f326 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 8 Oct 2024 13:22:26 +0900 Subject: [PATCH 030/177] =?UTF-8?q?refactor:=20repository=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/PoptatoApplication.java | 2 ++ .../poptato/auth/api/AuthController.java | 5 ++-- .../auth/api/request/TokenRequestDto.java | 2 +- .../response/LoginResponseDto.java | 2 +- .../auth/application/service/AuthService.java | 22 +++++---------- .../kakao/dto/response/KakaoUserInfo.java | 2 +- .../kakao/dto/response/KakaoUserResponse.java | 7 +++-- .../kakao/service/KakaoSocialService.java | 4 +-- .../external/kakao/service/SocialService.java | 2 +- .../poptato/user/domain/entity/User.java | 27 ++++++++++++++----- .../domain/repository/UserRepository.java | 7 +++-- .../infra/repository/JpaUserRepository.java | 12 +++++++++ 12 files changed, 57 insertions(+), 37 deletions(-) create mode 100644 src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java diff --git a/src/main/java/server/poptato/PoptatoApplication.java b/src/main/java/server/poptato/PoptatoApplication.java index 3baf390..5b69848 100644 --- a/src/main/java/server/poptato/PoptatoApplication.java +++ b/src/main/java/server/poptato/PoptatoApplication.java @@ -3,9 +3,11 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; @SpringBootApplication @EnableFeignClients +@EnableJpaAuditing public class PoptatoApplication { public static void main(String[] args) { diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 6e011bc..54f1b7a 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -6,13 +6,12 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import server.poptato.auth.application.dto.request.TokenRequestDto; -import server.poptato.auth.application.dto.response.LoginResponseDto; +import server.poptato.auth.api.request.TokenRequestDto; +import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; import server.poptato.config.resolver.kakao.KakaoCode; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; -import server.poptato.global.response.status.ResponseStatus; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; diff --git a/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java b/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java index 29ea5a1..35d801c 100644 --- a/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java +++ b/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java @@ -1,4 +1,4 @@ -package server.poptato.auth.application.dto.request; +package server.poptato.auth.api.request; public record TokenRequestDto(String accessToken, String refreshToken) { } diff --git a/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java b/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java index 322b370..efd19ad 100644 --- a/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java +++ b/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java @@ -1,4 +1,4 @@ -package server.poptato.auth.application.dto.response; +package server.poptato.auth.application.response; public record LoginResponseDto(String accessToken, String refreshToken, boolean isNewUser, Long userId) { } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 179e1b9..b6e5f19 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -2,16 +2,16 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import server.poptato.auth.application.dto.request.TokenRequestDto; -import server.poptato.auth.application.dto.response.LoginResponseDto; +import server.poptato.auth.api.request.TokenRequestDto; +import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.config.jwt.JwtService; import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.service.KakaoSocialService; import server.poptato.global.dto.TokenPair; -import server.poptato.global.dto.UserCreateResponse; import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; +import server.poptato.user.infra.repository.JpaUserRepository; import java.util.Optional; @@ -23,17 +23,19 @@ public class AuthService { private final JwtService jwtService; private final KakaoSocialService kakaoSocialService; - private final UserRepository userRepository; + private final JpaUserRepository userRepository; public LoginResponseDto login(final String baseUrl, final String kakaoCode) { - KakaoUserInfo info = kakaoSocialService.getIdAndNickNameFromKakao(baseUrl, kakaoCode); + KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(baseUrl, kakaoCode); String kakaoId = info.kakaoId(); String name = info.nickname(); + String email = info.email(); Optional user = userRepository.findByKakaoId(kakaoId); if (user.isEmpty()) { User newUser = User.builder() .kakaoId(kakaoId) .name(name) + .email(email) .build(); userRepository.save(newUser); @@ -44,16 +46,6 @@ public LoginResponseDto login(final String baseUrl, final String kakaoCode) { return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), false, user.get().getId()); } - public UserCreateResponse createUserToken(String useId) { - - TokenPair tokenPair = jwtService.generateTokenPair(useId); - UserCreateResponse userCreateResponse = new UserCreateResponse(tokenPair.accessToken(), tokenPair.refreshToken()); - - return userCreateResponse; - } - - - public void logout(final Long userId) { final User user = userRepository.findById(userId).orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); jwtService.deleteRefreshToken(String.valueOf(userId)); diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java index e716748..2d4b00d 100644 --- a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java +++ b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java @@ -1,4 +1,4 @@ package server.poptato.external.kakao.dto.response; -public record KakaoUserInfo(String kakaoId, String nickname) { +public record KakaoUserInfo(String kakaoId, String nickname, String email) { } diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java index cc7966f..a6294c5 100644 --- a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java +++ b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java @@ -1,7 +1,10 @@ package server.poptato.external.kakao.dto.response; -public record KakaoUserResponse(Long id, KakaoUserProperties properties) { +public record KakaoUserResponse(Long id, KakaoUserProperties properties, KakaoAccount kakao_account) { public record KakaoUserProperties(String nickname) { } -} \ No newline at end of file + + public record KakaoAccount(String email) { // ์ด๋ฉ”์ผ์„ ๋‹ด์„ ํ•„๋“œ ์ถ”๊ฐ€ + } +} diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java index 8be53b1..c9fe664 100644 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -23,7 +23,7 @@ public class KakaoSocialService extends SocialService { private final KakaoApiClient kakaoApiClient; @Override - public KakaoUserInfo getIdAndNickNameFromKakao(String baseUrl, String kakaoCode) { + public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String baseUrl, String kakaoCode) { String redirectUrl = baseUrl + KAKAO_ROUTER; KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( GRANT_TYPE, @@ -36,6 +36,6 @@ public KakaoUserInfo getIdAndNickNameFromKakao(String baseUrl, String kakaoCode) KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + tokenResponse.accessToken()); // ID์™€ ๋‹‰๋„ค์ž„์„ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ - return new KakaoUserInfo(String.valueOf(userResponse.id()), userResponse.properties().nickname()); + return new KakaoUserInfo(String.valueOf(userResponse.id()), userResponse.properties().nickname(), userResponse.kakao_account().email()); } } diff --git a/src/main/java/server/poptato/external/kakao/service/SocialService.java b/src/main/java/server/poptato/external/kakao/service/SocialService.java index d0ac2bd..346ae80 100644 --- a/src/main/java/server/poptato/external/kakao/service/SocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/SocialService.java @@ -4,6 +4,6 @@ import server.poptato.external.kakao.dto.response.KakaoUserInfo; public abstract class SocialService { - public abstract KakaoUserInfo getIdAndNickNameFromKakao(String baseUrl, String kakaoCode); + public abstract KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String baseUrl, String kakaoCode); } \ No newline at end of file diff --git a/src/main/java/server/poptato/user/domain/entity/User.java b/src/main/java/server/poptato/user/domain/entity/User.java index 7300ee5..6445cc1 100644 --- a/src/main/java/server/poptato/user/domain/entity/User.java +++ b/src/main/java/server/poptato/user/domain/entity/User.java @@ -2,17 +2,19 @@ import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; +import lombok.*; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; @Entity @Getter -@SuperBuilder -@Inheritance(strategy = InheritanceType.JOINED) -@NoArgsConstructor +@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor +@EntityListeners(AuditingEntityListener.class) // Auditing ๊ธฐ๋Šฅ ์ถ” public class User { @Id @@ -22,6 +24,17 @@ public class User { @NotNull private String kakaoId; + @NotNull private String name; + @NotNull + private String email; + + @CreatedDate // ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑ๋  ๋•Œ ์‹œ๊ฐ„ ์ž๋™ ์ €์žฅ + @Column(updatable = false) // ์ƒ์„ฑ์ผ์€ ์ˆ˜์ • ๋ถˆ๊ฐ€ + private LocalDateTime createDate; + + @LastModifiedDate // ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ ์‹œ๊ฐ„ ์ž๋™ ์ €์žฅ + private LocalDateTime modifyDate; + } diff --git a/src/main/java/server/poptato/user/domain/repository/UserRepository.java b/src/main/java/server/poptato/user/domain/repository/UserRepository.java index edad900..e2fe7fd 100644 --- a/src/main/java/server/poptato/user/domain/repository/UserRepository.java +++ b/src/main/java/server/poptato/user/domain/repository/UserRepository.java @@ -1,10 +1,9 @@ package server.poptato.user.domain.repository; -import org.springframework.data.jpa.repository.JpaRepository; import server.poptato.user.domain.entity.User; import java.util.Optional; -public interface UserRepository extends JpaRepository { - public Optional findByKakaoId(String kakaoId); -} +public interface UserRepository { + Optional findByKakaoId(String kakaoId); +} \ No newline at end of file diff --git a/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java b/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java new file mode 100644 index 0000000..d764c8d --- /dev/null +++ b/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java @@ -0,0 +1,12 @@ +package server.poptato.user.infra.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; + +import java.util.Optional; + +public interface JpaUserRepository extends UserRepository, JpaRepository { + @Override + Optional findByKakaoId(String kakaoId); +} \ No newline at end of file From 5f9a2f95645905ce52fb74bbfb0940f0b1d50a88 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 8 Oct 2024 13:25:37 +0900 Subject: [PATCH 031/177] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=A1=9C=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/service/AuthService.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index b6e5f19..ad18013 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -32,15 +32,7 @@ public LoginResponseDto login(final String baseUrl, final String kakaoCode) { String email = info.email(); Optional user = userRepository.findByKakaoId(kakaoId); if (user.isEmpty()) { - User newUser = User.builder() - .kakaoId(kakaoId) - .name(name) - .email(email) - .build(); - userRepository.save(newUser); - - TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), true, newUser.getId()); + return createNewUserResponse(kakaoId, name, email); } TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.get().getId())); return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), false, user.get().getId()); @@ -65,4 +57,17 @@ public TokenPair refresh(final TokenRequestDto tokenRequestDto) { jwtService.saveRefreshToken(userId, tokenPair.refreshToken()); return tokenPair; } + + private LoginResponseDto createNewUserResponse(String kakaoId, String name, String email) { + User newUser = User.builder() + .kakaoId(kakaoId) + .name(name) + .email(email) + .build(); + userRepository.save(newUser); + + // ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์‘๋‹ต ๊ฐ์ฒด ์ƒ์„ฑ + TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), true, newUser.getId()); + } } From c88cbcc4e9c472fd5a1730d30c3b56363c17ea6d Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 8 Oct 2024 13:52:28 +0900 Subject: [PATCH 032/177] =?UTF-8?q?refactor:=20userId=20resolver=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/auth/api/AuthController.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 54f1b7a..ed83c5e 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -9,7 +9,9 @@ import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; +import server.poptato.config.jwt.JwtService; import server.poptato.config.resolver.kakao.KakaoCode; +import server.poptato.config.resolver.user.UserId; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; @@ -22,6 +24,7 @@ public class AuthController { private static final String ORIGIN = "origin"; private final AuthService authService; + private final JwtService jwtService; @PostMapping("/login") public BaseResponse login( @@ -37,12 +40,10 @@ public BaseResponse login( } @PostMapping("/logout") - public BaseResponse logout(HttpServletRequest request) { - Long userId = (Long) request.getAttribute("userId"); // `userId`๋ฅผ ํ—ค๋”์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ๊ฐ€์ • + public BaseResponse logout(@UserId Long userId) { authService.logout(userId); return new BaseResponse(SUCCESS); } - @PostMapping("/refresh") public BaseResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { TokenPair response = authService.refresh(tokenRequestDto); From 58fd3b5e8433d15191b0e6e4b8e18df64f2d9999 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 8 Oct 2024 23:30:30 +0900 Subject: [PATCH 033/177] =?UTF-8?q?refactor:=20login=20api=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthController.java | 20 ++++------- .../auth/application/service/AuthService.java | 2 -- .../application/service}/JwtService.java | 3 +- .../java/server/poptato/config/WebConfig.java | 7 ++-- .../kakao/resolver}/KakaoCode.java | 2 +- .../kakao/resolver}/KakaoCodeResolver.java | 4 +-- .../external/kakao/resolver/OriginHeader.java | 11 +++++++ .../kakao/resolver/OriginResolver.java | 33 +++++++++++++++++++ .../redis/RedisConfig.java | 2 +- .../errorcode/BaseExceptionErrorCode.java | 4 ++- .../user => user/resolver}/UserId.java | 2 +- .../user => user/resolver}/UserResolver.java | 5 +-- 12 files changed, 66 insertions(+), 29 deletions(-) rename src/main/java/server/poptato/{config/jwt => auth/application/service}/JwtService.java (98%) rename src/main/java/server/poptato/{config/resolver/kakao => external/kakao/resolver}/KakaoCode.java (84%) rename src/main/java/server/poptato/{config/resolver/kakao => external/kakao/resolver}/KakaoCodeResolver.java (88%) create mode 100644 src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java create mode 100644 src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java rename src/main/java/server/poptato/{config => external}/redis/RedisConfig.java (96%) rename src/main/java/server/poptato/{config/resolver/user => user/resolver}/UserId.java (85%) rename src/main/java/server/poptato/{config/resolver/user => user/resolver}/UserResolver.java (93%) diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index ed83c5e..c96f376 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -1,6 +1,5 @@ package server.poptato.auth.api; -import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -9,11 +8,11 @@ import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; -import server.poptato.config.jwt.JwtService; -import server.poptato.config.resolver.kakao.KakaoCode; -import server.poptato.config.resolver.user.UserId; +import server.poptato.external.kakao.resolver.KakaoCode; +import server.poptato.external.kakao.resolver.OriginHeader; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; +import server.poptato.user.resolver.UserId; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; @@ -22,21 +21,14 @@ @RequiredArgsConstructor public class AuthController { - private static final String ORIGIN = "origin"; private final AuthService authService; - private final JwtService jwtService; @PostMapping("/login") public BaseResponse login( @KakaoCode String kakaoCode, - HttpServletRequest request) { - String originHeader = request.getHeader(ORIGIN); + @OriginHeader String originHeader) { LoginResponseDto response = authService.login(originHeader, kakaoCode); - if (response.isNewUser()) { - return new BaseResponse<>(SUCCESS_REGISTER, response); // ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ์‘๋‹ต - } else { - return new BaseResponse<>(SUCCESS_LOGIN, response); // ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‘๋‹ต - } + return new BaseResponse<>(SUCCESS, response); } @PostMapping("/logout") @@ -47,6 +39,6 @@ public BaseResponse logout(@UserId Long userId) { @PostMapping("/refresh") public BaseResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { TokenPair response = authService.refresh(tokenRequestDto); - return new BaseResponse<>(response); + return new BaseResponse<>(SUCCESS, response); } } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index ad18013..3535455 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -4,13 +4,11 @@ import org.springframework.stereotype.Service; import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; -import server.poptato.config.jwt.JwtService; import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.service.KakaoSocialService; import server.poptato.global.dto.TokenPair; import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; -import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.infra.repository.JpaUserRepository; import java.util.Optional; diff --git a/src/main/java/server/poptato/config/jwt/JwtService.java b/src/main/java/server/poptato/auth/application/service/JwtService.java similarity index 98% rename from src/main/java/server/poptato/config/jwt/JwtService.java rename to src/main/java/server/poptato/auth/application/service/JwtService.java index 0434a2f..c049ee8 100644 --- a/src/main/java/server/poptato/config/jwt/JwtService.java +++ b/src/main/java/server/poptato/auth/application/service/JwtService.java @@ -1,4 +1,4 @@ -package server.poptato.config.jwt; +package server.poptato.auth.application.service; @@ -14,7 +14,6 @@ import org.springframework.stereotype.Service; import server.poptato.global.dto.TokenPair; import server.poptato.global.exception.BaseException; -import server.poptato.global.response.BaseErrorResponse; import java.nio.charset.StandardCharsets; import java.security.Key; diff --git a/src/main/java/server/poptato/config/WebConfig.java b/src/main/java/server/poptato/config/WebConfig.java index 45543be..ffa78f1 100644 --- a/src/main/java/server/poptato/config/WebConfig.java +++ b/src/main/java/server/poptato/config/WebConfig.java @@ -6,8 +6,9 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import server.poptato.config.resolver.kakao.KakaoCodeResolver; -import server.poptato.config.resolver.user.UserResolver; +import server.poptato.external.kakao.resolver.KakaoCodeResolver; +import server.poptato.external.kakao.resolver.OriginResolver; +import server.poptato.user.resolver.UserResolver; import java.util.List; @@ -16,6 +17,7 @@ public class WebConfig implements WebMvcConfigurer { private final UserResolver userResolver; private final KakaoCodeResolver kakaoCodeResolver; + private final OriginResolver originResolver; @Override public void addCorsMappings(final CorsRegistry registry) { @@ -31,6 +33,7 @@ public void addCorsMappings(final CorsRegistry registry) { public void addArgumentResolvers(List resolvers) { resolvers.add(userResolver); resolvers.add(kakaoCodeResolver); + resolvers.add(originResolver); } } \ No newline at end of file diff --git a/src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java b/src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java similarity index 84% rename from src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java rename to src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java index e7d4622..209e0e4 100644 --- a/src/main/java/server/poptato/config/resolver/kakao/KakaoCode.java +++ b/src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java @@ -1,4 +1,4 @@ -package server.poptato.config.resolver.kakao; +package server.poptato.external.kakao.resolver; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java b/src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java similarity index 88% rename from src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java rename to src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java index 1c64f24..e651290 100644 --- a/src/main/java/server/poptato/config/resolver/kakao/KakaoCodeResolver.java +++ b/src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java @@ -1,4 +1,4 @@ -package server.poptato.config.resolver.kakao; +package server.poptato.external.kakao.resolver; import jakarta.servlet.http.HttpServletRequest; @@ -10,10 +10,8 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; import server.poptato.global.exception.BaseException; -import server.poptato.global.response.BaseErrorResponse; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.EMPTY_KAKAO_CODE_EXCEPTION; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.NO_REQUEST_PARAMETER; @Component diff --git a/src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java b/src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java new file mode 100644 index 0000000..ee64856 --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java @@ -0,0 +1,11 @@ +package server.poptato.external.kakao.resolver; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) +public @interface OriginHeader { +} \ No newline at end of file diff --git a/src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java b/src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java new file mode 100644 index 0000000..c24656e --- /dev/null +++ b/src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java @@ -0,0 +1,33 @@ +package server.poptato.external.kakao.resolver; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.core.MethodParameter; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.support.WebDataBinderFactory; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.ModelAndViewContainer; +import server.poptato.global.exception.BaseException; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.ORIGIN_HEADER_MISSING_EXCEPTION; + +@Component +public class OriginResolver implements HandlerMethodArgumentResolver { + + private static final String ORIGIN = "origin"; + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.hasParameterAnnotation(OriginHeader.class) && String.class.equals(parameter.getParameterType()); + } + + @Override + public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { + HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest(); + String originHeader = request.getHeader(ORIGIN); + if (originHeader == null || originHeader.isBlank()) { + throw new BaseException(ORIGIN_HEADER_MISSING_EXCEPTION); + } + return originHeader; + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/config/redis/RedisConfig.java b/src/main/java/server/poptato/external/redis/RedisConfig.java similarity index 96% rename from src/main/java/server/poptato/config/redis/RedisConfig.java rename to src/main/java/server/poptato/external/redis/RedisConfig.java index a3b853e..5747454 100644 --- a/src/main/java/server/poptato/config/redis/RedisConfig.java +++ b/src/main/java/server/poptato/external/redis/RedisConfig.java @@ -1,4 +1,4 @@ -package server.poptato.config.redis; +package server.poptato.external.redis; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index 5637840..ad93d06 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -28,7 +28,9 @@ public enum BaseExceptionErrorCode implements ResponseStatus { TOKEN_TIME_EXPIRED_EXCEPTION(2007,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."), INVALID_TOKEN_EXCEPTION(2008,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), EMPTY_KAKAO_CODE_EXCEPTION(2009,HttpStatus.BAD_REQUEST.value(),"์นด์นด์˜ค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"), - USER_NOT_FOUND_EXCEPTION(2009,HttpStatus.NOT_FOUND.value(),"์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), + ORIGIN_HEADER_MISSING_EXCEPTION(2010,HttpStatus.BAD_REQUEST.value(),"origin ํ—ค๋”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"), + USER_NOT_FOUND_EXCEPTION(2011,HttpStatus.NOT_FOUND.value(),"์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), + /** * 3000: Server, Database ์˜ค๋ฅ˜ (INTERNAL_SERVER_ERROR) diff --git a/src/main/java/server/poptato/config/resolver/user/UserId.java b/src/main/java/server/poptato/user/resolver/UserId.java similarity index 85% rename from src/main/java/server/poptato/config/resolver/user/UserId.java rename to src/main/java/server/poptato/user/resolver/UserId.java index bf46ab0..693e004 100644 --- a/src/main/java/server/poptato/config/resolver/user/UserId.java +++ b/src/main/java/server/poptato/user/resolver/UserId.java @@ -1,4 +1,4 @@ -package server.poptato.config.resolver.user; +package server.poptato.user.resolver; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/server/poptato/config/resolver/user/UserResolver.java b/src/main/java/server/poptato/user/resolver/UserResolver.java similarity index 93% rename from src/main/java/server/poptato/config/resolver/user/UserResolver.java rename to src/main/java/server/poptato/user/resolver/UserResolver.java index 9ad250b..f4907be 100644 --- a/src/main/java/server/poptato/config/resolver/user/UserResolver.java +++ b/src/main/java/server/poptato/user/resolver/UserResolver.java @@ -1,4 +1,4 @@ -package server.poptato.config.resolver.user; +package server.poptato.user.resolver; import jakarta.servlet.http.HttpServletRequest; @@ -9,9 +9,10 @@ import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; -import server.poptato.config.jwt.JwtService; +import server.poptato.auth.application.service.JwtService; import server.poptato.global.exception.BaseException; import server.poptato.global.response.BaseErrorResponse; +import server.poptato.user.resolver.UserId; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; From ee33bfe968797a3a9e08ed47ab0e964acfe1b984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Thu, 10 Oct 2024 16:14:44 +0900 Subject: [PATCH 034/177] =?UTF-8?q?chore:=20label.yml=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/label.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/label.yml diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml new file mode 100644 index 0000000..4613569 --- /dev/null +++ b/.github/workflows/label.yml @@ -0,0 +1,22 @@ +# This workflow will triage pull requests and apply a label based on the +# paths that are modified in the pull request. +# +# To use this workflow, you will need to set up a .github/labeler.yml +# file with configuration. For more information, see: +# https://github.com/actions/labeler + +name: Labeler +on: [pull_request_target] + +jobs: + label: + + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - uses: actions/labeler@v4 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" From 76f83dd3353054e84548a2091bfa71230aaec1f9 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 10 Oct 2024 16:21:31 +0900 Subject: [PATCH 035/177] =?UTF-8?q?fix:=20auto-assign=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/CODEOWNERS | 1 - .github/auto_assign.yml | 21 +++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) delete mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index fe5def0..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @yeonjookang @pkl0912 \ No newline at end of file diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml index 7c96020..97af18f 100644 --- a/.github/auto_assign.yml +++ b/.github/auto_assign.yml @@ -1,2 +1,19 @@ -addReviewers: false -addAssignees: author \ No newline at end of file +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: author + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - yeonjookang + - pkl0912 + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 1 + +# A number of assignees to add to the pull request +# Set to 0 to add all of the assignees. +# Uses numberOfReviewers if unset. +numberOfAssignees: 1 From d1d089557e12a0248e36cb8bc7e3ec5e9a1bb094 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 10 Oct 2024 16:45:06 +0900 Subject: [PATCH 036/177] =?UTF-8?q?fix:=20labeler.yml=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index c901f46..12cfd5c 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,12 +1,12 @@ feature: - - feature/* + - "feature/*" fix: - - fix/* + - "fix/*" chore: - - chore/* + - "chore/*" docs: - - docs/* + - "docs/*" refactor: - - refactor/* + - "refactor/*" bug: - - bug/* \ No newline at end of file + - "bug/*" From 438dcc79240515630b6192272c2b26a1e312cd18 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 10 Oct 2024 16:47:17 +0900 Subject: [PATCH 037/177] =?UTF-8?q?fix:=20labeler.yml=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index c901f46..12cfd5c 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,12 +1,12 @@ feature: - - feature/* + - "feature/*" fix: - - fix/* + - "fix/*" chore: - - chore/* + - "chore/*" docs: - - docs/* + - "docs/*" refactor: - - refactor/* + - "refactor/*" bug: - - bug/* \ No newline at end of file + - "bug/*" From 296d235f58a6c1a3a9fd9d4e1ce1488784256ae7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 11 Oct 2024 16:20:55 +0900 Subject: [PATCH 038/177] =?UTF-8?q?fix:=20labeler.yml=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler.yml | 38 +++++++++++++++++++++++++------------ .github/workflows/label.yml | 1 - 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 12cfd5c..b9fbbfd 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,12 +1,26 @@ -feature: - - "feature/*" -fix: - - "fix/*" -chore: - - "chore/*" -docs: - - "docs/*" -refactor: - - "refactor/*" -bug: - - "bug/*" +enable: + issues: false + prs: true + +labels: + 'fix': + include: + - '\bfix\b' + 'documentation': + include: + - '\bdocs\b' + 'test': + include: + - '\btest\b' + 'feature': + include: + - '\bfeat\b' + 'bug': + include: + - '\bbug\b' + 'refactor': + include: + - '\brefactor\b' + 'chore': + include: + - '\bchore\b' diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index 4613569..603ab6b 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -10,7 +10,6 @@ on: [pull_request_target] jobs: label: - runs-on: ubuntu-latest permissions: contents: read From 82b724e1d6f082f5bd9ba8df203951d8a55e052b Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Fri, 11 Oct 2024 16:44:39 +0900 Subject: [PATCH 039/177] =?UTF-8?q?fix:=20label.yml=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/label.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index 603ab6b..a5d565e 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -19,3 +19,4 @@ jobs: - uses: actions/labeler@v4 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" + configuration-path: ".github/labeler.yml" \ No newline at end of file From 9ee382eb911425a59a627eb8c8efbad416a7958f Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 12 Oct 2024 01:02:09 +0900 Subject: [PATCH 040/177] =?UTF-8?q?fix:=20label.yml=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler.yml | 4 ---- .github/workflows/label.yml | 10 ++++------ 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index b9fbbfd..3742aa2 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,7 +1,3 @@ -enable: - issues: false - prs: true - labels: 'fix': include: diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index b41fe82..a141037 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -10,13 +10,11 @@ on: [pull_request_target] jobs: label: - runs-on: ubuntu-latest permissions: contents: read pull-requests: write - + runs-on: ubuntu-latest steps: - - uses: actions/labeler@v4 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" - configuration-path: ".github/labeler.yml" + - uses: actions/labeler@v4 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" From 53b719c437af9411401ff2432911f1a9e64e005a Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 12 Oct 2024 01:44:53 +0900 Subject: [PATCH 041/177] =?UTF-8?q?fix:=20pr=20=EB=82=B4=EC=9A=A9=EC=97=90?= =?UTF-8?q?=20=EB=94=B0=EB=9D=BC=20label=20=EC=9E=90=EB=8F=99=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler-config.yml | 23 +++++++++++++++++++++++ .github/labeler.yml | 22 ---------------------- .github/workflows/label.yml | 35 +++++++++++++++++++++-------------- 3 files changed, 44 insertions(+), 36 deletions(-) create mode 100644 .github/labeler-config.yml delete mode 100644 .github/labeler.yml diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml new file mode 100644 index 0000000..62c031f --- /dev/null +++ b/.github/labeler-config.yml @@ -0,0 +1,23 @@ +filters: + - label: feat + regexs: + - /\bfeat\b/i + - /feature/i + - label: bug + regexs: + - /bug/i + - label: documentation + regexs: + - /docs/i + - label: test + regexs: + - /test/i + - label: fix + regexs: + - /fix/i + - label: chore + regexs: + - /\bchore(\(.*\))?:/i + - label: refactor + regexs: + - /refactor/i diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 3742aa2..0000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,22 +0,0 @@ -labels: - 'fix': - include: - - '\bfix\b' - 'documentation': - include: - - '\bdocs\b' - 'test': - include: - - '\btest\b' - 'feature': - include: - - '\bfeat\b' - 'bug': - include: - - '\bbug\b' - 'refactor': - include: - - '\brefactor\b' - 'chore': - include: - - '\bchore\b' diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index a141037..0a3d420 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -1,20 +1,27 @@ -# This workflow will triage pull requests and apply a label based on the -# paths that are modified in the pull request. -# -# To use this workflow, you will need to set up a .github/labeler.yml -# file with configuration. For more information, see: -# https://github.com/actions/labeler +# example +name: Issue PR Labeler -name: Labeler -on: [pull_request_target] +on: + issues: + types: + - opened + - edited + pull_request: # or pull_request_target + types: + - opened + - reopened jobs: - label: - permissions: - contents: read - pull-requests: write + main: runs-on: ubuntu-latest + + permissions: + contents: read # required to read configuration yml file + issues: write # required to add labels to issues + pull-requests: write # required to add labels to pull requests + steps: - - uses: actions/labeler@v4 + - name: Run Issue PR Labeler + uses: hoho4190/issue-pr-labeler@v2.0.0 with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From e33a7b7f1c64b8533f2ba6b81b027f8881840ed6 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 12 Oct 2024 01:50:20 +0900 Subject: [PATCH 042/177] =?UTF-8?q?fix:=20=EC=A0=9C=EB=AA=A9=EB=A7=8C=20?= =?UTF-8?q?=EC=9D=B8=EC=8B=9D=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler-config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index 62c031f..c682372 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -3,21 +3,28 @@ filters: regexs: - /\bfeat\b/i - /feature/i + targets: [title] - label: bug regexs: - /bug/i + targets: [title] - label: documentation regexs: - /docs/i + targets: [title] - label: test regexs: - /test/i + targets: [title] - label: fix regexs: - /fix/i + targets: [title] - label: chore regexs: - /\bchore(\(.*\))?:/i + targets: [title] - label: refactor regexs: - /refactor/i + targets: [title] From 3d735ba51942f9313a1224cfa986c7c0978daa49 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 12 Oct 2024 01:52:38 +0900 Subject: [PATCH 043/177] =?UTF-8?q?fix:=20synchronize=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/label.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index 0a3d420..a7c3668 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -10,6 +10,7 @@ on: types: - opened - reopened + - synchronize jobs: main: From 2455d7f2d02a49e23ba77ae2cc5ec1e78ce58e82 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 00:50:18 +0900 Subject: [PATCH 044/177] =?UTF-8?q?docs:=20webconfig=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/{ => global}/config/WebConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/server/poptato/{ => global}/config/WebConfig.java (97%) diff --git a/src/main/java/server/poptato/config/WebConfig.java b/src/main/java/server/poptato/global/config/WebConfig.java similarity index 97% rename from src/main/java/server/poptato/config/WebConfig.java rename to src/main/java/server/poptato/global/config/WebConfig.java index ffa78f1..558d83b 100644 --- a/src/main/java/server/poptato/config/WebConfig.java +++ b/src/main/java/server/poptato/global/config/WebConfig.java @@ -1,4 +1,4 @@ -package server.poptato.config; +package server.poptato.global.config; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; From a5c39fedf41f37a960cce890caf1b567419418c7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 00:50:43 +0900 Subject: [PATCH 045/177] =?UTF-8?q?test:=20controller=20test=20=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/test/java/server/poptato/todo/api/TodoControllerTest.java diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java new file mode 100644 index 0000000..fa2d1b6 --- /dev/null +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -0,0 +1,62 @@ +package server.poptato.todo.api; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import server.poptato.todo.application.TodoService; + +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(controllers = TodoControllerTest.class) +public class TodoControllerTest { + @Autowired + private MockMvc mockMvc; + @MockBean + private TodoService todoService; + private String accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBQ0NFU1NfVE9LRU4iLCJpYXQiOjE3MjgzN" + + "jMwMzIsImV4cCI6MTcyODM2MzYzMiwiVVNFUl9JRCI6IjEifQ.Cz_tyPtuFMgJpLGZisSCH75pK-FjKIoNwmeR6_ERUDlWCPnx2Hqro" + + "fu8on8QKYqg_zmJoBltdHlIBILiNElYfg"; + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ต๋œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { + //when + mockMvc.perform(MockMvcRequestBuilders.get("/todays") + .param("page","0") + .param("size","8") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’(){ + //when + + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์‚ฌ์šฉ์ž_์•„์ด๋””(){ + //when + + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ(){ + //when + + } + + + +} From e016d52c8bda7f4527cb29acf943cc1e0e2042b9 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 00:51:05 +0900 Subject: [PATCH 046/177] =?UTF-8?q?chore:=20today=20controller,=20service?= =?UTF-8?q?=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A7=8C=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 19 +++++++++++++++++++ .../api/response/TodayListResponseDto.java | 4 ++++ .../poptato/todo/application/TodoService.java | 9 +++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/main/java/server/poptato/todo/api/TodoController.java create mode 100644 src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java create mode 100644 src/main/java/server/poptato/todo/application/TodoService.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java new file mode 100644 index 0000000..7edaf3b --- /dev/null +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -0,0 +1,19 @@ +package server.poptato.todo.api; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import server.poptato.global.response.BaseResponse; +import server.poptato.todo.api.response.TodayListResponseDto; +import server.poptato.todo.application.TodoService; + +@RestController +@RequiredArgsConstructor +public class TodoController { + private final TodoService todoService; + @GetMapping("/todays") + public BaseResponse getTodayList(){ + TodayListResponseDto todayListResponse = todoService.getTodayList(); + return new BaseResponse<>(todayListResponse); + } +} diff --git a/src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java b/src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java new file mode 100644 index 0000000..144d6c2 --- /dev/null +++ b/src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java @@ -0,0 +1,4 @@ +package server.poptato.todo.api.response; + +public class TodayListResponseDto { +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java new file mode 100644 index 0000000..a05a747 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -0,0 +1,9 @@ +package server.poptato.todo.application; + +import server.poptato.todo.api.response.TodayListResponseDto; + +public class TodoService { + public TodayListResponseDto getTodayList() { + return null; + } +} From 08e1fe3f85721a5d5224c017682af8166196e4e1 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 01:37:54 +0900 Subject: [PATCH 047/177] =?UTF-8?q?chore:=20todo=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/domain/entity/Todo.java | 41 +++++++++++++++++++ .../todo/domain/value/TodayStatus.java | 5 +++ .../poptato/todo/domain/value/Type.java | 5 +++ 3 files changed, 51 insertions(+) create mode 100644 src/main/java/server/poptato/todo/domain/entity/Todo.java create mode 100644 src/main/java/server/poptato/todo/domain/value/TodayStatus.java create mode 100644 src/main/java/server/poptato/todo/domain/value/Type.java diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java new file mode 100644 index 0000000..777e17a --- /dev/null +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -0,0 +1,41 @@ +package server.poptato.todo.domain.entity; + +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Getter +@Entity +@EntityListeners(AuditingEntityListener.class) +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class Todo{ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @NotNull + @Enumerated(EnumType.STRING) + private Type type; + @NotNull + private String content; + private LocalDate deadline; + @NotNull + private boolean isBookmark; + private LocalDate todayDate; + @Enumerated(EnumType.STRING) + private TodayStatus todayStatus; + @CreatedDate + @Column(updatable = false) + private LocalDateTime createDate; + @LastModifiedDate + private LocalDateTime modifyDate; +} diff --git a/src/main/java/server/poptato/todo/domain/value/TodayStatus.java b/src/main/java/server/poptato/todo/domain/value/TodayStatus.java new file mode 100644 index 0000000..5bb0fbd --- /dev/null +++ b/src/main/java/server/poptato/todo/domain/value/TodayStatus.java @@ -0,0 +1,5 @@ +package server.poptato.todo.domain.value; + +public enum TodayStatus { + COMPLETED, INCOMPLETE +} diff --git a/src/main/java/server/poptato/todo/domain/value/Type.java b/src/main/java/server/poptato/todo/domain/value/Type.java new file mode 100644 index 0000000..2d4bea4 --- /dev/null +++ b/src/main/java/server/poptato/todo/domain/value/Type.java @@ -0,0 +1,5 @@ +package server.poptato.todo.domain.value; + +public enum Type { + BACKLOG, TODAY +} From a140244c2da856a62a64f78a0e2e76f7cd32b499 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 01:50:55 +0900 Subject: [PATCH 048/177] =?UTF-8?q?chore:=20todo=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=EC=97=90=20userId=EB=A5=BC=20=ED=95=84=EB=93=9C?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/todo/domain/entity/Todo.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index 777e17a..3f13c77 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -23,6 +23,8 @@ public class Todo{ @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull + private Long userId; + @NotNull @Enumerated(EnumType.STRING) private Type type; @NotNull From 97913c3f7e2dd85034c6c0cd077687195a4e01af Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 01:56:10 +0900 Subject: [PATCH 049/177] =?UTF-8?q?fix:=20labeler.yml=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 3742aa2..2793a23 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -7,16 +7,16 @@ labels: - '\bdocs\b' 'test': include: - - '\btest\b' - 'feature': + - 'test' + 'feat': include: - - '\bfeat\b' + - 'feat' 'bug': include: - - '\bbug\b' + - 'bug' 'refactor': include: - - '\brefactor\b' + - 'refactor' 'chore': include: - - '\bchore\b' + - 'chore' From 6323ffe719e5a30e722cbf877e978775ae7806cb Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 02:03:34 +0900 Subject: [PATCH 050/177] =?UTF-8?q?fix:=20labeler.yml=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/labeler-config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index c682372..b9694ff 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -1,7 +1,7 @@ filters: - label: feat regexs: - - /\bfeat\b/i + - /feat/i - /feature/i targets: [title] - label: bug @@ -22,7 +22,7 @@ filters: targets: [title] - label: chore regexs: - - /\bchore(\(.*\))?:/i + - /chore/i targets: [title] - label: refactor regexs: From 17129a9b3379b89899df5c4dec2362fc7991f7d4 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 14 Oct 2024 16:09:39 +0900 Subject: [PATCH 051/177] =?UTF-8?q?chore:=20test=20code=20=EC=A7=9C?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/user/UserServiceTest.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/test/java/server/poptato/user/UserServiceTest.java diff --git a/src/test/java/server/poptato/user/UserServiceTest.java b/src/test/java/server/poptato/user/UserServiceTest.java new file mode 100644 index 0000000..bf94f9a --- /dev/null +++ b/src/test/java/server/poptato/user/UserServiceTest.java @@ -0,0 +1,67 @@ +package server.poptato.user; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import server.poptato.auth.application.service.JwtService; +import server.poptato.user.domain.entity.User; +import server.poptato.user.infra.repository.JpaUserRepository; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +@SpringBootTest +@ExtendWith(SpringExtension.class) +public class UserServiceTest { + + @MockBean + private JpaUserRepository userRepository; + + @MockBean + private TodoRepository todoRepository; + + @MockBean + private JwtService jwtService; + + @Autowired + private UserService userService; + + @Test + @DisplayName("์œ ์ € ํƒˆํ‡ด - ์„ฑ๊ณต") + public void deleteUser_success() { + Long userId = 1L; + User user = User.builder() + .id(userId) + .kakaoId("kakao123") + .name("Kyounglin") + .email("Kyounglin@example.com") + .build(); + + Mockito.when(userRepository.findById(userId)).thenReturn(Optional.of(user)); + + userService.deleteUser(userId); + + Mockito.verify(todoRepository).deleteAll(Mockito.anyList()); + Mockito.verify(jwtService).deleteRefreshToken(String.valueOf(userId)); + Mockito.verify(userRepository).delete(user); + } + + @Test + @DisplayName("์œ ์ € ํƒˆํ‡ด - ์‹คํŒจ (์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €)") + public void deleteUser_notFound() { + Long userId = 1L; + + Mockito.when(userRepository.findById(userId)).thenReturn(Optional.empty()); + + assertThrows(IllegalArgumentException.class, () -> userService.deleteUser(userId)); + Mockito.verify(todoRepository, Mockito.never()).deleteAll(Mockito.anyList()); + Mockito.verify(jwtService, Mockito.never()).deleteRefreshToken(String.valueOf(userId)); + Mockito.verify(userRepository, Mockito.never()).delete(Mockito.any()); + } +} \ No newline at end of file From b2ff82c6e12d10a73c4fd52f9eea3b6ca4745bf1 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 14 Oct 2024 16:20:49 +0900 Subject: [PATCH 052/177] =?UTF-8?q?feat:=20delete=20user=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/application/service/UserService.java | 35 +++++++++++++++++++ .../server/poptato/user/UserServiceTest.java | 3 +- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/java/server/poptato/user/application/service/UserService.java diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java new file mode 100644 index 0000000..407835b --- /dev/null +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -0,0 +1,35 @@ +package server.poptato.user.application.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.auth.application.service.JwtService; +import server.poptato.global.exception.BaseException; +import server.poptato.user.domain.entity.User; +import server.poptato.user.infra.repository.JpaUserRepository; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.USER_NOT_FOUND_EXCEPTION; + +@Service +@RequiredArgsConstructor +public class UserService { + private final JpaUserRepository userRepository; + private final TodoRepository todoRepository; + private final JwtService jwtService; + + @Transactional + public void deleteUser(Long userId) { + // ์œ ์ € ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ + User user = userRepository.findById(userId) + .orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION); + + // ์œ ์ €์™€ ์—ฐ๊ด€๋œ ๋ชจ๋“  Todo ์‚ญ์ œ + todoRepository.deleteAll(todoRepository.findAllByUserId(userId)); + + // Redis์—์„œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์‚ญ์ œ + jwtService.deleteRefreshToken(String.valueOf(userId)); + + // ์œ ์ € ์‚ญ์ œ + userRepository.delete(user); + } +} diff --git a/src/test/java/server/poptato/user/UserServiceTest.java b/src/test/java/server/poptato/user/UserServiceTest.java index bf94f9a..60cfc79 100644 --- a/src/test/java/server/poptato/user/UserServiceTest.java +++ b/src/test/java/server/poptato/user/UserServiceTest.java @@ -9,6 +9,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension; import server.poptato.auth.application.service.JwtService; +import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; import server.poptato.user.infra.repository.JpaUserRepository; @@ -59,7 +60,7 @@ public void deleteUser_notFound() { Mockito.when(userRepository.findById(userId)).thenReturn(Optional.empty()); - assertThrows(IllegalArgumentException.class, () -> userService.deleteUser(userId)); + assertThrows(BaseException.class, () -> userService.deleteUser(userId)); Mockito.verify(todoRepository, Mockito.never()).deleteAll(Mockito.anyList()); Mockito.verify(jwtService, Mockito.never()).deleteRefreshToken(String.valueOf(userId)); Mockito.verify(userRepository, Mockito.never()).delete(Mockito.any()); From 40d280bc483f197938570fbff9a4989d215de188 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 14 Oct 2024 16:34:35 +0900 Subject: [PATCH 053/177] =?UTF-8?q?chore:=20todoRepository=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/domain/repository/TodoRepository.java | 9 +++++++++ .../todo/infra/repository/JpaTodoRepository.java | 13 +++++++++++++ .../user/application/service/UserService.java | 7 +++---- .../java/server/poptato/user/UserServiceTest.java | 4 +++- 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 src/main/java/server/poptato/todo/domain/repository/TodoRepository.java create mode 100644 src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java new file mode 100644 index 0000000..785bf60 --- /dev/null +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -0,0 +1,9 @@ +package server.poptato.todo.domain.repository; + +import server.poptato.todo.domain.entity.Todo; + +import java.util.List; + +public interface TodoRepository { + List findAllByUserId(Long userId); +} diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java new file mode 100644 index 0000000..0a1d39c --- /dev/null +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -0,0 +1,13 @@ +package server.poptato.todo.infra.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; + +import java.util.List; + +public interface JpaTodoRepository extends TodoRepository, JpaRepository { + @Override + List findAllByUserId(Long userId); + +} diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 407835b..2d1af2e 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -5,6 +5,7 @@ import org.springframework.transaction.annotation.Transactional; import server.poptato.auth.application.service.JwtService; import server.poptato.global.exception.BaseException; +import server.poptato.todo.infra.repository.JpaTodoRepository; import server.poptato.user.domain.entity.User; import server.poptato.user.infra.repository.JpaUserRepository; @@ -14,14 +15,13 @@ @RequiredArgsConstructor public class UserService { private final JpaUserRepository userRepository; - private final TodoRepository todoRepository; + private final JpaTodoRepository todoRepository; private final JwtService jwtService; @Transactional public void deleteUser(Long userId) { - // ์œ ์ € ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ User user = userRepository.findById(userId) - .orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION); + .orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); // ์œ ์ €์™€ ์—ฐ๊ด€๋œ ๋ชจ๋“  Todo ์‚ญ์ œ todoRepository.deleteAll(todoRepository.findAllByUserId(userId)); @@ -29,7 +29,6 @@ public void deleteUser(Long userId) { // Redis์—์„œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์‚ญ์ œ jwtService.deleteRefreshToken(String.valueOf(userId)); - // ์œ ์ € ์‚ญ์ œ userRepository.delete(user); } } diff --git a/src/test/java/server/poptato/user/UserServiceTest.java b/src/test/java/server/poptato/user/UserServiceTest.java index 60cfc79..c269138 100644 --- a/src/test/java/server/poptato/user/UserServiceTest.java +++ b/src/test/java/server/poptato/user/UserServiceTest.java @@ -10,6 +10,8 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import server.poptato.auth.application.service.JwtService; import server.poptato.global.exception.BaseException; +import server.poptato.todo.infra.repository.JpaTodoRepository; +import server.poptato.user.application.service.UserService; import server.poptato.user.domain.entity.User; import server.poptato.user.infra.repository.JpaUserRepository; @@ -25,7 +27,7 @@ public class UserServiceTest { private JpaUserRepository userRepository; @MockBean - private TodoRepository todoRepository; + private JpaTodoRepository todoRepository; @MockBean private JwtService jwtService; From 1b1624ef2f309fb6c96dd0124e7de5005f019f55 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 16:42:42 +0900 Subject: [PATCH 054/177] =?UTF-8?q?fix:=20ci/cd=20test=20=ED=8F=AC?= =?UTF-8?q?=ED=95=A8=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 +- .github/workflows/ci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 9cb9f22..c0a40e9 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -45,7 +45,7 @@ jobs: chmod +x gradlew ./gradlew clean - ./gradlew build -x test + ./gradlew build sudo fuser -k -n tcp "${{ secrets.SERVER_PORT }}" || true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6c99ce8..68be742 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,4 +63,4 @@ jobs: #๋นŒ๋“œ ์ž‘์—… ์‹คํ–‰(ํ…Œ์ŠคํŠธ๋„ ๊ฐ™์ด ์ง„ํ–‰) - name: Build with Gradle Wrapper - run: ./gradlew build --exclude-task test + run: ./gradlew build From b92b1bb21192e0fdd8dc9bb2876114a31eaa52cd Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 16:43:02 +0900 Subject: [PATCH 055/177] =?UTF-8?q?fix:=20user=EA=B0=80=20=EC=98=88?= =?UTF-8?q?=EC=95=BD=EC=96=B4=EB=9D=BC=20users=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/user/domain/entity/User.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/server/poptato/user/domain/entity/User.java b/src/main/java/server/poptato/user/domain/entity/User.java index 6445cc1..4a4d0b2 100644 --- a/src/main/java/server/poptato/user/domain/entity/User.java +++ b/src/main/java/server/poptato/user/domain/entity/User.java @@ -14,7 +14,8 @@ @Builder @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor -@EntityListeners(AuditingEntityListener.class) // Auditing ๊ธฐ๋Šฅ ์ถ” +@Table(name = "users") +@EntityListeners(AuditingEntityListener.class) public class User { @Id From 01469fe747db676c18eb09a426a2859e2f899cad Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 16:43:23 +0900 Subject: [PATCH 056/177] =?UTF-8?q?test:=20todoController=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index fa2d1b6..cdb817e 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -1,29 +1,45 @@ package server.poptato.todo.api; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import server.poptato.auth.application.service.JwtService; import server.poptato.todo.application.TodoService; +import static org.mockito.Mockito.verify; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -@WebMvcTest(controllers = TodoControllerTest.class) +@SpringBootTest +@AutoConfigureMockMvc public class TodoControllerTest { @Autowired private MockMvc mockMvc; @MockBean private TodoService todoService; - private String accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBQ0NFU1NfVE9LRU4iLCJpYXQiOjE3MjgzN" + - "jMwMzIsImV4cCI6MTcyODM2MzYzMiwiVVNFUl9JRCI6IjEifQ.Cz_tyPtuFMgJpLGZisSCH75pK-FjKIoNwmeR6_ERUDlWCPnx2Hqro" + - "fu8on8QKYqg_zmJoBltdHlIBILiNElYfg"; + @Autowired + private JwtService jwtService; + private String accessToken; + private final String userId = "1"; + + @BeforeEach + void userId๊ฐ€_1์ธ_์•ก์„ธ์Šคํ† ํฐ_์ƒ์„ฑ() { + accessToken = jwtService.createAccessToken(userId); + } - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ์„ฑ๊ณต์ ์œผ๋กœ ์‘๋‹ต๋œ๋‹ค.") + @AfterEach + void ์•ก์„ธ์Šคํ† ํฐ_๋น„ํ™œ์„ฑํ™”() { + jwtService.deleteRefreshToken(userId); + } + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") @Test void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { //when @@ -36,27 +52,26 @@ public class TodoControllerTest { .andDo(print()); } - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋œ๋‹ค.") - @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’(){ - //when - - } - - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์‚ฌ์šฉ์ž_์•„์ด๋””(){ + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { //when + mockMvc.perform(MockMvcRequestBuilders.get("/todays") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + verify(todoService).getTodayList(1,0, 8); } @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ(){ + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { //when - + mockMvc.perform(MockMvcRequestBuilders.get("/todays") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andDo(print()); } - - - } From 0ed7b82181d32f0345edf7cc14af3f45c5fbb0f0 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 16:43:37 +0900 Subject: [PATCH 057/177] =?UTF-8?q?feat:=20todoController=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/api/TodoController.java | 9 +++++++-- .../server/poptato/todo/application/TodoService.java | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 7edaf3b..0aa2528 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -2,18 +2,23 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import server.poptato.global.response.BaseResponse; import server.poptato.todo.api.response.TodayListResponseDto; import server.poptato.todo.application.TodoService; +import server.poptato.user.resolver.UserId; @RestController @RequiredArgsConstructor public class TodoController { private final TodoService todoService; @GetMapping("/todays") - public BaseResponse getTodayList(){ - TodayListResponseDto todayListResponse = todoService.getTodayList(); + public BaseResponse getTodayList( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "8") int size){ + TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size); return new BaseResponse<>(todayListResponse); } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index a05a747..94b0fec 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,9 +1,11 @@ package server.poptato.todo.application; +import org.springframework.stereotype.Service; import server.poptato.todo.api.response.TodayListResponseDto; +@Service public class TodoService { - public TodayListResponseDto getTodayList() { + public TodayListResponseDto getTodayList(long userId, int page, int size) { return null; } } From ef0a067101c94f0e001bbc3642bab569901ca1e7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:01:11 +0900 Subject: [PATCH 058/177] =?UTF-8?q?fix:=20ci.yml=20=EC=88=9C=EC=84=9C=20?= =?UTF-8?q?=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68be742..dcca462 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,13 +39,6 @@ jobs: touch ./application.yml echo "${{ secrets.APPLICATION_YML }}" >./application.yml - # test์˜ application.yml ์ƒ์„ฑ - - name: Set Release Test YML File - run: | - cd ./src/test/resources - touch ./application.yml - echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml - # test์˜ data.sql ์ƒ์„ฑ - name: Set Test DATA SQL File run: | @@ -53,6 +46,13 @@ jobs: touch ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" >./data.sql + # test์˜ application.yml ์ƒ์„ฑ + - name: Set Release Test YML File + run: | + cd ./src/test/resources + touch ./application.yml + echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml + #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด - name: Setup Gradle uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 From 6bd0a9055a9625d6e38fe22839118d22ca94f9ce Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:32:35 +0900 Subject: [PATCH 059/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 6 ++++++ .github/workflows/ci.yml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c0a40e9..23dc5a6 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -41,6 +41,12 @@ jobs: mkdir -p src/test/resources echo "$TEST_APPLICATION_YML" > src/test/resources/application.yml + + rm -rf src/test/resources/data.sql + + mkdir -p src/test/resources + + echo "$TEST_DATA_SQL" > src/test/resources/data.sql chmod +x gradlew diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dcca462..2369daa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,7 +51,7 @@ jobs: run: | cd ./src/test/resources touch ./application.yml - echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml + printf "%s" "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด - name: Setup Gradle From 72b9bb16148fc5db315ac0b94d219d0e71167ff6 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:39:21 +0900 Subject: [PATCH 060/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2369daa..a516d7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,22 +36,22 @@ jobs: - name: Set Release YML File run: | cd ./src/main/resources - touch ./application.yml + rm -rf ./application.yml echo "${{ secrets.APPLICATION_YML }}" >./application.yml # test์˜ data.sql ์ƒ์„ฑ - name: Set Test DATA SQL File run: | cd ./src/test/resources - touch ./data.sql - echo "${{ secrets.TEST_DATA_SQL }}" >./data.sql + rm -rf ./data.sql + echo "${{ secrets.TEST_DATA_SQL }}" > test/resources/application.yml # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File run: | cd ./src/test/resources - touch ./application.yml - printf "%s" "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml + rm -rf ./application.yml + echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด - name: Setup Gradle From 85ae28d4a6531ef08ff90bcf14baac645ad48d6e Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:40:58 +0900 Subject: [PATCH 061/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a516d7e..46b6b3a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,6 +37,7 @@ jobs: run: | cd ./src/main/resources rm -rf ./application.yml + mkdir -p ./application.yml echo "${{ secrets.APPLICATION_YML }}" >./application.yml # test์˜ data.sql ์ƒ์„ฑ @@ -44,6 +45,7 @@ jobs: run: | cd ./src/test/resources rm -rf ./data.sql + mkdir -p ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" > test/resources/application.yml # test์˜ application.yml ์ƒ์„ฑ @@ -51,6 +53,7 @@ jobs: run: | cd ./src/test/resources rm -rf ./application.yml + mkdir -p ./application.yml echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด From 2a84d6a8b44d427d9ec61a885e7a84fe76ea64c7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:43:16 +0900 Subject: [PATCH 062/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46b6b3a..200f418 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: run: | cd ./src/main/resources rm -rf ./application.yml - mkdir -p ./application.yml + touch ./application.yml echo "${{ secrets.APPLICATION_YML }}" >./application.yml # test์˜ data.sql ์ƒ์„ฑ @@ -45,7 +45,7 @@ jobs: run: | cd ./src/test/resources rm -rf ./data.sql - mkdir -p ./data.sql + touch ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" > test/resources/application.yml # test์˜ application.yml ์ƒ์„ฑ @@ -53,7 +53,7 @@ jobs: run: | cd ./src/test/resources rm -rf ./application.yml - mkdir -p ./application.yml + touch ./application.yml echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด From 75c95d4372d030f03e0d40ab6f66111129890f7f Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:44:14 +0900 Subject: [PATCH 063/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 200f418..60b02b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: cd ./src/test/resources rm -rf ./data.sql touch ./data.sql - echo "${{ secrets.TEST_DATA_SQL }}" > test/resources/application.yml + echo "${{ secrets.TEST_DATA_SQL }}" > test/resources/data.sql # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File From 8de7f1b838346dce93d41b3452f4b28ed3652e53 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:46:33 +0900 Subject: [PATCH 064/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 60b02b1..225cc3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: cd ./src/test/resources rm -rf ./data.sql touch ./data.sql - echo "${{ secrets.TEST_DATA_SQL }}" > test/resources/data.sql + echo "${{ secrets.TEST_DATA_SQL }}" > ./data.sql # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File From 03ad6ce9ae1db9a6c9343f496b81f5408d31e0c8 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:55:14 +0900 Subject: [PATCH 065/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 225cc3c..7628046 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: with: java-version: '17' distribution: 'temurin' - + - name: Create main resources directory run: mkdir -p src/main/resources @@ -36,23 +36,21 @@ jobs: - name: Set Release YML File run: | cd ./src/main/resources - rm -rf ./application.yml touch ./application.yml echo "${{ secrets.APPLICATION_YML }}" >./application.yml # test์˜ data.sql ์ƒ์„ฑ - name: Set Test DATA SQL File run: | - cd ./src/test/resources - rm -rf ./data.sql + cd .. + cd .. + cd ./test/resources touch ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" > ./data.sql # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File run: | - cd ./src/test/resources - rm -rf ./application.yml touch ./application.yml echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml From 1d83e9f558ad1d2946faf1b77cf04bf89449a696 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 17:56:22 +0900 Subject: [PATCH 066/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7628046..c88279f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,6 @@ jobs: run: | cd .. cd .. - cd ./test/resources touch ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" > ./data.sql From 628261409d5714416dfc2da673dc2dc9f3a577d9 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 18:05:09 +0900 Subject: [PATCH 067/177] =?UTF-8?q?fix:=20ci.yml=20=EB=B2=88=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c88279f..fc1f208 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,21 +37,33 @@ jobs: run: | cd ./src/main/resources touch ./application.yml - echo "${{ secrets.APPLICATION_YML }}" >./application.yml + echo "${{ secrets.APPLICATION_YML }}" > ./application.yml + + # main์˜ application.yml ๋‚ด์šฉ ์ถœ๋ ฅ + - name: Print Release YML File Contents + run: cat ./src/main/resources/application.yml # test์˜ data.sql ์ƒ์„ฑ - name: Set Test DATA SQL File run: | - cd .. - cd .. + cd ./src/test/resources touch ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" > ./data.sql + # test์˜ data.sql ๋‚ด์šฉ ์ถœ๋ ฅ + - name: Print Test DATA SQL File Contents + run: cat ./src/test/resources/data.sql + # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File run: | + cd ./src/test/resources touch ./application.yml - echo "${{ secrets.APPLICATION_TEST_YML }}" >./application.yml + echo "${{ secrets.APPLICATION_TEST_YML }}" > ./application.yml + + # test์˜ application.yml ๋‚ด์šฉ ์ถœ๋ ฅ + - name: Print Test YML File Contents + run: cat ./src/test/resources/application.yml #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด - name: Setup Gradle From b94d2a0648210cba0162c5b83c1f6d8460551c8c Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 14 Oct 2024 18:17:16 +0900 Subject: [PATCH 068/177] =?UTF-8?q?fix:=20redisTemplate=EC=9D=84=20mocking?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 12 ------------ .../server/poptato/todo/api/TodoControllerTest.java | 3 +++ 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc1f208..da9c89a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,10 +39,6 @@ jobs: touch ./application.yml echo "${{ secrets.APPLICATION_YML }}" > ./application.yml - # main์˜ application.yml ๋‚ด์šฉ ์ถœ๋ ฅ - - name: Print Release YML File Contents - run: cat ./src/main/resources/application.yml - # test์˜ data.sql ์ƒ์„ฑ - name: Set Test DATA SQL File run: | @@ -50,10 +46,6 @@ jobs: touch ./data.sql echo "${{ secrets.TEST_DATA_SQL }}" > ./data.sql - # test์˜ data.sql ๋‚ด์šฉ ์ถœ๋ ฅ - - name: Print Test DATA SQL File Contents - run: cat ./src/test/resources/data.sql - # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File run: | @@ -61,10 +53,6 @@ jobs: touch ./application.yml echo "${{ secrets.APPLICATION_TEST_YML }}" > ./application.yml - # test์˜ application.yml ๋‚ด์šฉ ์ถœ๋ ฅ - - name: Print Test YML File Contents - run: cat ./src/test/resources/application.yml - #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด - name: Setup Gradle uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index cdb817e..5ead1b3 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -8,6 +8,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -27,6 +28,8 @@ public class TodoControllerTest { private TodoService todoService; @Autowired private JwtService jwtService; + @MockBean + private RedisTemplate redisTemplate; private String accessToken; private final String userId = "1"; From eaa6675c1bc3a64dae26da11d653bdff537ef7c2 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 14 Oct 2024 19:23:50 +0900 Subject: [PATCH 069/177] =?UTF-8?q?chore=20controller=20test=20code=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/user/api/UserControllerTest.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/test/java/server/poptato/user/api/UserControllerTest.java diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java new file mode 100644 index 0000000..8c31b0f --- /dev/null +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -0,0 +1,81 @@ +package server.poptato.user.api; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import server.poptato.auth.application.service.JwtService; +import server.poptato.user.application.service.UserService; + +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +public class UserControllerTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private UserService userService; + + @MockBean + private JwtService jwtService; + + private String accessToken; + private final Long userId = 1L; + + @BeforeEach + void setup() { + // Mock JwtService to return userId when verifying token + accessToken = jwtService.createAccessToken(userId.toString()); + } + + @AfterEach + void cleanup() { + jwtService.deleteRefreshToken(userId.toString()); + } + + @Test + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต") + void deleteUserSuccess() throws Exception { + + mockMvc.perform(MockMvcRequestBuilders.delete("/user") + .header("Authorization", "Bearer " + accessToken)) + .andExpect(status().isOk()) + .andDo(print()); + + verify(userService).deleteUser(userId); + } + + @Test + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ํ† ํฐ ์—†์Œ") + void deleteUserFailureNoToken() throws Exception { + + mockMvc.perform(MockMvcRequestBuilders.delete("/user")) + .andExpect(status().isBadRequest()) + .andDo(print()); + } + + @Test + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ") + void deleteUserFailureInvalidToken() throws Exception { + + when(jwtService.verifyToken(anyString())).thenReturn(false); + + mockMvc.perform(MockMvcRequestBuilders.delete("/user") + .header("Authorization", "Bearer invalidToken")) + .andExpect(status().isUnauthorized()) + .andDo(print()); + } +} From 4100e7a4b86e8632a1bc957c97554b1f49a6222f Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 14 Oct 2024 22:18:14 +0900 Subject: [PATCH 070/177] =?UTF-8?q?chore:=20usercontroller=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/BaseExceptionHandler.java | 2 +- .../poptato/todo/domain/entity/Todo.java | 6 +- .../poptato/user/api/UserController.java | 25 ++++ .../poptato/user/api/UserControllerTest.java | 118 +++++++++++++++--- 4 files changed, 132 insertions(+), 19 deletions(-) create mode 100644 src/main/java/server/poptato/user/api/UserController.java diff --git a/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java b/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java index 06db5b9..12cf769 100644 --- a/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java +++ b/src/main/java/server/poptato/global/exception/handler/BaseExceptionHandler.java @@ -24,7 +24,7 @@ @RestControllerAdvice public class BaseExceptionHandler { @ResponseStatus(HttpStatus.BAD_REQUEST) - @ExceptionHandler({BaseException.class, NoHandlerFoundException.class, TypeMismatchException.class}) + @ExceptionHandler({BaseException.class,NoHandlerFoundException.class, TypeMismatchException.class}) public BaseErrorResponse handle_BadRequest(Exception exception) { log.error("[BaseExceptionControllerAdvice: handle_BadRequest ํ˜ธ์ถœ]", exception); return new BaseErrorResponse(BaseExceptionErrorCode.URL_NOT_FOUND); diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index 3f13c77..78e0bfc 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -2,9 +2,7 @@ import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.NoArgsConstructor; +import lombok.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -16,8 +14,10 @@ @Getter @Entity +@Builder @EntityListeners(AuditingEntityListener.class) @NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor public class Todo{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/server/poptato/user/api/UserController.java b/src/main/java/server/poptato/user/api/UserController.java new file mode 100644 index 0000000..bbe2bf2 --- /dev/null +++ b/src/main/java/server/poptato/user/api/UserController.java @@ -0,0 +1,25 @@ +package server.poptato.user.api; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import server.poptato.global.response.BaseResponse; +import server.poptato.user.application.service.UserService; +import server.poptato.user.resolver.UserId; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/user") +public class UserController { + + private final UserService userService; + + @DeleteMapping + public BaseResponse deleteUser(@UserId Long userId) { + userService.deleteUser(userId); + return new BaseResponse(SUCCESS); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 8c31b0f..1c51130 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -4,64 +4,132 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; +import server.poptato.todo.infra.repository.JpaTodoRepository; import server.poptato.user.application.service.UserService; +import server.poptato.user.domain.entity.User; +import server.poptato.user.infra.repository.JpaUserRepository; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest @AutoConfigureMockMvc -public class UserControllerTest { +class UserControllerTest { @Autowired private MockMvc mockMvc; + @MockBean + private JwtService jwtService; + @MockBean private UserService userService; @MockBean - private JwtService jwtService; + private JpaUserRepository userRepository; + + @MockBean + private JpaTodoRepository todoRepository; + + @MockBean + private RedisTemplate redisTemplate; private String accessToken; private final Long userId = 1L; @BeforeEach - void setup() { - // Mock JwtService to return userId when verifying token + void createAccessToken() { accessToken = jwtService.createAccessToken(userId.toString()); } @AfterEach - void cleanup() { + void deleteRefreshToken() { jwtService.deleteRefreshToken(userId.toString()); } @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต") - void deleteUserSuccess() throws Exception { - + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต - Todo๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ") + void deleteUserSuccessWithTodos() throws Exception { + // Given + User user = User.builder() + .id(userId) + .kakaoId("kakao12345") + .name("John Doe") + .email("john.doe@example.com") + .createDate(LocalDateTime.now()) + .modifyDate(LocalDateTime.now()) + .build(); + + // Todo ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ (Todo๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ) + List todos = List.of( + Todo.builder() + .userId(userId) + .type(Type.TODAY) // Type ์˜ˆ์‹œ ๊ฐ’ + .content("Task 1") + .isBookmark(false) + .todayDate(LocalDate.now()) + .todayStatus(TodayStatus.COMPLETED) // Status ์˜ˆ์‹œ ๊ฐ’ + .createDate(LocalDateTime.now()) + .modifyDate(LocalDateTime.now()) + .build(), + Todo.builder() + .userId(userId) + .type(Type.TODAY) + .content("Task 2") + .isBookmark(true) + .todayDate(LocalDate.now()) + .todayStatus(TodayStatus.COMPLETED) + .createDate(LocalDateTime.now()) + .modifyDate(LocalDateTime.now()) + .build() + ); + + // ํ† ํฐ ๊ฒ€์ฆ ์„ฑ๊ณต + when(jwtService.verifyToken(anyString())).thenReturn(true); + when(jwtService.getUserIdInToken(anyString())).thenReturn(userId.toString()); + + // User ์ฐพ๊ธฐ ์„ฑ๊ณต + when(userRepository.findById(userId)).thenReturn(Optional.of(user)); + + // Todo ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์‹œ ์‹ค์ œ Todo ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜ + when(todoRepository.findAllByUserId(userId)).thenReturn(todos); + + // UserService์˜ deleteUser() ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋ชจํ‚น + doNothing().when(jwtService).deleteRefreshToken(anyString()); + doNothing().when(userRepository).delete(user); + + // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()) .andDo(print()); - - verify(userService).deleteUser(userId); } @Test @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ํ† ํฐ ์—†์Œ") void deleteUserFailureNoToken() throws Exception { - + // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user")) .andExpect(status().isBadRequest()) .andDo(print()); @@ -70,12 +138,32 @@ void deleteUserFailureNoToken() throws Exception { @Test @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ") void deleteUserFailureInvalidToken() throws Exception { + // Given + String invalidToken = "invalidToken"; + // ํ† ํฐ ๊ฒ€์ฆ ์‹คํŒจ when(jwtService.verifyToken(anyString())).thenReturn(false); + // When & Then + mockMvc.perform(MockMvcRequestBuilders.delete("/user") + .header("Authorization", "Bearer " + invalidToken)) + .andExpect(status().isBadRequest()) + .andDo(print()); + } + + @Test + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ") + void deleteUserFailureUserNotFound() throws Exception { + // Given + // User ์ฐพ๊ธฐ ์‹คํŒจ + when(jwtService.verifyToken(anyString())).thenReturn(true); + when(jwtService.getUserIdInToken(anyString())).thenReturn(userId.toString()); + + when(userRepository.findById(userId)).thenReturn(Optional.empty()); + + // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user") - .header("Authorization", "Bearer invalidToken")) - .andExpect(status().isUnauthorized()) + .header("Authorization", "Bearer " + accessToken)) .andDo(print()); } } From 5a9c3188fddef7969ea6e23d6bbf3ec3d391de33 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 14 Oct 2024 22:43:31 +0900 Subject: [PATCH 071/177] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/application/service/UserService.java | 5 -- .../server/poptato/user/UserServiceTest.java | 70 ------------------- .../poptato/user/api/UserControllerTest.java | 26 +++---- 3 files changed, 10 insertions(+), 91 deletions(-) delete mode 100644 src/test/java/server/poptato/user/UserServiceTest.java diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 2d1af2e..3853e13 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -22,13 +22,8 @@ public class UserService { public void deleteUser(Long userId) { User user = userRepository.findById(userId) .orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); - - // ์œ ์ €์™€ ์—ฐ๊ด€๋œ ๋ชจ๋“  Todo ์‚ญ์ œ todoRepository.deleteAll(todoRepository.findAllByUserId(userId)); - - // Redis์—์„œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์‚ญ์ œ jwtService.deleteRefreshToken(String.valueOf(userId)); - userRepository.delete(user); } } diff --git a/src/test/java/server/poptato/user/UserServiceTest.java b/src/test/java/server/poptato/user/UserServiceTest.java deleted file mode 100644 index c269138..0000000 --- a/src/test/java/server/poptato/user/UserServiceTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package server.poptato.user; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import server.poptato.auth.application.service.JwtService; -import server.poptato.global.exception.BaseException; -import server.poptato.todo.infra.repository.JpaTodoRepository; -import server.poptato.user.application.service.UserService; -import server.poptato.user.domain.entity.User; -import server.poptato.user.infra.repository.JpaUserRepository; - -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertThrows; - -@SpringBootTest -@ExtendWith(SpringExtension.class) -public class UserServiceTest { - - @MockBean - private JpaUserRepository userRepository; - - @MockBean - private JpaTodoRepository todoRepository; - - @MockBean - private JwtService jwtService; - - @Autowired - private UserService userService; - - @Test - @DisplayName("์œ ์ € ํƒˆํ‡ด - ์„ฑ๊ณต") - public void deleteUser_success() { - Long userId = 1L; - User user = User.builder() - .id(userId) - .kakaoId("kakao123") - .name("Kyounglin") - .email("Kyounglin@example.com") - .build(); - - Mockito.when(userRepository.findById(userId)).thenReturn(Optional.of(user)); - - userService.deleteUser(userId); - - Mockito.verify(todoRepository).deleteAll(Mockito.anyList()); - Mockito.verify(jwtService).deleteRefreshToken(String.valueOf(userId)); - Mockito.verify(userRepository).delete(user); - } - - @Test - @DisplayName("์œ ์ € ํƒˆํ‡ด - ์‹คํŒจ (์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €)") - public void deleteUser_notFound() { - Long userId = 1L; - - Mockito.when(userRepository.findById(userId)).thenReturn(Optional.empty()); - - assertThrows(BaseException.class, () -> userService.deleteUser(userId)); - Mockito.verify(todoRepository, Mockito.never()).deleteAll(Mockito.anyList()); - Mockito.verify(jwtService, Mockito.never()).deleteRefreshToken(String.valueOf(userId)); - Mockito.verify(userRepository, Mockito.never()).delete(Mockito.any()); - } -} \ No newline at end of file diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 1c51130..17cf99a 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -4,8 +4,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; @@ -28,8 +26,8 @@ import java.util.Optional; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.*; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -69,27 +67,27 @@ void deleteRefreshToken() { } @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต - Todo๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ") + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต") void deleteUserSuccessWithTodos() throws Exception { // Given User user = User.builder() .id(userId) .kakaoId("kakao12345") - .name("John Doe") - .email("john.doe@example.com") + .name("Kyounglin") + .email("Kyounglin@example.com") .createDate(LocalDateTime.now()) .modifyDate(LocalDateTime.now()) .build(); - // Todo ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ (Todo๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ) + // Todo ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ List todos = List.of( Todo.builder() .userId(userId) - .type(Type.TODAY) // Type ์˜ˆ์‹œ ๊ฐ’ + .type(Type.TODAY) .content("Task 1") .isBookmark(false) .todayDate(LocalDate.now()) - .todayStatus(TodayStatus.COMPLETED) // Status ์˜ˆ์‹œ ๊ฐ’ + .todayStatus(TodayStatus.COMPLETED) .createDate(LocalDateTime.now()) .modifyDate(LocalDateTime.now()) .build(), @@ -112,14 +110,12 @@ void deleteUserSuccessWithTodos() throws Exception { // User ์ฐพ๊ธฐ ์„ฑ๊ณต when(userRepository.findById(userId)).thenReturn(Optional.of(user)); - // Todo ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ์‹œ ์‹ค์ œ Todo ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜ + // Todo ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜ when(todoRepository.findAllByUserId(userId)).thenReturn(todos); - // UserService์˜ deleteUser() ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๋ชจํ‚น doNothing().when(jwtService).deleteRefreshToken(anyString()); doNothing().when(userRepository).delete(user); - // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()) @@ -129,7 +125,6 @@ void deleteUserSuccessWithTodos() throws Exception { @Test @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ํ† ํฐ ์—†์Œ") void deleteUserFailureNoToken() throws Exception { - // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user")) .andExpect(status().isBadRequest()) .andDo(print()); @@ -138,13 +133,11 @@ void deleteUserFailureNoToken() throws Exception { @Test @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ") void deleteUserFailureInvalidToken() throws Exception { - // Given String invalidToken = "invalidToken"; // ํ† ํฐ ๊ฒ€์ฆ ์‹คํŒจ when(jwtService.verifyToken(anyString())).thenReturn(false); - // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + invalidToken)) .andExpect(status().isBadRequest()) @@ -164,6 +157,7 @@ void deleteUserFailureUserNotFound() throws Exception { // When & Then mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + accessToken)) +// .andExpect(status().isNotFound()) .andDo(print()); } } From 83d946fb6f19a36d6bc05f1fc99e40cf76adcc74 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 15 Oct 2024 19:30:04 +0900 Subject: [PATCH 072/177] =?UTF-8?q?refactor:=20repository=20import=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/service/AuthService.java | 3 +- .../domain/repository/TodoRepository.java | 1 + .../infra/repository/JpaTodoRepository.java | 2 + .../user/application/service/UserService.java | 6 +- .../domain/repository/UserRepository.java | 3 + .../infra/repository/JpaUserRepository.java | 7 ++ .../poptato/user/api/UserControllerTest.java | 74 +------------------ 7 files changed, 23 insertions(+), 73 deletions(-) diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 3535455..9da761b 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -9,6 +9,7 @@ import server.poptato.global.dto.TokenPair; import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.infra.repository.JpaUserRepository; import java.util.Optional; @@ -21,7 +22,7 @@ public class AuthService { private final JwtService jwtService; private final KakaoSocialService kakaoSocialService; - private final JpaUserRepository userRepository; + private final UserRepository userRepository; public LoginResponseDto login(final String baseUrl, final String kakaoCode) { KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(baseUrl, kakaoCode); diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 785bf60..14cd366 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -6,4 +6,5 @@ public interface TodoRepository { List findAllByUserId(Long userId); + void deleteAll(List todos); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 0a1d39c..2e6d6a3 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -9,5 +9,7 @@ public interface JpaTodoRepository extends TodoRepository, JpaRepository { @Override List findAllByUserId(Long userId); + @Override + void deleteAll(List todos); } diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 3853e13..39ba5db 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -5,8 +5,10 @@ import org.springframework.transaction.annotation.Transactional; import server.poptato.auth.application.service.JwtService; import server.poptato.global.exception.BaseException; +import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.infra.repository.JpaTodoRepository; import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.infra.repository.JpaUserRepository; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.USER_NOT_FOUND_EXCEPTION; @@ -14,8 +16,8 @@ @Service @RequiredArgsConstructor public class UserService { - private final JpaUserRepository userRepository; - private final JpaTodoRepository todoRepository; + private final UserRepository userRepository; + private final TodoRepository todoRepository; private final JwtService jwtService; @Transactional diff --git a/src/main/java/server/poptato/user/domain/repository/UserRepository.java b/src/main/java/server/poptato/user/domain/repository/UserRepository.java index e2fe7fd..7cb5006 100644 --- a/src/main/java/server/poptato/user/domain/repository/UserRepository.java +++ b/src/main/java/server/poptato/user/domain/repository/UserRepository.java @@ -6,4 +6,7 @@ public interface UserRepository { Optional findByKakaoId(String kakaoId); + Optional findById(Long userId); + void delete(User user); + User save(User user); } \ No newline at end of file diff --git a/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java b/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java index d764c8d..3ef4ff0 100644 --- a/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java +++ b/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java @@ -9,4 +9,11 @@ public interface JpaUserRepository extends UserRepository, JpaRepository { @Override Optional findByKakaoId(String kakaoId); + @Override + Optional findById(Long userId); + + @Override + void delete(User user); + @Override + User save(User user); } \ No newline at end of file diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 17cf99a..3bcea5e 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -12,19 +12,10 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; -import server.poptato.todo.domain.entity.Todo; -import server.poptato.todo.domain.value.TodayStatus; -import server.poptato.todo.domain.value.Type; import server.poptato.todo.infra.repository.JpaTodoRepository; import server.poptato.user.application.service.UserService; -import server.poptato.user.domain.entity.User; import server.poptato.user.infra.repository.JpaUserRepository; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Optional; - import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; @@ -67,54 +58,14 @@ void deleteRefreshToken() { } @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต") - void deleteUserSuccessWithTodos() throws Exception { - // Given - User user = User.builder() - .id(userId) - .kakaoId("kakao12345") - .name("Kyounglin") - .email("Kyounglin@example.com") - .createDate(LocalDateTime.now()) - .modifyDate(LocalDateTime.now()) - .build(); - - // Todo ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ - List todos = List.of( - Todo.builder() - .userId(userId) - .type(Type.TODAY) - .content("Task 1") - .isBookmark(false) - .todayDate(LocalDate.now()) - .todayStatus(TodayStatus.COMPLETED) - .createDate(LocalDateTime.now()) - .modifyDate(LocalDateTime.now()) - .build(), - Todo.builder() - .userId(userId) - .type(Type.TODAY) - .content("Task 2") - .isBookmark(true) - .todayDate(LocalDate.now()) - .todayStatus(TodayStatus.COMPLETED) - .createDate(LocalDateTime.now()) - .modifyDate(LocalDateTime.now()) - .build() - ); - + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต - ํ† ํฐ ๊ฒ€์ฆ ํ›„ ์‘๋‹ต ํ™•์ธ") + void deleteUserSuccess() throws Exception { // ํ† ํฐ ๊ฒ€์ฆ ์„ฑ๊ณต when(jwtService.verifyToken(anyString())).thenReturn(true); when(jwtService.getUserIdInToken(anyString())).thenReturn(userId.toString()); - // User ์ฐพ๊ธฐ ์„ฑ๊ณต - when(userRepository.findById(userId)).thenReturn(Optional.of(user)); - - // Todo ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜ - when(todoRepository.findAllByUserId(userId)).thenReturn(todos); - - doNothing().when(jwtService).deleteRefreshToken(anyString()); - doNothing().when(userRepository).delete(user); + // UserService์˜ deleteUser()๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธ + doNothing().when(userService).deleteUser(userId); mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + accessToken)) @@ -143,21 +94,4 @@ void deleteUserFailureInvalidToken() throws Exception { .andExpect(status().isBadRequest()) .andDo(print()); } - - @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ") - void deleteUserFailureUserNotFound() throws Exception { - // Given - // User ์ฐพ๊ธฐ ์‹คํŒจ - when(jwtService.verifyToken(anyString())).thenReturn(true); - when(jwtService.getUserIdInToken(anyString())).thenReturn(userId.toString()); - - when(userRepository.findById(userId)).thenReturn(Optional.empty()); - - // When & Then - mockMvc.perform(MockMvcRequestBuilders.delete("/user") - .header("Authorization", "Bearer " + accessToken)) -// .andExpect(status().isNotFound()) - .andDo(print()); - } } From f36fe2f703279b30668b3e9a58be242fbf6563da Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 15 Oct 2024 19:52:53 +0900 Subject: [PATCH 073/177] =?UTF-8?q?chore:=20test=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/server/poptato/todo/api/TodoControllerTest.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/test/java/server/poptato/todo/api/TodoControllerTest.java diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java new file mode 100644 index 0000000..94aecf2 --- /dev/null +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -0,0 +1,4 @@ +package server.poptato.todo.api; + +public class TodoControllerTest { +} From 9c777c1a9aee6dd16321b049f0936e0143f5506b Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 15 Oct 2024 20:31:03 +0900 Subject: [PATCH 074/177] =?UTF-8?q?refactor:=20origin=20=EB=B9=BC=EA=B8=B0?= =?UTF-8?q?=20+=20todorepository=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/auth/api/AuthController.java | 8 +++----- .../poptato/auth/application/service/AuthService.java | 5 ++--- .../external/kakao/service/KakaoSocialService.java | 5 ++++- .../poptato/external/kakao/service/SocialService.java | 2 +- .../poptato/todo/domain/repository/TodoRepository.java | 7 +------ .../poptato/todo/infra/repository/JpaTodoRepository.java | 7 +------ .../poptato/user/application/service/UserService.java | 4 +--- 7 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index c96f376..2214b8f 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -9,12 +9,11 @@ import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; import server.poptato.external.kakao.resolver.KakaoCode; -import server.poptato.external.kakao.resolver.OriginHeader; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; import server.poptato.user.resolver.UserId; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; @RestController @RequestMapping("/auth") @@ -25,9 +24,8 @@ public class AuthController { @PostMapping("/login") public BaseResponse login( - @KakaoCode String kakaoCode, - @OriginHeader String originHeader) { - LoginResponseDto response = authService.login(originHeader, kakaoCode); + @KakaoCode String kakaoCode) { + LoginResponseDto response = authService.login(kakaoCode); return new BaseResponse<>(SUCCESS, response); } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 9da761b..ac49199 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -10,7 +10,6 @@ import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; -import server.poptato.user.infra.repository.JpaUserRepository; import java.util.Optional; @@ -24,8 +23,8 @@ public class AuthService { private final KakaoSocialService kakaoSocialService; private final UserRepository userRepository; - public LoginResponseDto login(final String baseUrl, final String kakaoCode) { - KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(baseUrl, kakaoCode); + public LoginResponseDto login(final String kakaoCode) { + KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(kakaoCode); String kakaoId = info.kakaoId(); String name = info.nickname(); String email = info.email(); diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java index c9fe664..f73d9b4 100644 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -16,6 +16,9 @@ public class KakaoSocialService extends SocialService { @Value("${kakao.client-id}") private String clientId; + + @Value("${kakao.baseUrl}") + private String baseUrl; private static final String Bearer = "Bearer "; private static final String GRANT_TYPE = "authorization_code"; private static final String KAKAO_ROUTER = "/login/oauth2/code/kakao"; @@ -23,7 +26,7 @@ public class KakaoSocialService extends SocialService { private final KakaoApiClient kakaoApiClient; @Override - public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String baseUrl, String kakaoCode) { + public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String kakaoCode) { String redirectUrl = baseUrl + KAKAO_ROUTER; KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( GRANT_TYPE, diff --git a/src/main/java/server/poptato/external/kakao/service/SocialService.java b/src/main/java/server/poptato/external/kakao/service/SocialService.java index 346ae80..300dd6f 100644 --- a/src/main/java/server/poptato/external/kakao/service/SocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/SocialService.java @@ -4,6 +4,6 @@ import server.poptato.external.kakao.dto.response.KakaoUserInfo; public abstract class SocialService { - public abstract KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String baseUrl, String kakaoCode); + public abstract KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String kakaoCode); } \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 14cd366..f9198e6 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -1,10 +1,5 @@ package server.poptato.todo.domain.repository; -import server.poptato.todo.domain.entity.Todo; - -import java.util.List; - public interface TodoRepository { - List findAllByUserId(Long userId); - void deleteAll(List todos); + void deleteAllByUserId(Long userId); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 2e6d6a3..27b58de 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -4,12 +4,7 @@ import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; -import java.util.List; - public interface JpaTodoRepository extends TodoRepository, JpaRepository { @Override - List findAllByUserId(Long userId); - @Override - void deleteAll(List todos); - + void deleteAllByUserId(Long userId); } diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 39ba5db..eadbce4 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -6,10 +6,8 @@ import server.poptato.auth.application.service.JwtService; import server.poptato.global.exception.BaseException; import server.poptato.todo.domain.repository.TodoRepository; -import server.poptato.todo.infra.repository.JpaTodoRepository; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; -import server.poptato.user.infra.repository.JpaUserRepository; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.USER_NOT_FOUND_EXCEPTION; @@ -24,7 +22,7 @@ public class UserService { public void deleteUser(Long userId) { User user = userRepository.findById(userId) .orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); - todoRepository.deleteAll(todoRepository.findAllByUserId(userId)); + todoRepository.deleteAllByUserId(userId); jwtService.deleteRefreshToken(String.valueOf(userId)); userRepository.delete(user); } From 6b85c43ab834c5f22c4fcd07bf3663620333b113 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 15 Oct 2024 22:43:39 +0900 Subject: [PATCH 075/177] =?UTF-8?q?fix:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthController.java | 5 +-- .../api/request/KakaoLoginRequestDto.java | 5 +++ .../java/server/poptato/config/WebConfig.java | 7 ---- .../external/kakao/resolver/KakaoCode.java | 11 ------ .../kakao/resolver/KakaoCodeResolver.java | 36 ------------------- .../external/kakao/resolver/OriginHeader.java | 11 ------ .../kakao/resolver/OriginResolver.java | 33 ----------------- 7 files changed, 8 insertions(+), 100 deletions(-) create mode 100644 src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java delete mode 100644 src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java delete mode 100644 src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java delete mode 100644 src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java delete mode 100644 src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 2214b8f..94645e0 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import server.poptato.auth.api.request.KakaoLoginRequestDto; import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; @@ -23,8 +24,8 @@ public class AuthController { private final AuthService authService; @PostMapping("/login") - public BaseResponse login( - @KakaoCode String kakaoCode) { + public BaseResponse login(@RequestBody KakaoLoginRequestDto kakaoLoginRequestDto) { + String kakaoCode = kakaoLoginRequestDto.kakaoCode(); LoginResponseDto response = authService.login(kakaoCode); return new BaseResponse<>(SUCCESS, response); } diff --git a/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java b/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java new file mode 100644 index 0000000..d95a87f --- /dev/null +++ b/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java @@ -0,0 +1,5 @@ +package server.poptato.auth.api.request; + + +public record KakaoLoginRequestDto(String kakaoCode) { +} diff --git a/src/main/java/server/poptato/config/WebConfig.java b/src/main/java/server/poptato/config/WebConfig.java index ffa78f1..2617a65 100644 --- a/src/main/java/server/poptato/config/WebConfig.java +++ b/src/main/java/server/poptato/config/WebConfig.java @@ -6,8 +6,6 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import server.poptato.external.kakao.resolver.KakaoCodeResolver; -import server.poptato.external.kakao.resolver.OriginResolver; import server.poptato.user.resolver.UserResolver; import java.util.List; @@ -16,9 +14,6 @@ @RequiredArgsConstructor public class WebConfig implements WebMvcConfigurer { private final UserResolver userResolver; - private final KakaoCodeResolver kakaoCodeResolver; - private final OriginResolver originResolver; - @Override public void addCorsMappings(final CorsRegistry registry) { registry.addMapping("/**") @@ -32,8 +27,6 @@ public void addCorsMappings(final CorsRegistry registry) { @Override public void addArgumentResolvers(List resolvers) { resolvers.add(userResolver); - resolvers.add(kakaoCodeResolver); - resolvers.add(originResolver); } } \ No newline at end of file diff --git a/src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java b/src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java deleted file mode 100644 index 209e0e4..0000000 --- a/src/main/java/server/poptato/external/kakao/resolver/KakaoCode.java +++ /dev/null @@ -1,11 +0,0 @@ -package server.poptato.external.kakao.resolver; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target(ElementType.PARAMETER) -@Retention(RetentionPolicy.RUNTIME) -public @interface KakaoCode { -} diff --git a/src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java b/src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java deleted file mode 100644 index e651290..0000000 --- a/src/main/java/server/poptato/external/kakao/resolver/KakaoCodeResolver.java +++ /dev/null @@ -1,36 +0,0 @@ -package server.poptato.external.kakao.resolver; - - -import jakarta.servlet.http.HttpServletRequest; -import lombok.RequiredArgsConstructor; -import org.springframework.core.MethodParameter; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; -import server.poptato.global.exception.BaseException; - -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.EMPTY_KAKAO_CODE_EXCEPTION; - - -@Component -@RequiredArgsConstructor -public class KakaoCodeResolver implements HandlerMethodArgumentResolver { - private static final String AUTHORIZATION = "authorization"; - - @Override - public boolean supportsParameter(MethodParameter parameter) { - return parameter.hasParameterAnnotation(KakaoCode.class) && String.class.equals(parameter.getParameterType()); - } - - @Override - public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { - final HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest(); - final String token = request.getHeader(AUTHORIZATION); - if (token == null || token.isBlank() || !token.startsWith("Bearer ")) { - throw new BaseException(EMPTY_KAKAO_CODE_EXCEPTION); - } - return token.substring("Bearer ".length()); - } -} diff --git a/src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java b/src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java deleted file mode 100644 index ee64856..0000000 --- a/src/main/java/server/poptato/external/kakao/resolver/OriginHeader.java +++ /dev/null @@ -1,11 +0,0 @@ -package server.poptato.external.kakao.resolver; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target(ElementType.PARAMETER) -@Retention(RetentionPolicy.RUNTIME) -public @interface OriginHeader { -} \ No newline at end of file diff --git a/src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java b/src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java deleted file mode 100644 index c24656e..0000000 --- a/src/main/java/server/poptato/external/kakao/resolver/OriginResolver.java +++ /dev/null @@ -1,33 +0,0 @@ -package server.poptato.external.kakao.resolver; - -import jakarta.servlet.http.HttpServletRequest; -import org.springframework.core.MethodParameter; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; -import server.poptato.global.exception.BaseException; - -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.ORIGIN_HEADER_MISSING_EXCEPTION; - -@Component -public class OriginResolver implements HandlerMethodArgumentResolver { - - private static final String ORIGIN = "origin"; - - @Override - public boolean supportsParameter(MethodParameter parameter) { - return parameter.hasParameterAnnotation(OriginHeader.class) && String.class.equals(parameter.getParameterType()); - } - - @Override - public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { - HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest(); - String originHeader = request.getHeader(ORIGIN); - if (originHeader == null || originHeader.isBlank()) { - throw new BaseException(ORIGIN_HEADER_MISSING_EXCEPTION); - } - return originHeader; - } -} \ No newline at end of file From 671d0992a450219261672eacf366930f11d5fb09 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Tue, 15 Oct 2024 22:45:28 +0900 Subject: [PATCH 076/177] =?UTF-8?q?refactor:=20import=EB=AC=B8=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/auth/api/AuthController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 94645e0..11100ed 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -9,7 +9,6 @@ import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; -import server.poptato.external.kakao.resolver.KakaoCode; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; import server.poptato.user.resolver.UserId; From 2e965ba8e9837d98aa17e15048608c6940598582 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 00:31:48 +0900 Subject: [PATCH 077/177] =?UTF-8?q?fix:=20=EC=B9=B4=EC=B9=B4=EC=98=A4?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kakao/feign/KakaoAuthApiClient.java | 1 - .../kakao/service/KakaoSocialService.java | 18 +++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java b/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java index 9336827..7b8fb05 100644 --- a/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java +++ b/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java @@ -15,7 +15,6 @@ public interface KakaoAuthApiClient { KakaoAccessTokenResponse getOAuth2AccessToken( @RequestParam("grant_type") String grantType, @RequestParam("client_id") String clientId, - @RequestParam("redirect_uri") String redirectUri, @RequestParam("code") String code ); } diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java index f73d9b4..c2edf02 100644 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -16,29 +16,29 @@ public class KakaoSocialService extends SocialService { @Value("${kakao.client-id}") private String clientId; - - @Value("${kakao.baseUrl}") - private String baseUrl; private static final String Bearer = "Bearer "; private static final String GRANT_TYPE = "authorization_code"; - private static final String KAKAO_ROUTER = "/login/oauth2/code/kakao"; private final KakaoAuthApiClient kakaoAuthApiClient; private final KakaoApiClient kakaoApiClient; @Override public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String kakaoCode) { - String redirectUrl = baseUrl + KAKAO_ROUTER; + // ์ธ๊ฐ€ ์ฝ”๋“œ๋กœ ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ (redirect_uri ์—†์ด) KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( GRANT_TYPE, clientId, - redirectUrl, kakaoCode ); - // ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญ + // ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์นด์นด์˜ค ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญ KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + tokenResponse.accessToken()); - // ID์™€ ๋‹‰๋„ค์ž„์„ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ - return new KakaoUserInfo(String.valueOf(userResponse.id()), userResponse.properties().nickname(), userResponse.kakao_account().email()); + // ID, ๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ + return new KakaoUserInfo( + String.valueOf(userResponse.id()), + userResponse.properties().nickname(), + userResponse.kakao_account().email() + ); } } + From b1cb142c741e15a8c305bdba201b7ea9236941c5 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 10:37:47 +0900 Subject: [PATCH 078/177] =?UTF-8?q?fix:=20code=20=EB=A5=BC=20accesstoken?= =?UTF-8?q?=20=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/service/AuthService.java | 4 ++-- .../external/kakao/service/KakaoSocialService.java | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index ac49199..bc9e84e 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -23,8 +23,8 @@ public class AuthService { private final KakaoSocialService kakaoSocialService; private final UserRepository userRepository; - public LoginResponseDto login(final String kakaoCode) { - KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(kakaoCode); + public LoginResponseDto login(final String accessToken) { + KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(accessToken); String kakaoId = info.kakaoId(); String name = info.nickname(); String email = info.email(); diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java index c2edf02..603cbc8 100644 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -22,16 +22,16 @@ public class KakaoSocialService extends SocialService { private final KakaoApiClient kakaoApiClient; @Override - public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String kakaoCode) { + public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String accessToken) { // ์ธ๊ฐ€ ์ฝ”๋“œ๋กœ ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ (redirect_uri ์—†์ด) - KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( - GRANT_TYPE, - clientId, - kakaoCode - ); +// KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( +// GRANT_TYPE, +// clientId, +// kakaoCode +// ); // ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์นด์นด์˜ค ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญ - KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + tokenResponse.accessToken()); + KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + accessToken); // ID, ๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ return new KakaoUserInfo( From c683cd7bc50d5fedccd678be3913786115043f2c Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 10:59:36 +0900 Subject: [PATCH 079/177] =?UTF-8?q?test:=20todoService=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/service/AuthService.java | 3 +- .../poptato/todo/application/TodoService.java | 20 ++++++++++ .../domain/repository/UserRepository.java | 2 + .../poptato/user/exception/UserException.java | 14 +++++++ .../errorcode/UserExceptionErrorCode.java | 36 ++++++++++++++++++ .../handler/UserExceptionHandler.java | 20 ++++++++++ .../todo/application/TodoServiceTest.java | 38 +++++++++++++++++++ 7 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 src/main/java/server/poptato/user/exception/UserException.java create mode 100644 src/main/java/server/poptato/user/exception/errorcode/UserExceptionErrorCode.java create mode 100644 src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java create mode 100644 src/test/java/server/poptato/todo/application/TodoServiceTest.java diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 3535455..9da761b 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -9,6 +9,7 @@ import server.poptato.global.dto.TokenPair; import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.infra.repository.JpaUserRepository; import java.util.Optional; @@ -21,7 +22,7 @@ public class AuthService { private final JwtService jwtService; private final KakaoSocialService kakaoSocialService; - private final JpaUserRepository userRepository; + private final UserRepository userRepository; public LoginResponseDto login(final String baseUrl, final String kakaoCode) { KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(baseUrl, kakaoCode); diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 94b0fec..e42cc06 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,11 +1,31 @@ package server.poptato.todo.application; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import server.poptato.todo.api.response.TodayListResponseDto; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.user.domain.repository.UserRepository; +import server.poptato.user.exception.UserException; +import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +@RequiredArgsConstructor @Service public class TodoService { + private final UserRepository userRepository; public TodayListResponseDto getTodayList(long userId, int page, int size) { + checkIsExistUser(userId); + + PageRequest pageRequest = PageRequest.of(page, size); + Page todays; + todays = todoRepository.find + return null; } + + private void checkIsExistUser(long userId) { + userRepository.findById(userId).orElseThrow(() + -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + } } diff --git a/src/main/java/server/poptato/user/domain/repository/UserRepository.java b/src/main/java/server/poptato/user/domain/repository/UserRepository.java index e2fe7fd..5d094a7 100644 --- a/src/main/java/server/poptato/user/domain/repository/UserRepository.java +++ b/src/main/java/server/poptato/user/domain/repository/UserRepository.java @@ -5,5 +5,7 @@ import java.util.Optional; public interface UserRepository { + Optional findById(Long id); Optional findByKakaoId(String kakaoId); + User save(User user); } \ No newline at end of file diff --git a/src/main/java/server/poptato/user/exception/UserException.java b/src/main/java/server/poptato/user/exception/UserException.java new file mode 100644 index 0000000..73d2c25 --- /dev/null +++ b/src/main/java/server/poptato/user/exception/UserException.java @@ -0,0 +1,14 @@ +package server.poptato.user.exception; + +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +@Getter +public class UserException extends RuntimeException{ + private final ResponseStatus exceptionStatus; + + public UserException(ResponseStatus exceptionStatus) { + super(exceptionStatus.getMessage()); + this.exceptionStatus = exceptionStatus; + } +} diff --git a/src/main/java/server/poptato/user/exception/errorcode/UserExceptionErrorCode.java b/src/main/java/server/poptato/user/exception/errorcode/UserExceptionErrorCode.java new file mode 100644 index 0000000..f479fc5 --- /dev/null +++ b/src/main/java/server/poptato/user/exception/errorcode/UserExceptionErrorCode.java @@ -0,0 +1,36 @@ +package server.poptato.user.exception.errorcode; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import server.poptato.global.response.status.ResponseStatus; + +@RequiredArgsConstructor +public enum UserExceptionErrorCode implements ResponseStatus { + + /** + * 4000: User ๋„๋ฉ”์ธ ์˜ค๋ฅ˜ + */ + + USER_NOT_EXIST(4000, HttpStatus.BAD_REQUEST.value(), "์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค."); + + private final int code; + private final int status; + private final String message; + + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } +} + diff --git a/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java b/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java new file mode 100644 index 0000000..9028245 --- /dev/null +++ b/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java @@ -0,0 +1,20 @@ +package server.poptato.user.exception.handler; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import server.poptato.global.response.BaseErrorResponse; +import server.poptato.user.exception.UserException; + +@Slf4j +@RestControllerAdvice +public class UserExceptionHandler { + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(UserException.class) + public BaseErrorResponse handleUserException(UserException e) { + log.error("[UserException: handle_UserException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); + } +} diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java new file mode 100644 index 0000000..3ebdc55 --- /dev/null +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -0,0 +1,38 @@ +package server.poptato.todo.application; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.user.exception.UserException; +import server.poptato.user.exception.errorcode.UserExceptionErrorCode; + +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest +class TodoServiceTest { + @Autowired + private TodoService todoService; + @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ํ•ด๋‹นํ•˜๋Š”_์œ ์ €์ •๋ณด_์—†๋Š”_์˜ˆ์™ธ(){ + //given + Long notExistUserId = 100L; + int page = 0; + int size = 8; + //when & then + assertThatThrownBy(()-> todoService.getTodayList(notExistUserId,page,size)) + .isInstanceOf(UserException.class) + .hasMessage(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); + } + @DisplayName("size=8์„ ์š”์ฒญํ•˜๋ฉด, ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต๋œ๋‹ค.") + @Test + void ๋ฐ์ดํ„ฐ_8๊ฐœ๋งŒ_์‘๋‹ต(){ + //given + Long userId = 1L; + int page = 0; + int size = 8; + //when & then + assertThat(todoService.getTodayList(userId,page,size).getTodays().size(),size); + } +} \ No newline at end of file From d357aba486f8d578d493dddfc2ac62a2f17044b2 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 13:16:23 +0900 Subject: [PATCH 080/177] =?UTF-8?q?feat:=20=ED=88=AC=EB=8D=B0=EC=9D=B4=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/global/response/BaseResponse.java | 2 +- .../poptato/todo/api/TodoController.java | 5 +- .../api/response/TodayListResponseDto.java | 4 - .../poptato/todo/application/TodoService.java | 33 +++++++- .../response/TodayListResponseDto.java | 21 +++++ .../response/TodayResponseDto.java | 30 +++++++ .../poptato/todo/domain/entity/Todo.java | 9 ++ .../domain/repository/TodoRepository.java | 16 ++++ .../poptato/todo/api/TodoControllerTest.java | 3 + .../todo/application/TodoServiceTest.java | 29 ++++++- .../response/TodayResponseDtoTest.java | 52 ++++++++++++ .../domain/repository/TodoRepositoryTest.java | 83 +++++++++++++++++++ 12 files changed, 274 insertions(+), 13 deletions(-) delete mode 100644 src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java create mode 100644 src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java create mode 100644 src/main/java/server/poptato/todo/application/response/TodayResponseDto.java create mode 100644 src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java create mode 100644 src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java diff --git a/src/main/java/server/poptato/global/response/BaseResponse.java b/src/main/java/server/poptato/global/response/BaseResponse.java index 8759924..4c7e8ff 100644 --- a/src/main/java/server/poptato/global/response/BaseResponse.java +++ b/src/main/java/server/poptato/global/response/BaseResponse.java @@ -29,7 +29,7 @@ public BaseResponse(T result) { this.code = SUCCESS.getCode(); this.status = SUCCESS.getStatus(); this.message = SUCCESS.getMessage(); - this.result = null; + this.result = result; } public int getCode() { diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 0aa2528..dfcf058 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -5,7 +5,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import server.poptato.global.response.BaseResponse; -import server.poptato.todo.api.response.TodayListResponseDto; +import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.TodoService; import server.poptato.user.resolver.UserId; @@ -15,10 +15,9 @@ public class TodoController { private final TodoService todoService; @GetMapping("/todays") public BaseResponse getTodayList( - @UserId Long userId, @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "8") int size){ - TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size); + TodayListResponseDto todayListResponse = todoService.getTodayList(1, page, size); return new BaseResponse<>(todayListResponse); } } diff --git a/src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java b/src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java deleted file mode 100644 index 144d6c2..0000000 --- a/src/main/java/server/poptato/todo/api/response/TodayListResponseDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package server.poptato.todo.api.response; - -public class TodayListResponseDto { -} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index e42cc06..2b0e62d 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -3,25 +3,50 @@ import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import server.poptato.todo.api.response.TodayListResponseDto; +import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + @RequiredArgsConstructor @Service public class TodoService { private final UserRepository userRepository; + private final TodoRepository todoRepository; public TodayListResponseDto getTodayList(long userId, int page, int size) { checkIsExistUser(userId); + LocalDate todayDate = LocalDate.now(); PageRequest pageRequest = PageRequest.of(page, size); - Page todays; - todays = todoRepository.find - return null; + // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ๋จผ์ € ์กฐํšŒ + Page incompleteTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE, pageRequest); + + List todays = new ArrayList<>(incompleteTodos.getContent()); + + // ๋งŒ์•ฝ ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ์ด size๋ฅผ ์ฑ„์šฐ์ง€ ๋ชปํ•˜๋ฉด, ์™„๋ฃŒ๋œ ํ•  ์ผ์—์„œ ๋‚จ์€ ํ•  ์ผ๋งŒํผ ๊ฐ€์ ธ์˜ด + if (todays.size() < size) { + int remainingSize = size - todays.size(); + Pageable completedPageable = PageRequest.of(0, remainingSize); + + Page completedTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + userId, Type.TODAY, todayDate, TodayStatus.COMPLETED, completedPageable); + + todays.addAll(completedTodos.getContent()); + } + + return new TodayListResponseDto(todayDate,todays); } private void checkIsExistUser(long userId) { diff --git a/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java new file mode 100644 index 0000000..7938b8c --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java @@ -0,0 +1,21 @@ +package server.poptato.todo.application.response; + +import lombok.Getter; +import server.poptato.todo.domain.entity.Todo; + +import java.time.LocalDate; +import java.util.List; +import java.util.stream.Collectors; + +@Getter +public class TodayListResponseDto { + LocalDate date; + List todays; + + public TodayListResponseDto(LocalDate date, List todays) { + this.date = date; + this.todays = todays.stream() + .map(TodayResponseDto::new) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java new file mode 100644 index 0000000..f34c8f0 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java @@ -0,0 +1,30 @@ +package server.poptato.todo.application.response; + +import lombok.Getter; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.value.TodayStatus; + +import java.time.temporal.ChronoUnit; + +@Getter +public class TodayResponseDto { + Long todoId; + String content; + TodayStatus todayStatus; + boolean isBookmark; + Integer deadline; + + public TodayResponseDto(Todo todo) { + this.todoId = todo.getId(); + this.content = todo.getContent(); + this.todayStatus = todo.getTodayStatus(); + this.isBookmark = todo.isBookmark(); + + if (todo.getDeadline() != null && todo.getTodayDate() != null) { + this.deadline = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); + } else { + // ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NULL + this.deadline = null; + } + } +} diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index 78e0bfc..de5f1bf 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -6,6 +6,7 @@ import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import org.springframework.lang.Nullable; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; @@ -29,12 +30,20 @@ public class Todo{ private Type type; @NotNull private String content; + @Nullable private LocalDate deadline; @NotNull private boolean isBookmark; + @Nullable private LocalDate todayDate; @Enumerated(EnumType.STRING) private TodayStatus todayStatus; + @Nullable + private Integer todayOrder; + @Nullable + private Integer backlogOrder; + @Nullable + private LocalDateTime completedDateTime; @CreatedDate @Column(updatable = false) private LocalDateTime createDate; diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index f9198e6..3399f9c 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -1,5 +1,21 @@ package server.poptato.todo.domain.repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; + +import java.time.LocalDate; + public interface TodoRepository { void deleteAllByUserId(Long userId); + // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ + Page findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus, Pageable pageable); + + // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ + Page findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus, Pageable pageable); + } diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 5ead1b3..d81c904 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -14,6 +14,7 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; import server.poptato.todo.application.TodoService; +import server.poptato.user.application.service.UserService; import static org.mockito.Mockito.verify; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; @@ -26,6 +27,8 @@ public class TodoControllerTest { private MockMvc mockMvc; @MockBean private TodoService todoService; + @MockBean + private UserService userService; @Autowired private JwtService jwtService; @MockBean diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 3ebdc55..855de26 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -4,6 +4,9 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.application.response.TodayResponseDto; +import server.poptato.todo.domain.value.TodayStatus; import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; @@ -33,6 +36,30 @@ class TodoServiceTest { int page = 0; int size = 8; //when & then - assertThat(todoService.getTodayList(userId,page,size).getTodays().size(),size); + assertThat(todoService.getTodayList(userId,page,size).getTodays().size()).isEqualTo(size); + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ๋จผ์ € ์กฐํšŒ๋˜๊ณ , ๊ทธ ๋‹ค์Œ ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ์กฐํšŒ๋œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ชฉ๋ก_์กฐํšŒ_๋‹ฌ์„ฑ์—ฌ๋ถ€_์ •๋ ฌ(){ + //given + Long userId = 1L; + int page = 0; + int size = 8; + + //when + TodayListResponseDto todayList = todoService.getTodayList(userId, page, size); + + //then + boolean foundCompleted = false; + for (TodayResponseDto today : todayList.getTodays()) { + if (today.getTodayStatus() == TodayStatus.COMPLETED) { + foundCompleted = true; + } + // COMPLETED๊ฐ€ ๋‚˜์˜ค๊ธฐ ์‹œ์ž‘ํ•œ ์ดํ›„์—๋Š” INCOMPLETE๊ฐ€ ๋‚˜์™€์„œ๋Š” ์•ˆ๋จ + if (foundCompleted) { + assertThat(today.getTodayStatus()).isEqualTo(TodayStatus.COMPLETED); + } + } } } \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java b/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java new file mode 100644 index 0000000..7e3177a --- /dev/null +++ b/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java @@ -0,0 +1,52 @@ +package server.poptato.todo.application.response; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.value.TodayStatus; + +import java.time.LocalDate; + +import static org.assertj.core.api.Assertions.*; + +class TodayResponseDtoTest { + @DisplayName("์˜ค๋Š˜์ด 16์ผ์ด๊ณ  ๋งˆ๊ฐ์ด 20์ผ์ด๋ฉด ๋‚จ์€ ์ผ์€ 4์ผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.") + @Test + void ๋งˆ๊ฐ๊ธฐํ•œ์ด_์ •์ƒ์ ์œผ๋กœ_๊ณ„์‚ฐ๋œ๋‹ค() { + //given + Todo todo = Todo.builder() + .id(1L) + .content("Test Todo") + .todayStatus(TodayStatus.COMPLETED) + .isBookmark(false) + .deadline(LocalDate.of(2024, 10, 20)) + .todayDate(LocalDate.of(2024, 10, 16)) // ํ˜„์žฌ ๋‚ ์งœ + .build(); + + //when + TodayResponseDto responseDto = new TodayResponseDto(todo); + + //then + assertThat(responseDto.getDeadline()).isEqualTo(4); + } + + @DisplayName("๋งˆ๊ฐ์ด ์„ค์ •์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ NULL๋กœ ์ •์ƒ ์‘๋‹ต๋œ๋‹ค.") + @Test + void ๋งˆ๊ฐ๊ธฐํ•œ_null_์‘๋‹ต() { + //given + Todo todo = Todo.builder() + .id(1L) + .content("Test Todo without deadline") + .todayStatus(TodayStatus.INCOMPLETE) + .isBookmark(false) + .deadline(null) // ๋งˆ๊ฐ ๊ธฐํ•œ์ด ์—†์Œ + .todayDate(LocalDate.of(2024, 10, 16)) // ํ˜„์žฌ ๋‚ ์งœ + .build(); + + //when + TodayResponseDto responseDto = new TodayResponseDto(todo); + + //then + assertThat(responseDto.getDeadline()).isNull(); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java new file mode 100644 index 0000000..109f671 --- /dev/null +++ b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java @@ -0,0 +1,83 @@ +package server.poptato.todo.domain.repository; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; + +import static org.assertj.core.api.Assertions.*; + +import java.time.LocalDate; +import java.util.List; + +@SpringBootTest +class TodoRepositoryTest { + @Autowired + private TodoRepository todoRepository; + + @DisplayName("userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋‹ฌ์„ฑ๋œ ํˆฌ๋ฐ์ด๊ฐ€ ๋‹ฌ์„ฑ ์‹œ๊ฐ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋‹ฌ์„ฑ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() { + //given + Long userId = 1L; + LocalDate todayDate = LocalDate.of(2024, 10, 16); + Pageable pageable = PageRequest.of(0, 8); + + //when + Page result = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + userId, Type.TODAY, todayDate, TodayStatus.COMPLETED ,pageable); + + assertThat(result).isNotEmpty(); + List todos = result.getContent(); + + // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ + assertThat(todos.stream().allMatch(todo -> todo.getUserId().equals(userId))).isTrue(); + + // type์ด ๋ชจ๋‘ TODAY์ธ์ง€ ํ™•์ธ + assertThat(todos.stream().allMatch(todo -> todo.getType() == Type.TODAY)).isTrue(); + + // todayDate๊ฐ€ ๋ชจ๋‘ 2024-10-16์ธ์ง€ ํ™•์ธ + assertThat(todos.stream().allMatch(todo -> todo.getTodayDate().equals(todayDate))).isTrue(); + + // ์™„๋ฃŒ๋œ ํ•  ์ผ์€ completeDateTime์ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ + for (int i = 0; i < todos.size() - 1; i++) { + assertThat(todos.get(i).getCompletedDateTime()).isAfterOrEqualTo(todos.get(i + 1).getCompletedDateTime()); + } + } + + @DisplayName("userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ฏธ๋‹ฌ์„ฑ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() { + //given + Long userId = 1L; + LocalDate todayDate = LocalDate.of(2024, 10, 16); + Pageable pageable = PageRequest.of(0, 8); + + //when + Page result = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE, pageable); + + assertThat(result).isNotEmpty(); + List todos = result.getContent(); + + // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ + assertThat(todos.stream().allMatch(todo -> todo.getUserId().equals(userId))).isTrue(); + + // type์ด ๋ชจ๋‘ TODAY์ธ์ง€ ํ™•์ธ + assertThat(todos.stream().allMatch(todo -> todo.getType() == Type.TODAY)).isTrue(); + + // todayDate๊ฐ€ ๋ชจ๋‘ 2024-10-16์ธ์ง€ ํ™•์ธ + assertThat(todos.stream().allMatch(todo -> todo.getTodayDate().equals(todayDate))).isTrue(); + + // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ์€ todayOrder๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ + for (int i = 0; i < todos.size() - 1; i++) { + assertThat(todos.get(i).getTodayOrder()).isLessThanOrEqualTo(todos.get(i + 1).getTodayOrder()); + } + } +} \ No newline at end of file From cb5da581e2c153d083464129672c68ad9836e796 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 14:53:12 +0900 Subject: [PATCH 081/177] =?UTF-8?q?refactor:=20=EC=95=88=EC=93=B0=EB=8A=94?= =?UTF-8?q?=20kako=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/external/kakao/service/KakaoSocialService.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java index 603cbc8..d6f4cce 100644 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java @@ -4,7 +4,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import server.poptato.external.kakao.dto.response.KakaoAccessTokenResponse; import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.dto.response.KakaoUserResponse; import server.poptato.external.kakao.feign.KakaoApiClient; @@ -23,12 +22,6 @@ public class KakaoSocialService extends SocialService { @Override public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String accessToken) { - // ์ธ๊ฐ€ ์ฝ”๋“œ๋กœ ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ (redirect_uri ์—†์ด) -// KakaoAccessTokenResponse tokenResponse = kakaoAuthApiClient.getOAuth2AccessToken( -// GRANT_TYPE, -// clientId, -// kakaoCode -// ); // ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์นด์นด์˜ค ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญ KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + accessToken); From 42f4899c33a2ca886d2effb7add7391ea6ad1225 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 15:07:56 +0900 Subject: [PATCH 082/177] =?UTF-8?q?chored:=20todocontrollertest=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 94aecf2..b41e0e0 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -1,4 +1,75 @@ package server.poptato.todo.api; +import jakarta.persistence.EntityNotFoundException; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.test.web.servlet.MockMvc; +import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.user.application.service.UserService; +import server.poptato.user.infra.repository.JpaUserRepository; + +import static org.mockito.Mockito.doThrow; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc public class TodoControllerTest { + @Autowired + private MockMvc mockMvc; + + @MockBean + private JwtService jwtService; + @MockBean + private TodoService todoService; + + @MockBean + private UserService userService; + + @MockBean + private JpaUserRepository userRepository; + + @MockBean + private TodoRepository todoRepository; + + @MockBean + private RedisTemplate redisTemplate; + + private String accessToken; + private final Long userId = 1L; + + @BeforeEach + void createAccessToken() { + accessToken = jwtService.createAccessToken(userId.toString()); + } + + @AfterEach + void deleteRefreshToken() { + jwtService.deleteRefreshToken(userId.toString()); + } + + @Test + public void shouldReturnNoContent_WhenTodoIsDeleted() throws Exception { + Long todoId = 1L; + + mockMvc.perform(delete("/todo/{todoId}", todoId)) + .andExpect(status().isNoContent()); + } + + @Test + public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { + Long todoId = 1L; + doThrow(new EntityNotFoundException("Todo not found with id: " + todoId)) + .when(todoService).deleteTodoById(todoId); + + mockMvc.perform(delete("/todo/{todoId}", todoId)) + .andExpect(status().isNotFound()); + } } From a3eb4ac6799afdca31863d2a4f719d5f0865f9f4 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 15:15:03 +0900 Subject: [PATCH 083/177] =?UTF-8?q?chore:=20todo=20service=20test=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/service/TodoService.java | 4 ++ .../domain/repository/TodoRepository.java | 6 +++ .../infra/repository/JpaTodoRepository.java | 7 +++ .../todo/application/TodoServiceTest.java | 54 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 src/main/java/server/poptato/todo/application/service/TodoService.java create mode 100644 src/test/java/server/poptato/todo/application/TodoServiceTest.java diff --git a/src/main/java/server/poptato/todo/application/service/TodoService.java b/src/main/java/server/poptato/todo/application/service/TodoService.java new file mode 100644 index 0000000..c79bf03 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/service/TodoService.java @@ -0,0 +1,4 @@ +package server.poptato.todo.application.service; + +public class TodoService { +} diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index f9198e6..b291ded 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -1,5 +1,11 @@ package server.poptato.todo.domain.repository; +import server.poptato.todo.domain.entity.Todo; + +import java.util.Optional; + public interface TodoRepository { void deleteAllByUserId(Long userId); + Optional findById(Long todoId); + void delete(Todo todo); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 27b58de..38bbe84 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -4,7 +4,14 @@ import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; +import java.util.Optional; + public interface JpaTodoRepository extends TodoRepository, JpaRepository { @Override void deleteAllByUserId(Long userId); + @Override + Optional findById(Long todoId); + @Override + void delete(Todo todo); + } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java new file mode 100644 index 0000000..e9a110e --- /dev/null +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -0,0 +1,54 @@ +package server.poptato.todo.application; + +import jakarta.persistence.EntityNotFoundException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.application.service.TodoService; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.*; + +@SpringBootTest +@ExtendWith(MockitoExtension.class) +public class TodoServiceTest { + + @Mock + private TodoRepository todoRepository; + + @InjectMocks + private TodoService todoService; + + @Test + public void shouldDeleteTodoById_WhenTodoExists() { + Long todoId = 1L; + Todo todo = new Todo(); + todo.setId(todoId); + + when(todoRepository.findById(todoId)).thenReturn(Optional.of(todo)); + + todoService.deleteTodoById(todoId); + + // then + verify(todoRepository, times(1)).delete(todo); + } + + @Test + public void shouldThrowException_WhenTodoNotFound() { + // given + Long todoId = 1L; + when(todoRepository.findById(todoId)).thenReturn(Optional.empty()); + + // when & then + assertThrows(EntityNotFoundException.class, () -> { + todoService.deleteTodoById(todoId); + }); + } +} From 48a464a52bfdc835bb0624ca8f81048f52d03a23 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 16:08:44 +0900 Subject: [PATCH 084/177] =?UTF-8?q?feat:=20=ED=88=AC=EB=91=90=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthController.java | 4 +-- .../poptato/global/response/BaseResponse.java | 10 +++---- .../poptato/todo/api/TodoController.java | 26 +++++++++++++++++++ .../todo/application/service/TodoService.java | 17 ++++++++++++ .../poptato/todo/api/TodoControllerTest.java | 24 ++++++++++++++--- .../todo/application/TodoServiceTest.java | 17 ++++++------ 6 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 src/main/java/server/poptato/todo/api/TodoController.java diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 11100ed..92c9068 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -26,7 +26,7 @@ public class AuthController { public BaseResponse login(@RequestBody KakaoLoginRequestDto kakaoLoginRequestDto) { String kakaoCode = kakaoLoginRequestDto.kakaoCode(); LoginResponseDto response = authService.login(kakaoCode); - return new BaseResponse<>(SUCCESS, response); + return new BaseResponse<>(response); } @PostMapping("/logout") @@ -37,6 +37,6 @@ public BaseResponse logout(@UserId Long userId) { @PostMapping("/refresh") public BaseResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { TokenPair response = authService.refresh(tokenRequestDto); - return new BaseResponse<>(SUCCESS, response); + return new BaseResponse<>(response); } } diff --git a/src/main/java/server/poptato/global/response/BaseResponse.java b/src/main/java/server/poptato/global/response/BaseResponse.java index 8759924..533a741 100644 --- a/src/main/java/server/poptato/global/response/BaseResponse.java +++ b/src/main/java/server/poptato/global/response/BaseResponse.java @@ -18,11 +18,11 @@ public class BaseResponse implements ResponseStatus { private final T result; - public BaseResponse(ResponseStatus status, T result) { - this.code = status.getCode(); - this.status = status.getStatus(); - this.message = status.getMessage(); - this.result = result; + public BaseResponse() { + this.code = SUCCESS.getCode(); + this.status = SUCCESS.getStatus(); + this.message = SUCCESS.getMessage(); + this.result = null; } public BaseResponse(T result) { diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java new file mode 100644 index 0000000..ee685b0 --- /dev/null +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -0,0 +1,26 @@ +package server.poptato.todo.api; + +import com.sun.net.httpserver.Authenticator; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import server.poptato.global.response.BaseResponse; +import server.poptato.todo.application.service.TodoService; + +import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; + +@RestController +@RequestMapping("/todo") +@RequiredArgsConstructor +public class TodoController { + + private final TodoService todoService; + + @DeleteMapping("/{todoId}") + public BaseResponse deleteTodoById(@PathVariable Long todoId) { + todoService.deleteTodoById(todoId); + return new BaseResponse<>(); + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/application/service/TodoService.java b/src/main/java/server/poptato/todo/application/service/TodoService.java index c79bf03..127adb6 100644 --- a/src/main/java/server/poptato/todo/application/service/TodoService.java +++ b/src/main/java/server/poptato/todo/application/service/TodoService.java @@ -1,4 +1,21 @@ package server.poptato.todo.application.service; +import jakarta.persistence.EntityNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; + +@Service +@RequiredArgsConstructor public class TodoService { + private final TodoRepository todoRepository; + + @Transactional + public void deleteTodoById(Long todoId) { + Todo todo = todoRepository.findById(todoId) + .orElseThrow(() -> new EntityNotFoundException("Todo not found with id: " + todoId)); + todoRepository.delete(todo); + } } diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index b41e0e0..7cecfce 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; @@ -11,22 +12,26 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.web.servlet.MockMvc; import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.application.service.TodoService; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.user.application.service.UserService; import server.poptato.user.infra.repository.JpaUserRepository; -import static org.mockito.Mockito.doThrow; + +import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest @AutoConfigureMockMvc public class TodoControllerTest { + @Autowired private MockMvc mockMvc; @MockBean private JwtService jwtService; + @MockBean private TodoService todoService; @@ -59,17 +64,28 @@ void deleteRefreshToken() { public void shouldReturnNoContent_WhenTodoIsDeleted() throws Exception { Long todoId = 1L; - mockMvc.perform(delete("/todo/{todoId}", todoId)) - .andExpect(status().isNoContent()); + // todoService์˜ deleteTodoById ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค์ • + doNothing().when(todoService).deleteTodoById(todoId); + + mockMvc.perform(delete("/todo/{todoId}", todoId) + .header("Authorization", "Bearer " + accessToken)) + .andExpect(status().isOk()); + + verify(todoService, times(1)).deleteTodoById(todoId); } @Test public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { Long todoId = 1L; + + // todoService์˜ deleteTodoById๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ EntityNotFoundException ๋ฐœ์ƒํ•˜๋„๋ก ์„ค์ • doThrow(new EntityNotFoundException("Todo not found with id: " + todoId)) .when(todoService).deleteTodoById(todoId); - mockMvc.perform(delete("/todo/{todoId}", todoId)) + mockMvc.perform(delete("/todo/{todoId}", todoId) + .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isNotFound()); + + verify(todoService, times(1)).deleteTodoById(todoId); } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index e9a110e..9a63975 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -6,7 +6,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; import server.poptato.todo.application.service.TodoService; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; @@ -17,36 +19,33 @@ import static org.mockito.Mockito.*; @SpringBootTest -@ExtendWith(MockitoExtension.class) public class TodoServiceTest { - @Mock + @MockBean private TodoRepository todoRepository; - @InjectMocks + @Autowired private TodoService todoService; @Test public void shouldDeleteTodoById_WhenTodoExists() { Long todoId = 1L; - Todo todo = new Todo(); - todo.setId(todoId); + Todo todo = Todo.builder() + .id(todoId) + .build(); when(todoRepository.findById(todoId)).thenReturn(Optional.of(todo)); - + todoService.deleteTodoById(todoId); - // then verify(todoRepository, times(1)).delete(todo); } @Test public void shouldThrowException_WhenTodoNotFound() { - // given Long todoId = 1L; when(todoRepository.findById(todoId)).thenReturn(Optional.empty()); - // when & then assertThrows(EntityNotFoundException.class, () -> { todoService.deleteTodoById(todoId); }); From e08fd98d79c913c139289f5ef28e6cd8b1f936e0 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 16:38:50 +0900 Subject: [PATCH 085/177] =?UTF-8?q?fix:=20totalPageCount=EB=A5=BC=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=B4=20pag?= =?UTF-8?q?ing=EC=9D=84=20=EC=A7=81=EC=A0=91=20=EA=B5=AC=ED=98=84=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 3 +- .../poptato/todo/application/TodoService.java | 33 ++++++++--------- .../response/TodayListResponseDto.java | 4 ++- .../domain/repository/TodoRepository.java | 9 ++--- .../poptato/todo/exception/TodoException.java | 14 ++++++++ .../errorcode/TodoExceptionErrorCode.java | 36 +++++++++++++++++++ .../handler/TodoExceptionHandler.java | 22 ++++++++++++ .../handler/UserExceptionHandler.java | 2 ++ .../domain/repository/TodoRepositoryTest.java | 16 ++++----- 9 files changed, 107 insertions(+), 32 deletions(-) create mode 100644 src/main/java/server/poptato/todo/exception/TodoException.java create mode 100644 src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java create mode 100644 src/main/java/server/poptato/todo/exception/handler/TodoExceptionHandler.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index dfcf058..1e03248 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -15,9 +15,10 @@ public class TodoController { private final TodoService todoService; @GetMapping("/todays") public BaseResponse getTodayList( + @UserId Long userId, @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "8") int size){ - TodayListResponseDto todayListResponse = todoService.getTodayList(1, page, size); + TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size); return new BaseResponse<>(todayListResponse); } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 2b0e62d..315b8b4 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,15 +1,15 @@ package server.poptato.todo.application; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; +import server.poptato.todo.exception.TodoException; +import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; @@ -27,26 +27,27 @@ public TodayListResponseDto getTodayList(long userId, int page, int size) { checkIsExistUser(userId); LocalDate todayDate = LocalDate.now(); - PageRequest pageRequest = PageRequest.of(page, size); + List todays = new ArrayList<>(); // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ๋จผ์ € ์กฐํšŒ - Page incompleteTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( - userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE, pageRequest); + List incompleteTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); + todays.addAll(incompleteTodos); - List todays = new ArrayList<>(incompleteTodos.getContent()); + // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ + List completedTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); + todays.addAll(completedTodos); - // ๋งŒ์•ฝ ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ์ด size๋ฅผ ์ฑ„์šฐ์ง€ ๋ชปํ•˜๋ฉด, ์™„๋ฃŒ๋œ ํ•  ์ผ์—์„œ ๋‚จ์€ ํ•  ์ผ๋งŒํผ ๊ฐ€์ ธ์˜ด - if (todays.size() < size) { - int remainingSize = size - todays.size(); - Pageable completedPageable = PageRequest.of(0, remainingSize); + // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• + int start = (page) * size; + int end = Math.min(start + size, todays.size()); + if (start > end) throw new TodoException(TodoExceptionErrorCode.INVALID_PAGE); - Page completedTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( - userId, Type.TODAY, todayDate, TodayStatus.COMPLETED, completedPageable); + List todaySubList = todays.subList(start, end); + int totalPageCount = (int) Math.ceil((double) todays.size() / size); - todays.addAll(completedTodos.getContent()); - } - - return new TodayListResponseDto(todayDate,todays); + return new TodayListResponseDto(todayDate,todaySubList,totalPageCount); } private void checkIsExistUser(long userId) { diff --git a/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java index 7938b8c..bf33d9d 100644 --- a/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java @@ -11,11 +11,13 @@ public class TodayListResponseDto { LocalDate date; List todays; + int totalPageCount; - public TodayListResponseDto(LocalDate date, List todays) { + public TodayListResponseDto(LocalDate date, List todays, int totalPageCount) { this.date = date; this.todays = todays.stream() .map(TodayResponseDto::new) .collect(Collectors.toList()); + this.totalPageCount = totalPageCount; } } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 3399f9c..f7bf019 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -7,15 +7,16 @@ import server.poptato.todo.domain.value.Type; import java.time.LocalDate; +import java.util.List; public interface TodoRepository { void deleteAllByUserId(Long userId); // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ - Page findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( - Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus, Pageable pageable); + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ - Page findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( - Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus, Pageable pageable); + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); } diff --git a/src/main/java/server/poptato/todo/exception/TodoException.java b/src/main/java/server/poptato/todo/exception/TodoException.java new file mode 100644 index 0000000..3ae7345 --- /dev/null +++ b/src/main/java/server/poptato/todo/exception/TodoException.java @@ -0,0 +1,14 @@ +package server.poptato.todo.exception; + +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +@Getter +public class TodoException extends RuntimeException{ + private final ResponseStatus exceptionStatus; + + public TodoException(ResponseStatus exceptionStatus) { + super(exceptionStatus.getMessage()); + this.exceptionStatus = exceptionStatus; + } +} diff --git a/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java b/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java new file mode 100644 index 0000000..3b72ef8 --- /dev/null +++ b/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java @@ -0,0 +1,36 @@ +package server.poptato.todo.exception.errorcode; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import server.poptato.global.response.status.ResponseStatus; + +@RequiredArgsConstructor +public enum TodoExceptionErrorCode implements ResponseStatus { + + /** + * 5000: Todo ๋„๋ฉ”์ธ ์˜ค๋ฅ˜ + */ + + INVALID_PAGE(5000, HttpStatus.BAD_REQUEST.value(), "์œ ํšจํ–์ง€ ์•Š์€ ํŽ˜์ด์ง€ ์ˆ˜์ž…๋‹ˆ๋‹ค."); + + private final int code; + private final int status; + private final String message; + + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } +} + diff --git a/src/main/java/server/poptato/todo/exception/handler/TodoExceptionHandler.java b/src/main/java/server/poptato/todo/exception/handler/TodoExceptionHandler.java new file mode 100644 index 0000000..d89219b --- /dev/null +++ b/src/main/java/server/poptato/todo/exception/handler/TodoExceptionHandler.java @@ -0,0 +1,22 @@ +package server.poptato.todo.exception.handler; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import server.poptato.global.response.BaseErrorResponse; +import server.poptato.todo.exception.TodoException; + +@Slf4j +@Order(1) +@RestControllerAdvice +public class TodoExceptionHandler { + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(TodoException.class) + public BaseErrorResponse handleTodoException(TodoException e) { + log.error("[UserException: handle_TodoException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java b/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java index 9028245..c5bc2ad 100644 --- a/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java +++ b/src/main/java/server/poptato/user/exception/handler/UserExceptionHandler.java @@ -1,6 +1,7 @@ package server.poptato.user.exception.handler; import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; @@ -9,6 +10,7 @@ import server.poptato.user.exception.UserException; @Slf4j +@Order(0) @RestControllerAdvice public class UserExceptionHandler { @ResponseStatus(HttpStatus.BAD_REQUEST) diff --git a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java index 109f671..b75ebf7 100644 --- a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java +++ b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java @@ -27,14 +27,12 @@ class TodoRepositoryTest { //given Long userId = 1L; LocalDate todayDate = LocalDate.of(2024, 10, 16); - Pageable pageable = PageRequest.of(0, 8); //when - Page result = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( - userId, Type.TODAY, todayDate, TodayStatus.COMPLETED ,pageable); + List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); - assertThat(result).isNotEmpty(); - List todos = result.getContent(); + assertThat(todos).isNotEmpty(); // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getUserId().equals(userId))).isTrue(); @@ -57,14 +55,12 @@ class TodoRepositoryTest { //given Long userId = 1L; LocalDate todayDate = LocalDate.of(2024, 10, 16); - Pageable pageable = PageRequest.of(0, 8); //when - Page result = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( - userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE, pageable); + List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); - assertThat(result).isNotEmpty(); - List todos = result.getContent(); + assertThat(todos).isNotEmpty(); // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getUserId().equals(userId))).isTrue(); From b0f7467c97b282f892713d469cecf9dffb7b0f97 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 16:41:50 +0900 Subject: [PATCH 086/177] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EC=8B=9C=20=EC=9D=91=EB=8B=B5=20jwt=20=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/auth/api/AuthController.java | 4 ++-- .../server/poptato/global/response/BaseResponse.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 11100ed..92c9068 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -26,7 +26,7 @@ public class AuthController { public BaseResponse login(@RequestBody KakaoLoginRequestDto kakaoLoginRequestDto) { String kakaoCode = kakaoLoginRequestDto.kakaoCode(); LoginResponseDto response = authService.login(kakaoCode); - return new BaseResponse<>(SUCCESS, response); + return new BaseResponse<>(response); } @PostMapping("/logout") @@ -37,6 +37,6 @@ public BaseResponse logout(@UserId Long userId) { @PostMapping("/refresh") public BaseResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { TokenPair response = authService.refresh(tokenRequestDto); - return new BaseResponse<>(SUCCESS, response); + return new BaseResponse<>(response); } } diff --git a/src/main/java/server/poptato/global/response/BaseResponse.java b/src/main/java/server/poptato/global/response/BaseResponse.java index 8759924..521fa87 100644 --- a/src/main/java/server/poptato/global/response/BaseResponse.java +++ b/src/main/java/server/poptato/global/response/BaseResponse.java @@ -18,18 +18,18 @@ public class BaseResponse implements ResponseStatus { private final T result; - public BaseResponse(ResponseStatus status, T result) { - this.code = status.getCode(); - this.status = status.getStatus(); - this.message = status.getMessage(); - this.result = result; + public BaseResponse() { + this.code = SUCCESS.getCode(); + this.status = SUCCESS.getStatus(); + this.message = SUCCESS.getMessage(); + this.result = null; } public BaseResponse(T result) { this.code = SUCCESS.getCode(); this.status = SUCCESS.getStatus(); this.message = SUCCESS.getMessage(); - this.result = null; + this.result = result; } public int getCode() { From a98d905cdcc48c4002150b709e25572fc2e7895f Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 16:45:40 +0900 Subject: [PATCH 087/177] =?UTF-8?q?test:=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=88=98=EC=97=90=20=EB=8C=80=ED=95=9C=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 2 +- .../poptato/todo/application/TodoServiceTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 315b8b4..7be6cf9 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -42,7 +42,7 @@ public TodayListResponseDto getTodayList(long userId, int page, int size) { // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• int start = (page) * size; int end = Math.min(start + size, todays.size()); - if (start > end) throw new TodoException(TodoExceptionErrorCode.INVALID_PAGE); + if (start >= end) throw new TodoException(TodoExceptionErrorCode.INVALID_PAGE); List todaySubList = todays.subList(start, end); int totalPageCount = (int) Math.ceil((double) todays.size() / size); diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 855de26..973a93a 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -7,6 +7,8 @@ import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.response.TodayResponseDto; import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.exception.TodoException; +import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; @@ -39,6 +41,19 @@ class TodoServiceTest { assertThat(todoService.getTodayList(userId,page,size).getTodays().size()).isEqualTo(size); } + @DisplayName("์œ ํšจํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ˆ˜์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ์œ ํšจํ•˜์ง€_์•Š์€_ํŽ˜์ด์ง€_์ˆ˜_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + int page = 2; + int size = 8; + //when & then + assertThatThrownBy(()-> todoService.getTodayList(userId,page,size)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.INVALID_PAGE.getMessage()); + } + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ๋จผ์ € ์กฐํšŒ๋˜๊ณ , ๊ทธ ๋‹ค์Œ ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ์กฐํšŒ๋œ๋‹ค.") @Test void ํˆฌ๋ฐ์ด_๋ชฉ๋ก_์กฐํšŒ_๋‹ฌ์„ฑ์—ฌ๋ถ€_์ •๋ ฌ(){ From b052fba472098ed0b3be386bf18f8b50ee4d41b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:22:03 +0900 Subject: [PATCH 088/177] fix:update cd.yml --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 23dc5a6..fdef3bb 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -40,7 +40,7 @@ jobs: mkdir -p src/test/resources - echo "$TEST_APPLICATION_YML" > src/test/resources/application.yml + echo "$APPLICATION_TEST_YML" > src/test/resources/application.yml rm -rf src/test/resources/data.sql From 15084a75e9967e9ae9469c1f9c3981e583c037ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:25:28 +0900 Subject: [PATCH 089/177] =?UTF-8?q?fix:=20cd.yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index fdef3bb..54143cb 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -15,7 +15,8 @@ jobs: uses: appleboy/ssh-action@master env: APPLICATION_YML: ${{ secrets.APPLICATION_YML }} - TEST_APPLICATION_YML: ${{ secrets.APPLICATION_TEST_YML }} + APPLICATION_TEST_YML: ${{ secrets.APPLICATION_TEST_YML }} + TEST_DATA_SQL: ${{ secrets.TEST_DATA_SQL }} with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} From 7ce0604488942601fa7970a949e950f190e48ac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:39:08 +0900 Subject: [PATCH 090/177] =?UTF-8?q?fix:=20cd.yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 54143cb..1f8adf7 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -44,9 +44,7 @@ jobs: echo "$APPLICATION_TEST_YML" > src/test/resources/application.yml rm -rf src/test/resources/data.sql - - mkdir -p src/test/resources - + echo "$TEST_DATA_SQL" > src/test/resources/data.sql chmod +x gradlew From aed5b9d5d26cb88caad6e19b6b3e624d9252957f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:44:59 +0900 Subject: [PATCH 091/177] =?UTF-8?q?fix:=20cd.yml=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 1f8adf7..4744177 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -22,7 +22,7 @@ jobs: username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} script_stop: true - envs: APPLICATION_YML,TEST_APPLICATION_YML + envs: APPLICATION_YML, APPLICATION_TEST_YML, TEST_DATA_SQL # git clone ๊ฐ™์€ ์ดˆ๊ธฐ ์ž‘์—…์€ ec2์—์„œ ๋จผ์ € ์ง„ํ–‰ script: | cd /home/ubuntu/poptato_server/Poptato_Server From 901878b906d8db35ce27c64e81b5005ebfdd7720 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 18:49:42 +0900 Subject: [PATCH 092/177] =?UTF-8?q?test:=20=EB=B0=B1=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 36 +++++++++++++++++++ .../todo/application/TodoServiceTest.java | 13 ++++++- .../domain/repository/TodoRepositoryTest.java | 26 ++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index d81c904..ac389c7 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -80,4 +80,40 @@ public class TodoControllerTest { .andExpect(status().isBadRequest()) .andDo(print()); } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { + //when + mockMvc.perform(MockMvcRequestBuilders.get("/backlogs") + .param("page","0") + .param("size","8") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { + //when + mockMvc.perform(MockMvcRequestBuilders.get("/backlogs") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + + verify(todoService).getBacklogList(1L,0, 8); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { + //when + mockMvc.perform(MockMvcRequestBuilders.get("/backlogs") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 973a93a..cd4a1f5 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -32,7 +32,7 @@ class TodoServiceTest { } @DisplayName("size=8์„ ์š”์ฒญํ•˜๋ฉด, ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต๋œ๋‹ค.") @Test - void ๋ฐ์ดํ„ฐ_8๊ฐœ๋งŒ_์‘๋‹ต(){ + void ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ_8๊ฐœ๋งŒ_์‘๋‹ต(){ //given Long userId = 1L; int page = 0; @@ -77,4 +77,15 @@ class TodoServiceTest { } } } + + @DisplayName("size=8์„ ์š”์ฒญํ•˜๋ฉด, ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต๋œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ_8๊ฐœ๋งŒ_์‘๋‹ต(){ + //given + Long userId = 1L; + int page = 0; + int size = 8; + //when & then + assertThat(todoService.getBacklogList(userId,page,size).getBacklogs().size()).isEqualTo(size); + } } \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java index b75ebf7..5bfa47b 100644 --- a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java +++ b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java @@ -76,4 +76,30 @@ class TodoRepositoryTest { assertThat(todos.get(i).getTodayOrder()).isLessThanOrEqualTo(todos.get(i + 1).getTodayOrder()); } } + + @DisplayName("userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋ฐฑ๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() { + //given + Long userId = 1L; + List types = List.of(Type.BACKLOG, Type.YESTERDAY); + PageRequest pageRequest = PageRequest.of(0, 8); + + //when + Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderAsc( + userId, types, pageRequest); + + assertThat(backlogs.getContent()).isNotEmpty(); + + // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ + assertThat(backlogs.getContent().stream().allMatch(backlog -> backlog.getUserId().equals(userId))).isTrue(); + + // type์ด BACKLOG ํ˜น์€ YESTERDAY์ธ์ง€ ํ™•์ธ + assertThat(backlogs.getContent().stream().allMatch(backlog -> backlog.getType().equals(Type.BACKLOG) || backlog.getType().equals(Type.YESTERDAY))).isTrue(); + + // backlogOrder๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ + for (int i = 0; i < backlogs.getContent().size() - 1; i++) { + assertThat(backlogs.getContent().get(i).getBacklogOrder()).isLessThanOrEqualTo(backlogs.getContent().get(i + 1).getBacklogOrder()); + } + } } \ No newline at end of file From ba307304d6246c2990ef3cdb2f094b4b5c2579f0 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 18:50:08 +0900 Subject: [PATCH 093/177] =?UTF-8?q?test:=20=EB=B0=B1=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20api=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 10 +++++++ .../poptato/todo/application/TodoService.java | 25 ++++++++++++++++- .../response/BacklogListResponseDto.java | 24 +++++++++++++++++ .../response/BacklogResponseDto.java | 27 +++++++++++++++++++ .../response/TodayListResponseDto.java | 2 ++ .../domain/repository/TodoRepository.java | 2 ++ .../poptato/todo/domain/value/Type.java | 2 +- 7 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 src/main/java/server/poptato/todo/application/response/BacklogListResponseDto.java create mode 100644 src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 1e03248..a950e0a 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import server.poptato.global.response.BaseResponse; +import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.TodoService; import server.poptato.user.resolver.UserId; @@ -21,4 +22,13 @@ public BaseResponse getTodayList( TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size); return new BaseResponse<>(todayListResponse); } + + @GetMapping("/backlogs") + public BaseResponse getBacklogList( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "8") int size){ + BacklogListResponseDto backlogListResponse = todoService.getBacklogList(userId, page, size); + return new BaseResponse<>(backlogListResponse); + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 7be6cf9..dfdc4b2 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,8 +1,10 @@ package server.poptato.todo.application; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; @@ -47,11 +49,32 @@ public TodayListResponseDto getTodayList(long userId, int page, int size) { List todaySubList = todays.subList(start, end); int totalPageCount = (int) Math.ceil((double) todays.size() / size); - return new TodayListResponseDto(todayDate,todaySubList,totalPageCount); + return TodayListResponseDto.builder() + .date(todayDate) + .todays(todaySubList) + .totalPageCount(totalPageCount) + .build(); + } + + public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { + checkIsExistUser(userId); + + PageRequest pageRequest = PageRequest.of(page, size); + List types = List.of(Type.BACKLOG, Type.YESTERDAY); + + Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderAsc(userId, types, pageRequest); + + return BacklogListResponseDto.builder() + .totalCount(backlogs.getTotalElements()) + .backlogs(backlogs.getContent()) + .totalPageCount(backlogs.getTotalPages()) + .build(); } private void checkIsExistUser(long userId) { userRepository.findById(userId).orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); } + + } diff --git a/src/main/java/server/poptato/todo/application/response/BacklogListResponseDto.java b/src/main/java/server/poptato/todo/application/response/BacklogListResponseDto.java new file mode 100644 index 0000000..5abf6a7 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/BacklogListResponseDto.java @@ -0,0 +1,24 @@ +package server.poptato.todo.application.response; + +import lombok.Builder; +import lombok.Getter; +import server.poptato.todo.domain.entity.Todo; + +import java.util.List; +import java.util.stream.Collectors; + +@Getter +public class BacklogListResponseDto { + long totalCount; + List backlogs; + int totalPageCount; + + @Builder + public BacklogListResponseDto(long totalCount, List backlogs, int totalPageCount) { + this.totalCount = totalCount; + this.backlogs = backlogs.stream() + .map(BacklogResponseDto::new) + .collect(Collectors.toList()); + this.totalPageCount = totalPageCount; + } +} diff --git a/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java b/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java new file mode 100644 index 0000000..2bcbda2 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java @@ -0,0 +1,27 @@ +package server.poptato.todo.application.response; + +import lombok.Getter; +import server.poptato.todo.domain.entity.Todo; + +import java.time.temporal.ChronoUnit; + +@Getter +public class BacklogResponseDto { + Long todoId; + String content; + boolean isBookmark; + Integer deadline; + + public BacklogResponseDto(Todo todo) { + this.todoId = todo.getId(); + this.content = todo.getContent(); + this.isBookmark = todo.isBookmark(); + + if (todo.getDeadline() != null && todo.getTodayDate() != null) { + this.deadline = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); + } else { + // ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NULL + this.deadline = null; + } + } +} diff --git a/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java index bf33d9d..2bcb1be 100644 --- a/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/TodayListResponseDto.java @@ -1,5 +1,6 @@ package server.poptato.todo.application.response; +import lombok.Builder; import lombok.Getter; import server.poptato.todo.domain.entity.Todo; @@ -13,6 +14,7 @@ public class TodayListResponseDto { List todays; int totalPageCount; + @Builder public TodayListResponseDto(LocalDate date, List todays, int totalPageCount) { this.date = date; this.todays = todays.stream() diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index f7bf019..269ce3d 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -19,4 +19,6 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); + // ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ + Page findByUserIdAndTypeInOrderByBacklogOrderAsc(Long userId, List types, Pageable pageable); } diff --git a/src/main/java/server/poptato/todo/domain/value/Type.java b/src/main/java/server/poptato/todo/domain/value/Type.java index 2d4bea4..0929c8e 100644 --- a/src/main/java/server/poptato/todo/domain/value/Type.java +++ b/src/main/java/server/poptato/todo/domain/value/Type.java @@ -1,5 +1,5 @@ package server.poptato.todo.domain.value; public enum Type { - BACKLOG, TODAY + BACKLOG, YESTERDAY, TODAY } From f48dcc227f4fc729d90ddb5270590675eff5f560 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 20:08:26 +0900 Subject: [PATCH 094/177] =?UTF-8?q?feat:=20bookmark=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 12 ++++ .../poptato/todo/domain/entity/Todo.java | 4 ++ .../todo/application/TodoServiceTest.java | 58 +++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 13ec735..9565ea4 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -80,6 +80,18 @@ public void deleteTodoById(Long todoId) { .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); todoRepository.delete(todo); } + @Transactional + public Todo toggleIsBookmark(Long todoId) { + // ํ•ด๋‹น Todo๋ฅผ ์กฐํšŒ + Todo todo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + + // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ + todo.toggleBookmark(); + + // ๋ณ€๊ฒฝ๋œ todo ์ €์žฅ + return todoRepository.save(todo); + } private void checkIsExistUser(long userId) { userRepository.findById(userId).orElseThrow(() diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index de5f1bf..655adde 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -49,4 +49,8 @@ public class Todo{ private LocalDateTime createDate; @LastModifiedDate private LocalDateTime modifyDate; + // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋„๋ฉ”์ธ ๋ฉ”์„œ๋“œ + public void toggleBookmark() { + this.isBookmark = !this.isBookmark; + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index b4022cf..a2fa4e3 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -135,4 +135,62 @@ public void shouldThrowException_WhenTodoNotFound_ForUser2() { //when & then assertThat(todoService.getBacklogList(userId,page,size).getBacklogs().size()).isEqualTo(size); } + + @Test + @DisplayName("isBookmark๊ฐ€ true์ผ ๋•Œ false๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ…Œ์ŠคํŠธ") + void toggleIsBookmark_TrueToFalse() { + // given + Todo todo = Todo.builder() + .userId(1L) + .type(Type.TODAY) + .content("Sample Todo") + .isBookmark(true) // isBookmark๊ฐ€ true๋กœ ์„ค์ •๋จ + .build(); + + // Todo๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅ + Todo savedTodo = todoRepository.save(todo); + Long todoId = savedTodo.getId(); + + // when + Todo updatedTodo = todoService.toggleIsBookmark(todoId); + + // then + assertThat(updatedTodo.isBookmark()).isFalse(); // isBookmark๊ฐ€ false๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + assertThat(updatedTodo.getId()).isEqualTo(todoId); // ID๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ + } + + @Test + @DisplayName("isBookmark๊ฐ€ false์ผ ๋•Œ true๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ…Œ์ŠคํŠธ") + void toggleIsBookmark_FalseToTrue() { + // given + Todo todo = Todo.builder() + .userId(1L) + .type(Type.TODAY) + .content("Sample Todo") + .isBookmark(false) // isBookmark๊ฐ€ false๋กœ ์„ค์ •๋จ + .build(); + + // Todo๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅ + Todo savedTodo = todoRepository.save(todo); + Long todoId = savedTodo.getId(); + + // when + Todo updatedTodo = todoService.toggleIsBookmark(todoId); + + // then + assertThat(updatedTodo.isBookmark()).isTrue(); // isBookmark๊ฐ€ true๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + assertThat(updatedTodo.getId()).isEqualTo(todoId); // ID๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ + } + + @Test + @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” Todo ID์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + void toggleIsBookmark_TodoNotFound() { + // given + Long nonExistentTodoId = 999L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” Todo ID + + // when & then + assertThrows(TodoException.class, () -> { + todoService.toggleIsBookmark(nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ + }); + } } \ No newline at end of file From 8ea275fefc20ed221b051480bc566822edbfd8f5 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 20:34:26 +0900 Subject: [PATCH 095/177] =?UTF-8?q?feat:=20controller=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/todo/api/TodoController.java | 6 ++++++ .../poptato/todo/application/TodoService.java | 5 +++-- .../poptato/todo/api/TodoControllerTest.java | 17 +++++++++++++++++ .../todo/application/TodoServiceTest.java | 17 +++++++++-------- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 235a143..a80250f 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -6,6 +6,7 @@ import server.poptato.todo.application.TodoService; import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.domain.entity.Todo; import server.poptato.user.resolver.UserId; @RestController @@ -35,4 +36,9 @@ public BaseResponse getBacklogList( BacklogListResponseDto backlogListResponse = todoService.getBacklogList(userId, page, size); return new BaseResponse<>(backlogListResponse); } + @PatchMapping("/todo/{todoId}/bookmark") + public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { + todoService.toggleIsBookmark(todoId); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 9565ea4..f2358f9 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import server.poptato.global.response.BaseResponse; import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.domain.entity.Todo; @@ -81,7 +82,7 @@ public void deleteTodoById(Long todoId) { todoRepository.delete(todo); } @Transactional - public Todo toggleIsBookmark(Long todoId) { + public void toggleIsBookmark(Long todoId) { // ํ•ด๋‹น Todo๋ฅผ ์กฐํšŒ Todo todo = todoRepository.findById(todoId) .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); @@ -90,7 +91,7 @@ public Todo toggleIsBookmark(Long todoId) { todo.toggleBookmark(); // ๋ณ€๊ฒฝ๋œ todo ์ €์žฅ - return todoRepository.save(todo); + todoRepository.save(todo); } private void checkIsExistUser(long userId) { diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index d887bee..e967f3f 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -19,6 +19,7 @@ import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @@ -147,4 +148,20 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ .andExpect(status().isBadRequest()) .andDo(print()); } + + @Test + @DisplayName("isBookmark ํ† ๊ธ€ ์‹œ ์‘๋‹ต์ด ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธ") + public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { + Long todoId = 1L; + + // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค์ • + doNothing().when(todoService).toggleIsBookmark(todoId); + + mockMvc.perform(patch("/todo/{todoId}/bookmark", todoId) + .header("Authorization", "Bearer " + "someAccessToken")) // ํ—ค๋”์— ํ† ํฐ ์ถ”๊ฐ€ + .andExpect(status().isOk()); + + // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + verify(todoService, times(1)).toggleIsBookmark(todoId); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index a2fa4e3..e28a9a6 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -20,6 +20,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertThrows; +import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @SpringBootTest class TodoServiceTest { @@ -151,12 +152,12 @@ void toggleIsBookmark_TrueToFalse() { Todo savedTodo = todoRepository.save(todo); Long todoId = savedTodo.getId(); - // when - Todo updatedTodo = todoService.toggleIsBookmark(todoId); + // when: toggleIsBookmark ํ˜ธ์ถœ (void ๋ฉ”์„œ๋“œ) + todoService.toggleIsBookmark(todoId); - // then + // then: DB์—์„œ Todo๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธ + Todo updatedTodo = todoRepository.findById(todoId).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); assertThat(updatedTodo.isBookmark()).isFalse(); // isBookmark๊ฐ€ false๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - assertThat(updatedTodo.getId()).isEqualTo(todoId); // ID๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ } @Test @@ -174,12 +175,12 @@ void toggleIsBookmark_FalseToTrue() { Todo savedTodo = todoRepository.save(todo); Long todoId = savedTodo.getId(); - // when - Todo updatedTodo = todoService.toggleIsBookmark(todoId); + // when: toggleIsBookmark ํ˜ธ์ถœ (void ๋ฉ”์„œ๋“œ) + todoService.toggleIsBookmark(todoId); - // then + // then: DB์—์„œ Todo๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธ + Todo updatedTodo = todoRepository.findById(todoId).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); assertThat(updatedTodo.isBookmark()).isTrue(); // isBookmark๊ฐ€ true๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - assertThat(updatedTodo.getId()).isEqualTo(todoId); // ID๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ } @Test From fc1e18a1ec3e19b18e08d9150b14891497e11710 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 20:47:31 +0900 Subject: [PATCH 096/177] =?UTF-8?q?refactor:=20save=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/todo/api/TodoController.java | 2 +- src/main/java/server/poptato/todo/application/TodoService.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index a80250f..1b37b1f 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -37,7 +37,7 @@ public BaseResponse getBacklogList( return new BaseResponse<>(backlogListResponse); } @PatchMapping("/todo/{todoId}/bookmark") - public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { + public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { todoService.toggleIsBookmark(todoId); return new BaseResponse<>(); } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index f2358f9..a8282e8 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -89,9 +89,6 @@ public void toggleIsBookmark(Long todoId) { // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ todo.toggleBookmark(); - - // ๋ณ€๊ฒฝ๋œ todo ์ €์žฅ - todoRepository.save(todo); } private void checkIsExistUser(long userId) { From 075e2e264193466cd197317ba2b8c73b2840db72 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 20:49:02 +0900 Subject: [PATCH 097/177] =?UTF-8?q?test:=20=EC=8A=A4=EC=99=80=EC=9D=B4?= =?UTF-8?q?=ED=94=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 11 +++- .../todo/api/request/SwipeRequestDto.java | 14 ++++ .../poptato/todo/application/TodoService.java | 8 ++- .../domain/repository/TodoRepository.java | 4 +- .../poptato/todo/api/TodoControllerTest.java | 47 ++++++++++++-- .../todo/application/TodoServiceTest.java | 64 +++++++++++++++++++ .../domain/repository/TodoRepositoryTest.java | 8 +-- 7 files changed, 141 insertions(+), 15 deletions(-) create mode 100644 src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index a950e0a..02719e6 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -1,10 +1,9 @@ package server.poptato.todo.api; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; +import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.TodoService; @@ -31,4 +30,10 @@ public BaseResponse getBacklogList( BacklogListResponseDto backlogListResponse = todoService.getBacklogList(userId, page, size); return new BaseResponse<>(backlogListResponse); } + + @PatchMapping("/swipe") + public BaseResponse swipe(@UserId Long userId, @RequestBody SwipeRequestDto swipeRequestDto){ + todoService.swipe(userId, swipeRequestDto.getTodoId()); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java b/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java new file mode 100644 index 0000000..1b07b23 --- /dev/null +++ b/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java @@ -0,0 +1,14 @@ +package server.poptato.todo.api.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +@AllArgsConstructor +public class SwipeRequestDto { + @NotBlank(message = "ํ• ์ผ ID๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + Long todoId; +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index dfdc4b2..c4e3e0e 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -4,6 +4,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.domain.entity.Todo; @@ -32,7 +33,7 @@ public TodayListResponseDto getTodayList(long userId, int page, int size) { List todays = new ArrayList<>(); // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ๋จผ์ € ์กฐํšŒ - List incompleteTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + List incompleteTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); todays.addAll(incompleteTodos); @@ -62,7 +63,7 @@ public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); List types = List.of(Type.BACKLOG, Type.YESTERDAY); - Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderAsc(userId, types, pageRequest); + Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderDesc(userId, types, pageRequest); return BacklogListResponseDto.builder() .totalCount(backlogs.getTotalElements()) @@ -77,4 +78,7 @@ private void checkIsExistUser(long userId) { } + public void swipe(Long userId, Long todoId) { + + } } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 269ce3d..5ea6ae1 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -12,7 +12,7 @@ public interface TodoRepository { void deleteAllByUserId(Long userId); // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ - List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ @@ -20,5 +20,5 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); // ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ - Page findByUserIdAndTypeInOrderByBacklogOrderAsc(Long userId, List types, Pageable pageable); + Page findByUserIdAndTypeInOrderByBacklogOrderDesc(Long userId, List types, Pageable pageable); } diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index ac389c7..fd56b63 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -1,9 +1,10 @@ package server.poptato.todo.api; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.ValidatorFactory; +import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; @@ -13,10 +14,14 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; import server.poptato.user.application.service.UserService; +import java.util.Set; + import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -33,6 +38,7 @@ public class TodoControllerTest { private JwtService jwtService; @MockBean private RedisTemplate redisTemplate; + private Validator validator; private String accessToken; private final String userId = "1"; @@ -116,4 +122,37 @@ public class TodoControllerTest { .andExpect(status().isBadRequest()) .andDo(print()); } + + @DisplayName("์Šค์™€์ดํ”„ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— todoId๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_์š”์ฒญ๋ฐ”๋””_์˜ˆ์™ธ(){ + //given + Long todoId = 1L; + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + + SwipeRequestDto request = SwipeRequestDto.builder() + .todoId(todoId).build(); + + //when + Set> violations = validator.validate(request); + //then + Assertions.assertEquals(violations.size(), 1); + } + + @DisplayName("์Šค์™€์ดํ”„ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //given + String request = "{\n" + + " \"todoId\": \"1\",\n" + + "}"; + //when + mockMvc.perform(patch("/swipe") + .content(request) + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index cd4a1f5..6b0360c 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -6,7 +6,9 @@ import org.springframework.boot.test.context.SpringBootTest; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.response.TodayResponseDto; +import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; import server.poptato.todo.exception.TodoException; import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; import server.poptato.user.exception.UserException; @@ -18,6 +20,8 @@ class TodoServiceTest { @Autowired private TodoService todoService; + @Autowired + private TodoRepository todoRepository; @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test void ํ•ด๋‹นํ•˜๋Š”_์œ ์ €์ •๋ณด_์—†๋Š”_์˜ˆ์™ธ(){ @@ -88,4 +92,64 @@ class TodoServiceTest { //when & then assertThat(todoService.getBacklogList(userId,page,size).getBacklogs().size()).isEqualTo(size); } + + @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•  ์ผ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_์กด์žฌํ•˜์ง€_์•Š๋Š”_ํ• ์ผ_์˜ˆ์™ธ(){ + //given + Long notExistTodoId = 1000L; + Long userId = 1L; + //when & then + assertThatThrownBy(()-> todoService.swipe(userId,notExistTodoId)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.TODO_NOT_EXIST.getMessage()); + } + + @DisplayName("์‚ฌ์šฉ์ž์˜ ํ•  ์ผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_์‚ฌ์šฉ์ž_์˜ˆ์™ธ(){ + //given + Long todoId = 1L; + Long userId = 1000L; + //when & then + assertThatThrownBy(()-> todoService.swipe(userId,todoId)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.TODO_USER_NOT_MATCH.getMessage()); + } + + @DisplayName("๋‹ฌ์„ฑํ•œ TODAY์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_๋‹ฌ์„ฑํ•œ_ํˆฌ๋ฐ์ด_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + Long todoId = 3L; + //when & then + assertThatThrownBy(()-> todoService.swipe(userId,todoId)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO.getMessage()); + } + + @DisplayName("TODAY์ธ ํ• ์ผ์ด๋ฉด BACKLOG๋กœ ์ˆ˜์ •๋œ๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_TODAY์—์„œ_BACKLOG๋กœ(){ + //given + Long userId = 1L; + Long todoId = 4L; + //when & then + todoService.swipe(userId,todoId); + + assertThat(todoRepository.findById(todoId).getType()).isEqual(Type.BACKLOG); + } + + @DisplayName("BACKLOG์ธ ํ• ์ผ์ด๋ฉด TODAY๋กœ ์ˆ˜์ •๋œ๋‹ค.") + @Test + void ์Šค์™€์ดํ”„_BACKLOG์—์„œ_TODAY๋กœ(){ + //given + Long userId = 1L; + Long todoId = 18L; + //when & then + todoService.swipe(userId,todoId); + + assertThat(todoRepository.findById(todoId).getType()).isEqual(Type.BACKLOG); + } } \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java index 5bfa47b..3e21ae3 100644 --- a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java +++ b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java @@ -57,7 +57,7 @@ class TodoRepositoryTest { LocalDate todayDate = LocalDate.of(2024, 10, 16); //when - List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderAsc( + List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); assertThat(todos).isNotEmpty(); @@ -73,7 +73,7 @@ class TodoRepositoryTest { // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ์€ todayOrder๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ for (int i = 0; i < todos.size() - 1; i++) { - assertThat(todos.get(i).getTodayOrder()).isLessThanOrEqualTo(todos.get(i + 1).getTodayOrder()); + assertThat(todos.get(i).getTodayOrder()).isGreaterThan(todos.get(i + 1).getTodayOrder()); } } @@ -86,7 +86,7 @@ class TodoRepositoryTest { PageRequest pageRequest = PageRequest.of(0, 8); //when - Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderAsc( + Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderDesc( userId, types, pageRequest); assertThat(backlogs.getContent()).isNotEmpty(); @@ -99,7 +99,7 @@ class TodoRepositoryTest { // backlogOrder๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ for (int i = 0; i < backlogs.getContent().size() - 1; i++) { - assertThat(backlogs.getContent().get(i).getBacklogOrder()).isLessThanOrEqualTo(backlogs.getContent().get(i + 1).getBacklogOrder()); + assertThat(backlogs.getContent().get(i).getBacklogOrder()).isGreaterThan(backlogs.getContent().get(i + 1).getBacklogOrder()); } } } \ No newline at end of file From e07844f2bb2c5a7843b5f3b7c51285dba4a99d6a Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 21:26:55 +0900 Subject: [PATCH 098/177] =?UTF-8?q?feat:=20=ED=9E=88=EC=8A=A4=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 21 ++++++++++++++++++ .../response/HistoryResponseDto.java | 15 +++++++++++++ .../response/PaginatedHistoryResponseDto.java | 13 +++++++++++ .../todo/application/TodoServiceTest.java | 22 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java create mode 100644 src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index a8282e8..03c5c47 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -3,10 +3,13 @@ import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import server.poptato.global.response.BaseResponse; import server.poptato.todo.application.response.BacklogListResponseDto; +import server.poptato.todo.application.response.HistoryResponseDto; +import server.poptato.todo.application.response.PaginatedHistoryResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; @@ -20,7 +23,9 @@ import java.time.LocalDate; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @@ -91,6 +96,22 @@ public void toggleIsBookmark(Long todoId) { todo.toggleBookmark(); } + public PaginatedHistoryResponseDto getHistories(int page, int size) { + Pageable pageable = PageRequest.of(page, size); + Page todosPage = todoRepository.findAll(pageable); // ํŽ˜์ด์ง€๋„ค์ด์…˜๋œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ด + + List histories = todosPage.getContent().stream() + .sorted(Comparator.comparing(todo -> todo.getCompletedDateTime().toLocalDate())) // ๋‚ ์งœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ + .map(todo -> new HistoryResponseDto( + todo.getId(), + todo.getContent(), + todo.getCompletedDateTime().toLocalDate() // ๋‚ ์งœ๋ฅผ localdate๋กœ ๋ณ€ํ™˜ + )) + .collect(Collectors.toList()); + + return new PaginatedHistoryResponseDto(histories, todosPage.getTotalPages()); + } + private void checkIsExistUser(long userId) { userRepository.findById(userId).orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); diff --git a/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java b/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java new file mode 100644 index 0000000..cd48b18 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java @@ -0,0 +1,15 @@ +package server.poptato.todo.application.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.time.LocalDate; + + +@Getter +@AllArgsConstructor +public class HistoryResponseDto { + private Long todoId; + private String content; + private LocalDate date; +} \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java b/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java new file mode 100644 index 0000000..ed5585b --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java @@ -0,0 +1,13 @@ +package server.poptato.todo.application.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor +public class PaginatedHistoryResponseDto { + private List histories; + private int totalPageCount; +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index e28a9a6..1bb1cff 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.application.response.PaginatedHistoryResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.response.TodayResponseDto; import server.poptato.todo.domain.entity.Todo; @@ -15,6 +16,7 @@ import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import java.time.LocalDateTime; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; @@ -194,4 +196,24 @@ void toggleIsBookmark_TodoNotFound() { todoService.toggleIsBookmark(nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ }); } + @Test + @DisplayName("Histories ํŽ˜์ด์ง• ํ…Œ์ŠคํŠธ") + void getHistories_ShouldReturnPagedResult() { + // given + for (int i = 1; i <= 15; i++) { + Todo todo = Todo.builder() + .userId(1L) + .content("Test Content " + i) + .completedDateTime(LocalDateTime.now()) + .build(); + todoRepository.save(todo); + } + + // when + PaginatedHistoryResponseDto result = todoService.getHistories(0, 5); + + // then + assertThat(result.getHistories()).hasSize(5); // ํŽ˜์ด์ง€๋‹น 5๊ฐœ์˜ todo๊ฐ€ ๋ฐ˜ํ™˜ + assertThat(result.getTotalPageCount()).isEqualTo(3); // ์ด 3ํŽ˜์ด์ง€ + } } \ No newline at end of file From 5e0cbc67d4419d6150bc06627b0138e3cdae4a59 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 21:35:20 +0900 Subject: [PATCH 099/177] =?UTF-8?q?refactor:=20todoservice=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/application/TodoService.java | 5 +++-- .../poptato/todo/domain/repository/TodoRepository.java | 1 + .../poptato/todo/infra/repository/JpaTodoRepository.java | 8 -------- .../server/poptato/todo/application/TodoServiceTest.java | 2 +- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 03c5c47..f695563 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -96,9 +96,10 @@ public void toggleIsBookmark(Long todoId) { todo.toggleBookmark(); } - public PaginatedHistoryResponseDto getHistories(int page, int size) { + public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { Pageable pageable = PageRequest.of(page, size); - Page todosPage = todoRepository.findAll(pageable); // ํŽ˜์ด์ง€๋„ค์ด์…˜๋œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ด + //์œ ์ • ์•„์ด๋””์™€ completedDate๊ฐ€ null ์ด ์•„๋‹Œ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด + Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); List histories = todosPage.getContent().stream() .sorted(Comparator.comparing(todo -> todo.getCompletedDateTime().toLocalDate())) // ๋‚ ์งœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 0770d5d..9bb2183 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -25,4 +25,5 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime Todo save(Todo todo); // ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ Page findByUserIdAndTypeInOrderByBacklogOrderAsc(Long userId, List types, Pageable pageable); + Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 263916f..019f3fe 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -7,13 +7,5 @@ import java.util.Optional; public interface JpaTodoRepository extends TodoRepository, JpaRepository { - @Override - void deleteAllByUserId(Long userId); - @Override - Optional findById(Long todoId); - @Override - void delete(Todo todo); - @Override - Todo save(Todo todo); } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 1bb1cff..359a001 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -210,7 +210,7 @@ void getHistories_ShouldReturnPagedResult() { } // when - PaginatedHistoryResponseDto result = todoService.getHistories(0, 5); + PaginatedHistoryResponseDto result = todoService.getHistories(1L,0, 5); // then assertThat(result.getHistories()).hasSize(5); // ํŽ˜์ด์ง€๋‹น 5๊ฐœ์˜ todo๊ฐ€ ๋ฐ˜ํ™˜ From 68ecf6c0aed4b2950703e663dc3fce91132b345c Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 16 Oct 2024 21:49:44 +0900 Subject: [PATCH 100/177] =?UTF-8?q?refactor:=20todoservicetest=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/TodoServiceTest.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 359a001..4841e96 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -200,20 +200,21 @@ void toggleIsBookmark_TodoNotFound() { @DisplayName("Histories ํŽ˜์ด์ง• ํ…Œ์ŠคํŠธ") void getHistories_ShouldReturnPagedResult() { // given - for (int i = 1; i <= 15; i++) { - Todo todo = Todo.builder() - .userId(1L) - .content("Test Content " + i) - .completedDateTime(LocalDateTime.now()) - .build(); - todoRepository.save(todo); - } + Long userId = 1L; + int page = 0; + int size = 5; // when - PaginatedHistoryResponseDto result = todoService.getHistories(1L,0, 5); + PaginatedHistoryResponseDto result = todoService.getHistories(userId, page, size); // then - assertThat(result.getHistories()).hasSize(5); // ํŽ˜์ด์ง€๋‹น 5๊ฐœ์˜ todo๊ฐ€ ๋ฐ˜ํ™˜ - assertThat(result.getTotalPageCount()).isEqualTo(3); // ์ด 3ํŽ˜์ด์ง€ + // result์˜ histories ๋ฆฌ์ŠคํŠธ์˜ ์‹ค์ œ ํฌ๊ธฐ + int actualSize = result.getHistories().size(); + + // ํŽ˜์ด์ง€๋‹น ๋ฐ˜ํ™˜๋˜๋Š” ํ•ญ๋ชฉ์˜ ์ˆ˜๊ฐ€ size ์ดํ•˜์ธ์ง€ ํ™•์ธ (๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€์ผ ๊ฒฝ์šฐ ์ ์„ ์ˆ˜ ์žˆ์Œ) + assertThat(actualSize).isLessThanOrEqualTo(size); + + // ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๊ณ„์‚ฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + assertThat(result.getTotalPageCount()).isGreaterThan(0); } } \ No newline at end of file From 03a98c170bf4b313e2b53e4544b675baf6c57fe9 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 16 Oct 2024 22:23:19 +0900 Subject: [PATCH 101/177] =?UTF-8?q?fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/TodoServiceTest.java | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index c3a325b..9fde86d 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -153,7 +153,7 @@ public void shouldThrowException_WhenTodoNotFound_ForUser2() { void ์Šค์™€์ดํ”„_์‚ฌ์šฉ์ž_์˜ˆ์™ธ(){ //given Long todoId = 1L; - Long userId = 100L; + Long userId = 50L; //when & then assertThatThrownBy(()-> todoService.swipe(userId,todoId)) .isInstanceOf(TodoException.class) @@ -184,18 +184,6 @@ public void shouldThrowException_WhenTodoNotFound_ForUser2() { assertThat(todoRepository.findById(todoId).get().getType()).isEqualTo(Type.BACKLOG); } - @DisplayName("BACKLOG์ธ ํ• ์ผ์ด๋ฉด TODAY๋กœ ์ˆ˜์ •๋œ๋‹ค.") - @Test - void ์Šค์™€์ดํ”„_BACKLOG์—์„œ_TODAY๋กœ(){ - //given - Long userId = 1L; - Long todoId = 18L; - //when & then - todoService.swipe(userId,todoId); - - assertThat(todoRepository.findById(todoId).get().getType()).isEqualTo(Type.TODAY); - } - @DisplayName("BACKLOG์ธ ํ• ์ผ์„ ์Šค์™€์ดํ”„ํ•˜๋ฉด todayOrder๊ฐ€ 17์ด ๋œ๋‹ค.") @Test void ์Šค์™€์ดํ”„_TODAYORDER_๊ฐฑ์‹ _์„ฑ๊ณต(){ @@ -208,18 +196,6 @@ public void shouldThrowException_WhenTodoNotFound_ForUser2() { assertThat(todoRepository.findById(todoId).get().getTodayOrder()).isEqualTo(17); } - @DisplayName("TODAY์ธ ํ• ์ผ์„ ์Šค์™€์ดํ”„ํ•˜๋ฉด backlogOrder๊ฐ€ 11์ด ๋œ๋‹ค.") - @Test - void ์Šค์™€์ดํ”„_BACKLOGORDER_๊ฐฑ์‹ _์„ฑ๊ณต(){ - //given - Long userId = 1L; - Long todoId = 4L; - //when & then - todoService.swipe(userId,todoId); - - assertThat(todoRepository.findById(todoId).get().getBacklogOrder()).isEqualTo(11); - } - @Test @DisplayName("isBookmark๊ฐ€ true์ผ ๋•Œ false๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ…Œ์ŠคํŠธ") void toggleIsBookmark_TrueToFalse() { From b23763eb2d661f96788986732b093582f011d03b Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 01:40:51 +0900 Subject: [PATCH 102/177] =?UTF-8?q?feat:=20=EB=93=9C=EB=9E=98=EA=B7=B8?= =?UTF-8?q?=EC=95=A4=EB=93=9C=EB=A1=AD=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 12 ++- .../api/request/DragAndDropRequestDto.java | 21 +++++ .../poptato/todo/application/TodoService.java | 66 ++++++++++++- .../poptato/todo/domain/entity/Todo.java | 8 ++ .../domain/repository/TodoRepository.java | 10 +- .../poptato/todo/domain/value/Type.java | 15 ++- .../errorcode/TodoExceptionErrorCode.java | 4 +- .../infra/repository/JpaTodoRepository.java | 14 ++- .../poptato/todo/api/TodoControllerTest.java | 33 +++++++ .../TodoServiceDragAndDropTest.java | 94 +++++++++++++++++++ .../todo/application/TodoServiceTest.java | 5 +- 11 files changed, 256 insertions(+), 26 deletions(-) create mode 100644 src/main/java/server/poptato/todo/api/request/DragAndDropRequestDto.java create mode 100644 src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 391ee2c..c7b268a 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -4,6 +4,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; +import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; import server.poptato.todo.application.response.BacklogListResponseDto; @@ -39,9 +40,9 @@ public BaseResponse getBacklogList( } @PatchMapping("/swipe") - public BaseResponse swipe(//@UserId Long userId, + public BaseResponse swipe(@UserId Long userId, @Validated @RequestBody SwipeRequestDto swipeRequestDto){ - todoService.swipe(1L, swipeRequestDto.getTodoId()); + todoService.swipe(userId, swipeRequestDto.getTodoId()); return new BaseResponse<>(); } @PatchMapping("/todo/{todoId}/bookmark") @@ -49,4 +50,11 @@ public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { todoService.toggleIsBookmark(todoId); return new BaseResponse<>(); } + + @PatchMapping("/dragAndDrop") + public BaseResponse dragAndDrop(//@UserId Long userId, + @Validated @RequestBody DragAndDropRequestDto dragAndDropRequestDto){ + todoService.dragAndDrop(1L, dragAndDropRequestDto); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/api/request/DragAndDropRequestDto.java b/src/main/java/server/poptato/todo/api/request/DragAndDropRequestDto.java new file mode 100644 index 0000000..52f627a --- /dev/null +++ b/src/main/java/server/poptato/todo/api/request/DragAndDropRequestDto.java @@ -0,0 +1,21 @@ +package server.poptato.todo.api.request; + +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import server.poptato.todo.domain.value.Type; + +import java.util.List; + +@Builder +@Getter +@AllArgsConstructor +public class DragAndDropRequestDto { + @NotNull(message = "๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ ํƒ€์ž…์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + Type type; + @NotNull(message = "๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ ๋ฆฌ์ŠคํŠธ๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + @Size(min = 2, message = "ํ•  ์ผ ๋ฆฌ์ŠคํŠธ๋Š” ์ตœ์†Œ 2๊ฐœ ์ด์ƒ์˜ ํ•ญ๋ชฉ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.") + List todoIds; +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 891b816..d7107e9 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -4,6 +4,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import org.springframework.transaction.annotation.Transactional; import server.poptato.global.response.BaseResponse; @@ -21,6 +22,7 @@ import java.time.LocalDate; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Optional; @@ -109,11 +111,6 @@ else if(todo.getType().equals(Type.YESTERDAY) || todo.getType().equals(Type.BACK } } - private void checkIsExistUser(long userId) { - userRepository.findById(userId).orElseThrow(() - -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); - } - private void swipeBacklogToToday(Todo todo) { Integer maxTodayOrder = todoRepository.findMaxTodayOrderByUserIdOrZero(todo.getUserId()); todo.changeToToday(maxTodayOrder); @@ -126,4 +123,63 @@ private void swipeTodayToBacklog(Todo todo) { todo.changeToBacklog(maxBacklogOrder); } + public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { + checkIsExistUser(userId); + List todos = new ArrayList<>(); + for(Long todoId: requestDto.getTodoIds()){ + todos.add(todoRepository.findById(todoId).get()); + } + checkIsValidToDragAndDrop(userId,todos,requestDto); + if (requestDto.getType().equals(Type.TODAY)) { + reassignTodayOrder(todos, requestDto.getTodoIds()); + } else if (requestDto.getType().equals(Type.BACKLOG)) { + reassignBacklogOrder(todos, requestDto.getTodoIds()); + } + } + + private void checkIsValidToDragAndDrop(Long userId, List todos, DragAndDropRequestDto requestDto) { + if (todos.size() != requestDto.getTodoIds().size()) { + throw new TodoException(TodoExceptionErrorCode.TODO_NOT_EXIST); + } + for (Todo todo : todos) { + if (!todo.getUserId().equals(userId)) { + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + } + if (requestDto.getType().equals(Type.TODAY) && todo.getTodayStatus() == TodayStatus.COMPLETED) { + throw new TodoException(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO); + } + if (requestDto.getType().equals(Type.TODAY)) { + if (!todo.getType().equals(Type.TODAY)) { + throw new TodoException(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH); + } + } + if (requestDto.getType().equals(Type.BACKLOG)) { + if (!(todo.getType().equals(Type.BACKLOG) || todo.getType().equals(Type.YESTERDAY))) { + throw new TodoException(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH); + } + } + } + } + + private void reassignTodayOrder(List todos, List todoIds) { + int startingOrder = todoRepository.findMinTodayOrderByIdIn(todoIds); + for (Todo todo : todos) { + todo.setTodayOrder(startingOrder++); + //TODO: ์™œ save๋ฅผ ํ˜ธ์ถœํ•ด์•ผ์ง€ ๋ฐ˜์˜์ด ๋˜๋Š”์ง€ ์•Œ์•„์•ผํ•จ + todoRepository.save(todo); + } + } + + private void reassignBacklogOrder(List todos, List todoIds) { + int startingOrder = todoRepository.findMinBacklogOrderByIdIn(todoIds); + for (Todo todo : todos) { + todo.setBacklogOrder(startingOrder++); + todoRepository.save(todo); + } + } + + private void checkIsExistUser(Long userId) { + userRepository.findById(userId).orElseThrow(() + -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + } } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index b92bf8c..5f316ec 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -69,4 +69,12 @@ public void changeToBacklog(Integer maxBacklogOrder) { this.todayStatus = null; this.todayDate = null; } + + public void setTodayOrder(int order) { + this.todayOrder = order; + } + + public void setBacklogOrder(int order) { + this.backlogOrder = order; + } } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 9acf68f..1917f9a 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -12,19 +12,17 @@ public interface TodoRepository { void deleteAllByUserId(Long userId); - // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); - - // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); - Optional findById(Long todoId); void delete(Todo todo); - Todo save(Todo todo); - // ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ + Todo save(Todo todo); Page findByUserIdAndTypeInOrderByBacklogOrderDesc(Long userId, List types, Pageable pageable); Integer findMaxBacklogOrderByUserIdOrZero(Long userId); Integer findMaxTodayOrderByUserIdOrZero(Long userId); + List findByIdIn(List ids); + int findMinBacklogOrderByIdIn(List ids); + int findMinTodayOrderByIdIn(List ids); } diff --git a/src/main/java/server/poptato/todo/domain/value/Type.java b/src/main/java/server/poptato/todo/domain/value/Type.java index 0929c8e..0ed8f59 100644 --- a/src/main/java/server/poptato/todo/domain/value/Type.java +++ b/src/main/java/server/poptato/todo/domain/value/Type.java @@ -1,5 +1,18 @@ package server.poptato.todo.domain.value; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + public enum Type { - BACKLOG, YESTERDAY, TODAY + BACKLOG, YESTERDAY, TODAY; + + @JsonCreator + public static Type from(String value) { + return Type.valueOf(value.toUpperCase()); + } + + @JsonValue + public String toJson() { + return name(); + } } diff --git a/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java b/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java index 69e9ba3..f2a9350 100644 --- a/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java +++ b/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java @@ -14,7 +14,9 @@ public enum TodoExceptionErrorCode implements ResponseStatus { INVALID_PAGE(5000, HttpStatus.BAD_REQUEST.value(), "์œ ํšจํ–์ง€ ์•Š์€ ํŽ˜์ด์ง€ ์ˆ˜์ž…๋‹ˆ๋‹ค."), TODO_NOT_EXIST(5001, HttpStatus.BAD_REQUEST.value(), "ํˆฌ๋‘๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), TODO_USER_NOT_MATCH(5002, HttpStatus.BAD_REQUEST.value(), "์‚ฌ์šฉ์ž์˜ ํ•  ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค."), - ALREADY_COMPLETED_TODO(5003, HttpStatus.BAD_REQUEST.value(), "๋‹ฌ์„ฑ๋œ ํ•  ์ผ์€ ์Šค์™€์ดํ”„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."); + ALREADY_COMPLETED_TODO(5003, HttpStatus.BAD_REQUEST.value(), "๋‹ฌ์„ฑ๋œ ํ•  ์ผ์€ ์Šค์™€์ดํ”„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."), + TODO_TYPE_NOT_MATCH(5004, HttpStatus.BAD_REQUEST.value(), "๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ ๋ฆฌ์ŠคํŠธ์™€ ํ•  ์ผ ํƒ€์ž…์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค." ); + private final int code; private final int status; diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 8012ceb..4f42584 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -2,22 +2,20 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; +import java.util.List; import java.util.Optional; public interface JpaTodoRepository extends TodoRepository, JpaRepository { - @Override - void deleteAllByUserId(Long userId); - @Override - Optional findById(Long todoId); - @Override - void delete(Todo todo); - @Override - Todo save(Todo todo); @Query("SELECT COALESCE(MAX(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.backlogOrder IS NOT NULL") Integer findMaxBacklogOrderByUserIdOrZero(Long userId); @Query("SELECT COALESCE(MAX(t.todayOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.todayOrder IS NOT NULL") Integer findMaxTodayOrderByUserIdOrZero(Long userId); + @Query("SELECT MIN(t.todayOrder) FROM Todo t WHERE t.id IN :ids") + int findMinTodayOrderByIdIn(@Param("ids") List ids); + @Query("SELECT MIN(t.backlogOrder) FROM Todo t WHERE t.id IN :ids") + int findMinBacklogOrderByIdIn(@Param("ids") List ids); } diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index f15a30b..34a7e2c 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -14,6 +14,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; import server.poptato.todo.exception.TodoException; @@ -22,6 +23,8 @@ import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; + +import java.util.ArrayList; import java.util.Set; import static org.mockito.Mockito.verify; @@ -198,4 +201,34 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andExpect(status().isOk()) .andDo(print()); } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— type์ด๋‚˜ list๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์š”์ฒญ๋ฐ”๋””_์˜ˆ์™ธ(){ + //given + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(null) + .todoIds(new ArrayList<>()) + .build(); + + //when + Set> violations = validator.validate(request); + //then + Assertions.assertEquals(violations.size(), 2); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //when + mockMvc.perform(patch("/dragAndDrop") + .content("{\"type\": \"TODAY\", \"todoIds\": [1, 2, 3, 4]}") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java b/src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java new file mode 100644 index 0000000..60361c3 --- /dev/null +++ b/src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java @@ -0,0 +1,94 @@ +package server.poptato.todo.application; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.api.request.DragAndDropRequestDto; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.Type; +import server.poptato.todo.exception.TodoException; +import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@SpringBootTest +public class TodoServiceDragAndDropTest { + @Autowired + private TodoService todoService; + @Autowired + private TodoRepository todoRepository; + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์‚ฌ์šฉ์ž์˜ ํ• ์ผ์ด ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์‚ฌ์šฉ์ž์˜_ํ• ์ผ์ด_์•„๋‹Œ_์˜ˆ์™ธ(){ + //given + Long userId = 50L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.TODAY) + .todoIds(List.of(1L)) + .build(); + + //when & then + assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.TODO_USER_NOT_MATCH.getMessage()); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ์ด Type๊ณผ ๋งž์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_ํƒ€์ž…์ด_๋งž์ง€_์•Š๋Š”_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.BACKLOG) + .todoIds(List.of(1L)) + .build(); + //when & then + assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH.getMessage()); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์ด๋ฏธ ๋‹ฌ์„ฑํ•œ TODAY ํฌํ•จ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ด๋ฏธ_๋‹ฌ์„ฑํ•œ_ํˆฌ๋ฐ์ด_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.TODAY) + .todoIds(List.of(3L)) + .build(); + //when & then + assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO.getMessage()); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ๋“ค์˜ Order๋ฅผ ์žฌ์ •๋ ฌํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ˆœ์„œ_์žฌ์ •๋ ฌ(){ + //given + Long userId = 1L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.TODAY) + .todoIds(List.of(1L,5L,2L,4L)) + .build(); + //when + todoService.dragAndDrop(userId,request); + //then + Todo TodoId1 = todoRepository.findById(1L).get(); + Todo TodoId5 = todoRepository.findById(5L).get(); + Todo TodoId2 = todoRepository.findById(2L).get(); + Todo TodoId4 = todoRepository.findById(4L).get(); + + assertThat(TodoId1.getTodayOrder()).isEqualTo(1L); + assertThat(TodoId5.getTodayOrder()).isEqualTo(2L); + assertThat(TodoId2.getTodayOrder()).isEqualTo(3L); + assertThat(TodoId4.getTodayOrder()).isEqualTo(4L); + } +} diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 9fde86d..28c865d 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.response.TodayResponseDto; import server.poptato.todo.domain.repository.TodoRepository; @@ -15,6 +16,7 @@ import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; @@ -29,7 +31,6 @@ class TodoServiceTest { @Autowired private TodoRepository todoRepository; - @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test void ํ•ด๋‹นํ•˜๋Š”_์œ ์ €์ •๋ณด_์—†๋Š”_์˜ˆ์™ธ(){ @@ -253,6 +254,4 @@ void toggleIsBookmark_TodoNotFound() { todoService.toggleIsBookmark(nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ }); } - - } \ No newline at end of file From 31b34088da38b15490f627b07830edceb7d3beb2 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 01:41:33 +0900 Subject: [PATCH 103/177] =?UTF-8?q?fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=ED=95=B4?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/todo/api/TodoController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index c7b268a..801f6e6 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -52,9 +52,9 @@ public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { } @PatchMapping("/dragAndDrop") - public BaseResponse dragAndDrop(//@UserId Long userId, + public BaseResponse dragAndDrop(@UserId Long userId, @Validated @RequestBody DragAndDropRequestDto dragAndDropRequestDto){ - todoService.dragAndDrop(1L, dragAndDropRequestDto); + todoService.dragAndDrop(userId, dragAndDropRequestDto); return new BaseResponse<>(); } } From 6232688c154a7926c1e087f94b2001e9dab53888 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 09:20:12 +0900 Subject: [PATCH 104/177] =?UTF-8?q?refactor:=20=EC=98=81=EC=86=8D=EC=84=B1?= =?UTF-8?q?=20=EC=BB=A8=ED=85=8D=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 12 ++++- .../poptato/todo/application/TodoService.java | 1 + .../domain/repository/TodoRepository.java | 1 + .../infra/repository/JpaTodoRepository.java | 6 ++- .../user/application/service/UserService.java | 15 ++++++ .../infra/repository/JpaUserRepository.java | 13 ++--- .../poptato/todo/api/TodoControllerTest.java | 52 +++++++++++++++---- 7 files changed, 80 insertions(+), 20 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 1b37b1f..c173dd2 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -5,8 +5,8 @@ import server.poptato.global.response.BaseResponse; import server.poptato.todo.application.TodoService; import server.poptato.todo.application.response.BacklogListResponseDto; +import server.poptato.todo.application.response.PaginatedHistoryResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; -import server.poptato.todo.domain.entity.Todo; import server.poptato.user.resolver.UserId; @RestController @@ -41,4 +41,14 @@ public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { todoService.toggleIsBookmark(todoId); return new BaseResponse<>(); } + @GetMapping("/histories") + public BaseResponse getHistories( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "15") int size) { + System.out.println(userId); + PaginatedHistoryResponseDto response= todoService.getHistories(userId, page, size); + + return new BaseResponse<>(response); + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index f695563..6494844 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -97,6 +97,7 @@ public void toggleIsBookmark(Long todoId) { } public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { + checkIsExistUser(userId); Pageable pageable = PageRequest.of(page, size); //์œ ์ • ์•„์ด๋””์™€ completedDate๊ฐ€ null ์ด ์•„๋‹Œ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 9bb2183..be28038 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -2,6 +2,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.Query; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 019f3fe..afcaafc 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -1,11 +1,15 @@ package server.poptato.todo.infra.repository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import java.util.Optional; public interface JpaTodoRepository extends TodoRepository, JpaRepository { - + @Query("SELECT t FROM Todo t WHERE t.userId = :userId AND t.completedDateTime IS NOT NULL") + Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); } diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 923fa24..37f71e3 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -1,6 +1,9 @@ package server.poptato.user.application.service; +import jakarta.persistence.EntityManager; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import server.poptato.auth.application.service.JwtService; @@ -10,12 +13,17 @@ import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import java.util.Optional; + @Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; private final TodoRepository todoRepository; private final JwtService jwtService; + @Autowired + private EntityManager entityManager; + @Transactional public void deleteUser(Long userId) { @@ -24,5 +32,12 @@ public void deleteUser(Long userId) { todoRepository.deleteAllByUserId(userId); jwtService.deleteRefreshToken(String.valueOf(userId)); userRepository.delete(user); + entityManager.flush(); + } + @Transactional + @CacheEvict(value = "users", key = "#kakaoId") + public Optional findUserByKakaoId(String kakaoId) { + entityManager.clear(); // ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์ดˆ๊ธฐํ™” + return userRepository.findByKakaoId(kakaoId); } } diff --git a/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java b/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java index 3ef4ff0..dbd7693 100644 --- a/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java +++ b/src/main/java/server/poptato/user/infra/repository/JpaUserRepository.java @@ -1,19 +1,14 @@ package server.poptato.user.infra.repository; +import feign.Param; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; import java.util.Optional; public interface JpaUserRepository extends UserRepository, JpaRepository { - @Override - Optional findByKakaoId(String kakaoId); - @Override - Optional findById(Long userId); - - @Override - void delete(User user); - @Override - User save(User user); + @Query("SELECT u FROM User u WHERE u.kakaoId = :kakaoId") + Optional findByKakaoId(@Param("kakaoId") String kakaoId); } \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index e967f3f..5169d57 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -11,15 +11,13 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; import server.poptato.todo.application.TodoService; import server.poptato.todo.exception.TodoException; import server.poptato.user.application.service.UserService; import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @@ -53,7 +51,7 @@ public class TodoControllerTest { @Test void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { //when - mockMvc.perform(MockMvcRequestBuilders.get("/todays") + mockMvc.perform(get("/todays") .param("page","0") .param("size","8") .header("Authorization", "Bearer "+accessToken) @@ -66,7 +64,7 @@ public class TodoControllerTest { @Test void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { //when - mockMvc.perform(MockMvcRequestBuilders.get("/todays") + mockMvc.perform(get("/todays") .header("Authorization", "Bearer "+accessToken) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) @@ -79,7 +77,7 @@ public class TodoControllerTest { @Test void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { //when - mockMvc.perform(MockMvcRequestBuilders.get("/todays") + mockMvc.perform(get("/todays") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isBadRequest()) .andDo(print()); @@ -117,7 +115,7 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ @Test void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { //when - mockMvc.perform(MockMvcRequestBuilders.get("/backlogs") + mockMvc.perform(get("/backlogs") .param("page","0") .param("size","8") .header("Authorization", "Bearer "+accessToken) @@ -130,7 +128,7 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ @Test void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { //when - mockMvc.perform(MockMvcRequestBuilders.get("/backlogs") + mockMvc.perform(get("/backlogs") .header("Authorization", "Bearer "+accessToken) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) @@ -143,7 +141,7 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ @Test void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { //when - mockMvc.perform(MockMvcRequestBuilders.get("/backlogs") + mockMvc.perform(get("/backlogs") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isBadRequest()) .andDo(print()); @@ -164,4 +162,40 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ verify(todoService, times(1)).toggleIsBookmark(todoId); } + @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") + @Test + void ํžˆ์Šคํ† ๋ฆฌ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { + // when + mockMvc.perform(get("/histories") + .param("page", "0") + .param("size", "15") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @Test + void ํžˆ์Šคํ† ๋ฆฌ_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { + // when + mockMvc.perform(get("/histories") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + + // ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋œ ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ™•์ธ (userId = 1L, page = 0, size = 15) + verify(todoService).getHistories(1L, 0, 15); + } + + @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ํžˆ์Šคํ† ๋ฆฌ_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { + // when + mockMvc.perform(get("/histories") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 400 Bad Request ์‘๋‹ต + .andDo(print()); + } } From 3a360215aab7beb2eb4d860f14c9e6383e4d3afa Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 09:30:33 +0900 Subject: [PATCH 105/177] =?UTF-8?q?fix:=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 25 +++++++++++-------- .../domain/repository/TodoRepository.java | 4 +-- .../infra/repository/JpaTodoRepository.java | 8 +++--- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index d7107e9..f6d7b78 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,6 +1,7 @@ package server.poptato.todo.application; import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; @@ -33,10 +34,9 @@ public class TodoService { private final UserRepository userRepository; private final TodoRepository todoRepository; - public TodayListResponseDto getTodayList(long userId, int page, int size) { + public TodayListResponseDto getTodayList(long userId, int page, int size, LocalDate todayDate) { checkIsExistUser(userId); - LocalDate todayDate = LocalDate.now(); List todays = new ArrayList<>(); // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ๋จผ์ € ์กฐํšŒ @@ -125,10 +125,7 @@ private void swipeTodayToBacklog(Todo todo) { public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { checkIsExistUser(userId); - List todos = new ArrayList<>(); - for(Long todoId: requestDto.getTodoIds()){ - todos.add(todoRepository.findById(todoId).get()); - } + List todos = getTodos(requestDto); checkIsValidToDragAndDrop(userId,todos,requestDto); if (requestDto.getType().equals(Type.TODAY)) { reassignTodayOrder(todos, requestDto.getTodoIds()); @@ -137,6 +134,14 @@ public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { } } + private List getTodos(DragAndDropRequestDto requestDto) { + List todos = new ArrayList<>(); + for(Long todoId: requestDto.getTodoIds()){ + todos.add(todoRepository.findById(todoId).get()); + } + return todos; + } + private void checkIsValidToDragAndDrop(Long userId, List todos, DragAndDropRequestDto requestDto) { if (todos.size() != requestDto.getTodoIds().size()) { throw new TodoException(TodoExceptionErrorCode.TODO_NOT_EXIST); @@ -162,18 +167,18 @@ private void checkIsValidToDragAndDrop(Long userId, List todos, DragAndDro } private void reassignTodayOrder(List todos, List todoIds) { - int startingOrder = todoRepository.findMinTodayOrderByIdIn(todoIds); + int startingOrder = todoRepository.findMaxTodayOrderByIdIn(todoIds); for (Todo todo : todos) { - todo.setTodayOrder(startingOrder++); + todo.setTodayOrder(startingOrder--); //TODO: ์™œ save๋ฅผ ํ˜ธ์ถœํ•ด์•ผ์ง€ ๋ฐ˜์˜์ด ๋˜๋Š”์ง€ ์•Œ์•„์•ผํ•จ todoRepository.save(todo); } } private void reassignBacklogOrder(List todos, List todoIds) { - int startingOrder = todoRepository.findMinBacklogOrderByIdIn(todoIds); + int startingOrder = todoRepository.findMaxBacklogOrderByIdIn(todoIds); for (Todo todo : todos) { - todo.setBacklogOrder(startingOrder++); + todo.setBacklogOrder(startingOrder--); todoRepository.save(todo); } } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 1917f9a..c09dad1 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -23,6 +23,6 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime Integer findMaxBacklogOrderByUserIdOrZero(Long userId); Integer findMaxTodayOrderByUserIdOrZero(Long userId); List findByIdIn(List ids); - int findMinBacklogOrderByIdIn(List ids); - int findMinTodayOrderByIdIn(List ids); + int findMaxBacklogOrderByIdIn(List ids); + int findMaxTodayOrderByIdIn(List ids); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 4f42584..f1e8b51 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -14,8 +14,8 @@ public interface JpaTodoRepository extends TodoRepository, JpaRepository ids); - @Query("SELECT MIN(t.backlogOrder) FROM Todo t WHERE t.id IN :ids") - int findMinBacklogOrderByIdIn(@Param("ids") List ids); + @Query("SELECT MAX(t.todayOrder) FROM Todo t WHERE t.id IN :ids") + int findMaxTodayOrderByIdIn(@Param("ids") List ids); + @Query("SELECT MAX(t.backlogOrder) FROM Todo t WHERE t.id IN :ids") + int findMaxBacklogOrderByIdIn(@Param("ids") List ids); } From 403ecd2bf57fe2b4a0a3315a4829371f0defc53f Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 09:30:52 +0900 Subject: [PATCH 106/177] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 5 +- .../poptato/todo/api/TodoControllerTest.java | 4 +- .../TodoServiceDragAndDropTest.java | 94 ------------------- .../todo/application/TodoServiceTest.java | 81 +++++++++++++++- 4 files changed, 84 insertions(+), 100 deletions(-) delete mode 100644 src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 801f6e6..e4f5f51 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -11,6 +11,8 @@ import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.user.resolver.UserId; +import java.time.LocalDate; + @RestController @RequiredArgsConstructor public class TodoController { @@ -20,7 +22,8 @@ public BaseResponse getTodayList( @UserId Long userId, @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "8") int size){ - TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size); + LocalDate todayDate = LocalDate.now(); + TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size, todayDate); return new BaseResponse<>(todayListResponse); } diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 34a7e2c..a79fbb8 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -24,6 +24,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; +import java.time.LocalDate; import java.util.ArrayList; import java.util.Set; @@ -80,8 +81,9 @@ public class TodoControllerTest { .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andDo(print()); + LocalDate todayDate = LocalDate.now(); - verify(todoService).getTodayList(1,0, 8); + verify(todoService).getTodayList(1,0, 8,todayDate); } @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") diff --git a/src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java b/src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java deleted file mode 100644 index 60361c3..0000000 --- a/src/test/java/server/poptato/todo/application/TodoServiceDragAndDropTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package server.poptato.todo.application; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import server.poptato.todo.api.request.DragAndDropRequestDto; -import server.poptato.todo.domain.entity.Todo; -import server.poptato.todo.domain.repository.TodoRepository; -import server.poptato.todo.domain.value.Type; -import server.poptato.todo.exception.TodoException; -import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -@SpringBootTest -public class TodoServiceDragAndDropTest { - @Autowired - private TodoService todoService; - @Autowired - private TodoRepository todoRepository; - - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์‚ฌ์šฉ์ž์˜ ํ• ์ผ์ด ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์‚ฌ์šฉ์ž์˜_ํ• ์ผ์ด_์•„๋‹Œ_์˜ˆ์™ธ(){ - //given - Long userId = 50L; - DragAndDropRequestDto request = DragAndDropRequestDto.builder() - .type(Type.TODAY) - .todoIds(List.of(1L)) - .build(); - - //when & then - assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) - .isInstanceOf(TodoException.class) - .hasMessage(TodoExceptionErrorCode.TODO_USER_NOT_MATCH.getMessage()); - } - - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ์ด Type๊ณผ ๋งž์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_ํƒ€์ž…์ด_๋งž์ง€_์•Š๋Š”_์˜ˆ์™ธ(){ - //given - Long userId = 1L; - DragAndDropRequestDto request = DragAndDropRequestDto.builder() - .type(Type.BACKLOG) - .todoIds(List.of(1L)) - .build(); - //when & then - assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) - .isInstanceOf(TodoException.class) - .hasMessage(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH.getMessage()); - } - - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์ด๋ฏธ ๋‹ฌ์„ฑํ•œ TODAY ํฌํ•จ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ด๋ฏธ_๋‹ฌ์„ฑํ•œ_ํˆฌ๋ฐ์ด_์˜ˆ์™ธ(){ - //given - Long userId = 1L; - DragAndDropRequestDto request = DragAndDropRequestDto.builder() - .type(Type.TODAY) - .todoIds(List.of(3L)) - .build(); - //when & then - assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) - .isInstanceOf(TodoException.class) - .hasMessage(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO.getMessage()); - } - - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ๋“ค์˜ Order๋ฅผ ์žฌ์ •๋ ฌํ•œ๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ˆœ์„œ_์žฌ์ •๋ ฌ(){ - //given - Long userId = 1L; - DragAndDropRequestDto request = DragAndDropRequestDto.builder() - .type(Type.TODAY) - .todoIds(List.of(1L,5L,2L,4L)) - .build(); - //when - todoService.dragAndDrop(userId,request); - //then - Todo TodoId1 = todoRepository.findById(1L).get(); - Todo TodoId5 = todoRepository.findById(5L).get(); - Todo TodoId2 = todoRepository.findById(2L).get(); - Todo TodoId4 = todoRepository.findById(4L).get(); - - assertThat(TodoId1.getTodayOrder()).isEqualTo(1L); - assertThat(TodoId5.getTodayOrder()).isEqualTo(2L); - assertThat(TodoId2.getTodayOrder()).isEqualTo(3L); - assertThat(TodoId4.getTodayOrder()).isEqualTo(4L); - } -} diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 28c865d..540dbc3 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -16,6 +16,7 @@ import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import java.time.LocalDate; import java.util.List; import java.util.Optional; @@ -38,8 +39,9 @@ class TodoServiceTest { Long notExistUserId = 100L; int page = 0; int size = 8; + LocalDate todayDate = LocalDate.now(); //when & then - assertThatThrownBy(()-> todoService.getTodayList(notExistUserId,page,size)) + assertThatThrownBy(()-> todoService.getTodayList(notExistUserId,page,size,todayDate)) .isInstanceOf(UserException.class) .hasMessage(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); } @@ -50,8 +52,9 @@ class TodoServiceTest { Long userId = 1L; int page = 0; int size = 8; + LocalDate todayDate = LocalDate.of(2024,10,16); //when & then - assertThat(todoService.getTodayList(userId,page,size).getTodays().size()).isEqualTo(size); + assertThat(todoService.getTodayList(userId,page,size,todayDate).getTodays().size()).isEqualTo(size); } @DisplayName("์œ ํšจํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ˆ˜์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @@ -61,8 +64,9 @@ class TodoServiceTest { Long userId = 1L; int page = 2; int size = 8; + LocalDate todayDate = LocalDate.now(); //when & then - assertThatThrownBy(()-> todoService.getTodayList(userId,page,size)) + assertThatThrownBy(()-> todoService.getTodayList(userId,page,size,todayDate)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.INVALID_PAGE.getMessage()); } @@ -74,9 +78,10 @@ class TodoServiceTest { Long userId = 1L; int page = 0; int size = 8; + LocalDate todayDate = LocalDate.now(); //when - TodayListResponseDto todayList = todoService.getTodayList(userId, page, size); + TodayListResponseDto todayList = todoService.getTodayList(userId, page, size, todayDate); //then boolean foundCompleted = false; @@ -254,4 +259,72 @@ void toggleIsBookmark_TodoNotFound() { todoService.toggleIsBookmark(nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ }); } + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์‚ฌ์šฉ์ž์˜ ํ• ์ผ์ด ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์‚ฌ์šฉ์ž์˜_ํ• ์ผ์ด_์•„๋‹Œ_์˜ˆ์™ธ(){ + //given + Long userId = 50L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.TODAY) + .todoIds(List.of(1L)) + .build(); + + //when & then + assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.TODO_USER_NOT_MATCH.getMessage()); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ์ด Type๊ณผ ๋งž์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_ํƒ€์ž…์ด_๋งž์ง€_์•Š๋Š”_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.BACKLOG) + .todoIds(List.of(1L)) + .build(); + //when & then + assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH.getMessage()); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์ด๋ฏธ ๋‹ฌ์„ฑํ•œ TODAY ํฌํ•จ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ด๋ฏธ_๋‹ฌ์„ฑํ•œ_ํˆฌ๋ฐ์ด_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.TODAY) + .todoIds(List.of(3L)) + .build(); + //when & then + assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO.getMessage()); + } + + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ๋“ค์˜ Order๋ฅผ ์žฌ์ •๋ ฌํ•œ๋‹ค.") + @Test + void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ˆœ์„œ_์žฌ์ •๋ ฌ(){ + //given + Long userId = 1L; + DragAndDropRequestDto request = DragAndDropRequestDto.builder() + .type(Type.TODAY) + .todoIds(List.of(1L,5L,2L,4L)) + .build(); + //when + todoService.dragAndDrop(userId,request); + //then + Todo TodoId1 = todoRepository.findById(1L).get(); + Todo TodoId5 = todoRepository.findById(5L).get(); + Todo TodoId2 = todoRepository.findById(2L).get(); + Todo TodoId4 = todoRepository.findById(4L).get(); + + assertThat(TodoId1.getTodayOrder()).isEqualTo(5L); + assertThat(TodoId5.getTodayOrder()).isEqualTo(4L); + assertThat(TodoId2.getTodayOrder()).isEqualTo(3L); + assertThat(TodoId4.getTodayOrder()).isEqualTo(2L); + } } \ No newline at end of file From d9ce3525102e099e211cea9b660815c5e16d00dc Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 10:40:11 +0900 Subject: [PATCH 107/177] =?UTF-8?q?chore:=20dto,=20repository=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/todo/api/TodoController.java | 1 - .../response/PaginatedYesterdayResponseDto.java | 15 +++++++++++++++ .../response/YesterdayResponseDto.java | 13 +++++++++++++ .../todo/domain/repository/TodoRepository.java | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java create mode 100644 src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 463794c..2cff925 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -59,7 +59,6 @@ public BaseResponse getHistories( @UserId Long userId, @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "15") int size) { - System.out.println(userId); PaginatedHistoryResponseDto response = todoService.getHistories(userId, page, size); return new BaseResponse<>(response); diff --git a/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java b/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java new file mode 100644 index 0000000..9c5f9c7 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java @@ -0,0 +1,15 @@ +package server.poptato.todo.application.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +import java.util.List; + +@Getter +@Builder +@AllArgsConstructor +public class PaginatedYesterdayResponseDto { + private List yesterdays; + private int totalPageCount; +} diff --git a/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java b/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java new file mode 100644 index 0000000..4d466d7 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java @@ -0,0 +1,13 @@ +package server.poptato.todo.application.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +@AllArgsConstructor +public class YesterdayResponseDto { + private Long todoId; + private String content; +} \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 34e455d..e09ff41 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -29,4 +29,5 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime List findByIdIn(List ids); int findMaxBacklogOrderByIdIn(List ids); int findMaxTodayOrderByIdIn(List ids); + Page findByTypeAndTodayStatus(Type type, TodayStatus todayStatus, Pageable pageable); } From 6cd8592d62d69ae9318986f153ffaa58aa265226 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 10:46:59 +0900 Subject: [PATCH 108/177] =?UTF-8?q?test:=20=EB=B0=B1=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 33 +++++++++++++++++-- .../todo/application/TodoServiceTest.java | 25 ++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index a79fbb8..d4aff6b 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -14,6 +14,7 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.api.request.BacklogCreateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; @@ -21,14 +22,13 @@ import server.poptato.user.application.service.UserService; import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import java.time.LocalDate; import java.util.ArrayList; import java.util.Set; import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @@ -233,4 +233,33 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andExpect(status().isOk()) .andDo(print()); } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์š”์ฒญ ๋ฐ”๋””์— content๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋น„์–ด์žˆ์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์š”์ฒญ๋ฐ”๋””_์˜ˆ์™ธ(){ + //given + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + + BacklogCreateRequestDto request = BacklogCreateRequestDto.builder() + .content(" ") + .build(); + + //when + Set> violations = validator.validate(request); + //then + Assertions.assertEquals(violations.size(), 1); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //when + mockMvc.perform(post("/backlog") + .content("{\"content\": \"ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ •๋ณธ\"}") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 540dbc3..7d566e1 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -327,4 +327,29 @@ void toggleIsBookmark_TodoNotFound() { assertThat(TodoId2.getTodayOrder()).isEqualTo(3L); assertThat(TodoId4.getTodayOrder()).isEqualTo(2L); } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ํ•  ์ผ์˜ ๊ฐ’๋“ค์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์†์„ฑ_๊ธฐ๋ณธ๊ฐ’(){ + //given + Long userId = 1L; + String content = "๋‚ด์šฉ"; + + //when + Long todoId = todoService.generateBacklog(userId,content); + Todo findTodo = todoRepository.findById(todoId).get(); + + //then + assertThat(findTodo.getId()).isNotNull(); + assertThat(findTodo.getTodayOrder()).isNull(); + assertThat(findTodo.getTodayDate()).isNull(); + assertThat(findTodo.getTodayStatus()).isNull(); + assertThat(findTodo.getDeadline()).isNull(); + assertThat(findTodo.getContent()).isEqualTo(content); + assertThat(findTodo.getType()).isEqualTo(Type.BACKLOG); + assertThat(findTodo.getUserId()).isEqualTo(userId); + assertThat(findTodo.isBookmark()).isEqualTo(false); + assertThat(findTodo.getBacklogOrder()).isEqualTo(11L); + assertThat(findTodo.getCompletedDateTime()).isNull(); + } } \ No newline at end of file From cd23e6a1be7315a532b80618daa875b91b2df68b Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 10:47:22 +0900 Subject: [PATCH 109/177] =?UTF-8?q?feat:=20=EB=B0=B1=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/todo/api/TodoController.java | 8 ++++++++ .../api/request/BacklogCreateRequestDto.java | 16 ++++++++++++++++ .../poptato/todo/application/TodoService.java | 9 +++++++++ .../server/poptato/todo/domain/entity/Todo.java | 11 +++++++++++ 4 files changed, 44 insertions(+) create mode 100644 src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index e4f5f51..3fb546d 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -4,6 +4,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; +import server.poptato.todo.api.request.BacklogCreateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; @@ -60,4 +61,11 @@ public BaseResponse dragAndDrop(@UserId Long userId, todoService.dragAndDrop(userId, dragAndDropRequestDto); return new BaseResponse<>(); } + + @PostMapping("/backlog") + public BaseResponse generateBacklog(//@UserId Long userId, + @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto){ + todoService.generateBacklog(1L, backlogCreateRequestDto.getContent()); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java b/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java new file mode 100644 index 0000000..31bca09 --- /dev/null +++ b/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java @@ -0,0 +1,16 @@ +package server.poptato.todo.api.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Builder +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class BacklogCreateRequestDto { + @NotBlank(message = "๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ๋‚ด์šฉ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + String content; +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index f6d7b78..104d660 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import server.poptato.todo.api.request.BacklogCreateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import org.springframework.transaction.annotation.Transactional; @@ -187,4 +188,12 @@ private void checkIsExistUser(Long userId) { userRepository.findById(userId).orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); } + + public Long generateBacklog(Long userId, String content) { + checkIsExistUser(userId); + Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); + Todo backlog = Todo.createBacklog(userId, content, maxBacklogOrder+1); + Todo newBacklog = todoRepository.save(backlog); + return newBacklog.getId(); + } } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index 5f316ec..c1a0134 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -50,6 +50,17 @@ public class Todo{ @LastModifiedDate private LocalDateTime modifyDate; // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋„๋ฉ”์ธ ๋ฉ”์„œ๋“œ + + public static Todo createBacklog(Long userId, String content, Integer backlogOrder) { + return Todo.builder() + .userId(userId) + .content(content) + .backlogOrder(backlogOrder) + .isBookmark(false) + .type(Type.BACKLOG) + .build(); + } + public void toggleBookmark() { this.isBookmark = !this.isBookmark; } From 53026700ad5058666e457db290aa8f41498d4039 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 10:51:41 +0900 Subject: [PATCH 110/177] =?UTF-8?q?chore:=20import=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/server/poptato/todo/api/TodoControllerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index b0c0ea2..4c4ea01 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -30,7 +30,6 @@ import java.util.Set; import static org.mockito.Mockito.verify; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; From 36d295a03ee9be9974d5dc776a4cd4115c7345eb Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 10:57:18 +0900 Subject: [PATCH 111/177] =?UTF-8?q?feat:=20=EC=96=B4=EC=A0=9C=20=ED=95=9C?= =?UTF-8?q?=20=EC=9D=BC=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 10 +++++ .../poptato/todo/application/TodoService.java | 39 ++++++++++++------- .../domain/repository/TodoRepository.java | 3 +- .../todo/application/TodoServiceTest.java | 20 ++++++++++ 4 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 2cff925..19efcac 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -9,6 +9,7 @@ import server.poptato.todo.application.TodoService; import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.PaginatedHistoryResponseDto; +import server.poptato.todo.application.response.PaginatedYesterdayResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.user.resolver.UserId; @@ -69,4 +70,13 @@ public BaseResponse dragAndDrop(@UserId Long userId, todoService.dragAndDrop(userId, dragAndDropRequestDto); return new BaseResponse<>(); } + @GetMapping("/yesterdays") + public BaseResponse getYesterdays( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "15") int size) { + + PaginatedYesterdayResponseDto response = todoService.getYesterdays(userId, page, size); + return new BaseResponse<>(response); + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index afc14b2..6bb2c95 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -10,10 +10,7 @@ import server.poptato.todo.api.request.SwipeRequestDto; import org.springframework.transaction.annotation.Transactional; import server.poptato.global.response.BaseResponse; -import server.poptato.todo.application.response.BacklogListResponseDto; -import server.poptato.todo.application.response.HistoryResponseDto; -import server.poptato.todo.application.response.PaginatedHistoryResponseDto; -import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.application.response.*; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; @@ -131,6 +128,29 @@ else if(todo.getType().equals(Type.YESTERDAY) || todo.getType().equals(Type.BACK swipeBacklogToToday(todo); } } + public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { + checkIsExistUser(userId); + List todos = getTodos(requestDto); + checkIsValidToDragAndDrop(userId,todos,requestDto); + if (requestDto.getType().equals(Type.TODAY)) { + reassignTodayOrder(todos, requestDto.getTodoIds()); + } else if (requestDto.getType().equals(Type.BACKLOG)) { + reassignBacklogOrder(todos, requestDto.getTodoIds()); + } + } + public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int size) { + Pageable pageable = PageRequest.of(page, size); + Page todosPage = todoRepository.findByUserIdAndTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); + + List yesterdays = todosPage.getContent().stream() + .map(todo -> new YesterdayResponseDto( + todo.getId(), + todo.getContent() + )) + .collect(Collectors.toList()); + + return new PaginatedYesterdayResponseDto(yesterdays, todosPage.getTotalPages()); + } private void swipeBacklogToToday(Todo todo) { Integer maxTodayOrder = todoRepository.findMaxTodayOrderByUserIdOrZero(todo.getUserId()); @@ -144,17 +164,6 @@ private void swipeTodayToBacklog(Todo todo) { todo.changeToBacklog(maxBacklogOrder); } - public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { - checkIsExistUser(userId); - List todos = getTodos(requestDto); - checkIsValidToDragAndDrop(userId,todos,requestDto); - if (requestDto.getType().equals(Type.TODAY)) { - reassignTodayOrder(todos, requestDto.getTodoIds()); - } else if (requestDto.getType().equals(Type.BACKLOG)) { - reassignBacklogOrder(todos, requestDto.getTodoIds()); - } - } - private List getTodos(DragAndDropRequestDto requestDto) { List todos = new ArrayList<>(); for(Long todoId: requestDto.getTodoIds()){ diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index e09ff41..22f4592 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -2,7 +2,6 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.Query; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; @@ -29,5 +28,5 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime List findByIdIn(List ids); int findMaxBacklogOrderByIdIn(List ids); int findMaxTodayOrderByIdIn(List ids); - Page findByTypeAndTodayStatus(Type type, TodayStatus todayStatus, Pageable pageable); + Page findByUserIdAndTypeAndTodayStatus(Type type, TodayStatus todayStatus, Pageable pageable); } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 26224ab..c4027d2 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -4,8 +4,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Pageable; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.application.response.PaginatedHistoryResponseDto; +import server.poptato.todo.application.response.PaginatedYesterdayResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.response.TodayResponseDto; import server.poptato.todo.domain.repository.TodoRepository; @@ -349,4 +351,22 @@ void getHistories_ShouldReturnPagedResult() { // ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๊ณ„์‚ฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ assertThat(result.getTotalPageCount()).isGreaterThan(0); } + @Test + @DisplayName("YESTERDAY ํƒ€์ž…๊ณผ INCOMPLETE ์ƒํƒœ์ธ todo ๋ชฉ๋ก์„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค") + void getYesterdays_ShouldReturnPagedResult() { + // given + Long userId = 1L; + int page = 0; + int size = 5; // ํ•œ๋ฒˆ์— 5๊ฐœ์˜ todo ๊ฐ€์ ธ์˜ค๊ธฐ + + + // when + PaginatedYesterdayResponseDto result = todoService.getYesterdays(userId, page, size); + + // then + assertThat(result.getYesterdays()).hasSizeLessThanOrEqualTo(size); // ํŽ˜์ด์ง• ํฌ๊ธฐ๋งŒํผ ๊ฐ€์ ธ์˜ด + assertThat(result.getTotalPageCount()).isGreaterThan(0); // ์ด ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ 0๋ณด๋‹ค ํผ + assertThat(result.getYesterdays().get(0).getTodoId()).isNotNull(); // ์ฒซ ๋ฒˆ์งธ todo์˜ ID๊ฐ€ null์ด ์•„๋‹˜ + assertThat(result.getYesterdays().get(0).getContent()).isNotNull(); // ์ฒซ ๋ฒˆ์งธ todo์˜ ๋‚ด์šฉ์ด null์ด ์•„๋‹˜ + } } \ No newline at end of file From a757165d1c3ab96a6932c9347cbfa214c496763c Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 11:02:55 +0900 Subject: [PATCH 112/177] =?UTF-8?q?fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/BacklogCreateTest.java | 44 +++++++++++++++++++ .../todo/application/TodoServiceTest.java | 25 +---------- 2 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 src/test/java/server/poptato/todo/application/BacklogCreateTest.java diff --git a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java new file mode 100644 index 0000000..be33de7 --- /dev/null +++ b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java @@ -0,0 +1,44 @@ +package server.poptato.todo.application; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.Type; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +public class BacklogCreateTest { + @Autowired + private TodoService todoService; + @Autowired + private TodoRepository todoRepository; + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ํ•  ์ผ์˜ ๊ฐ’๋“ค์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์†์„ฑ_๊ธฐ๋ณธ๊ฐ’(){ + //given + Long userId = 1L; + String content = "๋‚ด์šฉ"; + + //when + Long todoId = todoService.generateBacklog(userId,content); + Todo findTodo = todoRepository.findById(todoId).get(); + + //then + assertThat(findTodo.getId()).isNotNull(); + assertThat(findTodo.getTodayOrder()).isNull(); + assertThat(findTodo.getTodayDate()).isNull(); + assertThat(findTodo.getTodayStatus()).isNull(); + assertThat(findTodo.getDeadline()).isNull(); + assertThat(findTodo.getContent()).isEqualTo(content); + assertThat(findTodo.getType()).isEqualTo(Type.BACKLOG); + assertThat(findTodo.getUserId()).isEqualTo(userId); + assertThat(findTodo.isBookmark()).isEqualTo(false); + assertThat(findTodo.getBacklogOrder()).isEqualTo(11L); + assertThat(findTodo.getCompletedDateTime()).isNull(); + } +} diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index c3e6c1b..f81363d 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -125,7 +125,7 @@ public void shouldDeleteTodoById_WhenTodoExists_ForUser2() { @Test public void shouldThrowException_WhenTodoNotFound_ForUser2() { //given - Long nonExistentTodoId = 30L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํˆฌ๋‘ ID + Long nonExistentTodoId = 1000L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํˆฌ๋‘ ID //when & then assertThrows(TodoException.class, () -> { @@ -350,28 +350,5 @@ void getHistories_ShouldReturnPagedResult() { assertThat(result.getTotalPageCount()).isGreaterThan(0); } - @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ํ•  ์ผ์˜ ๊ฐ’๋“ค์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์†์„ฑ_๊ธฐ๋ณธ๊ฐ’(){ - //given - Long userId = 1L; - String content = "๋‚ด์šฉ"; - //when - Long todoId = todoService.generateBacklog(userId,content); - Todo findTodo = todoRepository.findById(todoId).get(); - - //then - assertThat(findTodo.getId()).isNotNull(); - assertThat(findTodo.getTodayOrder()).isNull(); - assertThat(findTodo.getTodayDate()).isNull(); - assertThat(findTodo.getTodayStatus()).isNull(); - assertThat(findTodo.getDeadline()).isNull(); - assertThat(findTodo.getContent()).isEqualTo(content); - assertThat(findTodo.getType()).isEqualTo(Type.BACKLOG); - assertThat(findTodo.getUserId()).isEqualTo(userId); - assertThat(findTodo.isBookmark()).isEqualTo(false); - assertThat(findTodo.getBacklogOrder()).isEqualTo(11L); - assertThat(findTodo.getCompletedDateTime()).isNull(); - } } \ No newline at end of file From 33defeb2f3619a848eaae45a41f7d37a278d3381 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 11:32:47 +0900 Subject: [PATCH 113/177] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 14 ++++++++++++++ .../poptato/todo/application/TodoServiceTest.java | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 4c4ea01..3595909 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -299,4 +299,18 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andExpect(status().isOk()) .andDo(print()); } + + @DisplayName("ํ•  ์ผ ์ •๋ณด ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ํ• ์ผ_์ •๋ณด_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //given + Long todoId = 1L; + + //when + mockMvc.perform(get("/todo/{todoId}", todoId) + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index f81363d..2b7eecb 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -8,6 +8,7 @@ import server.poptato.todo.application.response.PaginatedHistoryResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; import server.poptato.todo.application.response.TodayResponseDto; +import server.poptato.todo.application.response.TodoDetailResponseDto; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.value.TodayStatus; @@ -350,5 +351,17 @@ void getHistories_ShouldReturnPagedResult() { assertThat(result.getTotalPageCount()).isGreaterThan(0); } - + @DisplayName("ํ•  ์ผ ์ƒ์„ธ์กฐํšŒ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ํ• ์ผ_์ƒ์„ธ์กฐํšŒ_์„ฑ๊ณต(){ + //given + Long userId = 1L; + Long todoId = 10L; + //when + TodoDetailResponseDto todoInfo = todoService.getTodoInfo(userId, todoId); + //then + assertThat(todoInfo.getContent()).isEqualTo("ํ•  ์ผ 10"); + assertThat(todoInfo.getDeadline()).isEqualTo(LocalDate.of(2024,10,26)); + assertThat(todoInfo.getIsBookmark()).isTrue(); + } } \ No newline at end of file From 78430d62839f540023b57b915b1c148ab3aaff1f Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 11:36:14 +0900 Subject: [PATCH 114/177] =?UTF-8?q?feat:=20api=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 12 +++++++++-- .../poptato/todo/application/TodoService.java | 20 +++++++++++++++---- .../response/TodoDetailResponseDto.java | 16 +++++++++++++++ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index a340ce5..b78077c 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -11,6 +11,7 @@ import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.PaginatedHistoryResponseDto; import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.application.response.TodoDetailResponseDto; import server.poptato.user.resolver.UserId; import java.time.LocalDate; @@ -73,9 +74,16 @@ public BaseResponse dragAndDrop(@UserId Long userId, } @PostMapping("/backlog") - public BaseResponse generateBacklog(//@UserId Long userId, + public BaseResponse generateBacklog(@UserId Long userId, @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto){ - todoService.generateBacklog(1L, backlogCreateRequestDto.getContent()); + todoService.generateBacklog(userId, backlogCreateRequestDto.getContent()); return new BaseResponse<>(); } + + @GetMapping("/todo/{todoId}") + public BaseResponse getTodoInfo(@UserId Long userId, + @PathVariable Long todoId){ + TodoDetailResponseDto response = todoService.getTodoInfo(userId, todoId); + return new BaseResponse<>(response); + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 4d54441..8933015 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -11,10 +11,7 @@ import server.poptato.todo.api.request.SwipeRequestDto; import org.springframework.transaction.annotation.Transactional; import server.poptato.global.response.BaseResponse; -import server.poptato.todo.application.response.BacklogListResponseDto; -import server.poptato.todo.application.response.HistoryResponseDto; -import server.poptato.todo.application.response.PaginatedHistoryResponseDto; -import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.application.response.*; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; @@ -29,6 +26,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @@ -217,4 +215,18 @@ public Long generateBacklog(Long userId, String content) { Todo newBacklog = todoRepository.save(backlog); return newBacklog.getId(); } + + public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) { + checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if(findTodo.getUserId()!=userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + + return TodoDetailResponseDto.builder() + .content(findTodo.getContent()) + .isBookmark(findTodo.isBookmark()) + .deadline(findTodo.getDeadline()) + .build(); + } } diff --git a/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java new file mode 100644 index 0000000..b68549a --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java @@ -0,0 +1,16 @@ +package server.poptato.todo.application.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +import java.time.LocalDate; + +@Getter +@Builder +@AllArgsConstructor +public class TodoDetailResponseDto { + String content; + LocalDate deadline; + Boolean isBookmark; +} From 293ac05f1e2a136777e3d446f5ff6699b9a4c14d Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 11:47:02 +0900 Subject: [PATCH 115/177] =?UTF-8?q?feat:=20controller=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 2 +- .../domain/repository/TodoRepository.java | 2 +- .../poptato/todo/api/TodoControllerTest.java | 22 +++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 6bb2c95..f19353d 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -140,7 +140,7 @@ public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { } public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int size) { Pageable pageable = PageRequest.of(page, size); - Page todosPage = todoRepository.findByUserIdAndTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); + Page todosPage = todoRepository.findByUserIdAndTypeAndTodayStatus(userId, Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); List yesterdays = todosPage.getContent().stream() .map(todo -> new YesterdayResponseDto( diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 22f4592..fe47e79 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -28,5 +28,5 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime List findByIdIn(List ids); int findMaxBacklogOrderByIdIn(List ids); int findMaxTodayOrderByIdIn(List ids); - Page findByUserIdAndTypeAndTodayStatus(Type type, TodayStatus todayStatus, Pageable pageable); + Page findByUserIdAndTypeAndTodayStatus(Long userId, Type type, TodayStatus todayStatus, Pageable pageable); } diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 606b83a..a883cad 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -269,4 +269,26 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andExpect(status().isOk()) .andDo(print()); } + @DisplayName("์–ด์ œ ํ•œ ์ผ ์กฐํšŒ ์‹œ Query String์— ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @Test + void ์–ด์ œํ•œ์ผ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { + // when + mockMvc.perform(get("/yesterdays") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + + verify(todoService).getYesterdays(1L, 0, 15); + } + + @DisplayName("์–ด์ œ ํ•œ ์ผ ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ์–ด์ œํ•œ์ผ_JWT_์˜ˆ์™ธ() throws Exception { + // when + mockMvc.perform(get("/yesterdays") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 400 Bad Request ์‘๋‹ต + .andDo(print()); + } } From 257344734d89c63fc13fe39dfe198eaeeeb806a7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 12:46:01 +0900 Subject: [PATCH 116/177] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 15 +++++++++++++++ .../todo/application/TodoServiceTest.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index b3b3601..c93f838 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -333,4 +333,19 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andDo(print()); } + + @DisplayName("๋งˆ๊ฐ๊ธฐํ•œ ์ˆ˜์ • ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ๋งˆ๊ฐ๊ธฐํ•œ_์ˆ˜์ •_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //given + Long todoId = 1L; + + //when + mockMvc.perform(patch("/todo/{todoId}/deadline", todoId) + .header("Authorization", "Bearer " + accessToken) + .content("{\"deadline\": \"2024-12-25\"}") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 7f47d1d..53d73cb 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -380,4 +380,20 @@ void getYesterdays_ShouldReturnPagedResult() { assertThat(todoInfo.getDeadline()).isEqualTo(LocalDate.of(2024,10,26)); assertThat(todoInfo.getIsBookmark()).isTrue(); } + + @DisplayName("๋งˆ๊ฐ๊ธฐํ•œ ์ˆ˜์ • ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ๋งˆ๊ฐ๊ธฐํ•œ_์ˆ˜์ •_์„ฑ๊ณต(){ + //given + Long userId = 1L; + Long todoId = 10L; + LocalDate updateDate = LocalDate.of(2024,12,25); + + //when + todoService.updateDeadline(userId,todoId,updateDate); + Todo findTodo = todoRepository.findById(todoId).get(); + + //then + assertThat(findTodo.getDeadline()).isEqualTo(updateDate); + } } \ No newline at end of file From 0cd15e34097e80fce59925389c068284610b3299 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 12:46:22 +0900 Subject: [PATCH 117/177] =?UTF-8?q?feat:=20api=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/api/TodoController.java | 9 +++++++++ .../todo/api/request/DeadlineUpdateRequestDto.java | 12 ++++++++++++ .../server/poptato/todo/application/TodoService.java | 10 ++++++++++ .../java/server/poptato/todo/domain/entity/Todo.java | 4 ++++ 4 files changed, 35 insertions(+) create mode 100644 src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index da4c35c..4e5d419 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; import server.poptato.todo.api.request.BacklogCreateRequestDto; +import server.poptato.todo.api.request.DeadlineUpdateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; @@ -95,4 +96,12 @@ public BaseResponse getTodoInfo(@UserId Long userId, TodoDetailResponseDto response = todoService.getTodoInfo(userId, todoId); return new BaseResponse<>(response); } + + @PatchMapping("/todo/{todoId}/deadline") + public BaseResponse updateDeadline(@UserId Long userId, + @PathVariable Long todoId, + @Validated @RequestBody DeadlineUpdateRequestDto requestDto){ + todoService.updateDeadline(userId, todoId, requestDto.getDeadline()); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java b/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java new file mode 100644 index 0000000..392c827 --- /dev/null +++ b/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java @@ -0,0 +1,12 @@ +package server.poptato.todo.api.request; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@Getter +@NoArgsConstructor +public class DeadlineUpdateRequestDto { + LocalDate deadline; +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index cc85b07..5674265 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -241,4 +241,14 @@ public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) { .deadline(findTodo.getDeadline()) .build(); } + + public void updateDeadline(Long userId, Long todoId, LocalDate deadline) { + checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if(findTodo.getUserId()!=userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + findTodo.updateDeadline(deadline); + todoRepository.save(findTodo); + } } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index c1a0134..b4b9c8c 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -88,4 +88,8 @@ public void setTodayOrder(int order) { public void setBacklogOrder(int order) { this.backlogOrder = order; } + + public void updateDeadline(LocalDate deadline) { + this.deadline = deadline; + } } From 28ba209a20dde99d5259612d20c10b1ec23abaf0 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 12:49:09 +0900 Subject: [PATCH 118/177] =?UTF-8?q?feat:=20=EC=9D=B4=EB=A6=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20service=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/UserChangeNameRequestDto.java | 14 +++++ .../user/application/service/UserService.java | 9 +++ .../poptato/user/domain/entity/User.java | 4 ++ .../user/application/UserServiceTest.java | 58 +++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java create mode 100644 src/test/java/server/poptato/user/application/UserServiceTest.java diff --git a/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java b/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java new file mode 100644 index 0000000..21e39c2 --- /dev/null +++ b/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java @@ -0,0 +1,14 @@ +package server.poptato.user.api.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Builder +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class UserChangeNameRequestDto { + String newName; +} diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 37f71e3..ea87864 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -40,4 +40,13 @@ public Optional findUserByKakaoId(String kakaoId) { entityManager.clear(); // ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์ดˆ๊ธฐํ™” return userRepository.findByKakaoId(kakaoId); } + @Transactional + public void updateUserName(Long userId, String newName) { + // ์‚ฌ์šฉ์ž ์กฐํšŒ + User user = userRepository.findById(userId) + .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + + // name ์—…๋ฐ์ดํŠธ + user.changeName(newName); + } } diff --git a/src/main/java/server/poptato/user/domain/entity/User.java b/src/main/java/server/poptato/user/domain/entity/User.java index 4a4d0b2..1d1eaaf 100644 --- a/src/main/java/server/poptato/user/domain/entity/User.java +++ b/src/main/java/server/poptato/user/domain/entity/User.java @@ -38,4 +38,8 @@ public class User { @LastModifiedDate // ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ ์‹œ๊ฐ„ ์ž๋™ ์ €์žฅ private LocalDateTime modifyDate; + // name ๋ณ€๊ฒฝ ๋ฉ”์„œ๋“œ + public void changeName(String newName) { + this.name = newName; + } } diff --git a/src/test/java/server/poptato/user/application/UserServiceTest.java b/src/test/java/server/poptato/user/application/UserServiceTest.java new file mode 100644 index 0000000..6534b40 --- /dev/null +++ b/src/test/java/server/poptato/user/application/UserServiceTest.java @@ -0,0 +1,58 @@ +package server.poptato.user.application; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.user.application.service.UserService; +import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; +import server.poptato.user.exception.UserException; +import server.poptato.user.exception.errorcode.UserExceptionErrorCode; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + +@SpringBootTest +class UserServiceTest { + + @Autowired + private UserService userService; + + @Autowired + private UserRepository userRepository; + + @Test + @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") + @Transactional + void updateUserName_ShouldChangeUserName() { + // given + Long userId = 1L; + String newName = "New Name"; + + // when + userService.updateUserName(userId, newName); + + // then + User updatedUser = userRepository.findById(userId).orElseThrow(); + assertThat(updatedUser.getName()).isEqualTo(newName); + } + + @Test + @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ ๋ฐœ์ƒ ํ…Œ์ŠคํŠธ") + @Transactional + void updateUserName_ShouldThrowException_WhenUserNotFound() { + // given + Long nonExistentUserId = 999L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ € ID + String newName = "New Name"; + + // when & then + UserException exception = assertThrows(UserException.class, () -> { + userService.updateUserName(nonExistentUserId, newName); + }); + + assertThat(exception.getMessage()).isEqualTo(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); + } +} + From e052d957f2a7565ba6a30a38186f3ff8f3f33077 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 12:49:38 +0900 Subject: [PATCH 119/177] =?UTF-8?q?fix:=20test=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/application/TodoServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 53d73cb..6c9ecd0 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -386,7 +386,7 @@ void getYesterdays_ShouldReturnPagedResult() { void ๋งˆ๊ฐ๊ธฐํ•œ_์ˆ˜์ •_์„ฑ๊ณต(){ //given Long userId = 1L; - Long todoId = 10L; + Long todoId = 11L; LocalDate updateDate = LocalDate.of(2024,12,25); //when From 5a32f478fd5c2e290f83a420634cadd6381e9762 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 13:00:43 +0900 Subject: [PATCH 120/177] =?UTF-8?q?fix:=20test=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/application/TodoServiceTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 6c9ecd0..3283812 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -356,7 +356,6 @@ void getYesterdays_ShouldReturnPagedResult() { int page = 0; int size = 5; // ํ•œ๋ฒˆ์— 5๊ฐœ์˜ todo ๊ฐ€์ ธ์˜ค๊ธฐ - // when PaginatedYesterdayResponseDto result = todoService.getYesterdays(userId, page, size); From 0a816f24d132008899773cabb611b602ff68ccae Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 13:11:17 +0900 Subject: [PATCH 121/177] =?UTF-8?q?fix:=20test=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/application/BacklogCreateTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java index be33de7..9837f3a 100644 --- a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java +++ b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java @@ -38,7 +38,7 @@ public class BacklogCreateTest { assertThat(findTodo.getType()).isEqualTo(Type.BACKLOG); assertThat(findTodo.getUserId()).isEqualTo(userId); assertThat(findTodo.isBookmark()).isEqualTo(false); - assertThat(findTodo.getBacklogOrder()).isEqualTo(11L); + assertThat(findTodo.getBacklogOrder()).isEqualTo(21L); assertThat(findTodo.getCompletedDateTime()).isNull(); } } From 2d19d1195df3c37db3b71ed3a851e845b4f462c5 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 13:27:06 +0900 Subject: [PATCH 122/177] =?UTF-8?q?test:=20test=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 15 +++++++++++++++ .../todo/application/TodoServiceTest.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index c93f838..5e6ea05 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -348,4 +348,19 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andExpect(status().isOk()) .andDo(print()); } + + @DisplayName("ํ•  ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ํ• ์ผ_๋‚ด์šฉ_์ˆ˜์ •_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //given + Long todoId = 1L; + + //when + mockMvc.perform(patch("/todo/{todoId}/content", todoId) + .header("Authorization", "Bearer " + accessToken) + .content("{\"content\": \"๋‚ด์šฉ ์ˆ˜์ •\"}") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 3283812..c2283ee 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -395,4 +395,20 @@ void getYesterdays_ShouldReturnPagedResult() { //then assertThat(findTodo.getDeadline()).isEqualTo(updateDate); } + + @DisplayName("ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ํ• ์ผ_๋‚ด์šฉ_์ˆ˜์ •_์„ฑ๊ณต(){ + //given + Long userId = 1L; + Long todoId = 11L; + String updateContent = "ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ •"; + + //when + todoService.updateContent(userId,todoId,updateContent); + Todo findTodo = todoRepository.findById(todoId).get(); + + //then + assertThat(findTodo.getContent()).isEqualTo(updateContent); + } } \ No newline at end of file From 6572627af76ef94bd433fa37c45ecb85124a9ebd Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 13:27:56 +0900 Subject: [PATCH 123/177] =?UTF-8?q?feat:=20=ED=95=A0=EC=9D=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/todo/api/TodoController.java | 13 +++++++++---- .../todo/api/request/ContentUpdateRequestDto.java | 12 ++++++++++++ .../poptato/todo/application/TodoService.java | 12 ++++++++++++ .../server/poptato/todo/domain/entity/Todo.java | 4 ++++ 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 4e5d419..9c7b6f5 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -4,10 +4,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; -import server.poptato.todo.api.request.BacklogCreateRequestDto; -import server.poptato.todo.api.request.DeadlineUpdateRequestDto; -import server.poptato.todo.api.request.DragAndDropRequestDto; -import server.poptato.todo.api.request.SwipeRequestDto; +import server.poptato.todo.api.request.*; import server.poptato.todo.application.TodoService; import server.poptato.todo.application.response.BacklogListResponseDto; import server.poptato.todo.application.response.PaginatedHistoryResponseDto; @@ -104,4 +101,12 @@ public BaseResponse updateDeadline(@UserId Long userId, todoService.updateDeadline(userId, todoId, requestDto.getDeadline()); return new BaseResponse<>(); } + + @PatchMapping("/todo/{todoId}/content") + public BaseResponse updateContent(@UserId Long userId, + @PathVariable Long todoId, + @Validated @RequestBody ContentUpdateRequestDto requestDto){ + todoService.updateContent(userId, todoId, requestDto.getContent()); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java b/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java new file mode 100644 index 0000000..fb72010 --- /dev/null +++ b/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java @@ -0,0 +1,12 @@ +package server.poptato.todo.api.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class ContentUpdateRequestDto { + @NotBlank(message = "ํ•  ์ผ ์ˆ˜์ • ์‹œ ๋‚ด์šฉ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + String content; +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 5674265..89bcf33 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -249,6 +249,18 @@ public void updateDeadline(Long userId, Long todoId, LocalDate deadline) { if(findTodo.getUserId()!=userId) throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); findTodo.updateDeadline(deadline); + //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด + todoRepository.save(findTodo); + } + + public void updateContent(Long userId, Long todoId, String content) { + checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if(findTodo.getUserId()!=userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + findTodo.updateContent(content); + //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด todoRepository.save(findTodo); } } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index b4b9c8c..ec25425 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -92,4 +92,8 @@ public void setBacklogOrder(int order) { public void updateDeadline(LocalDate deadline) { this.deadline = deadline; } + + public void updateContent(String content) { + this.content = content; + } } From 5601cdd48094adff72b0fd647a69f48fb03e1b49 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 13:37:59 +0900 Subject: [PATCH 124/177] =?UTF-8?q?feat:=20controller=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/user/api/UserController.java | 13 +++- .../api/request/UserChangeNameRequestDto.java | 2 + .../poptato/user/api/UserControllerTest.java | 76 ++++++++++++------- 3 files changed, 60 insertions(+), 31 deletions(-) diff --git a/src/main/java/server/poptato/user/api/UserController.java b/src/main/java/server/poptato/user/api/UserController.java index bbe2bf2..056de09 100644 --- a/src/main/java/server/poptato/user/api/UserController.java +++ b/src/main/java/server/poptato/user/api/UserController.java @@ -1,10 +1,10 @@ package server.poptato.user.api; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; +import server.poptato.user.api.request.UserChangeNameRequestDto; import server.poptato.user.application.service.UserService; import server.poptato.user.resolver.UserId; @@ -20,6 +20,11 @@ public class UserController { @DeleteMapping public BaseResponse deleteUser(@UserId Long userId) { userService.deleteUser(userId); - return new BaseResponse(SUCCESS); + return new BaseResponse(); + } + @PatchMapping("/mypage") + public BaseResponse updateUserName(@UserId Long userId, @Validated @RequestBody UserChangeNameRequestDto request) { + userService.updateUserName(userId, request.getNewName()); + return new BaseResponse(); } } \ No newline at end of file diff --git a/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java b/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java index 21e39c2..442f590 100644 --- a/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java +++ b/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java @@ -1,5 +1,6 @@ package server.poptato.user.api.request; +import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -10,5 +11,6 @@ @AllArgsConstructor @NoArgsConstructor public class UserChangeNameRequestDto { + @NotBlank(message = "์ด๋ฆ„์€ ๋นˆ ๊ฐ’์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.") String newName; } diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 3bcea5e..40d7845 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -1,5 +1,7 @@ package server.poptato.user.api; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.validation.Validator; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -9,16 +11,20 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.application.TodoService; import server.poptato.todo.infra.repository.JpaTodoRepository; +import server.poptato.user.api.request.UserChangeNameRequestDto; import server.poptato.user.application.service.UserService; import server.poptato.user.infra.repository.JpaUserRepository; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; +import static org.mockito.Mockito.times; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -28,44 +34,63 @@ class UserControllerTest { @Autowired private MockMvc mockMvc; - @MockBean - private JwtService jwtService; - + private TodoService todoService; @MockBean private UserService userService; - - @MockBean - private JpaUserRepository userRepository; - - @MockBean - private JpaTodoRepository todoRepository; - + @Autowired + private JwtService jwtService; @MockBean private RedisTemplate redisTemplate; - + private Validator validator; private String accessToken; - private final Long userId = 1L; + private final String userId = "1"; + private ObjectMapper objectMapper; @BeforeEach - void createAccessToken() { - accessToken = jwtService.createAccessToken(userId.toString()); + void userId๊ฐ€_1์ธ_์•ก์„ธ์Šคํ† ํฐ_์ƒ์„ฑ() { + accessToken = jwtService.createAccessToken(userId); } @AfterEach - void deleteRefreshToken() { - jwtService.deleteRefreshToken(userId.toString()); + void ์•ก์„ธ์Šคํ† ํฐ_๋น„ํ™œ์„ฑํ™”() { + jwtService.deleteRefreshToken(userId); + } + @Test + @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") + void updateUserName_ShouldReturnSuccess() throws Exception { + + // when & then + mockMvc.perform(patch("/user/mypage") + .header("Authorization", "Bearer " + accessToken) // JWT ํ† ํฐ์„ ์ „๋‹ฌํ•˜๋Š” ๋ถ€๋ถ„ + .contentType(MediaType.APPLICATION_JSON) + .content("{\"newName\": \"NewName\"}")) // content๋ฅผ "NewName"์œผ๋กœ ์ˆ˜์ • + .andExpect(status().isOk()); + + // userService์˜ updateUserName์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธ + verify(userService, times(1)).updateUserName(anyLong(), eq("NewName")); // "NewName"๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ˆ˜์ • } + @Test + @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์‹คํŒจ - ์ด๋ฆ„์ด ๋นˆ ๊ฐ’์ผ ๋•Œ") + void updateUserName_ShouldReturnBadRequest_WhenNameIsEmpty() throws Exception { + // given + Long userId = 1L; + UserChangeNameRequestDto requestDto = new UserChangeNameRequestDto(""); // ๋นˆ ์ด๋ฆ„ + + // when & then + mockMvc.perform(patch("/user/mypage") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content("{\"newName\": \"\"}")) + .andExpect(status().isBadRequest()); + + // userService๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ + verify(userService, times(0)).updateUserName(anyLong(), anyString()); + } @Test @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต - ํ† ํฐ ๊ฒ€์ฆ ํ›„ ์‘๋‹ต ํ™•์ธ") void deleteUserSuccess() throws Exception { - // ํ† ํฐ ๊ฒ€์ฆ ์„ฑ๊ณต - when(jwtService.verifyToken(anyString())).thenReturn(true); - when(jwtService.getUserIdInToken(anyString())).thenReturn(userId.toString()); - - // UserService์˜ deleteUser()๊ฐ€ ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธ - doNothing().when(userService).deleteUser(userId); mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + accessToken)) @@ -86,9 +111,6 @@ void deleteUserFailureNoToken() throws Exception { void deleteUserFailureInvalidToken() throws Exception { String invalidToken = "invalidToken"; - // ํ† ํฐ ๊ฒ€์ฆ ์‹คํŒจ - when(jwtService.verifyToken(anyString())).thenReturn(false); - mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + invalidToken)) .andExpect(status().isBadRequest()) From 06f26f878e04666e17eaf9a11a28364a646e0e13 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 15:51:36 +0900 Subject: [PATCH 125/177] =?UTF-8?q?refactor:=20test=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/user/application/service/UserService.java | 2 ++ src/test/java/server/poptato/user/api/UserControllerTest.java | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index ea87864..451d612 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -48,5 +48,7 @@ public void updateUserName(Long userId, String newName) { // name ์—…๋ฐ์ดํŠธ user.changeName(newName); + + userRepository.save(user); } } diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 40d7845..357cddb 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -16,14 +16,11 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; import server.poptato.todo.application.TodoService; -import server.poptato.todo.infra.repository.JpaTodoRepository; import server.poptato.user.api.request.UserChangeNameRequestDto; import server.poptato.user.application.service.UserService; -import server.poptato.user.infra.repository.JpaUserRepository; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; -import static org.mockito.Mockito.times; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; From 1b08d16eeef03c437cfe128122371117da79bc8b Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 16:00:10 +0900 Subject: [PATCH 126/177] =?UTF-8?q?test:=20=EB=8B=AC=EC=84=B1=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=EC=88=98=EC=A0=95=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoControllerTest.java | 14 ++++++ .../todo/application/TodoServiceTest.java | 46 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 5e6ea05..149b026 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -363,4 +363,18 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andExpect(status().isOk()) .andDo(print()); } + + @DisplayName("ํˆฌ๋ฐ์ด ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + //given + Long todoId = 1L; + + //when + mockMvc.perform(patch("/todo/{todoId}/achieve", todoId) + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } } diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index c2283ee..480b4dc 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -18,6 +18,7 @@ import java.time.LocalDate; import java.util.List; import java.util.Optional; +import java.util.Stack; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -411,4 +412,49 @@ void getYesterdays_ShouldReturnPagedResult() { //then assertThat(findTodo.getContent()).isEqualTo(updateContent); } + + @DisplayName("ํˆฌ๋ฐ์ด ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์„ฑ๊ณต(){ + //given + Long userId = 1L; + Long todoId = 1L; + + //when + todoService.updateIsCompleted(userId,todoId); + Todo findTodo = todoRepository.findById(todoId).get(); + + //then + assertThat(findTodo.getTodayStatus()).isEqualTo(TodayStatus.COMPLETED); + assertThat(findTodo.getCompletedDateTime()).isNotNull(); + } + + @DisplayName("์–ด์ œํ•œ์ผ ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void ์–ด์ œํ•œ์ผ_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์„ฑ๊ณต(){ + //given + Long userId = 1L; + Long todoId = 35L; + + //when + todoService.updateIsCompleted(userId,todoId); + Todo findTodo = todoRepository.findById(todoId).get(); + + //then + assertThat(findTodo.getTodayStatus()).isEqualTo(TodayStatus.COMPLETED); + assertThat(findTodo.getCompletedDateTime()).isNotNull(); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์˜ˆ์™ธ(){ + //given + Long userId = 1L; + Long todoId = 20L; + + //when & then + assertThatThrownBy(()-> todoService.updateIsCompleted(userId,todoId)) + .isInstanceOf(TodoException.class) + .hasMessage(TodoExceptionErrorCode.BACKLOG_CANT_COMPLETE.getMessage()); + } } \ No newline at end of file From 68ffaf75c78c282bbe721538eb96945080262b91 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 16:00:27 +0900 Subject: [PATCH 127/177] =?UTF-8?q?feat:=20=EB=8B=AC=EC=84=B1=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/api/TodoController.java | 7 +++++ .../poptato/todo/application/TodoService.java | 28 +++++++++++++++++-- .../poptato/todo/domain/entity/Todo.java | 11 ++++++++ .../errorcode/TodoExceptionErrorCode.java | 4 ++- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 9c7b6f5..7fa02a2 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -109,4 +109,11 @@ public BaseResponse updateContent(@UserId Long userId, todoService.updateContent(userId, todoId, requestDto.getContent()); return new BaseResponse<>(); } + + @PatchMapping("/todo/{todoId}/achieve") + public BaseResponse updateIsCompleted(@UserId Long userId, + @PathVariable Long todoId){ + todoService.updateIsCompleted(userId, todoId); + return new BaseResponse<>(); + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 89bcf33..97df337 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -31,6 +31,7 @@ import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; +@Transactional @RequiredArgsConstructor @Service public class TodoService { @@ -81,13 +82,12 @@ public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { .build(); } - @Transactional public void deleteTodoById(Long todoId) { Todo todo = todoRepository.findById(todoId) .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); todoRepository.delete(todo); } - @Transactional + public void toggleIsBookmark(Long todoId) { // ํ•ด๋‹น Todo๋ฅผ ์กฐํšŒ Todo todo = todoRepository.findById(todoId) @@ -115,7 +115,6 @@ public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) return new PaginatedHistoryResponseDto(histories, todosPage.getTotalPages()); } - @Transactional public void swipe(Long userId, Long todoId) { checkIsExistUser(userId); Todo todo = todoRepository.findById(todoId) @@ -220,6 +219,7 @@ private void checkIsExistUser(Long userId) { -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); } + public Long generateBacklog(Long userId, String content) { checkIsExistUser(userId); Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); @@ -263,4 +263,26 @@ public void updateContent(Long userId, Long todoId, String content) { //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด todoRepository.save(findTodo); } + + public void updateIsCompleted(Long userId, Long todoId) { + checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + checkIsValidToUpdateIsCompleted(userId,findTodo); + + if(findTodo.getTodayStatus().equals(TodayStatus.COMPLETED)){ + findTodo.updateTodayStatusToInComplete(); + }else { + findTodo.updateTodayStatusToCompleted(); + } + } + + private void checkIsValidToUpdateIsCompleted(Long userId, Todo todo) { + if(todo.getUserId()!=userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + if(todo.getType().equals(Type.BACKLOG)) + throw new TodoException(TodoExceptionErrorCode.BACKLOG_CANT_COMPLETE); + if(todo.getType().equals(Type.YESTERDAY) && todo.getTodayStatus().equals(TodayStatus.COMPLETED)) + throw new TodoException(TodoExceptionErrorCode.YESTERDAY_CANT_COMPLETE); + } } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index ec25425..3c5b85c 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -96,4 +96,15 @@ public void updateDeadline(LocalDate deadline) { public void updateContent(String content) { this.content = content; } + + public void updateTodayStatusToInComplete() { + this.todayStatus = TodayStatus.INCOMPLETE; + this.completedDateTime = null; + } + + public void updateTodayStatusToCompleted() { + this.todayStatus = TodayStatus.COMPLETED; + this.completedDateTime = LocalDateTime.now(); + this.todayOrder = null; + } } diff --git a/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java b/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java index f2a9350..7915b26 100644 --- a/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java +++ b/src/main/java/server/poptato/todo/exception/errorcode/TodoExceptionErrorCode.java @@ -15,7 +15,9 @@ public enum TodoExceptionErrorCode implements ResponseStatus { TODO_NOT_EXIST(5001, HttpStatus.BAD_REQUEST.value(), "ํˆฌ๋‘๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), TODO_USER_NOT_MATCH(5002, HttpStatus.BAD_REQUEST.value(), "์‚ฌ์šฉ์ž์˜ ํ•  ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค."), ALREADY_COMPLETED_TODO(5003, HttpStatus.BAD_REQUEST.value(), "๋‹ฌ์„ฑ๋œ ํ•  ์ผ์€ ์Šค์™€์ดํ”„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."), - TODO_TYPE_NOT_MATCH(5004, HttpStatus.BAD_REQUEST.value(), "๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ ๋ฆฌ์ŠคํŠธ์™€ ํ•  ์ผ ํƒ€์ž…์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค." ); + TODO_TYPE_NOT_MATCH(5004, HttpStatus.BAD_REQUEST.value(), "๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ ๋ฆฌ์ŠคํŠธ์™€ ํ•  ์ผ ํƒ€์ž…์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค." ), + BACKLOG_CANT_COMPLETE(5005,HttpStatus.BAD_REQUEST.value(), "๋ฐฑ๋กœ๊ทธ ํ•  ์ผ์€ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."), + YESTERDAY_CANT_COMPLETE(5006, HttpStatus.BAD_REQUEST.value(), "์ด๋ฏธ ๋‹ฌ์„ฑํ•œ ์–ด์ œ ํ•œ ์ผ์€ ์ทจ์†Œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."); private final int code; From 636ba19d985b2a93c9a99868463909a692999c43 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 16:04:19 +0900 Subject: [PATCH 128/177] =?UTF-8?q?fix:=20=ED=95=A0=20=EC=9D=BC=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=A1=B0=ED=9A=8C=EC=97=90=20?= =?UTF-8?q?=EB=A7=88=EA=B0=90=EA=B8=B0=ED=95=9C=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=9D=91=EB=8B=B5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/response/BacklogResponseDto.java | 7 +++++-- .../todo/application/response/TodayResponseDto.java | 9 ++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java b/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java index 2bcbda2..13a4847 100644 --- a/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java @@ -3,6 +3,7 @@ import lombok.Getter; import server.poptato.todo.domain.entity.Todo; +import java.time.LocalDate; import java.time.temporal.ChronoUnit; @Getter @@ -10,15 +11,17 @@ public class BacklogResponseDto { Long todoId; String content; boolean isBookmark; - Integer deadline; + Integer dDay; + LocalDate deadline; public BacklogResponseDto(Todo todo) { this.todoId = todo.getId(); this.content = todo.getContent(); this.isBookmark = todo.isBookmark(); + this.deadline = todo.getDeadline(); if (todo.getDeadline() != null && todo.getTodayDate() != null) { - this.deadline = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); + this.dDay = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); } else { // ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NULL this.deadline = null; diff --git a/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java index f34c8f0..9d6ca4a 100644 --- a/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java @@ -4,6 +4,7 @@ import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.value.TodayStatus; +import java.time.LocalDate; import java.time.temporal.ChronoUnit; @Getter @@ -12,19 +13,21 @@ public class TodayResponseDto { String content; TodayStatus todayStatus; boolean isBookmark; - Integer deadline; + Integer dDay; + LocalDate deadline; public TodayResponseDto(Todo todo) { this.todoId = todo.getId(); this.content = todo.getContent(); this.todayStatus = todo.getTodayStatus(); this.isBookmark = todo.isBookmark(); + this.deadline = todo.getDeadline(); if (todo.getDeadline() != null && todo.getTodayDate() != null) { - this.deadline = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); + this.dDay = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); } else { // ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NULL - this.deadline = null; + this.dDay = null; } } } From 1636f3d6decc6c4fba913258c2eb9bfc3fa9b90d Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 16:05:20 +0900 Subject: [PATCH 129/177] =?UTF-8?q?chore:=20auth=20exception=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/exception/AuthException.java | 14 +++++++ .../errorcode/AuthExceptionErrorCode.java | 37 +++++++++++++++++++ .../handler/AuthExceptionHandler.java | 23 ++++++++++++ .../poptato/user/resolver/UserResolver.java | 8 ++-- 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/main/java/server/poptato/auth/exception/AuthException.java create mode 100644 src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java create mode 100644 src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java diff --git a/src/main/java/server/poptato/auth/exception/AuthException.java b/src/main/java/server/poptato/auth/exception/AuthException.java new file mode 100644 index 0000000..920e6dc --- /dev/null +++ b/src/main/java/server/poptato/auth/exception/AuthException.java @@ -0,0 +1,14 @@ +package server.poptato.auth.exception; + +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +@Getter +public class AuthException extends RuntimeException{ + private final ResponseStatus exceptionStatus; + + public AuthException(ResponseStatus exceptionStatus) { + super(exceptionStatus.getMessage()); + this.exceptionStatus = exceptionStatus; + } +} diff --git a/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java b/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java new file mode 100644 index 0000000..9f25121 --- /dev/null +++ b/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java @@ -0,0 +1,37 @@ +package server.poptato.auth.exception.errorcode; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import server.poptato.global.response.status.ResponseStatus; + +@RequiredArgsConstructor +public enum AuthExceptionErrorCode implements ResponseStatus { + + /** + * 6000: Auth ๋„๋ฉ”์ธ ์˜ค๋ฅ˜ + */ + + TOKEN_NOT_EXIST(6000, HttpStatus.BAD_REQUEST.value(), "ํ† ํฐ ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."), + TOKEN_TIME_EXPIRED(6001, HttpStatus.BAD_REQUEST.value(), "ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"), + INVALID_TOKEN(6002, HttpStatus.BAD_REQUEST.value(), "ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"); + + private final int code; + private final int status; + private final String message; + + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } +} diff --git a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java new file mode 100644 index 0000000..5bb1d72 --- /dev/null +++ b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java @@ -0,0 +1,23 @@ +package server.poptato.auth.exception.handler; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import server.poptato.auth.exception.AuthException; +import server.poptato.global.response.BaseErrorResponse; +import server.poptato.user.exception.UserException; + +@Slf4j +@Order(0) +@RestControllerAdvice +public class AuthExceptionHandler { + @ResponseStatus(HttpStatus.BAD_REQUEST) + @ExceptionHandler(AuthException.class) + public BaseErrorResponse handleUserException(AuthException e) { + log.error("[UserException: handle_UserException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); + } +} diff --git a/src/main/java/server/poptato/user/resolver/UserResolver.java b/src/main/java/server/poptato/user/resolver/UserResolver.java index f4907be..5ac874f 100644 --- a/src/main/java/server/poptato/user/resolver/UserResolver.java +++ b/src/main/java/server/poptato/user/resolver/UserResolver.java @@ -10,10 +10,12 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; import server.poptato.auth.application.service.JwtService; +import server.poptato.auth.exception.AuthException; import server.poptato.global.exception.BaseException; import server.poptato.global.response.BaseErrorResponse; import server.poptato.user.resolver.UserId; +import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.*; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; @@ -32,17 +34,17 @@ public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer m final HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest(); final String token = request.getHeader("Authorization"); if (token == null || token.isBlank() || !token.startsWith("Bearer ")) { - throw new BaseException(TOKEN_NOT_CONTAINED_EXCEPTION); + throw new AuthException(TOKEN_NOT_EXIST); } final String encodedUserId = token.substring("Bearer ".length()); if (!jwtService.verifyToken(encodedUserId)) { - throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); + throw new AuthException(TOKEN_TIME_EXPIRED); } final String decodedUserId = jwtService.getUserIdInToken(encodedUserId); try { return Long.parseLong(decodedUserId); } catch (NumberFormatException e) { - return new BaseErrorResponse(INVALID_TOKEN_EXCEPTION); + return new AuthException(INVALID_TOKEN); } } } From 1601266693adafdcacdf818996554d7f9908e1ad Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 16:09:16 +0900 Subject: [PATCH 130/177] =?UTF-8?q?fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/response/TodayResponseDtoTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java b/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java index 7e3177a..6480505 100644 --- a/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java +++ b/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java @@ -15,7 +15,7 @@ class TodayResponseDtoTest { void ๋งˆ๊ฐ๊ธฐํ•œ์ด_์ •์ƒ์ ์œผ๋กœ_๊ณ„์‚ฐ๋œ๋‹ค() { //given Todo todo = Todo.builder() - .id(1L) + .id(1000L) .content("Test Todo") .todayStatus(TodayStatus.COMPLETED) .isBookmark(false) @@ -27,7 +27,7 @@ class TodayResponseDtoTest { TodayResponseDto responseDto = new TodayResponseDto(todo); //then - assertThat(responseDto.getDeadline()).isEqualTo(4); + assertThat(responseDto.getDDay()).isEqualTo(4); } @DisplayName("๋งˆ๊ฐ์ด ์„ค์ •์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ NULL๋กœ ์ •์ƒ ์‘๋‹ต๋œ๋‹ค.") From 09316e9acb840c0618cfe392996a56b596f208e3 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 16:23:57 +0900 Subject: [PATCH 131/177] =?UTF-8?q?refactor:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/exception/handler/AuthExceptionHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java index 5bb1d72..9b928a1 100644 --- a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java +++ b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java @@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import server.poptato.auth.exception.AuthException; import server.poptato.global.response.BaseErrorResponse; -import server.poptato.user.exception.UserException; @Slf4j @Order(0) @@ -16,7 +15,7 @@ public class AuthExceptionHandler { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(AuthException.class) - public BaseErrorResponse handleUserException(AuthException e) { + public BaseErrorResponse handleAuthException(AuthException e) { log.error("[UserException: handle_UserException ํ˜ธ์ถœ]", e); return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); } From 49575eef18beb59d26e4325c4f8a28a9718d4ead Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Thu, 17 Oct 2024 16:30:08 +0900 Subject: [PATCH 132/177] =?UTF-8?q?refactor:=20save=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/user/application/service/UserService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 451d612..ea87864 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -48,7 +48,5 @@ public void updateUserName(Long userId, String newName) { // name ์—…๋ฐ์ดํŠธ user.changeName(newName); - - userRepository.save(user); } } From 46a3862cfb223bbe8ed9da7b04848d8005366ea9 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Thu, 17 Oct 2024 18:16:00 +0900 Subject: [PATCH 133/177] =?UTF-8?q?feat:=20=EC=8A=A4=EC=BC=80=EC=A4=84?= =?UTF-8?q?=EB=9F=AC=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/PoptatoApplication.java | 2 + .../todo/application/TodoScheduler.java | 54 +++++++++++++++++++ .../poptato/todo/domain/entity/Todo.java | 8 +++ .../domain/repository/TodoRepository.java | 5 +- .../infra/repository/JpaTodoRepository.java | 3 +- .../todo/application/TodoSchedulerTest.java | 40 ++++++++++++++ .../todo/application/TodoServiceTest.java | 1 - 7 files changed, 108 insertions(+), 5 deletions(-) create mode 100644 src/main/java/server/poptato/todo/application/TodoScheduler.java create mode 100644 src/test/java/server/poptato/todo/application/TodoSchedulerTest.java diff --git a/src/main/java/server/poptato/PoptatoApplication.java b/src/main/java/server/poptato/PoptatoApplication.java index 5b69848..9222868 100644 --- a/src/main/java/server/poptato/PoptatoApplication.java +++ b/src/main/java/server/poptato/PoptatoApplication.java @@ -4,10 +4,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableFeignClients @EnableJpaAuditing +@EnableScheduling public class PoptatoApplication { public static void main(String[] args) { diff --git a/src/main/java/server/poptato/todo/application/TodoScheduler.java b/src/main/java/server/poptato/todo/application/TodoScheduler.java new file mode 100644 index 0000000..38e11e7 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/TodoScheduler.java @@ -0,0 +1,54 @@ +package server.poptato.todo.application; + +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class TodoScheduler { + private final TodoRepository todoRepository; + @Scheduled(cron = "0 0 0 * * *") // ๋งค์ผ ์ž์ •์— ์‹คํ–‰ + @Transactional + public void updateTodoType() { + // 1. TODAY ์ƒํƒœ์—์„œ INCOMPLETE์ธ ํ•  ์ผ๋“ค์„ YESTERDAY๋กœ ์ „ํ™˜ (์‚ฌ์šฉ์ž๋ณ„๋กœ ์ฒ˜๋ฆฌ) + Map> todayIncompleteTodosByUser = todoRepository.findByTypeAndTodayStatus(Type.TODAY, TodayStatus.INCOMPLETE) + .stream() + .collect(Collectors.groupingBy(Todo::getUserId)); // ์‚ฌ์šฉ์ž๋ณ„๋กœ ๊ทธ๋ฃนํ™” + + todayIncompleteTodosByUser.forEach((userId, todos) -> { + Integer minBacklogOrder = todoRepository.findMinBacklogOrderByUserIdOrZero(userId); + int startingOrder = minBacklogOrder - 1; + + for (Todo todo : todos) { + todo.setType(Type.YESTERDAY); + todo.setBacklogOrder(startingOrder--); + } + }); + + // 2. YESTERDAY ์ƒํƒœ์—์„œ INCOMPLETE์ธ ํ•  ์ผ๋“ค์„ BACKLOG๋กœ ์ „ํ™˜ (BacklogOrder ์œ ์ง€) + List yesterdayIncompleteTodos = todoRepository.findByTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE); + yesterdayIncompleteTodos.forEach(todo -> { + todo.setType(Type.BACKLOG); + todo.setTodayStatus(null); + }); + + // 3. ์ €์žฅ + for(Todo todo : todayIncompleteTodosByUser.values().stream().flatMap(List::stream).collect(Collectors.toList())){ + todoRepository.save(todo); + } + for(Todo todo : yesterdayIncompleteTodos){ + todoRepository.save(todo); + } + } +} + diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index 3c5b85c..74714d8 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -107,4 +107,12 @@ public void updateTodayStatusToCompleted() { this.completedDateTime = LocalDateTime.now(); this.todayOrder = null; } + + public void setType(Type type) { + this.type = type; + } + + public void setTodayStatus(TodayStatus todayStatus) { + this.todayStatus = todayStatus; + } } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index fe47e79..d50fa4b 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -18,15 +18,14 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); Optional findById(Long todoId); void delete(Todo todo); - // ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ - Page findByUserIdAndTypeInOrderByBacklogOrderAsc(Long userId, List types, Pageable pageable); Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); Todo save(Todo todo); Page findByUserIdAndTypeInOrderByBacklogOrderDesc(Long userId, List types, Pageable pageable); Integer findMaxBacklogOrderByUserIdOrZero(Long userId); Integer findMaxTodayOrderByUserIdOrZero(Long userId); - List findByIdIn(List ids); int findMaxBacklogOrderByIdIn(List ids); int findMaxTodayOrderByIdIn(List ids); Page findByUserIdAndTypeAndTodayStatus(Long userId, Type type, TodayStatus todayStatus, Pageable pageable); + List findByTypeAndTodayStatus(Type today, TodayStatus incomplete); + Integer findMinBacklogOrderByUserIdOrZero(Long userId); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 707c128..b1816b5 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -13,7 +13,6 @@ public interface JpaTodoRepository extends TodoRepository, JpaRepository { @Query("SELECT t FROM Todo t WHERE t.userId = :userId AND t.completedDateTime IS NOT NULL") Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); - @Query("SELECT COALESCE(MAX(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.backlogOrder IS NOT NULL") Integer findMaxBacklogOrderByUserIdOrZero(Long userId); @Query("SELECT COALESCE(MAX(t.todayOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.todayOrder IS NOT NULL") @@ -22,4 +21,6 @@ public interface JpaTodoRepository extends TodoRepository, JpaRepository ids); @Query("SELECT MAX(t.backlogOrder) FROM Todo t WHERE t.id IN :ids") int findMaxBacklogOrderByIdIn(@Param("ids") List ids); + @Query("SELECT COALESCE(MIN(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId") + Integer findMinBacklogOrderByUserIdOrZero(@Param("userId") Long userId); } diff --git a/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java b/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java new file mode 100644 index 0000000..c2c4257 --- /dev/null +++ b/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java @@ -0,0 +1,40 @@ +package server.poptato.todo.application; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.scheduling.support.CronTrigger; +import org.springframework.scheduling.support.SimpleTriggerContext; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +@SpringBootTest +class TodoSchedulerTest { + @Autowired + TodoScheduler todoScheduler; + @Test + @DisplayName("updateType ๋ฉ”์„œ๋“œ๊ฐ€ ๋งค์ผ ์ž์ •์— ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค") + public void shouldTrigger_updateType_atEveryMidNight() throws ParseException { + // Given - ์ƒํ™ฉ ์„ค์ • + String cronExpression = "0 0 0 * * *"; // ์ž์ •์— ์‹คํ–‰๋˜๋Š” cron ํ‘œํ˜„์‹ + CronTrigger trigger = new CronTrigger(cronExpression); + Date startTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2023/12/19 23:59:50"); + SimpleTriggerContext context = new SimpleTriggerContext(); + context.update(startTime, startTime, startTime); + + // ์˜ˆ์ƒ๋˜๋Š” ์‹คํ–‰ ์‹œ๊ฐ„ ๋ชฉ๋ก + String expectedTime = "2023/12/20 00:00:00"; + + Date nextExecutionTime = trigger.nextExecutionTime(context); + + // Then - ๊ฒฐ๊ณผ ๊ฒ€์ฆ + String actualTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(nextExecutionTime); + + // ํƒ€์ž… ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ์œ„ํ•œ Matcher ์‚ฌ์šฉ + Assertions.assertThat(actualTime).isEqualTo(expectedTime); // ์—ฌ๊ธฐ์„œ `is`๋Š” ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉ + context.update(nextExecutionTime, nextExecutionTime, nextExecutionTime); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 480b4dc..bf37f27 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -18,7 +18,6 @@ import java.time.LocalDate; import java.util.List; import java.util.Optional; -import java.util.Stack; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; From 7067d42a590318f77bd1aa1b2714caf0b4a91fa9 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Fri, 18 Oct 2024 12:06:58 +0900 Subject: [PATCH 134/177] =?UTF-8?q?feat:=20user=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A1=B0=ED=9A=8C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/user/api/UserController.java | 6 +++++ .../application/response/UserResponseDto.java | 13 ++++++++++ .../user/application/service/UserService.java | 15 +++++------ .../poptato/user/api/UserControllerTest.java | 21 ++++++++++++++++ .../user/application/UserServiceTest.java | 25 +++++++++++++++++++ 5 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 src/main/java/server/poptato/user/application/response/UserResponseDto.java diff --git a/src/main/java/server/poptato/user/api/UserController.java b/src/main/java/server/poptato/user/api/UserController.java index 056de09..59f643f 100644 --- a/src/main/java/server/poptato/user/api/UserController.java +++ b/src/main/java/server/poptato/user/api/UserController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; import server.poptato.user.api.request.UserChangeNameRequestDto; +import server.poptato.user.application.response.UserResponseDto; import server.poptato.user.application.service.UserService; import server.poptato.user.resolver.UserId; @@ -27,4 +28,9 @@ public BaseResponse updateUserName(@UserId Long userId, @Validated @RequestBody userService.updateUserName(userId, request.getNewName()); return new BaseResponse(); } + @GetMapping("/mypage") + public BaseResponse getUserNameAndEmail(@UserId Long userId) { + UserResponseDto response = userService.getUserNameAndEmailById(userId); + return new BaseResponse(response); + } } \ No newline at end of file diff --git a/src/main/java/server/poptato/user/application/response/UserResponseDto.java b/src/main/java/server/poptato/user/application/response/UserResponseDto.java new file mode 100644 index 0000000..ba2ee76 --- /dev/null +++ b/src/main/java/server/poptato/user/application/response/UserResponseDto.java @@ -0,0 +1,13 @@ +package server.poptato.user.application.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +@AllArgsConstructor +public class UserResponseDto { + private String name; + private String email; +} diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index ea87864..763d86c 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional; import server.poptato.auth.application.service.JwtService; import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.user.application.response.UserResponseDto; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; @@ -35,18 +36,18 @@ public void deleteUser(Long userId) { entityManager.flush(); } @Transactional - @CacheEvict(value = "users", key = "#kakaoId") - public Optional findUserByKakaoId(String kakaoId) { - entityManager.clear(); // ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์ดˆ๊ธฐํ™” - return userRepository.findByKakaoId(kakaoId); - } - @Transactional public void updateUserName(Long userId, String newName) { - // ์‚ฌ์šฉ์ž ์กฐํšŒ User user = userRepository.findById(userId) .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); // name ์—…๋ฐ์ดํŠธ user.changeName(newName); } + @Transactional(readOnly = true) + public UserResponseDto getUserNameAndEmailById(Long userId) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + + return new UserResponseDto(user.getName(), user.getEmail()); + } } diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 357cddb..4a23cc2 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -21,6 +21,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -53,6 +54,26 @@ class UserControllerTest { void ์•ก์„ธ์Šคํ† ํฐ_๋น„ํ™œ์„ฑํ™”() { jwtService.deleteRefreshToken(userId); } + + @Test + @DisplayName("ํ”„๋กœํ•„ ์กฐํšŒ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") + void getUserNameAndEmail() throws Exception { + mockMvc.perform(get("/user/mypage") + .header("Authorization", "Bearer "+accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + @Test + @DisplayName("ํ”„๋กœํ•„ ์กฐํšŒ ์‹คํŒจ ํ…Œ์ŠคํŠธ - invalid token") + void getUserNameAndEmailFailedInvalidToken() throws Exception { + String invalidToken = "invalidToken"; + mockMvc.perform(get("/user/mypage") + .header("Authorization", "Bearer "+invalidToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andDo(print()); + } @Test @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") void updateUserName_ShouldReturnSuccess() throws Exception { diff --git a/src/test/java/server/poptato/user/application/UserServiceTest.java b/src/test/java/server/poptato/user/application/UserServiceTest.java index 6534b40..34e82b3 100644 --- a/src/test/java/server/poptato/user/application/UserServiceTest.java +++ b/src/test/java/server/poptato/user/application/UserServiceTest.java @@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; +import server.poptato.user.application.response.UserResponseDto; import server.poptato.user.application.service.UserService; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; @@ -54,5 +55,29 @@ void updateUserName_ShouldThrowException_WhenUserNotFound() { assertThat(exception.getMessage()).isEqualTo(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); } + @Test + @DisplayName("getUserNameAndEmailById ๋ฉ”์„œ๋“œ๋Š” ์œ ํšจํ•œ userId๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค") + public void shouldReturnUserNameAndEmail_WhenUserIdIsValid() { + // Given + Long userId = 1L; + + // When + UserResponseDto responseDto = userService.getUserNameAndEmailById(userId); + + // Then + assertThat(responseDto.getName()).isEqualTo("Poptato"); + assertThat(responseDto.getEmail()).isEqualTo("poptato@naver.com"); + } + + @Test + @DisplayName("getUserNameAndEmailById ๋ฉ”์„œ๋“œ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ userId๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ UserException์„ ๋˜์ง„๋‹ค") + public void shouldThrowUserException_WhenUserIdIsInvalid() { + // Given + Long invalidUserId = 2L; + + // When & Then + org.junit.jupiter.api.Assertions.assertThrows(UserException.class, + () -> userService.getUserNameAndEmailById(invalidUserId)); + } } From 9ee6d63cfaea7d56b201863149c8ca898bd9cc2e Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Fri, 18 Oct 2024 12:41:27 +0900 Subject: [PATCH 135/177] =?UTF-8?q?refactor:=20service=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/response/UserResponseDto.java | 1 - .../user/application/service/UserService.java | 18 +++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/server/poptato/user/application/response/UserResponseDto.java b/src/main/java/server/poptato/user/application/response/UserResponseDto.java index ba2ee76..64fd995 100644 --- a/src/main/java/server/poptato/user/application/response/UserResponseDto.java +++ b/src/main/java/server/poptato/user/application/response/UserResponseDto.java @@ -5,7 +5,6 @@ import lombok.Getter; @Getter -@Builder @AllArgsConstructor public class UserResponseDto { private String name; diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 763d86c..c7fffe8 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -3,7 +3,6 @@ import jakarta.persistence.EntityManager; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import server.poptato.auth.application.service.JwtService; @@ -14,8 +13,6 @@ import server.poptato.user.exception.UserException; import server.poptato.user.exception.errorcode.UserExceptionErrorCode; -import java.util.Optional; - @Service @RequiredArgsConstructor public class UserService { @@ -28,8 +25,7 @@ public class UserService { @Transactional public void deleteUser(Long userId) { - User user = userRepository.findById(userId).orElseThrow(() - -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + User user = checkIsExistUser(userId); todoRepository.deleteAllByUserId(userId); jwtService.deleteRefreshToken(String.valueOf(userId)); userRepository.delete(user); @@ -37,17 +33,17 @@ public void deleteUser(Long userId) { } @Transactional public void updateUserName(Long userId, String newName) { - User user = userRepository.findById(userId) - .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); - + User user = checkIsExistUser(userId); // name ์—…๋ฐ์ดํŠธ user.changeName(newName); } @Transactional(readOnly = true) public UserResponseDto getUserNameAndEmailById(Long userId) { - User user = userRepository.findById(userId) - .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); - + User user = checkIsExistUser(userId); return new UserResponseDto(user.getName(), user.getEmail()); } + private User checkIsExistUser(Long userId) { + return userRepository.findById(userId) + .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + } } From 0c446e1c0379eb42a731fd11c61d14c3fde66d72 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Fri, 18 Oct 2024 17:01:06 +0900 Subject: [PATCH 136/177] =?UTF-8?q?refactor:=20=EB=82=A0=EC=A7=9C=20?= =?UTF-8?q?=EB=82=B4=EB=A6=BC=EC=B0=A8=EC=88=9C=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 7 ++++--- .../poptato/todo/application/TodoServiceTest.java | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 97df337..8f4def3 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -100,15 +100,16 @@ public void toggleIsBookmark(Long todoId) { public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { checkIsExistUser(userId); Pageable pageable = PageRequest.of(page, size); - //์œ ์ € ์•„์ด๋””์™€ completedDate๊ฐ€ null ์ด ์•„๋‹Œ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด + + // ์œ ์ € ์•„์ด๋””์™€ completedDate๊ฐ€ null์ด ์•„๋‹Œ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); List histories = todosPage.getContent().stream() - .sorted(Comparator.comparing(todo -> todo.getCompletedDateTime().toLocalDate())) // ๋‚ ์งœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ + .sorted(Comparator.comparing((Todo todo) -> todo.getCompletedDateTime().toLocalDate()).reversed()) // ๋‚ ์งœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ .map(todo -> new HistoryResponseDto( todo.getId(), todo.getContent(), - todo.getCompletedDateTime().toLocalDate() // ๋‚ ์งœ๋ฅผ localdate๋กœ ๋ณ€ํ™˜ + todo.getCompletedDateTime().toLocalDate() // ๋‚ ์งœ๋ฅผ LocalDate๋กœ ๋ณ€ํ™˜ )) .collect(Collectors.toList()); diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index bf37f27..c68b745 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -327,8 +327,8 @@ void toggleIsBookmark_TodoNotFound() { assertThat(TodoId4.getTodayOrder()).isEqualTo(2L); } @Test - @DisplayName("Histories ํŽ˜์ด์ง• ํ…Œ์ŠคํŠธ") - void getHistories_ShouldReturnPagedResult() { + @DisplayName("Histories ํŽ˜์ด์ง• ๋ฐ ์ •๋ ฌ ํ…Œ์ŠคํŠธ") + void getHistories_ShouldReturnPagedAndSortedResult() { // given Long userId = 1L; int page = 0; @@ -346,8 +346,19 @@ void getHistories_ShouldReturnPagedResult() { // ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๊ณ„์‚ฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ assertThat(result.getTotalPageCount()).isGreaterThan(0); + + // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + List histories = result.getHistories(); + for (int i = 0; i < histories.size() - 1; i++) { + LocalDate current = histories.get(i).getDate(); + LocalDate next = histories.get(i + 1).getDate(); + + // ํ˜„์žฌ ํ•ญ๋ชฉ์˜ ๋‚ ์งœ๊ฐ€ ๋‹ค์Œ ํ•ญ๋ชฉ์˜ ๋‚ ์งœ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ดํ›„์ธ์ง€(๋‚ด๋ฆผ์ฐจ์ˆœ์ธ์ง€) ํ™•์ธ + assertThat(current).isAfterOrEqualTo(next); + } } + @Test @DisplayName("YESTERDAY ํƒ€์ž…๊ณผ INCOMPLETE ์ƒํƒœ์ธ todo ๋ชฉ๋ก์„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค") void getYesterdays_ShouldReturnPagedResult() { From 4a02c76868649f88b82571973184ac10b19f2e52 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 19 Oct 2024 00:45:56 +0900 Subject: [PATCH 137/177] =?UTF-8?q?fix:=20=EB=B0=B1=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20=EB=A7=88=EA=B0=90=EA=B8=B0?= =?UTF-8?q?=ED=95=9C=EC=9D=B4=20=ED=95=AD=EC=83=81=20null=EB=A1=9C=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EB=90=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/response/BacklogResponseDto.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java b/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java index 13a4847..43687d0 100644 --- a/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/BacklogResponseDto.java @@ -19,12 +19,9 @@ public BacklogResponseDto(Todo todo) { this.content = todo.getContent(); this.isBookmark = todo.isBookmark(); this.deadline = todo.getDeadline(); - - if (todo.getDeadline() != null && todo.getTodayDate() != null) { - this.dDay = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); - } else { - // ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NULL - this.deadline = null; - } + LocalDate todayDate = LocalDate.now(); + if (this.deadline==null) + this.dDay = null; + else this.dDay = (int) ChronoUnit.DAYS.between(todayDate, todo.getDeadline()); } } From 8204306dc24e83c9d83004854727af908bfd7dbc Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Sat, 19 Oct 2024 21:13:14 +0900 Subject: [PATCH 138/177] =?UTF-8?q?refactor:=20exception=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/application/service/AuthService.java | 7 ++++--- .../poptato/auth/application/service/JwtService.java | 9 ++++----- .../exception/errorcode/BaseExceptionErrorCode.java | 7 +------ .../java/server/poptato/user/resolver/UserResolver.java | 4 ---- 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index bc9e84e..a41d6d6 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -4,6 +4,7 @@ import org.springframework.stereotype.Service; import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; +import server.poptato.auth.exception.AuthException; import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.service.KakaoSocialService; import server.poptato.global.dto.TokenPair; @@ -13,7 +14,7 @@ import java.util.Optional; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.TOKEN_TIME_EXPIRED_EXCEPTION; +import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.TOKEN_TIME_EXPIRED; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.USER_NOT_FOUND_EXCEPTION; @Service @@ -43,13 +44,13 @@ public void logout(final Long userId) { public TokenPair refresh(final TokenRequestDto tokenRequestDto) { if (!jwtService.verifyToken(tokenRequestDto.refreshToken())) - throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); + throw new AuthException(TOKEN_TIME_EXPIRED); final String userId = jwtService.getUserIdInToken(tokenRequestDto.refreshToken()); final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); if (!jwtService.compareRefreshToken(userId, tokenRequestDto.refreshToken())) - throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); + throw new AuthException(TOKEN_TIME_EXPIRED); final TokenPair tokenPair = jwtService.generateTokenPair(userId); jwtService.saveRefreshToken(userId, tokenPair.refreshToken()); diff --git a/src/main/java/server/poptato/auth/application/service/JwtService.java b/src/main/java/server/poptato/auth/application/service/JwtService.java index c049ee8..73bd20d 100644 --- a/src/main/java/server/poptato/auth/application/service/JwtService.java +++ b/src/main/java/server/poptato/auth/application/service/JwtService.java @@ -1,7 +1,6 @@ package server.poptato.auth.application.service; - import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Header; @@ -12,8 +11,8 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import server.poptato.auth.exception.AuthException; import server.poptato.global.dto.TokenPair; -import server.poptato.global.exception.BaseException; import java.nio.charset.StandardCharsets; import java.security.Key; @@ -21,7 +20,7 @@ import java.util.Date; import java.util.concurrent.TimeUnit; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.TOKEN_TIME_EXPIRED_EXCEPTION; +import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.TOKEN_TIME_EXPIRED; @Service @@ -34,7 +33,7 @@ public class JwtService { private static final String REFRESH_TOKEN = "REFRESH_TOKEN"; public static final int MINUTE_IN_MILLISECONDS = 60 * 1000; public static final long DAYS_IN_MILLISECONDS = 24 * 60 * 60 * 1000L; - public static final int ACCESS_TOKEN_EXPIRATION_MINUTE = 10; + public static final int ACCESS_TOKEN_EXPIRATION_MINUTE = 20; public static final int REFRESH_TOKEN_EXPIRATION_DAYS = 14; private final RedisTemplate redisTemplate; @@ -64,7 +63,7 @@ public boolean verifyToken(final String token) { return true; } catch (RuntimeException e) { if (e instanceof ExpiredJwtException) { - throw new BaseException(TOKEN_TIME_EXPIRED_EXCEPTION); + throw new AuthException(TOKEN_TIME_EXPIRED); } return false; } diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index ad93d06..82d2909 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -24,12 +24,7 @@ public enum BaseExceptionErrorCode implements ResponseStatus { INAPPROPRIATE_DATA(2003, HttpStatus.BAD_REQUEST.value(), "์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), NO_COOKIE(2004,HttpStatus.BAD_REQUEST.value(),"์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), NO_REQUEST_PARAMETER(2005,HttpStatus.BAD_REQUEST.value(),"์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."), - TOKEN_NOT_CONTAINED_EXCEPTION(2006,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ์€ ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."), - TOKEN_TIME_EXPIRED_EXCEPTION(2007,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."), - INVALID_TOKEN_EXCEPTION(2008,HttpStatus.BAD_REQUEST.value(),"ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), - EMPTY_KAKAO_CODE_EXCEPTION(2009,HttpStatus.BAD_REQUEST.value(),"์นด์นด์˜ค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"), - ORIGIN_HEADER_MISSING_EXCEPTION(2010,HttpStatus.BAD_REQUEST.value(),"origin ํ—ค๋”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"), - USER_NOT_FOUND_EXCEPTION(2011,HttpStatus.NOT_FOUND.value(),"์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), + USER_NOT_FOUND_EXCEPTION(2006,HttpStatus.NOT_FOUND.value(),"์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), /** diff --git a/src/main/java/server/poptato/user/resolver/UserResolver.java b/src/main/java/server/poptato/user/resolver/UserResolver.java index 5ac874f..561e13e 100644 --- a/src/main/java/server/poptato/user/resolver/UserResolver.java +++ b/src/main/java/server/poptato/user/resolver/UserResolver.java @@ -11,12 +11,8 @@ import org.springframework.web.method.support.ModelAndViewContainer; import server.poptato.auth.application.service.JwtService; import server.poptato.auth.exception.AuthException; -import server.poptato.global.exception.BaseException; -import server.poptato.global.response.BaseErrorResponse; -import server.poptato.user.resolver.UserId; import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.*; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.*; @Component From b250f9471313cdb8582d0945fba2b7efb4680f46 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Sun, 20 Oct 2024 18:11:07 +0900 Subject: [PATCH 139/177] =?UTF-8?q?fix:=20=ED=9E=88=EC=8A=A4=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=EC=A0=95=EB=A0=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/application/TodoService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 8f4def3..ad0fe15 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -5,6 +5,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import server.poptato.todo.api.request.BacklogCreateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; @@ -99,13 +100,12 @@ public void toggleIsBookmark(Long todoId) { public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { checkIsExistUser(userId); - Pageable pageable = PageRequest.of(page, size); + Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "completedDateTime")); // ์œ ์ € ์•„์ด๋””์™€ completedDate๊ฐ€ null์ด ์•„๋‹Œ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); List histories = todosPage.getContent().stream() - .sorted(Comparator.comparing((Todo todo) -> todo.getCompletedDateTime().toLocalDate()).reversed()) // ๋‚ ์งœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ .map(todo -> new HistoryResponseDto( todo.getId(), todo.getContent(), From 3fcef0c86e80ea0b2275f2daf476b13f7090c534 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 21 Oct 2024 13:55:36 +0900 Subject: [PATCH 140/177] =?UTF-8?q?fix:=20=ED=88=AC=EB=8D=B0=EC=9D=B4/?= =?UTF-8?q?=EB=B0=B1=EB=A1=9C=EA=B7=B8=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=EA=B0=80=20=EC=97=86=EC=9D=84=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=98=88=EC=99=B8=EA=B0=80=20=EC=95=84?= =?UTF-8?q?=EB=8B=8C=20=EB=B9=88=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 22 ++++++++----- .../todo/application/TodoServiceTest.java | 31 ++++++++++++++++++- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index ad0fe15..7c3d865 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -53,14 +53,22 @@ public TodayListResponseDto getTodayList(long userId, int page, int size, LocalD userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); todays.addAll(completedTodos); - // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• - int start = (page) * size; - int end = Math.min(start + size, todays.size()); - if (start >= end) throw new TodoException(TodoExceptionErrorCode.INVALID_PAGE); - - List todaySubList = todays.subList(start, end); - int totalPageCount = (int) Math.ceil((double) todays.size() / size); + List todaySubList; + int totalPageCount; + if(todays.size()==0) { + totalPageCount = 0; + todaySubList = new ArrayList<>(); + } + else{ + // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• + int start = (page) * size; + int end = Math.min(start + size, todays.size()); + if (start >= end) throw new TodoException(TodoExceptionErrorCode.INVALID_PAGE); + + todaySubList = todays.subList(start, end); + totalPageCount = (int) Math.ceil((double) todays.size() / size); + } return TodayListResponseDto.builder() .date(todayDate) .todays(todaySubList) diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index c68b745..070a76a 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -63,13 +63,42 @@ class TodoServiceTest { Long userId = 1L; int page = 2; int size = 8; - LocalDate todayDate = LocalDate.now(); + LocalDate todayDate = LocalDate.of(2024,10,16); //when & then assertThatThrownBy(()-> todoService.getTodayList(userId,page,size,todayDate)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.INVALID_PAGE.getMessage()); } + @DisplayName("ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @Test + void ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ_์ˆ˜_0๊ฐœ_์‘๋‹ต(){ + //given + Long userId = 50L; + int page = 0; + int size = 8; + LocalDate todayDate = LocalDate.now(); + //when + TodayListResponseDto todayList = todoService.getTodayList(userId, page, size, todayDate); + //then + assertThat(todayList.getTodays()).isEmpty(); + assertThat(todayList.getTotalPageCount()).isEqualTo(0); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @Test + void ๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ_์ˆ˜_0๊ฐœ_์‘๋‹ต(){ + //given + Long userId = 50L; + int page = 0; + int size = 8; + //when + BacklogListResponseDto backlogList = todoService.getBacklogList(userId, page, size); + //then + assertThat(backlogList.getBacklogs()).isEmpty(); + assertThat(backlogList.getTotalPageCount()).isEqualTo(0); + } + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ๋จผ์ € ์กฐํšŒ๋˜๊ณ , ๊ทธ ๋‹ค์Œ ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ์กฐํšŒ๋œ๋‹ค.") @Test void ํˆฌ๋ฐ์ด_๋ชฉ๋ก_์กฐํšŒ_๋‹ฌ์„ฑ์—ฌ๋ถ€_์ •๋ ฌ(){ From 2d213efe131c8148486ab83ea08a42f8aeb746e7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 21 Oct 2024 14:14:18 +0900 Subject: [PATCH 141/177] =?UTF-8?q?fix:=20=ED=88=AC=EB=8D=B0=EC=9D=B4/?= =?UTF-8?q?=EB=B0=B1=EB=A1=9C=EA=B7=B8=20=EB=B9=88=20=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=B4=EB=A1=9C=20=EC=9D=91=EB=8B=B5=20=ED=86=B5=EC=9D=BC(?= =?UTF-8?q?=EC=9C=A0=ED=98=80=ED=95=98=EC=A7=80=20=EC=95=8A=EC=9D=80=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=98=88=EC=99=B8=20=EC=97=86?= =?UTF-8?q?=EC=95=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoService.java | 21 +++++++------------ .../todo/application/TodoServiceTest.java | 16 +++++++------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 7c3d865..11fbe5d 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -53,22 +53,15 @@ public TodayListResponseDto getTodayList(long userId, int page, int size, LocalD userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); todays.addAll(completedTodos); + // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• + int start = (page) * size; + int end = Math.min(start + size, todays.size()); List todaySubList; - int totalPageCount; + if (start >= end) todaySubList = new ArrayList<>(); + else todaySubList = todays.subList(start, end); + + int totalPageCount = (int) Math.ceil((double) todays.size() / size); - if(todays.size()==0) { - totalPageCount = 0; - todaySubList = new ArrayList<>(); - } - else{ - // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• - int start = (page) * size; - int end = Math.min(start + size, todays.size()); - if (start >= end) throw new TodoException(TodoExceptionErrorCode.INVALID_PAGE); - - todaySubList = todays.subList(start, end); - totalPageCount = (int) Math.ceil((double) todays.size() / size); - } return TodayListResponseDto.builder() .date(todayDate) .todays(todaySubList) diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 070a76a..a512fa1 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -56,21 +56,21 @@ class TodoServiceTest { assertThat(todoService.getTodayList(userId,page,size,todayDate).getTodays().size()).isEqualTo(size); } - @DisplayName("์œ ํšจํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ˆ˜์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("์œ ํšจํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ˆ˜์ผ ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") @Test - void ์œ ํšจํ•˜์ง€_์•Š์€_ํŽ˜์ด์ง€_์ˆ˜_์˜ˆ์™ธ(){ + void ์œ ํšจํ•˜์ง€_์•Š์€_ํŽ˜์ด์ง€_์ˆ˜_์‘๋‹ต(){ //given Long userId = 1L; int page = 2; int size = 8; LocalDate todayDate = LocalDate.of(2024,10,16); - //when & then - assertThatThrownBy(()-> todoService.getTodayList(userId,page,size,todayDate)) - .isInstanceOf(TodoException.class) - .hasMessage(TodoExceptionErrorCode.INVALID_PAGE.getMessage()); + //when + TodayListResponseDto todayList = todoService.getTodayList(userId, page, size, todayDate); + //then + assertThat(todayList.getTodays()).isEmpty(); } - @DisplayName("ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @DisplayName("ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") @Test void ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ_์ˆ˜_0๊ฐœ_์‘๋‹ต(){ //given @@ -85,7 +85,7 @@ class TodoServiceTest { assertThat(todayList.getTotalPageCount()).isEqualTo(0); } - @DisplayName("๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @DisplayName("๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") @Test void ๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ_์ˆ˜_0๊ฐœ_์‘๋‹ต(){ //given From 1c7bf1b72317c1105c0d683ef1fd818af5678bc5 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 23 Oct 2024 11:17:09 +0900 Subject: [PATCH 142/177] =?UTF-8?q?fix:=20=ED=86=A0=ED=81=B0=20=EB=A7=8C?= =?UTF-8?q?=EB=A3=8C=20=EC=97=90=EB=9F=AC=20=EC=9D=91=EB=8B=B5=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/exception/errorcode/AuthExceptionErrorCode.java | 2 +- .../global/exception/errorcode/BaseExceptionErrorCode.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java b/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java index 9f25121..fe64a05 100644 --- a/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java +++ b/src/main/java/server/poptato/auth/exception/errorcode/AuthExceptionErrorCode.java @@ -12,7 +12,7 @@ public enum AuthExceptionErrorCode implements ResponseStatus { */ TOKEN_NOT_EXIST(6000, HttpStatus.BAD_REQUEST.value(), "ํ† ํฐ ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."), - TOKEN_TIME_EXPIRED(6001, HttpStatus.BAD_REQUEST.value(), "ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"), + TOKEN_TIME_EXPIRED(6001, HttpStatus.UNAUTHORIZED.value(), "ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"), INVALID_TOKEN(6002, HttpStatus.BAD_REQUEST.value(), "ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"); private final int code; diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index 82d2909..a08a41a 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -11,9 +11,6 @@ public enum BaseExceptionErrorCode implements ResponseStatus { * 1000: ์š”์ฒญ ์„ฑ๊ณต (OK) */ SUCCESS(1000, HttpStatus.OK.value(), "์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), - SUCCESS_LOGIN(1001, HttpStatus.OK.value(), "๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), - SUCCESS_REGISTER(1002, HttpStatus.OK.value(), "ํšŒ์›๊ฐ€์ž…์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."), - /** * 2000: Request ์˜ค๋ฅ˜ (BAD_REQUEST) From 06f1ca9d25b9cf63eb9c5edb8bc65284e0ac16ce Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Wed, 23 Oct 2024 11:32:35 +0900 Subject: [PATCH 143/177] =?UTF-8?q?fix:=20=EB=8B=AC=EC=84=B1=EB=AA=BB?= =?UTF-8?q?=ED=95=9C=20=ED=95=A0=20=EC=9D=BC=EC=9D=B4=20YESTSERDAY?= =?UTF-8?q?=EB=A1=9C=20=EA=B0=80=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/application/TodoScheduler.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoScheduler.java b/src/main/java/server/poptato/todo/application/TodoScheduler.java index 38e11e7..6996b8c 100644 --- a/src/main/java/server/poptato/todo/application/TodoScheduler.java +++ b/src/main/java/server/poptato/todo/application/TodoScheduler.java @@ -9,6 +9,7 @@ import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -17,7 +18,7 @@ @RequiredArgsConstructor public class TodoScheduler { private final TodoRepository todoRepository; - @Scheduled(cron = "0 0 0 * * *") // ๋งค์ผ ์ž์ •์— ์‹คํ–‰ + @Scheduled(cron = "0 0 0 * * *") // ๋งค์ผ ์ž์ •์— ์‹คํ–‰ @Transactional public void updateTodoType() { // 1. TODAY ์ƒํƒœ์—์„œ INCOMPLETE์ธ ํ•  ์ผ๋“ค์„ YESTERDAY๋กœ ์ „ํ™˜ (์‚ฌ์šฉ์ž๋ณ„๋กœ ์ฒ˜๋ฆฌ) @@ -25,6 +26,8 @@ public void updateTodoType() { .stream() .collect(Collectors.groupingBy(Todo::getUserId)); // ์‚ฌ์šฉ์ž๋ณ„๋กœ ๊ทธ๋ฃนํ™” + List updatedTodoIds = new ArrayList<>(); // YESTERDAY๋กœ ์ „ํ™˜๋œ ํ• ์ผ๋“ค์˜ ID ์ €์žฅ + todayIncompleteTodosByUser.forEach((userId, todos) -> { Integer minBacklogOrder = todoRepository.findMinBacklogOrderByUserIdOrZero(userId); int startingOrder = minBacklogOrder - 1; @@ -32,21 +35,27 @@ public void updateTodoType() { for (Todo todo : todos) { todo.setType(Type.YESTERDAY); todo.setBacklogOrder(startingOrder--); + updatedTodoIds.add(todo.getId()); // YESTERDAY๋กœ ์ „ํ™˜๋œ ํ•ญ๋ชฉ์˜ ID ์ถ”๊ฐ€ } }); // 2. YESTERDAY ์ƒํƒœ์—์„œ INCOMPLETE์ธ ํ•  ์ผ๋“ค์„ BACKLOG๋กœ ์ „ํ™˜ (BacklogOrder ์œ ์ง€) - List yesterdayIncompleteTodos = todoRepository.findByTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE); + // ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ YESTERDAY๋กœ ์ „ํ™˜๋œ ํ•ญ๋ชฉ์„ ์ œ์™ธํ•˜๊ณ  ์ฒ˜๋ฆฌ + List yesterdayIncompleteTodos = todoRepository.findByTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE) + .stream() + .filter(todo -> !updatedTodoIds.contains(todo.getId())) // ์ด๋ฏธ YESTERDAY๋กœ ๋ฐ”๋€ ํ•ญ๋ชฉ ์ œ์™ธ + .collect(Collectors.toList()); + yesterdayIncompleteTodos.forEach(todo -> { todo.setType(Type.BACKLOG); todo.setTodayStatus(null); }); // 3. ์ €์žฅ - for(Todo todo : todayIncompleteTodosByUser.values().stream().flatMap(List::stream).collect(Collectors.toList())){ + for (Todo todo : todayIncompleteTodosByUser.values().stream().flatMap(List::stream).collect(Collectors.toList())) { todoRepository.save(todo); } - for(Todo todo : yesterdayIncompleteTodos){ + for (Todo todo : yesterdayIncompleteTodos) { todoRepository.save(todo); } } From d0598092c55c84e99f93fc533422c83b680e1fef Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 23 Oct 2024 16:29:06 +0900 Subject: [PATCH 144/177] =?UTF-8?q?fix:=20=ED=86=A0=ED=81=B0=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EC=98=88=EC=99=B8=20400->401?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/AuthExceptionHandler.java | 4 +- .../poptato/user/api/UserController.java | 5 --- .../poptato/todo/api/TodoControllerTest.java | 8 ++-- .../poptato/user/api/UserControllerTest.java | 43 ++----------------- 4 files changed, 9 insertions(+), 51 deletions(-) diff --git a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java index 9b928a1..b7ebc72 100644 --- a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java +++ b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java @@ -13,10 +13,10 @@ @Order(0) @RestControllerAdvice public class AuthExceptionHandler { - @ResponseStatus(HttpStatus.BAD_REQUEST) + @ResponseStatus(HttpStatus.UNAUTHORIZED) @ExceptionHandler(AuthException.class) public BaseErrorResponse handleAuthException(AuthException e) { - log.error("[UserException: handle_UserException ํ˜ธ์ถœ]", e); + log.error("[AuthException: handle_UserException ํ˜ธ์ถœ]", e); return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); } } diff --git a/src/main/java/server/poptato/user/api/UserController.java b/src/main/java/server/poptato/user/api/UserController.java index 59f643f..a59e4be 100644 --- a/src/main/java/server/poptato/user/api/UserController.java +++ b/src/main/java/server/poptato/user/api/UserController.java @@ -23,11 +23,6 @@ public BaseResponse deleteUser(@UserId Long userId) { userService.deleteUser(userId); return new BaseResponse(); } - @PatchMapping("/mypage") - public BaseResponse updateUserName(@UserId Long userId, @Validated @RequestBody UserChangeNameRequestDto request) { - userService.updateUserName(userId, request.getNewName()); - return new BaseResponse(); - } @GetMapping("/mypage") public BaseResponse getUserNameAndEmail(@UserId Long userId) { UserResponseDto response = userService.getUserNameAndEmailById(userId); diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 149b026..0a1aee8 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -93,7 +93,7 @@ public class TodoControllerTest { //when mockMvc.perform(get("/todays") .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) + .andExpect(status().isUnauthorized()) .andDo(print()); } @Test @@ -157,7 +157,7 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ //when mockMvc.perform(get("/backlogs") .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) + .andExpect(status().isUnauthorized()) .andDo(print()); } @@ -238,7 +238,7 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { // when mockMvc.perform(get("/histories") .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 400 Bad Request ์‘๋‹ต + .andExpect(status().isUnauthorized()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 401 ์‘๋‹ต .andDo(print()); } @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— type์ด๋‚˜ list๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") @@ -329,7 +329,7 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { // when mockMvc.perform(get("/yesterdays") .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 400 Bad Request ์‘๋‹ต + .andExpect(status().isUnauthorized()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 401 ์‘๋‹ต .andDo(print()); } diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 4a23cc2..4d4ed76 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -16,13 +16,9 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import server.poptato.auth.application.service.JwtService; import server.poptato.todo.application.TodoService; -import server.poptato.user.api.request.UserChangeNameRequestDto; import server.poptato.user.application.service.UserService; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -40,10 +36,8 @@ class UserControllerTest { private JwtService jwtService; @MockBean private RedisTemplate redisTemplate; - private Validator validator; private String accessToken; private final String userId = "1"; - private ObjectMapper objectMapper; @BeforeEach void userId๊ฐ€_1์ธ_์•ก์„ธ์Šคํ† ํฐ_์ƒ์„ฑ() { @@ -71,41 +65,10 @@ void getUserNameAndEmailFailedInvalidToken() throws Exception { mockMvc.perform(get("/user/mypage") .header("Authorization", "Bearer "+invalidToken) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isBadRequest()) + .andExpect(status().isUnauthorized()) .andDo(print()); } - @Test - @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") - void updateUserName_ShouldReturnSuccess() throws Exception { - - // when & then - mockMvc.perform(patch("/user/mypage") - .header("Authorization", "Bearer " + accessToken) // JWT ํ† ํฐ์„ ์ „๋‹ฌํ•˜๋Š” ๋ถ€๋ถ„ - .contentType(MediaType.APPLICATION_JSON) - .content("{\"newName\": \"NewName\"}")) // content๋ฅผ "NewName"์œผ๋กœ ์ˆ˜์ • - .andExpect(status().isOk()); - // userService์˜ updateUserName์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธ - verify(userService, times(1)).updateUserName(anyLong(), eq("NewName")); // "NewName"๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ˆ˜์ • - } - - @Test - @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์‹คํŒจ - ์ด๋ฆ„์ด ๋นˆ ๊ฐ’์ผ ๋•Œ") - void updateUserName_ShouldReturnBadRequest_WhenNameIsEmpty() throws Exception { - // given - Long userId = 1L; - UserChangeNameRequestDto requestDto = new UserChangeNameRequestDto(""); // ๋นˆ ์ด๋ฆ„ - - // when & then - mockMvc.perform(patch("/user/mypage") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON) - .content("{\"newName\": \"\"}")) - .andExpect(status().isBadRequest()); - - // userService๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ - verify(userService, times(0)).updateUserName(anyLong(), anyString()); - } @Test @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต - ํ† ํฐ ๊ฒ€์ฆ ํ›„ ์‘๋‹ต ํ™•์ธ") void deleteUserSuccess() throws Exception { @@ -120,7 +83,7 @@ void deleteUserSuccess() throws Exception { @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ํ† ํฐ ์—†์Œ") void deleteUserFailureNoToken() throws Exception { mockMvc.perform(MockMvcRequestBuilders.delete("/user")) - .andExpect(status().isBadRequest()) + .andExpect(status().isUnauthorized()) .andDo(print()); } @@ -131,7 +94,7 @@ void deleteUserFailureInvalidToken() throws Exception { mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + invalidToken)) - .andExpect(status().isBadRequest()) + .andExpect(status().isUnauthorized()) .andDo(print()); } } From 131da334b1a071013fc8d300557a0fa385d5b4c3 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Fri, 25 Oct 2024 16:20:15 +0900 Subject: [PATCH 145/177] =?UTF-8?q?feat:=20=EB=8F=84=EB=A9=94=EC=9D=B8,?= =?UTF-8?q?=EB=A0=88=ED=8F=AC=EC=A7=80=ED=86=A0=EB=A6=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/policy/domain/entity/Policy.java | 26 +++++++++++++++++++ .../domain/repository/PolicyRepository.java | 9 +++++++ .../infra/repository/JpaPolicyRepository.java | 11 ++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/main/java/server/poptato/policy/domain/entity/Policy.java create mode 100644 src/main/java/server/poptato/policy/domain/repository/PolicyRepository.java create mode 100644 src/main/java/server/poptato/policy/infra/repository/JpaPolicyRepository.java diff --git a/src/main/java/server/poptato/policy/domain/entity/Policy.java b/src/main/java/server/poptato/policy/domain/entity/Policy.java new file mode 100644 index 0000000..b4a19d2 --- /dev/null +++ b/src/main/java/server/poptato/policy/domain/entity/Policy.java @@ -0,0 +1,26 @@ +package server.poptato.policy.domain.entity; + +import jakarta.persistence.*; +import lombok.*; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Getter +@Entity +@Builder +@EntityListeners(AuditingEntityListener.class) +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class Policy { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Lob + private String content; + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createDate; +} diff --git a/src/main/java/server/poptato/policy/domain/repository/PolicyRepository.java b/src/main/java/server/poptato/policy/domain/repository/PolicyRepository.java new file mode 100644 index 0000000..3f8a204 --- /dev/null +++ b/src/main/java/server/poptato/policy/domain/repository/PolicyRepository.java @@ -0,0 +1,9 @@ +package server.poptato.policy.domain.repository; + +import server.poptato.policy.domain.entity.Policy; + +import java.util.Optional; + +public interface PolicyRepository { + Optional findTopByOrderByCreatedAtDesc(); +} diff --git a/src/main/java/server/poptato/policy/infra/repository/JpaPolicyRepository.java b/src/main/java/server/poptato/policy/infra/repository/JpaPolicyRepository.java new file mode 100644 index 0000000..870eb46 --- /dev/null +++ b/src/main/java/server/poptato/policy/infra/repository/JpaPolicyRepository.java @@ -0,0 +1,11 @@ +package server.poptato.policy.infra.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import server.poptato.policy.domain.entity.Policy; +import server.poptato.policy.domain.repository.PolicyRepository; + +import java.util.Optional; + +public interface JpaPolicyRepository extends PolicyRepository, JpaRepository { + Optional findTopByOrderByCreatedAtDesc(); +} From 54f0c09990ddd91ce3a1dc5926253b875b97d156 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Fri, 25 Oct 2024 17:49:00 +0900 Subject: [PATCH 146/177] =?UTF-8?q?chore:=20Policy=20exception=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/policy/api/PolicyController.java | 20 +++++++++++ .../policy/application/PolicyService.java | 19 ++++++++++ .../poptato/policy/domain/entity/Policy.java | 3 +- .../policy/exception/PolicyException.java | 14 ++++++++ .../errorcode/PolicyExceptionErrorCode.java | 36 +++++++++++++++++++ .../handler/PolicyExceptionHandler.java | 22 ++++++++++++ 6 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 src/main/java/server/poptato/policy/api/PolicyController.java create mode 100644 src/main/java/server/poptato/policy/application/PolicyService.java create mode 100644 src/main/java/server/poptato/policy/exception/PolicyException.java create mode 100644 src/main/java/server/poptato/policy/exception/errorcode/PolicyExceptionErrorCode.java create mode 100644 src/main/java/server/poptato/policy/exception/handler/PolicyExceptionHandler.java diff --git a/src/main/java/server/poptato/policy/api/PolicyController.java b/src/main/java/server/poptato/policy/api/PolicyController.java new file mode 100644 index 0000000..2138409 --- /dev/null +++ b/src/main/java/server/poptato/policy/api/PolicyController.java @@ -0,0 +1,20 @@ +package server.poptato.policy.api; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import server.poptato.global.response.BaseResponse; +import server.poptato.policy.application.PolicyService; +import server.poptato.policy.domain.entity.Policy; + +@RestController +@RequiredArgsConstructor +public class PolicyController { + private final PolicyService policyService; + + @GetMapping("/policy") + public BaseResponse getTodayList(){ + Policy policy = policyService.getPrivacyPolicy(); + return new BaseResponse<>(policy); + } +} diff --git a/src/main/java/server/poptato/policy/application/PolicyService.java b/src/main/java/server/poptato/policy/application/PolicyService.java new file mode 100644 index 0000000..b4bf83d --- /dev/null +++ b/src/main/java/server/poptato/policy/application/PolicyService.java @@ -0,0 +1,19 @@ +package server.poptato.policy.application; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import server.poptato.policy.domain.entity.Policy; +import server.poptato.policy.domain.repository.PolicyRepository; +import server.poptato.policy.exception.PolicyException; + +import static server.poptato.policy.exception.errorcode.PolicyExceptionErrorCode.POLICY_NOT_FOUND_EXCEPTION; + +@Service +@RequiredArgsConstructor +public class PolicyService { + private final PolicyRepository policyRepository; + public Policy getPrivacyPolicy() { + return policyRepository.findTopByOrderByCreatedAtDesc() + .orElseThrow(() -> new PolicyException(POLICY_NOT_FOUND_EXCEPTION)); + } +} diff --git a/src/main/java/server/poptato/policy/domain/entity/Policy.java b/src/main/java/server/poptato/policy/domain/entity/Policy.java index b4a19d2..2356831 100644 --- a/src/main/java/server/poptato/policy/domain/entity/Policy.java +++ b/src/main/java/server/poptato/policy/domain/entity/Policy.java @@ -18,9 +18,10 @@ public class Policy { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Lob + @Column(columnDefinition = "LONGTEXT") private String content; @CreatedDate @Column(updatable = false) - private LocalDateTime createDate; + private LocalDateTime createdAt; } diff --git a/src/main/java/server/poptato/policy/exception/PolicyException.java b/src/main/java/server/poptato/policy/exception/PolicyException.java new file mode 100644 index 0000000..d07f9c3 --- /dev/null +++ b/src/main/java/server/poptato/policy/exception/PolicyException.java @@ -0,0 +1,14 @@ +package server.poptato.policy.exception; + +import lombok.Getter; +import server.poptato.global.response.status.ResponseStatus; + +@Getter +public class PolicyException extends RuntimeException{ + private final ResponseStatus exceptionStatus; + + public PolicyException(ResponseStatus exceptionStatus) { + super(exceptionStatus.getMessage()); + this.exceptionStatus = exceptionStatus; + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/policy/exception/errorcode/PolicyExceptionErrorCode.java b/src/main/java/server/poptato/policy/exception/errorcode/PolicyExceptionErrorCode.java new file mode 100644 index 0000000..b2a6b4f --- /dev/null +++ b/src/main/java/server/poptato/policy/exception/errorcode/PolicyExceptionErrorCode.java @@ -0,0 +1,36 @@ +package server.poptato.policy.exception.errorcode; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import server.poptato.global.response.status.ResponseStatus; + +@RequiredArgsConstructor +public enum PolicyExceptionErrorCode implements ResponseStatus { + + /** + * 7000: Policy ๋„๋ฉ”์ธ ์˜ค๋ฅ˜ + */ + + POLICY_NOT_FOUND_EXCEPTION(7000, HttpStatus.NOT_FOUND.value(), "๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"); + + + private final int code; + private final int status; + private final String message; + + + @Override + public int getCode() { + return code; + } + + @Override + public int getStatus() { + return status; + } + + @Override + public String getMessage() { + return message; + } +} \ No newline at end of file diff --git a/src/main/java/server/poptato/policy/exception/handler/PolicyExceptionHandler.java b/src/main/java/server/poptato/policy/exception/handler/PolicyExceptionHandler.java new file mode 100644 index 0000000..dbfff21 --- /dev/null +++ b/src/main/java/server/poptato/policy/exception/handler/PolicyExceptionHandler.java @@ -0,0 +1,22 @@ +package server.poptato.policy.exception.handler; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import server.poptato.global.response.BaseErrorResponse; +import server.poptato.policy.exception.PolicyException; + +@Slf4j +@Order(1) +@RestControllerAdvice +public class PolicyExceptionHandler { + @ResponseStatus(HttpStatus.NOT_FOUND) + @ExceptionHandler(PolicyException.class) + public BaseErrorResponse handlePolicyException(PolicyException e) { + log.error("[PolicyException: handle_PolicyException ํ˜ธ์ถœ]", e); + return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); + } +} \ No newline at end of file From aa142555527499f972d55464f87570021ada4114 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 26 Oct 2024 00:13:25 +0900 Subject: [PATCH 147/177] =?UTF-8?q?fix:=20=EB=B0=B1=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EC=8B=9C=20id=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/api/TodoController.java | 12 ++++-------- .../server/poptato/todo/application/TodoService.java | 6 ++++-- .../response/BacklogCreateResponseDto.java | 12 ++++++++++++ .../poptato/todo/application/BacklogCreateTest.java | 2 +- 4 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 7fa02a2..8bf8a7b 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -6,11 +6,7 @@ import server.poptato.global.response.BaseResponse; import server.poptato.todo.api.request.*; import server.poptato.todo.application.TodoService; -import server.poptato.todo.application.response.BacklogListResponseDto; -import server.poptato.todo.application.response.PaginatedHistoryResponseDto; -import server.poptato.todo.application.response.PaginatedYesterdayResponseDto; -import server.poptato.todo.application.response.TodayListResponseDto; -import server.poptato.todo.application.response.TodoDetailResponseDto; +import server.poptato.todo.application.response.*; import server.poptato.user.resolver.UserId; import java.time.LocalDate; @@ -81,10 +77,10 @@ public BaseResponse getYesterdays( } @PostMapping("/backlog") - public BaseResponse generateBacklog(@UserId Long userId, + public BaseResponse generateBacklog(//@UserId Long userId, @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto){ - todoService.generateBacklog(userId, backlogCreateRequestDto.getContent()); - return new BaseResponse<>(); + BacklogCreateResponseDto response = todoService.generateBacklog(1L, backlogCreateRequestDto.getContent()); + return new BaseResponse<>(response); } @GetMapping("/todo/{todoId}") diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 11fbe5d..ba4350d 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -222,12 +222,14 @@ private void checkIsExistUser(Long userId) { } - public Long generateBacklog(Long userId, String content) { + public BacklogCreateResponseDto generateBacklog(Long userId, String content) { checkIsExistUser(userId); Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); Todo backlog = Todo.createBacklog(userId, content, maxBacklogOrder+1); Todo newBacklog = todoRepository.save(backlog); - return newBacklog.getId(); + return BacklogCreateResponseDto.builder() + .todoId(newBacklog.getId()) + .build(); } public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) { diff --git a/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java b/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java new file mode 100644 index 0000000..1f7568a --- /dev/null +++ b/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java @@ -0,0 +1,12 @@ +package server.poptato.todo.application.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@AllArgsConstructor +@Builder +public class BacklogCreateResponseDto { + Long todoId; +} diff --git a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java index 9837f3a..45ee6a6 100644 --- a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java +++ b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java @@ -25,7 +25,7 @@ public class BacklogCreateTest { String content = "๋‚ด์šฉ"; //when - Long todoId = todoService.generateBacklog(userId,content); + Long todoId = todoService.generateBacklog(userId,content).getTodoId(); Todo findTodo = todoRepository.findById(todoId).get(); //then From 245f2e343dea685cc7c513b64f049189b1f8c817 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sat, 26 Oct 2024 13:32:45 +0900 Subject: [PATCH 148/177] =?UTF-8?q?fix:=20userId=201=EB=A1=9C=EB=A7=8C=20?= =?UTF-8?q?=EB=B0=B1=EB=A1=9C=EA=B7=B8=20=EC=83=9D=EC=84=B1=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/todo/api/TodoController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 8bf8a7b..0d4ff5d 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -77,9 +77,9 @@ public BaseResponse getYesterdays( } @PostMapping("/backlog") - public BaseResponse generateBacklog(//@UserId Long userId, + public BaseResponse generateBacklog(@UserId Long userId, @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto){ - BacklogCreateResponseDto response = todoService.generateBacklog(1L, backlogCreateRequestDto.getContent()); + BacklogCreateResponseDto response = todoService.generateBacklog(userId, backlogCreateRequestDto.getContent()); return new BaseResponse<>(response); } From bed310f13927b65126e13ceffc3f052027f25e5c Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 27 Oct 2024 02:00:27 +0900 Subject: [PATCH 149/177] =?UTF-8?q?chore:=20timezone=20=EB=9D=84=EC=9A=B0?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/server/poptato/PoptatoApplication.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/server/poptato/PoptatoApplication.java b/src/main/java/server/poptato/PoptatoApplication.java index 9222868..c797c65 100644 --- a/src/main/java/server/poptato/PoptatoApplication.java +++ b/src/main/java/server/poptato/PoptatoApplication.java @@ -14,6 +14,7 @@ public class PoptatoApplication { public static void main(String[] args) { SpringApplication.run(PoptatoApplication.class, args); + System.out.println("Default Time Zone: " + java.util.TimeZone.getDefault().getID()); System.out.println("Hello Poptato Server Team !!"); } From 9142e4a2a410c05f36b6b5d8760a830642d59ce2 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 27 Oct 2024 02:14:14 +0900 Subject: [PATCH 150/177] =?UTF-8?q?fix:=20timezone=EC=9D=84=20=EC=84=9C?= =?UTF-8?q?=EC=9A=B8=EB=A1=9C=20=EB=90=98=EB=8F=84=EB=A1=9D=20cd=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 4744177..7fb43c5 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -54,4 +54,4 @@ jobs: sudo fuser -k -n tcp "${{ secrets.SERVER_PORT }}" || true - nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & + nohup java -Duser.timezone=Asia/Seoul -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & From a6862880c9ece8a439deb954ec77280d6fd392dc Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Sun, 27 Oct 2024 20:08:18 +0900 Subject: [PATCH 151/177] refactor: baseException-> userException --- .../poptato/auth/application/service/AuthService.java | 8 ++++---- .../exception/errorcode/BaseExceptionErrorCode.java | 1 - .../java/server/poptato/todo/application/TodoService.java | 8 +------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index a41d6d6..e0634b0 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -8,14 +8,14 @@ import server.poptato.external.kakao.dto.response.KakaoUserInfo; import server.poptato.external.kakao.service.KakaoSocialService; import server.poptato.global.dto.TokenPair; -import server.poptato.global.exception.BaseException; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; +import server.poptato.user.exception.UserException; import java.util.Optional; import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.TOKEN_TIME_EXPIRED; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.USER_NOT_FOUND_EXCEPTION; +import static server.poptato.user.exception.errorcode.UserExceptionErrorCode.USER_NOT_EXIST; @Service @RequiredArgsConstructor @@ -38,7 +38,7 @@ public LoginResponseDto login(final String accessToken) { } public void logout(final Long userId) { - final User user = userRepository.findById(userId).orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); + final User user = userRepository.findById(userId).orElseThrow(() -> new UserException(USER_NOT_EXIST)); jwtService.deleteRefreshToken(String.valueOf(userId)); } @@ -47,7 +47,7 @@ public TokenPair refresh(final TokenRequestDto tokenRequestDto) { throw new AuthException(TOKEN_TIME_EXPIRED); final String userId = jwtService.getUserIdInToken(tokenRequestDto.refreshToken()); - final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new BaseException(USER_NOT_FOUND_EXCEPTION)); + final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new UserException(USER_NOT_EXIST)); if (!jwtService.compareRefreshToken(userId, tokenRequestDto.refreshToken())) throw new AuthException(TOKEN_TIME_EXPIRED); diff --git a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java index a08a41a..561f13c 100644 --- a/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java +++ b/src/main/java/server/poptato/global/exception/errorcode/BaseExceptionErrorCode.java @@ -21,7 +21,6 @@ public enum BaseExceptionErrorCode implements ResponseStatus { INAPPROPRIATE_DATA(2003, HttpStatus.BAD_REQUEST.value(), "์ž…๋ ฅํ•œ ์ •๋ณด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), NO_COOKIE(2004,HttpStatus.BAD_REQUEST.value(),"์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), NO_REQUEST_PARAMETER(2005,HttpStatus.BAD_REQUEST.value(),"์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํ•„์ˆ˜๋กœ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."), - USER_NOT_FOUND_EXCEPTION(2006,HttpStatus.NOT_FOUND.value(),"์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"), /** diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index ba4350d..5751a76 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,17 +1,13 @@ package server.poptato.todo.application; import lombok.RequiredArgsConstructor; -import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; -import server.poptato.todo.api.request.BacklogCreateRequestDto; -import server.poptato.todo.api.request.DragAndDropRequestDto; -import server.poptato.todo.api.request.SwipeRequestDto; import org.springframework.transaction.annotation.Transactional; -import server.poptato.global.response.BaseResponse; +import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.application.response.*; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; @@ -25,9 +21,7 @@ import java.time.LocalDate; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; From 4a284c784d281f6c1b4222fc14d61e23007f721c Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Sun, 27 Oct 2024 21:52:00 +0900 Subject: [PATCH 152/177] =?UTF-8?q?fix:=20=ED=88=AC=EB=91=90=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EC=8B=9C=20userId=20=EA=B2=80=EC=A6=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/poptato/todo/api/TodoController.java | 4 ++-- .../poptato/todo/application/TodoService.java | 6 ++++-- .../todo/domain/repository/TodoRepository.java | 1 + .../poptato/todo/api/TodoControllerTest.java | 12 +++++++----- .../poptato/todo/application/TodoServiceTest.java | 14 ++++++++------ 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 0d4ff5d..1ae99ef 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -26,8 +26,8 @@ public BaseResponse getTodayList( } @DeleteMapping("/todo/{todoId}") - public BaseResponse deleteTodoById(@PathVariable Long todoId) { - todoService.deleteTodoById(todoId); + public BaseResponse deleteTodoById(@UserId Long userId, @PathVariable Long todoId) { + todoService.deleteTodoById(userId, todoId); return new BaseResponse<>(); } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 5751a76..488e341 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -78,9 +78,11 @@ public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { .build(); } - public void deleteTodoById(Long todoId) { - Todo todo = todoRepository.findById(todoId) + public void deleteTodoById(Long userId, Long todoId) { + checkIsExistUser(userId); + Todo todo = todoRepository.findByIdAndUserId(todoId, userId) .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + todoRepository.delete(todo); } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index d50fa4b..d827cec 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -17,6 +17,7 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); Optional findById(Long todoId); + Optional findByIdAndUserId(Long todoId, Long userId); void delete(Todo todo); Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); Todo save(Todo todo); diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 0a1aee8..5c008d4 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -99,30 +99,32 @@ public class TodoControllerTest { @Test public void shouldReturnNoContent_WhenTodoIsDeleted() throws Exception { //ํˆฌ๋‘ ์žˆ์„ ๋•Œ Long todoId = 1L; + Long userId = 1L; // todoService์˜ deleteTodoById ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค์ • - doNothing().when(todoService).deleteTodoById(todoId); + doNothing().when(todoService).deleteTodoById(userId, todoId); mockMvc.perform(delete("/todo/{todoId}", todoId) .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()); - verify(todoService, times(1)).deleteTodoById(todoId); + verify(todoService, times(1)).deleteTodoById(userId, todoId); } @Test public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ๋‘ ์—†์„ ๋•Œ - Long todoId = 1L; + Long todoId = 144L; + Long userId = 1L; // todoService์˜ deleteTodoById๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ exception ๋ฐœ์ƒํ•˜๋„๋ก ์„ค์ • doThrow(new TodoException(TODO_NOT_EXIST)) - .when(todoService).deleteTodoById(todoId); + .when(todoService).deleteTodoById(userId, todoId); mockMvc.perform(delete("/todo/{todoId}", todoId) .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isBadRequest()); - verify(todoService, times(1)).deleteTodoById(todoId); + verify(todoService, times(1)).deleteTodoById(userId, todoId); } @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index a512fa1..5b2cf0a 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -124,11 +124,11 @@ class TodoServiceTest { } } // ์ƒˆ๋กœ์šด ์œ ์ €๋กœ ์‚ญ์ œ ํ…Œ์ŠคํŠธ - @DisplayName("ํˆฌ๋‘๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์ € 2์˜ ํˆฌ๋‘๋ฅผ ์‚ญ์ œํ•œ๋‹ค.") + @DisplayName("ํˆฌ๋‘๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์ € 1์˜ ํˆฌ๋‘๋ฅผ ์‚ญ์ œํ•œ๋‹ค.") @Test - public void shouldDeleteTodoById_WhenTodoExists_ForUser2() { + public void shouldDeleteTodoById_WhenTodoExists_ForUser1() { //given - Long userId = 2L; + Long userId = 1L; Todo todo = Todo.builder() .userId(userId) .content("Test Todo") @@ -138,10 +138,11 @@ public void shouldDeleteTodoById_WhenTodoExists_ForUser2() { // ์‹ค์ œ๋กœ Todo ์ €์žฅ Todo savedTodo = todoRepository.save(todo); - Long todoId = savedTodo.getId(); + Long todoId = savedTodo.getId(); // ์ €์žฅ๋œ Todo ID ๊ฐ€์ ธ์˜ค๊ธฐ + System.out.println(todoId); //when - todoService.deleteTodoById(todoId); + todoService.deleteTodoById(userId, todoId); //then Optional deletedTodo = todoRepository.findById(todoId); @@ -153,10 +154,11 @@ public void shouldDeleteTodoById_WhenTodoExists_ForUser2() { public void shouldThrowException_WhenTodoNotFound_ForUser2() { //given Long nonExistentTodoId = 1000L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํˆฌ๋‘ ID + Long userId = 1L; //when & then assertThrows(TodoException.class, () -> { - todoService.deleteTodoById(nonExistentTodoId); // ํˆฌ๋‘๊ฐ€ ์—†์„ ๋•Œ ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฒ€์ฆ + todoService.deleteTodoById(userId, nonExistentTodoId); // ํˆฌ๋‘๊ฐ€ ์—†์„ ๋•Œ ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฒ€์ฆ }); } @DisplayName("size=8์„ ์š”์ฒญํ•˜๋ฉด, ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต๋œ๋‹ค.") From 9991812f2fb46e5215e1954be1b72429f7d460f4 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 28 Oct 2024 14:23:33 +0900 Subject: [PATCH 153/177] =?UTF-8?q?refactor:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=8E=B8=EC=A7=91=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/application/service/UserService.java | 6 ---- .../user/application/UserServiceTest.java | 36 ------------------- 2 files changed, 42 deletions(-) diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index c7fffe8..59ca4bd 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -31,12 +31,6 @@ public void deleteUser(Long userId) { userRepository.delete(user); entityManager.flush(); } - @Transactional - public void updateUserName(Long userId, String newName) { - User user = checkIsExistUser(userId); - // name ์—…๋ฐ์ดํŠธ - user.changeName(newName); - } @Transactional(readOnly = true) public UserResponseDto getUserNameAndEmailById(Long userId) { User user = checkIsExistUser(userId); diff --git a/src/test/java/server/poptato/user/application/UserServiceTest.java b/src/test/java/server/poptato/user/application/UserServiceTest.java index 34e82b3..793b8c2 100644 --- a/src/test/java/server/poptato/user/application/UserServiceTest.java +++ b/src/test/java/server/poptato/user/application/UserServiceTest.java @@ -4,16 +4,12 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.transaction.annotation.Transactional; import server.poptato.user.application.response.UserResponseDto; import server.poptato.user.application.service.UserService; -import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; -import server.poptato.user.exception.errorcode.UserExceptionErrorCode; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; @SpringBootTest class UserServiceTest { @@ -23,38 +19,6 @@ class UserServiceTest { @Autowired private UserRepository userRepository; - - @Test - @DisplayName("์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ณ€๊ฒฝ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") - @Transactional - void updateUserName_ShouldChangeUserName() { - // given - Long userId = 1L; - String newName = "New Name"; - - // when - userService.updateUserName(userId, newName); - - // then - User updatedUser = userRepository.findById(userId).orElseThrow(); - assertThat(updatedUser.getName()).isEqualTo(newName); - } - - @Test - @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ ๋ฐœ์ƒ ํ…Œ์ŠคํŠธ") - @Transactional - void updateUserName_ShouldThrowException_WhenUserNotFound() { - // given - Long nonExistentUserId = 999L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ € ID - String newName = "New Name"; - - // when & then - UserException exception = assertThrows(UserException.class, () -> { - userService.updateUserName(nonExistentUserId, newName); - }); - - assertThat(exception.getMessage()).isEqualTo(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); - } @Test @DisplayName("getUserNameAndEmailById ๋ฉ”์„œ๋“œ๋Š” ์œ ํšจํ•œ userId๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค") public void shouldReturnUserNameAndEmail_WhenUserIdIsValid() { From 060c7079b1f3866ec4c33e2e740e74e0a049ae02 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Mon, 28 Oct 2024 14:47:30 +0900 Subject: [PATCH 154/177] =?UTF-8?q?refactor:=20=EC=A6=90=EA=B2=A8=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20userId=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/api/TodoController.java | 4 ++-- .../server/poptato/todo/application/TodoService.java | 4 ++-- .../server/poptato/todo/api/TodoControllerTest.java | 7 ++++--- .../poptato/todo/application/TodoServiceTest.java | 10 +++++----- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index 1ae99ef..acde507 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -47,8 +47,8 @@ public BaseResponse swipe(@UserId Long userId, return new BaseResponse<>(); } @PatchMapping("/todo/{todoId}/bookmark") - public BaseResponse toggleIsBookmark(@PathVariable Long todoId) { - todoService.toggleIsBookmark(todoId); + public BaseResponse toggleIsBookmark(@UserId Long userId, @PathVariable Long todoId) { + todoService.toggleIsBookmark(userId, todoId); return new BaseResponse<>(); } @GetMapping("/histories") diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 488e341..49a8f7d 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -86,9 +86,9 @@ public void deleteTodoById(Long userId, Long todoId) { todoRepository.delete(todo); } - public void toggleIsBookmark(Long todoId) { + public void toggleIsBookmark(Long userId, Long todoId) { // ํ•ด๋‹น Todo๋ฅผ ์กฐํšŒ - Todo todo = todoRepository.findById(todoId) + Todo todo = todoRepository.findByIdAndUserId(todoId, userId) .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 5c008d4..d923a2c 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -167,16 +167,17 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ @DisplayName("isBookmark ํ† ๊ธ€ ์‹œ ์‘๋‹ต์ด ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธ") public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { Long todoId = 1L; + Long userId = 1L; // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค์ • - doNothing().when(todoService).toggleIsBookmark(todoId); + doNothing().when(todoService).toggleIsBookmark(userId, todoId); mockMvc.perform(patch("/todo/{todoId}/bookmark", todoId) - .header("Authorization", "Bearer " + "someAccessToken")) // ํ—ค๋”์— ํ† ํฐ ์ถ”๊ฐ€ + .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()); // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - verify(todoService, times(1)).toggleIsBookmark(todoId); + verify(todoService, times(1)).toggleIsBookmark(userId, todoId); } @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 5b2cf0a..7e7e462 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -247,11 +247,11 @@ void toggleIsBookmark_TrueToFalse() { Todo savedTodo = todoRepository.save(todo); Long todoId = savedTodo.getId(); - // when: toggleIsBookmark ํ˜ธ์ถœ (void ๋ฉ”์„œ๋“œ) - todoService.toggleIsBookmark(todoId); + // when: toggleIsBookmark ํ˜ธ์ถœ + todoService.toggleIsBookmark(1L,todoId); // then: DB์—์„œ Todo๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธ - Todo updatedTodo = todoRepository.findById(todoId).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + Todo updatedTodo = todoRepository.findByIdAndUserId(todoId, 1L).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); assertThat(updatedTodo.isBookmark()).isFalse(); // isBookmark๊ฐ€ false๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ } @@ -271,7 +271,7 @@ void toggleIsBookmark_FalseToTrue() { Long todoId = savedTodo.getId(); // when: toggleIsBookmark ํ˜ธ์ถœ (void ๋ฉ”์„œ๋“œ) - todoService.toggleIsBookmark(todoId); + todoService.toggleIsBookmark(1L,todoId); // then: DB์—์„œ Todo๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธ Todo updatedTodo = todoRepository.findById(todoId).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); @@ -286,7 +286,7 @@ void toggleIsBookmark_TodoNotFound() { // when & then assertThrows(TodoException.class, () -> { - todoService.toggleIsBookmark(nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ + todoService.toggleIsBookmark(1L, nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ }); } @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์‚ฌ์šฉ์ž์˜ ํ• ์ผ์ด ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") From 1d7079ca5e418b11b45cec66b1821e92fd432154 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 28 Oct 2024 19:33:25 +0900 Subject: [PATCH 155/177] =?UTF-8?q?fix:=20push=EB=90=A0=20=EB=95=8C?= =?UTF-8?q?=EB=A7=8C=20cd=20=ED=8C=8C=EC=9D=BC=EC=9D=B4=20=EB=8F=8C?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20cd=20=ED=8C=8C=EC=9D=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 7fb43c5..1cbcf0f 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -1,9 +1,6 @@ name: Java CD with Gradle on: - pull_request: - types: [ closed ] - branches: [ "dev","main" ] push: branches: [ "dev", "main" ] From c62db589ce96141335e304560b2c0fc187f3cc52 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 28 Oct 2024 21:31:24 +0900 Subject: [PATCH 156/177] =?UTF-8?q?refactor:=20login=20API=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthController.java | 7 ++- .../auth/application/service/AuthService.java | 44 +++++++++++-------- .../kakao/service/KakaoSocialService.java | 37 ---------------- .../external/kakao/service/SocialService.java | 9 ---- .../{kakao => oauth}/SocialPlatform.java | 2 +- .../poptato/external/oauth/SocialService.java | 5 +++ .../SocialServiceProvider.java | 6 +-- .../external/oauth/SocialUserInfo.java | 4 ++ .../response/KakaoAccessTokenResponse.java | 2 +- .../kakao/dto/response/KakaoUserResponse.java | 4 +- .../kakao/feign/KakaoApiClient.java | 5 +-- .../kakao/feign/KakaoAuthApiClient.java | 5 +-- .../kakao/service/KakaoSocialService.java | 28 ++++++++++++ 13 files changed, 77 insertions(+), 81 deletions(-) delete mode 100644 src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java delete mode 100644 src/main/java/server/poptato/external/kakao/service/SocialService.java rename src/main/java/server/poptato/external/{kakao => oauth}/SocialPlatform.java (86%) create mode 100644 src/main/java/server/poptato/external/oauth/SocialService.java rename src/main/java/server/poptato/external/{kakao => oauth}/SocialServiceProvider.java (80%) create mode 100644 src/main/java/server/poptato/external/oauth/SocialUserInfo.java rename src/main/java/server/poptato/external/{ => oauth}/kakao/dto/response/KakaoAccessTokenResponse.java (82%) rename src/main/java/server/poptato/external/{ => oauth}/kakao/dto/response/KakaoUserResponse.java (56%) rename src/main/java/server/poptato/external/{ => oauth}/kakao/feign/KakaoApiClient.java (81%) rename src/main/java/server/poptato/external/{ => oauth}/kakao/feign/KakaoAuthApiClient.java (83%) create mode 100644 src/main/java/server/poptato/external/oauth/kakao/service/KakaoSocialService.java diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index 92c9068..e21568f 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -9,10 +9,12 @@ import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; +import server.poptato.external.oauth.SocialPlatform; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; import server.poptato.user.resolver.UserId; +import static server.poptato.external.oauth.SocialPlatform.KAKAO; import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; @RestController @@ -24,8 +26,9 @@ public class AuthController { @PostMapping("/login") public BaseResponse login(@RequestBody KakaoLoginRequestDto kakaoLoginRequestDto) { - String kakaoCode = kakaoLoginRequestDto.kakaoCode(); - LoginResponseDto response = authService.login(kakaoCode); + String accessToken = kakaoLoginRequestDto.kakaoCode(); + SocialPlatform socialPlatform = KAKAO; + LoginResponseDto response = authService.login(accessToken, socialPlatform); return new BaseResponse<>(response); } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index e0634b0..39361d2 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -5,8 +5,10 @@ import server.poptato.auth.api.request.TokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.exception.AuthException; -import server.poptato.external.kakao.dto.response.KakaoUserInfo; -import server.poptato.external.kakao.service.KakaoSocialService; +import server.poptato.external.oauth.SocialPlatform; +import server.poptato.external.oauth.SocialService; +import server.poptato.external.oauth.SocialServiceProvider; +import server.poptato.external.oauth.SocialUserInfo; import server.poptato.global.dto.TokenPair; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; @@ -21,20 +23,17 @@ @RequiredArgsConstructor public class AuthService { private final JwtService jwtService; - private final KakaoSocialService kakaoSocialService; + private final SocialServiceProvider socialServiceProvider; private final UserRepository userRepository; - public LoginResponseDto login(final String accessToken) { - KakaoUserInfo info = kakaoSocialService.getIdAndNickNameAndEmailFromKakao(accessToken); - String kakaoId = info.kakaoId(); - String name = info.nickname(); - String email = info.email(); - Optional user = userRepository.findByKakaoId(kakaoId); + public LoginResponseDto login(final String accessToken, final SocialPlatform socialPlatform) { + SocialService socialService = socialServiceProvider.getSocialService(socialPlatform); + SocialUserInfo userInfo = socialService.getUserData(accessToken); + Optional user = userRepository.findByKakaoId(userInfo.socialId()); if (user.isEmpty()) { - return createNewUserResponse(kakaoId, name, email); + return createNewUserResponse(userInfo); } - TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.get().getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), false, user.get().getId()); + return createOldUserResponse(user.get()); } public void logout(final Long userId) { @@ -57,16 +56,23 @@ public TokenPair refresh(final TokenRequestDto tokenRequestDto) { return tokenPair; } - private LoginResponseDto createNewUserResponse(String kakaoId, String name, String email) { + private LoginResponseDto createNewUserResponse(SocialUserInfo userInfo) { User newUser = User.builder() - .kakaoId(kakaoId) - .name(name) - .email(email) + .kakaoId(userInfo.socialId()) + .name(userInfo.nickname()) + .email(userInfo.email()) .build(); userRepository.save(newUser); - // ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์‘๋‹ต ๊ฐ์ฒด ์ƒ์„ฑ - TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(newUser.getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), true, newUser.getId()); + return createLoginResponse(newUser, true); + } + + private LoginResponseDto createOldUserResponse(User user) { + return createLoginResponse(user, false); + } + + private LoginResponseDto createLoginResponse(User user, boolean isNewUser) { + TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.getId())); + return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), isNewUser, user.getId()); } } diff --git a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java deleted file mode 100644 index d6f4cce..0000000 --- a/src/main/java/server/poptato/external/kakao/service/KakaoSocialService.java +++ /dev/null @@ -1,37 +0,0 @@ -package server.poptato.external.kakao.service; - - -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import server.poptato.external.kakao.dto.response.KakaoUserInfo; -import server.poptato.external.kakao.dto.response.KakaoUserResponse; -import server.poptato.external.kakao.feign.KakaoApiClient; -import server.poptato.external.kakao.feign.KakaoAuthApiClient; - -@Service -@RequiredArgsConstructor -public class KakaoSocialService extends SocialService { - - @Value("${kakao.client-id}") - private String clientId; - private static final String Bearer = "Bearer "; - private static final String GRANT_TYPE = "authorization_code"; - private final KakaoAuthApiClient kakaoAuthApiClient; - private final KakaoApiClient kakaoApiClient; - - @Override - public KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String accessToken) { - - // ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์นด์นด์˜ค ์‚ฌ์šฉ์ž ์ •๋ณด ์š”์ฒญ - KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + accessToken); - - // ID, ๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ - return new KakaoUserInfo( - String.valueOf(userResponse.id()), - userResponse.properties().nickname(), - userResponse.kakao_account().email() - ); - } -} - diff --git a/src/main/java/server/poptato/external/kakao/service/SocialService.java b/src/main/java/server/poptato/external/kakao/service/SocialService.java deleted file mode 100644 index 300dd6f..0000000 --- a/src/main/java/server/poptato/external/kakao/service/SocialService.java +++ /dev/null @@ -1,9 +0,0 @@ -package server.poptato.external.kakao.service; - - -import server.poptato.external.kakao.dto.response.KakaoUserInfo; - -public abstract class SocialService { - public abstract KakaoUserInfo getIdAndNickNameAndEmailFromKakao(String kakaoCode); - -} \ No newline at end of file diff --git a/src/main/java/server/poptato/external/kakao/SocialPlatform.java b/src/main/java/server/poptato/external/oauth/SocialPlatform.java similarity index 86% rename from src/main/java/server/poptato/external/kakao/SocialPlatform.java rename to src/main/java/server/poptato/external/oauth/SocialPlatform.java index ee34584..d8e9728 100644 --- a/src/main/java/server/poptato/external/kakao/SocialPlatform.java +++ b/src/main/java/server/poptato/external/oauth/SocialPlatform.java @@ -1,4 +1,4 @@ -package server.poptato.external.kakao; +package server.poptato.external.oauth; import lombok.AccessLevel; import lombok.Getter; diff --git a/src/main/java/server/poptato/external/oauth/SocialService.java b/src/main/java/server/poptato/external/oauth/SocialService.java new file mode 100644 index 0000000..51658a9 --- /dev/null +++ b/src/main/java/server/poptato/external/oauth/SocialService.java @@ -0,0 +1,5 @@ +package server.poptato.external.oauth; + +public abstract class SocialService { + public abstract SocialUserInfo getUserData(String accessToken); +} \ No newline at end of file diff --git a/src/main/java/server/poptato/external/kakao/SocialServiceProvider.java b/src/main/java/server/poptato/external/oauth/SocialServiceProvider.java similarity index 80% rename from src/main/java/server/poptato/external/kakao/SocialServiceProvider.java rename to src/main/java/server/poptato/external/oauth/SocialServiceProvider.java index 8b98435..954ce7e 100644 --- a/src/main/java/server/poptato/external/kakao/SocialServiceProvider.java +++ b/src/main/java/server/poptato/external/oauth/SocialServiceProvider.java @@ -1,12 +1,10 @@ -package server.poptato.external.kakao; - +package server.poptato.external.oauth; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import server.poptato.external.kakao.service.KakaoSocialService; -import server.poptato.external.kakao.service.SocialService; +import server.poptato.external.oauth.kakao.service.KakaoSocialService; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/server/poptato/external/oauth/SocialUserInfo.java b/src/main/java/server/poptato/external/oauth/SocialUserInfo.java new file mode 100644 index 0000000..51e9fe4 --- /dev/null +++ b/src/main/java/server/poptato/external/oauth/SocialUserInfo.java @@ -0,0 +1,4 @@ +package server.poptato.external.oauth; + +public record SocialUserInfo(String socialId, String nickname, String email) { +} diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java b/src/main/java/server/poptato/external/oauth/kakao/dto/response/KakaoAccessTokenResponse.java similarity index 82% rename from src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java rename to src/main/java/server/poptato/external/oauth/kakao/dto/response/KakaoAccessTokenResponse.java index 566a5df..3ace1ad 100644 --- a/src/main/java/server/poptato/external/kakao/dto/response/KakaoAccessTokenResponse.java +++ b/src/main/java/server/poptato/external/oauth/kakao/dto/response/KakaoAccessTokenResponse.java @@ -1,4 +1,4 @@ -package server.poptato.external.kakao.dto.response; +package server.poptato.external.oauth.kakao.dto.response; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java b/src/main/java/server/poptato/external/oauth/kakao/dto/response/KakaoUserResponse.java similarity index 56% rename from src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java rename to src/main/java/server/poptato/external/oauth/kakao/dto/response/KakaoUserResponse.java index a6294c5..bcd7dec 100644 --- a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserResponse.java +++ b/src/main/java/server/poptato/external/oauth/kakao/dto/response/KakaoUserResponse.java @@ -1,10 +1,10 @@ -package server.poptato.external.kakao.dto.response; +package server.poptato.external.oauth.kakao.dto.response; public record KakaoUserResponse(Long id, KakaoUserProperties properties, KakaoAccount kakao_account) { public record KakaoUserProperties(String nickname) { } - public record KakaoAccount(String email) { // ์ด๋ฉ”์ผ์„ ๋‹ด์„ ํ•„๋“œ ์ถ”๊ฐ€ + public record KakaoAccount(String email) { } } diff --git a/src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java b/src/main/java/server/poptato/external/oauth/kakao/feign/KakaoApiClient.java similarity index 81% rename from src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java rename to src/main/java/server/poptato/external/oauth/kakao/feign/KakaoApiClient.java index a742e64..8709a26 100644 --- a/src/main/java/server/poptato/external/kakao/feign/KakaoApiClient.java +++ b/src/main/java/server/poptato/external/oauth/kakao/feign/KakaoApiClient.java @@ -1,5 +1,4 @@ -package server.poptato.external.kakao.feign; - +package server.poptato.external.oauth.kakao.feign; import org.springframework.cloud.openfeign.FeignClient; @@ -7,7 +6,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestHeader; -import server.poptato.external.kakao.dto.response.KakaoUserResponse; +import server.poptato.external.oauth.kakao.dto.response.KakaoUserResponse; @ComponentScan diff --git a/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java b/src/main/java/server/poptato/external/oauth/kakao/feign/KakaoAuthApiClient.java similarity index 83% rename from src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java rename to src/main/java/server/poptato/external/oauth/kakao/feign/KakaoAuthApiClient.java index 7b8fb05..0d45840 100644 --- a/src/main/java/server/poptato/external/kakao/feign/KakaoAuthApiClient.java +++ b/src/main/java/server/poptato/external/oauth/kakao/feign/KakaoAuthApiClient.java @@ -1,12 +1,11 @@ -package server.poptato.external.kakao.feign; - +package server.poptato.external.oauth.kakao.feign; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; -import server.poptato.external.kakao.dto.response.KakaoAccessTokenResponse; +import server.poptato.external.oauth.kakao.dto.response.KakaoAccessTokenResponse; @FeignClient(name = "kakaoAuthApiClient", url = "https://kauth.kakao.com") public interface KakaoAuthApiClient { diff --git a/src/main/java/server/poptato/external/oauth/kakao/service/KakaoSocialService.java b/src/main/java/server/poptato/external/oauth/kakao/service/KakaoSocialService.java new file mode 100644 index 0000000..8845c3b --- /dev/null +++ b/src/main/java/server/poptato/external/oauth/kakao/service/KakaoSocialService.java @@ -0,0 +1,28 @@ +package server.poptato.external.oauth.kakao.service; + + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import server.poptato.external.oauth.SocialService; +import server.poptato.external.oauth.SocialUserInfo; +import server.poptato.external.oauth.kakao.dto.response.KakaoUserResponse; +import server.poptato.external.oauth.kakao.feign.KakaoApiClient; + +@Service +@RequiredArgsConstructor +public class KakaoSocialService extends SocialService { + private static final String Bearer = "Bearer "; + private final KakaoApiClient kakaoApiClient; + + @Override + public SocialUserInfo getUserData(String accessToken) { + KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(Bearer + accessToken); + + return new SocialUserInfo( + String.valueOf(userResponse.id()), + userResponse.properties().nickname(), + userResponse.kakao_account().email() + ); + } +} + From 3cd29d493a6ab6debdf11b7e20fc2509f864c12e Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Mon, 28 Oct 2024 21:31:32 +0900 Subject: [PATCH 157/177] =?UTF-8?q?refactor:=20login=20API=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/external/kakao/dto/response/KakaoUserInfo.java | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java diff --git a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java b/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java deleted file mode 100644 index 2d4b00d..0000000 --- a/src/main/java/server/poptato/external/kakao/dto/response/KakaoUserInfo.java +++ /dev/null @@ -1,4 +0,0 @@ -package server.poptato.external.kakao.dto.response; - -public record KakaoUserInfo(String kakaoId, String nickname, String email) { -} From edd370b419ca23c66c0bb41b17705ea7db127e3c Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 29 Oct 2024 15:35:09 +0900 Subject: [PATCH 158/177] =?UTF-8?q?refactor:=20logout,=20reissue=20API=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthController.java | 19 ++++----- .../api/request/ReissueTokenRequestDto.java | 4 ++ .../auth/api/request/TokenRequestDto.java | 4 -- .../auth/application/service/AuthService.java | 40 ++++++++++++------- .../auth/application/service/JwtService.java | 25 ++++++------ .../poptato/user/api/UserController.java | 16 ++++---- ...ponseDto.java => UserInfoResponseDto.java} | 3 +- .../user/application/service/UserService.java | 27 +++++-------- .../poptato/user/resolver/UserResolver.java | 4 +- .../poptato/user/validator/UserValidator.java | 25 ++++++++++++ .../user/application/UserServiceTest.java | 6 +-- 11 files changed, 95 insertions(+), 78 deletions(-) create mode 100644 src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java delete mode 100644 src/main/java/server/poptato/auth/api/request/TokenRequestDto.java rename src/main/java/server/poptato/user/application/response/{UserResponseDto.java => UserInfoResponseDto.java} (77%) create mode 100644 src/main/java/server/poptato/user/validator/UserValidator.java diff --git a/src/main/java/server/poptato/auth/api/AuthController.java b/src/main/java/server/poptato/auth/api/AuthController.java index e21568f..e9158d6 100644 --- a/src/main/java/server/poptato/auth/api/AuthController.java +++ b/src/main/java/server/poptato/auth/api/AuthController.java @@ -6,17 +6,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import server.poptato.auth.api.request.KakaoLoginRequestDto; -import server.poptato.auth.api.request.TokenRequestDto; +import server.poptato.auth.api.request.ReissueTokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; import server.poptato.auth.application.service.AuthService; -import server.poptato.external.oauth.SocialPlatform; import server.poptato.global.dto.TokenPair; import server.poptato.global.response.BaseResponse; import server.poptato.user.resolver.UserId; -import static server.poptato.external.oauth.SocialPlatform.KAKAO; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; - @RestController @RequestMapping("/auth") @RequiredArgsConstructor @@ -25,21 +21,20 @@ public class AuthController { private final AuthService authService; @PostMapping("/login") - public BaseResponse login(@RequestBody KakaoLoginRequestDto kakaoLoginRequestDto) { - String accessToken = kakaoLoginRequestDto.kakaoCode(); - SocialPlatform socialPlatform = KAKAO; - LoginResponseDto response = authService.login(accessToken, socialPlatform); + public BaseResponse login(@RequestBody KakaoLoginRequestDto loginRequestDto) { + LoginResponseDto response = authService.login(loginRequestDto); return new BaseResponse<>(response); } @PostMapping("/logout") public BaseResponse logout(@UserId Long userId) { authService.logout(userId); - return new BaseResponse(SUCCESS); + return new BaseResponse(); } + @PostMapping("/refresh") - public BaseResponse refresh(@RequestBody final TokenRequestDto tokenRequestDto) { - TokenPair response = authService.refresh(tokenRequestDto); + public BaseResponse refresh(@RequestBody final ReissueTokenRequestDto reissueTokenRequestDto) { + TokenPair response = authService.refresh(reissueTokenRequestDto); return new BaseResponse<>(response); } } diff --git a/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java b/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java new file mode 100644 index 0000000..77e4aca --- /dev/null +++ b/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java @@ -0,0 +1,4 @@ +package server.poptato.auth.api.request; + +public record ReissueTokenRequestDto(String accessToken, String refreshToken) { +} diff --git a/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java b/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java deleted file mode 100644 index 35d801c..0000000 --- a/src/main/java/server/poptato/auth/api/request/TokenRequestDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package server.poptato.auth.api.request; - -public record TokenRequestDto(String accessToken, String refreshToken) { -} diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 39361d2..9f00bdf 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -2,9 +2,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import server.poptato.auth.api.request.TokenRequestDto; +import server.poptato.auth.api.request.KakaoLoginRequestDto; +import server.poptato.auth.api.request.ReissueTokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; -import server.poptato.auth.exception.AuthException; import server.poptato.external.oauth.SocialPlatform; import server.poptato.external.oauth.SocialService; import server.poptato.external.oauth.SocialServiceProvider; @@ -12,12 +12,11 @@ import server.poptato.global.dto.TokenPair; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; -import server.poptato.user.exception.UserException; +import server.poptato.user.validator.UserValidator; import java.util.Optional; -import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.TOKEN_TIME_EXPIRED; -import static server.poptato.user.exception.errorcode.UserExceptionErrorCode.USER_NOT_EXIST; +import static server.poptato.external.oauth.SocialPlatform.KAKAO; @Service @RequiredArgsConstructor @@ -25,8 +24,13 @@ public class AuthService { private final JwtService jwtService; private final SocialServiceProvider socialServiceProvider; private final UserRepository userRepository; + private final UserValidator userValidator; + + public LoginResponseDto login(final KakaoLoginRequestDto loginRequestDto) { + //TODO: ๋‚˜์ค‘์— ์—†์•จ ์ฝ”๋“œ + String accessToken = loginRequestDto.kakaoCode(); + SocialPlatform socialPlatform = KAKAO; - public LoginResponseDto login(final String accessToken, final SocialPlatform socialPlatform) { SocialService socialService = socialServiceProvider.getSocialService(socialPlatform); SocialUserInfo userInfo = socialService.getUserData(accessToken); Optional user = userRepository.findByKakaoId(userInfo.socialId()); @@ -37,25 +41,31 @@ public LoginResponseDto login(final String accessToken, final SocialPlatform soc } public void logout(final Long userId) { - final User user = userRepository.findById(userId).orElseThrow(() -> new UserException(USER_NOT_EXIST)); + userValidator.checkIsExistUser(userId); jwtService.deleteRefreshToken(String.valueOf(userId)); } - public TokenPair refresh(final TokenRequestDto tokenRequestDto) { - if (!jwtService.verifyToken(tokenRequestDto.refreshToken())) - throw new AuthException(TOKEN_TIME_EXPIRED); - - final String userId = jwtService.getUserIdInToken(tokenRequestDto.refreshToken()); - final User user = userRepository.findById(Long.parseLong(userId)).orElseThrow(() -> new UserException(USER_NOT_EXIST)); + public TokenPair refresh(final ReissueTokenRequestDto reissueTokenRequestDto) { + checkIsValidToken(reissueTokenRequestDto.refreshToken()); - if (!jwtService.compareRefreshToken(userId, tokenRequestDto.refreshToken())) - throw new AuthException(TOKEN_TIME_EXPIRED); + final String userId = jwtService.getUserIdInToken(reissueTokenRequestDto.refreshToken()); + userValidator.checkIsExistUser(Long.parseLong(userId)); final TokenPair tokenPair = jwtService.generateTokenPair(userId); jwtService.saveRefreshToken(userId, tokenPair.refreshToken()); + return tokenPair; } + private void checkIsValidToken(String refreshToken) { + try{ + jwtService.verifyToken(refreshToken); + jwtService.compareRefreshToken(jwtService.getUserIdInToken(refreshToken), refreshToken); + }catch(Exception e){ + throw e; + } + } + private LoginResponseDto createNewUserResponse(SocialUserInfo userInfo) { User newUser = User.builder() .kakaoId(userInfo.socialId()) diff --git a/src/main/java/server/poptato/auth/application/service/JwtService.java b/src/main/java/server/poptato/auth/application/service/JwtService.java index 73bd20d..8a8b462 100644 --- a/src/main/java/server/poptato/auth/application/service/JwtService.java +++ b/src/main/java/server/poptato/auth/application/service/JwtService.java @@ -1,11 +1,9 @@ package server.poptato.auth.application.service; -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.ExpiredJwtException; -import io.jsonwebtoken.Header; -import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.*; import io.jsonwebtoken.security.Keys; +import io.jsonwebtoken.security.SignatureException; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; @@ -20,6 +18,7 @@ import java.util.Date; import java.util.concurrent.TimeUnit; +import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.INVALID_TOKEN; import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.TOKEN_TIME_EXPIRED; @@ -57,15 +56,15 @@ public String createRefreshToken(final String userId) { return createToken(claims); } - public boolean verifyToken(final String token) { + public void verifyToken(final String token) { try { final Claims claims = getBody(token); - return true; + } catch (ExpiredJwtException e) { + throw new AuthException(TOKEN_TIME_EXPIRED); + } catch (UnsupportedJwtException | SignatureException | MalformedJwtException e){ + throw new AuthException(INVALID_TOKEN); } catch (RuntimeException e) { - if (e instanceof ExpiredJwtException) { - throw new AuthException(TOKEN_TIME_EXPIRED); - } - return false; + throw e; } } @@ -81,10 +80,10 @@ public TokenPair generateTokenPair(final String userId) { return new TokenPair(accessToken, refreshToken); } - public boolean compareRefreshToken(final String userId, final String refreshToken) { + public void compareRefreshToken(final String userId, final String refreshToken) { final String storedRefreshToken = redisTemplate.opsForValue().get(userId); - if (storedRefreshToken == null) return false; - return storedRefreshToken.equals(refreshToken); + if (storedRefreshToken == null || !storedRefreshToken.equals(refreshToken)) + throw new AuthException(INVALID_TOKEN); } public void saveRefreshToken(final String userId, final String refreshToken) { diff --git a/src/main/java/server/poptato/user/api/UserController.java b/src/main/java/server/poptato/user/api/UserController.java index a59e4be..85cbd21 100644 --- a/src/main/java/server/poptato/user/api/UserController.java +++ b/src/main/java/server/poptato/user/api/UserController.java @@ -1,16 +1,15 @@ package server.poptato.user.api; import lombok.RequiredArgsConstructor; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import server.poptato.global.response.BaseResponse; -import server.poptato.user.api.request.UserChangeNameRequestDto; -import server.poptato.user.application.response.UserResponseDto; +import server.poptato.user.application.response.UserInfoResponseDto; import server.poptato.user.application.service.UserService; import server.poptato.user.resolver.UserId; -import static server.poptato.global.exception.errorcode.BaseExceptionErrorCode.SUCCESS; - @RestController @RequiredArgsConstructor @RequestMapping("/user") @@ -23,9 +22,10 @@ public BaseResponse deleteUser(@UserId Long userId) { userService.deleteUser(userId); return new BaseResponse(); } + @GetMapping("/mypage") - public BaseResponse getUserNameAndEmail(@UserId Long userId) { - UserResponseDto response = userService.getUserNameAndEmailById(userId); + public BaseResponse getUserInfo(@UserId Long userId) { + UserInfoResponseDto response = userService.getUserInfo(userId); return new BaseResponse(response); } } \ No newline at end of file diff --git a/src/main/java/server/poptato/user/application/response/UserResponseDto.java b/src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java similarity index 77% rename from src/main/java/server/poptato/user/application/response/UserResponseDto.java rename to src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java index 64fd995..2672cd0 100644 --- a/src/main/java/server/poptato/user/application/response/UserResponseDto.java +++ b/src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java @@ -1,12 +1,11 @@ package server.poptato.user.application.response; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Getter; @Getter @AllArgsConstructor -public class UserResponseDto { +public class UserInfoResponseDto { private String name; private String email; } diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 59ca4bd..8190456 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -1,43 +1,34 @@ package server.poptato.user.application.service; -import jakarta.persistence.EntityManager; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import server.poptato.auth.application.service.JwtService; import server.poptato.todo.domain.repository.TodoRepository; -import server.poptato.user.application.response.UserResponseDto; +import server.poptato.user.application.response.UserInfoResponseDto; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; -import server.poptato.user.exception.UserException; -import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import server.poptato.user.validator.UserValidator; @Service +@Transactional @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; private final TodoRepository todoRepository; private final JwtService jwtService; - @Autowired - private EntityManager entityManager; + private final UserValidator userValidator; - - @Transactional public void deleteUser(Long userId) { - User user = checkIsExistUser(userId); + User user = userValidator.checkIsExistAndReturnUser(userId); todoRepository.deleteAllByUserId(userId); jwtService.deleteRefreshToken(String.valueOf(userId)); userRepository.delete(user); - entityManager.flush(); } + @Transactional(readOnly = true) - public UserResponseDto getUserNameAndEmailById(Long userId) { - User user = checkIsExistUser(userId); - return new UserResponseDto(user.getName(), user.getEmail()); - } - private User checkIsExistUser(Long userId) { - return userRepository.findById(userId) - .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + public UserInfoResponseDto getUserInfo(Long userId) { + User user = userValidator.checkIsExistAndReturnUser(userId); + return new UserInfoResponseDto(user.getName(), user.getEmail()); } } diff --git a/src/main/java/server/poptato/user/resolver/UserResolver.java b/src/main/java/server/poptato/user/resolver/UserResolver.java index 561e13e..4aa07b4 100644 --- a/src/main/java/server/poptato/user/resolver/UserResolver.java +++ b/src/main/java/server/poptato/user/resolver/UserResolver.java @@ -33,9 +33,7 @@ public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer m throw new AuthException(TOKEN_NOT_EXIST); } final String encodedUserId = token.substring("Bearer ".length()); - if (!jwtService.verifyToken(encodedUserId)) { - throw new AuthException(TOKEN_TIME_EXPIRED); - } + jwtService.verifyToken(token); final String decodedUserId = jwtService.getUserIdInToken(encodedUserId); try { return Long.parseLong(decodedUserId); diff --git a/src/main/java/server/poptato/user/validator/UserValidator.java b/src/main/java/server/poptato/user/validator/UserValidator.java new file mode 100644 index 0000000..6212768 --- /dev/null +++ b/src/main/java/server/poptato/user/validator/UserValidator.java @@ -0,0 +1,25 @@ +package server.poptato.user.validator; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; +import server.poptato.user.domain.entity.User; +import server.poptato.user.domain.repository.UserRepository; +import server.poptato.user.exception.UserException; +import server.poptato.user.exception.errorcode.UserExceptionErrorCode; + +import static server.poptato.user.exception.errorcode.UserExceptionErrorCode.USER_NOT_EXIST; + +@Component +@RequiredArgsConstructor +public class UserValidator { + private final UserRepository userRepository; + + public void checkIsExistUser(Long userId){ + userRepository.findById(userId).orElseThrow(() -> new UserException(USER_NOT_EXIST)); + } + + public User checkIsExistAndReturnUser(Long userId){ + return userRepository.findById(userId) + .orElseThrow(() -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); + } +} diff --git a/src/test/java/server/poptato/user/application/UserServiceTest.java b/src/test/java/server/poptato/user/application/UserServiceTest.java index 793b8c2..f8b31e9 100644 --- a/src/test/java/server/poptato/user/application/UserServiceTest.java +++ b/src/test/java/server/poptato/user/application/UserServiceTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import server.poptato.user.application.response.UserResponseDto; +import server.poptato.user.application.response.UserInfoResponseDto; import server.poptato.user.application.service.UserService; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; @@ -26,7 +26,7 @@ public void shouldReturnUserNameAndEmail_WhenUserIdIsValid() { Long userId = 1L; // When - UserResponseDto responseDto = userService.getUserNameAndEmailById(userId); + UserInfoResponseDto responseDto = userService.getUserInfo(userId); // Then assertThat(responseDto.getName()).isEqualTo("Poptato"); @@ -41,7 +41,7 @@ public void shouldThrowUserException_WhenUserIdIsInvalid() { // When & Then org.junit.jupiter.api.Assertions.assertThrows(UserException.class, - () -> userService.getUserNameAndEmailById(invalidUserId)); + () -> userService.getUserInfo(invalidUserId)); } } From 99b2a8d06073616acbe437da382bc0ab6410c5cc Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 29 Oct 2024 17:08:31 +0900 Subject: [PATCH 159/177] =?UTF-8?q?refactor:=20=ED=88=AC=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C,=20=EB=B0=B1?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?API=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/KakaoLoginRequestDto.java | 9 +- .../api/request/ReissueTokenRequestDto.java | 12 +- .../response/LoginResponseDto.java | 3 + .../auth/application/service/AuthService.java | 9 +- .../auth/converter/AuthDtoConverter.java | 21 ++ .../poptato/auth/exception/AuthException.java | 2 +- .../handler/AuthExceptionHandler.java | 2 +- .../todo/api/TodoBacklogController.java | 55 +++++ .../poptato/todo/api/TodoController.java | 65 ++---- .../poptato/todo/api/TodoTodayController.java | 28 +++ .../api/request/BacklogCreateRequestDto.java | 4 +- .../todo/api/request/SwipeRequestDto.java | 4 +- .../todo/application/TodoBacklogService.java | 84 +++++++ .../poptato/todo/application/TodoService.java | 218 +++++------------- .../todo/application/TodoTodayService.java | 62 +++++ .../response/BacklogCreateResponseDto.java | 9 +- .../response/HistoryResponseDto.java | 13 +- .../response/PaginatedHistoryResponseDto.java | 10 +- .../PaginatedYesterdayResponseDto.java | 8 +- .../response/TodayResponseDto.java | 11 +- .../response/TodoDetailResponseDto.java | 9 +- .../response/YesterdayResponseDto.java | 8 +- .../todo/converter/TodoDtoConverter.java | 32 +++ .../domain/repository/TodoRepository.java | 14 ++ .../api/request/UserChangeNameRequestDto.java | 16 -- .../response/UserInfoResponseDto.java | 10 +- .../user/application/service/UserService.java | 3 +- .../user/converter/UserDtoConverter.java | 20 ++ .../poptato/todo/api/TodoControllerTest.java | 12 +- 29 files changed, 456 insertions(+), 297 deletions(-) create mode 100644 src/main/java/server/poptato/auth/converter/AuthDtoConverter.java create mode 100644 src/main/java/server/poptato/todo/api/TodoBacklogController.java create mode 100644 src/main/java/server/poptato/todo/api/TodoTodayController.java create mode 100644 src/main/java/server/poptato/todo/application/TodoBacklogService.java create mode 100644 src/main/java/server/poptato/todo/application/TodoTodayService.java create mode 100644 src/main/java/server/poptato/todo/converter/TodoDtoConverter.java delete mode 100644 src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java create mode 100644 src/main/java/server/poptato/user/converter/UserDtoConverter.java diff --git a/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java b/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java index d95a87f..75808e7 100644 --- a/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java +++ b/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java @@ -1,5 +1,12 @@ package server.poptato.auth.api.request; +import jakarta.validation.constraints.NotEmpty; +import lombok.Getter; +import lombok.NoArgsConstructor; -public record KakaoLoginRequestDto(String kakaoCode) { +@Getter +@NoArgsConstructor +public class KakaoLoginRequestDto { + @NotEmpty(message = "kakaoCode๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + String kakaoCode; } diff --git a/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java b/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java index 77e4aca..2eeb4fb 100644 --- a/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java +++ b/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java @@ -1,4 +1,14 @@ package server.poptato.auth.api.request; -public record ReissueTokenRequestDto(String accessToken, String refreshToken) { +import jakarta.validation.constraints.NotEmpty; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class ReissueTokenRequestDto { + @NotEmpty(message = "ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์‹œ accessToken์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + String accessToken; + @NotEmpty(message = "ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์‹œ refreshToken์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + String refreshToken; } diff --git a/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java b/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java index efd19ad..e3d49ae 100644 --- a/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java +++ b/src/main/java/server/poptato/auth/application/response/LoginResponseDto.java @@ -1,4 +1,7 @@ package server.poptato.auth.application.response; +import lombok.Builder; + +@Builder public record LoginResponseDto(String accessToken, String refreshToken, boolean isNewUser, Long userId) { } diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index 9f00bdf..e7b5b8a 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -5,6 +5,7 @@ import server.poptato.auth.api.request.KakaoLoginRequestDto; import server.poptato.auth.api.request.ReissueTokenRequestDto; import server.poptato.auth.application.response.LoginResponseDto; +import server.poptato.auth.converter.AuthDtoConverter; import server.poptato.external.oauth.SocialPlatform; import server.poptato.external.oauth.SocialService; import server.poptato.external.oauth.SocialServiceProvider; @@ -28,7 +29,7 @@ public class AuthService { public LoginResponseDto login(final KakaoLoginRequestDto loginRequestDto) { //TODO: ๋‚˜์ค‘์— ์—†์•จ ์ฝ”๋“œ - String accessToken = loginRequestDto.kakaoCode(); + String accessToken = loginRequestDto.getKakaoCode(); SocialPlatform socialPlatform = KAKAO; SocialService socialService = socialServiceProvider.getSocialService(socialPlatform); @@ -46,9 +47,9 @@ public void logout(final Long userId) { } public TokenPair refresh(final ReissueTokenRequestDto reissueTokenRequestDto) { - checkIsValidToken(reissueTokenRequestDto.refreshToken()); + checkIsValidToken(reissueTokenRequestDto.getRefreshToken()); - final String userId = jwtService.getUserIdInToken(reissueTokenRequestDto.refreshToken()); + final String userId = jwtService.getUserIdInToken(reissueTokenRequestDto.getRefreshToken()); userValidator.checkIsExistUser(Long.parseLong(userId)); final TokenPair tokenPair = jwtService.generateTokenPair(userId); @@ -83,6 +84,6 @@ private LoginResponseDto createOldUserResponse(User user) { private LoginResponseDto createLoginResponse(User user, boolean isNewUser) { TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.getId())); - return new LoginResponseDto(tokenPair.accessToken(), tokenPair.refreshToken(), isNewUser, user.getId()); + return AuthDtoConverter.toLoginDto(tokenPair, user, isNewUser); } } diff --git a/src/main/java/server/poptato/auth/converter/AuthDtoConverter.java b/src/main/java/server/poptato/auth/converter/AuthDtoConverter.java new file mode 100644 index 0000000..7c249b6 --- /dev/null +++ b/src/main/java/server/poptato/auth/converter/AuthDtoConverter.java @@ -0,0 +1,21 @@ +package server.poptato.auth.converter; + +import org.springframework.stereotype.Component; +import server.poptato.auth.application.response.LoginResponseDto; +import server.poptato.global.dto.TokenPair; +import server.poptato.user.domain.entity.User; + +@Component +public class AuthDtoConverter { + public static LoginResponseDto toLoginDto(TokenPair tokenPair, User user, boolean isNewUser ){ + return LoginResponseDto.builder() + .accessToken(tokenPair.accessToken()) + .refreshToken(tokenPair.refreshToken()) + .isNewUser(isNewUser) + .userId(user.getId()) + .build(); + } + + private AuthDtoConverter() { + } +} diff --git a/src/main/java/server/poptato/auth/exception/AuthException.java b/src/main/java/server/poptato/auth/exception/AuthException.java index 920e6dc..698f4cf 100644 --- a/src/main/java/server/poptato/auth/exception/AuthException.java +++ b/src/main/java/server/poptato/auth/exception/AuthException.java @@ -4,7 +4,7 @@ import server.poptato.global.response.status.ResponseStatus; @Getter -public class AuthException extends RuntimeException{ +public class AuthException extends RuntimeException { private final ResponseStatus exceptionStatus; public AuthException(ResponseStatus exceptionStatus) { diff --git a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java index b7ebc72..12a8cac 100644 --- a/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java +++ b/src/main/java/server/poptato/auth/exception/handler/AuthExceptionHandler.java @@ -16,7 +16,7 @@ public class AuthExceptionHandler { @ResponseStatus(HttpStatus.UNAUTHORIZED) @ExceptionHandler(AuthException.class) public BaseErrorResponse handleAuthException(AuthException e) { - log.error("[AuthException: handle_UserException ํ˜ธ์ถœ]", e); + log.error("[AuthException: handle_AuthException ํ˜ธ์ถœ]", e); return new BaseErrorResponse(e.getExceptionStatus(), e.getMessage()); } } diff --git a/src/main/java/server/poptato/todo/api/TodoBacklogController.java b/src/main/java/server/poptato/todo/api/TodoBacklogController.java new file mode 100644 index 0000000..79fc81e --- /dev/null +++ b/src/main/java/server/poptato/todo/api/TodoBacklogController.java @@ -0,0 +1,55 @@ +package server.poptato.todo.api; + +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import server.poptato.global.response.BaseResponse; +import server.poptato.todo.api.request.BacklogCreateRequestDto; +import server.poptato.todo.application.TodoBacklogService; +import server.poptato.todo.application.response.BacklogCreateResponseDto; +import server.poptato.todo.application.response.BacklogListResponseDto; +import server.poptato.todo.application.response.PaginatedHistoryResponseDto; +import server.poptato.todo.application.response.PaginatedYesterdayResponseDto; +import server.poptato.user.resolver.UserId; + +@RestController +@RequiredArgsConstructor +public class TodoBacklogController { + private final TodoBacklogService todoBacklogService; + + @GetMapping("/backlogs") + public BaseResponse getBacklogList( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "8") int size) { + BacklogListResponseDto backlogListResponse = todoBacklogService.getBacklogList(userId, page, size); + return new BaseResponse<>(backlogListResponse); + } + + @PostMapping("/backlog") + public BaseResponse generateBacklog(@UserId Long userId, + @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto) { + BacklogCreateResponseDto response = todoBacklogService.generateBacklog(userId, backlogCreateRequestDto.getContent()); + return new BaseResponse<>(response); + } + + @GetMapping("/histories") + public BaseResponse getHistories( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "15") int size) { + PaginatedHistoryResponseDto response = todoBacklogService.getHistories(userId, page, size); + + return new BaseResponse<>(response); + } + + @GetMapping("/yesterdays") + public BaseResponse getYesterdays( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "15") int size) { + + PaginatedYesterdayResponseDto response = todoBacklogService.getYesterdays(userId, page, size); + return new BaseResponse<>(response); + } +} diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index acde507..eec02a5 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -4,26 +4,18 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import server.poptato.global.response.BaseResponse; -import server.poptato.todo.api.request.*; +import server.poptato.todo.api.request.ContentUpdateRequestDto; +import server.poptato.todo.api.request.DeadlineUpdateRequestDto; +import server.poptato.todo.api.request.DragAndDropRequestDto; +import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoService; -import server.poptato.todo.application.response.*; +import server.poptato.todo.application.response.TodoDetailResponseDto; import server.poptato.user.resolver.UserId; -import java.time.LocalDate; - @RestController @RequiredArgsConstructor public class TodoController { private final TodoService todoService; - @GetMapping("/todays") - public BaseResponse getTodayList( - @UserId Long userId, - @RequestParam(value = "page", defaultValue = "0") int page, - @RequestParam(value = "size", defaultValue = "8") int size){ - LocalDate todayDate = LocalDate.now(); - TodayListResponseDto todayListResponse = todoService.getTodayList(userId, page, size, todayDate); - return new BaseResponse<>(todayListResponse); - } @DeleteMapping("/todo/{todoId}") public BaseResponse deleteTodoById(@UserId Long userId, @PathVariable Long todoId) { @@ -31,61 +23,30 @@ public BaseResponse deleteTodoById(@UserId Long userId, @PathVariable Long todoI return new BaseResponse<>(); } - @GetMapping("/backlogs") - public BaseResponse getBacklogList( - @UserId Long userId, - @RequestParam(value = "page", defaultValue = "0") int page, - @RequestParam(value = "size", defaultValue = "8") int size){ - BacklogListResponseDto backlogListResponse = todoService.getBacklogList(userId, page, size); - return new BaseResponse<>(backlogListResponse); - } - @PatchMapping("/swipe") public BaseResponse swipe(@UserId Long userId, - @Validated @RequestBody SwipeRequestDto swipeRequestDto){ + @Validated @RequestBody SwipeRequestDto swipeRequestDto) { todoService.swipe(userId, swipeRequestDto.getTodoId()); return new BaseResponse<>(); } + @PatchMapping("/todo/{todoId}/bookmark") public BaseResponse toggleIsBookmark(@UserId Long userId, @PathVariable Long todoId) { todoService.toggleIsBookmark(userId, todoId); return new BaseResponse<>(); } - @GetMapping("/histories") - public BaseResponse getHistories( - @UserId Long userId, - @RequestParam(value = "page", defaultValue = "0") int page, - @RequestParam(value = "size", defaultValue = "15") int size) { - PaginatedHistoryResponseDto response = todoService.getHistories(userId, page, size); - return new BaseResponse<>(response); - } @PatchMapping("/dragAndDrop") public BaseResponse dragAndDrop(@UserId Long userId, - @Validated @RequestBody DragAndDropRequestDto dragAndDropRequestDto){ + @Validated @RequestBody DragAndDropRequestDto dragAndDropRequestDto) { todoService.dragAndDrop(userId, dragAndDropRequestDto); return new BaseResponse<>(); } - @GetMapping("/yesterdays") - public BaseResponse getYesterdays( - @UserId Long userId, - @RequestParam(value = "page", defaultValue = "0") int page, - @RequestParam(value = "size", defaultValue = "15") int size) { - PaginatedYesterdayResponseDto response = todoService.getYesterdays(userId, page, size); - return new BaseResponse<>(response); - } - - @PostMapping("/backlog") - public BaseResponse generateBacklog(@UserId Long userId, - @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto){ - BacklogCreateResponseDto response = todoService.generateBacklog(userId, backlogCreateRequestDto.getContent()); - return new BaseResponse<>(response); - } @GetMapping("/todo/{todoId}") public BaseResponse getTodoInfo(@UserId Long userId, - @PathVariable Long todoId){ + @PathVariable Long todoId) { TodoDetailResponseDto response = todoService.getTodoInfo(userId, todoId); return new BaseResponse<>(response); } @@ -93,22 +54,22 @@ public BaseResponse getTodoInfo(@UserId Long userId, @PatchMapping("/todo/{todoId}/deadline") public BaseResponse updateDeadline(@UserId Long userId, @PathVariable Long todoId, - @Validated @RequestBody DeadlineUpdateRequestDto requestDto){ + @Validated @RequestBody DeadlineUpdateRequestDto requestDto) { todoService.updateDeadline(userId, todoId, requestDto.getDeadline()); return new BaseResponse<>(); } @PatchMapping("/todo/{todoId}/content") public BaseResponse updateContent(@UserId Long userId, - @PathVariable Long todoId, - @Validated @RequestBody ContentUpdateRequestDto requestDto){ + @PathVariable Long todoId, + @Validated @RequestBody ContentUpdateRequestDto requestDto) { todoService.updateContent(userId, todoId, requestDto.getContent()); return new BaseResponse<>(); } @PatchMapping("/todo/{todoId}/achieve") public BaseResponse updateIsCompleted(@UserId Long userId, - @PathVariable Long todoId){ + @PathVariable Long todoId) { todoService.updateIsCompleted(userId, todoId); return new BaseResponse<>(); } diff --git a/src/main/java/server/poptato/todo/api/TodoTodayController.java b/src/main/java/server/poptato/todo/api/TodoTodayController.java new file mode 100644 index 0000000..c6eed6d --- /dev/null +++ b/src/main/java/server/poptato/todo/api/TodoTodayController.java @@ -0,0 +1,28 @@ +package server.poptato.todo.api; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import server.poptato.global.response.BaseResponse; +import server.poptato.todo.application.TodoTodayService; +import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.user.resolver.UserId; + +import java.time.LocalDate; + +@RestController +@RequiredArgsConstructor +public class TodoTodayController { + private final TodoTodayService todoTodayService; + + @GetMapping("/todays") + public BaseResponse getTodayList( + @UserId Long userId, + @RequestParam(value = "page", defaultValue = "0") int page, + @RequestParam(value = "size", defaultValue = "8") int size){ + LocalDate todayDate = LocalDate.now(); + TodayListResponseDto todayListResponse = todoTodayService.getTodayList(userId, page, size, todayDate); + return new BaseResponse<>(todayListResponse); + } +} diff --git a/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java b/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java index 31bca09..44466e1 100644 --- a/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java +++ b/src/main/java/server/poptato/todo/api/request/BacklogCreateRequestDto.java @@ -6,10 +6,10 @@ import lombok.Getter; import lombok.NoArgsConstructor; -@Builder @Getter -@AllArgsConstructor @NoArgsConstructor +@Builder +@AllArgsConstructor public class BacklogCreateRequestDto { @NotBlank(message = "๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ๋‚ด์šฉ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") String content; diff --git a/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java b/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java index 519daa5..fbe318f 100644 --- a/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java +++ b/src/main/java/server/poptato/todo/api/request/SwipeRequestDto.java @@ -7,9 +7,9 @@ import lombok.NoArgsConstructor; @Getter -@Builder -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor +@Builder public class SwipeRequestDto { @NotNull(message = "ํ• ์ผ ID๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") Long todoId; diff --git a/src/main/java/server/poptato/todo/application/TodoBacklogService.java b/src/main/java/server/poptato/todo/application/TodoBacklogService.java new file mode 100644 index 0000000..f8adf7a --- /dev/null +++ b/src/main/java/server/poptato/todo/application/TodoBacklogService.java @@ -0,0 +1,84 @@ +package server.poptato.todo.application; + +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.todo.application.response.*; +import server.poptato.todo.converter.TodoDtoConverter; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; +import server.poptato.user.validator.UserValidator; + +import java.util.List; +import java.util.stream.Collectors; + +@Transactional +@RequiredArgsConstructor +@Service +public class TodoBacklogService { + private final TodoRepository todoRepository; + private final UserValidator userValidator; + + public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { + userValidator.checkIsExistUser(userId); + + Page backlogs = getBacklogsPagination(userId, page, size); + + return TodoDtoConverter.toBacklogListDto(backlogs); + } + + public BacklogCreateResponseDto generateBacklog(Long userId, String content) { + userValidator.checkIsExistUser(userId); + Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); + Todo backlog = Todo.createBacklog(userId, content, maxBacklogOrder + 1); + Todo newBacklog = todoRepository.save(backlog); + return BacklogCreateResponseDto.builder() + .todoId(newBacklog.getId()) + .build(); + } + public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { + userValidator.checkIsExistUser(userId); + Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "completedDateTime")); + + // ์œ ์ € ์•„์ด๋””์™€ completedDate๊ฐ€ null์ด ์•„๋‹Œ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด + Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); + + List histories = todosPage.getContent().stream() + .map(todo -> new HistoryResponseDto( + todo.getId(), + todo.getContent(), + todo.getCompletedDateTime().toLocalDate() // ๋‚ ์งœ๋ฅผ LocalDate๋กœ ๋ณ€ํ™˜ + )) + .collect(Collectors.toList()); + + return new PaginatedHistoryResponseDto(histories, todosPage.getTotalPages()); + } + + public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int size) { + Pageable pageable = PageRequest.of(page, size); + Page todosPage = todoRepository.findByUserIdAndTypeAndTodayStatus(userId, Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); + + List yesterdays = todosPage.getContent().stream() + .map(todo -> new YesterdayResponseDto( + todo.getId(), + todo.getContent() + )) + .collect(Collectors.toList()); + + return new PaginatedYesterdayResponseDto(yesterdays, todosPage.getTotalPages()); + } + private Page getBacklogsPagination(Long userId, int page, int size) { + PageRequest pageRequest = PageRequest.of(page, size); + List types = List.of(Type.BACKLOG, Type.YESTERDAY); + + Page backlogs = todoRepository.findBacklogsByUserId(userId, types, pageRequest); + + return backlogs; + } +} diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 49a8f7d..d782872 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -1,28 +1,21 @@ package server.poptato.todo.application; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import server.poptato.todo.api.request.DragAndDropRequestDto; -import server.poptato.todo.application.response.*; +import server.poptato.todo.application.response.TodoDetailResponseDto; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; import server.poptato.todo.exception.TodoException; import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; -import server.poptato.user.domain.repository.UserRepository; -import server.poptato.user.exception.UserException; -import server.poptato.user.exception.errorcode.UserExceptionErrorCode; +import server.poptato.user.validator.UserValidator; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @@ -30,56 +23,12 @@ @RequiredArgsConstructor @Service public class TodoService { - private final UserRepository userRepository; private final TodoRepository todoRepository; - public TodayListResponseDto getTodayList(long userId, int page, int size, LocalDate todayDate) { - checkIsExistUser(userId); + private final UserValidator userValidator; - List todays = new ArrayList<>(); - - // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ ๋จผ์ € ์กฐํšŒ - List incompleteTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( - userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); - todays.addAll(incompleteTodos); - - // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ - List completedTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( - userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); - todays.addAll(completedTodos); - - // ์ „์ฒด ๋ฆฌ์ŠคํŠธ์—์„œ ํŽ˜์ด์ง• - int start = (page) * size; - int end = Math.min(start + size, todays.size()); - List todaySubList; - if (start >= end) todaySubList = new ArrayList<>(); - else todaySubList = todays.subList(start, end); - - int totalPageCount = (int) Math.ceil((double) todays.size() / size); - - return TodayListResponseDto.builder() - .date(todayDate) - .todays(todaySubList) - .totalPageCount(totalPageCount) - .build(); - } - - public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { - checkIsExistUser(userId); - - PageRequest pageRequest = PageRequest.of(page, size); - List types = List.of(Type.BACKLOG, Type.YESTERDAY); - - Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderDesc(userId, types, pageRequest); - - return BacklogListResponseDto.builder() - .totalCount(backlogs.getTotalElements()) - .backlogs(backlogs.getContent()) - .totalPageCount(backlogs.getTotalPages()) - .build(); - } public void deleteTodoById(Long userId, Long todoId) { - checkIsExistUser(userId); + userValidator.checkIsExistUser(userId); Todo todo = todoRepository.findByIdAndUserId(todoId, userId) .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); @@ -95,60 +44,80 @@ public void toggleIsBookmark(Long userId, Long todoId) { todo.toggleBookmark(); } - public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { - checkIsExistUser(userId); - Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "completedDateTime")); - // ์œ ์ € ์•„์ด๋””์™€ completedDate๊ฐ€ null์ด ์•„๋‹Œ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด - Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); - - List histories = todosPage.getContent().stream() - .map(todo -> new HistoryResponseDto( - todo.getId(), - todo.getContent(), - todo.getCompletedDateTime().toLocalDate() // ๋‚ ์งœ๋ฅผ LocalDate๋กœ ๋ณ€ํ™˜ - )) - .collect(Collectors.toList()); - - return new PaginatedHistoryResponseDto(histories, todosPage.getTotalPages()); - } public void swipe(Long userId, Long todoId) { - checkIsExistUser(userId); + userValidator.checkIsExistUser(userId); Todo todo = todoRepository.findById(todoId) .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if(todo.getUserId()!=userId) + if (todo.getUserId() != userId) throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - if(todo.getType().equals(Type.TODAY)){ + if (todo.getType().equals(Type.TODAY)) { swipeTodayToBacklog(todo); - } - else if(todo.getType().equals(Type.YESTERDAY) || todo.getType().equals(Type.BACKLOG)){ + } else if (todo.getType().equals(Type.YESTERDAY) || todo.getType().equals(Type.BACKLOG)) { swipeBacklogToToday(todo); } } + public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { - checkIsExistUser(userId); + userValidator.checkIsExistUser(userId); List todos = getTodos(requestDto); - checkIsValidToDragAndDrop(userId,todos,requestDto); + checkIsValidToDragAndDrop(userId, todos, requestDto); if (requestDto.getType().equals(Type.TODAY)) { reassignTodayOrder(todos, requestDto.getTodoIds()); } else if (requestDto.getType().equals(Type.BACKLOG)) { reassignBacklogOrder(todos, requestDto.getTodoIds()); } } - public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int size) { - Pageable pageable = PageRequest.of(page, size); - Page todosPage = todoRepository.findByUserIdAndTypeAndTodayStatus(userId, Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); - List yesterdays = todosPage.getContent().stream() - .map(todo -> new YesterdayResponseDto( - todo.getId(), - todo.getContent() - )) - .collect(Collectors.toList()); + public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) { + userValidator.checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if (findTodo.getUserId() != userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - return new PaginatedYesterdayResponseDto(yesterdays, todosPage.getTotalPages()); + return TodoDetailResponseDto.builder() + .content(findTodo.getContent()) + .isBookmark(findTodo.isBookmark()) + .deadline(findTodo.getDeadline()) + .build(); + } + + public void updateDeadline(Long userId, Long todoId, LocalDate deadline) { + userValidator.checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if (findTodo.getUserId() != userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + findTodo.updateDeadline(deadline); + //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด + todoRepository.save(findTodo); + } + + public void updateContent(Long userId, Long todoId, String content) { + userValidator.checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if (findTodo.getUserId() != userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + findTodo.updateContent(content); + //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด + todoRepository.save(findTodo); + } + + public void updateIsCompleted(Long userId, Long todoId) { + userValidator.checkIsExistUser(userId); + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + checkIsValidToUpdateIsCompleted(userId, findTodo); + + if (findTodo.getTodayStatus().equals(TodayStatus.COMPLETED)) { + findTodo.updateTodayStatusToInComplete(); + } else { + findTodo.updateTodayStatusToCompleted(); + } } private void swipeBacklogToToday(Todo todo) { @@ -157,7 +126,7 @@ private void swipeBacklogToToday(Todo todo) { } private void swipeTodayToBacklog(Todo todo) { - if(todo.getTodayStatus().equals(TodayStatus.COMPLETED)) + if (todo.getTodayStatus().equals(TodayStatus.COMPLETED)) throw new TodoException(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO); Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(todo.getUserId()); todo.changeToBacklog(maxBacklogOrder); @@ -165,7 +134,7 @@ private void swipeTodayToBacklog(Todo todo) { private List getTodos(DragAndDropRequestDto requestDto) { List todos = new ArrayList<>(); - for(Long todoId: requestDto.getTodoIds()){ + for (Long todoId : requestDto.getTodoIds()) { todos.add(todoRepository.findById(todoId).get()); } return todos; @@ -212,77 +181,14 @@ private void reassignBacklogOrder(List todos, List todoIds) { } } - private void checkIsExistUser(Long userId) { - userRepository.findById(userId).orElseThrow(() - -> new UserException(UserExceptionErrorCode.USER_NOT_EXIST)); - } - - - public BacklogCreateResponseDto generateBacklog(Long userId, String content) { - checkIsExistUser(userId); - Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); - Todo backlog = Todo.createBacklog(userId, content, maxBacklogOrder+1); - Todo newBacklog = todoRepository.save(backlog); - return BacklogCreateResponseDto.builder() - .todoId(newBacklog.getId()) - .build(); - } - - public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) { - checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if(findTodo.getUserId()!=userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - - return TodoDetailResponseDto.builder() - .content(findTodo.getContent()) - .isBookmark(findTodo.isBookmark()) - .deadline(findTodo.getDeadline()) - .build(); - } - - public void updateDeadline(Long userId, Long todoId, LocalDate deadline) { - checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if(findTodo.getUserId()!=userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - findTodo.updateDeadline(deadline); - //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด - todoRepository.save(findTodo); - } - - public void updateContent(Long userId, Long todoId, String content) { - checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if(findTodo.getUserId()!=userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - findTodo.updateContent(content); - //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด - todoRepository.save(findTodo); - } - - public void updateIsCompleted(Long userId, Long todoId) { - checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - checkIsValidToUpdateIsCompleted(userId,findTodo); - if(findTodo.getTodayStatus().equals(TodayStatus.COMPLETED)){ - findTodo.updateTodayStatusToInComplete(); - }else { - findTodo.updateTodayStatusToCompleted(); - } - } private void checkIsValidToUpdateIsCompleted(Long userId, Todo todo) { - if(todo.getUserId()!=userId) + if (todo.getUserId() != userId) throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - if(todo.getType().equals(Type.BACKLOG)) + if (todo.getType().equals(Type.BACKLOG)) throw new TodoException(TodoExceptionErrorCode.BACKLOG_CANT_COMPLETE); - if(todo.getType().equals(Type.YESTERDAY) && todo.getTodayStatus().equals(TodayStatus.COMPLETED)) + if (todo.getType().equals(Type.YESTERDAY) && todo.getTodayStatus().equals(TodayStatus.COMPLETED)) throw new TodoException(TodoExceptionErrorCode.YESTERDAY_CANT_COMPLETE); } } diff --git a/src/main/java/server/poptato/todo/application/TodoTodayService.java b/src/main/java/server/poptato/todo/application/TodoTodayService.java new file mode 100644 index 0000000..8ac3a31 --- /dev/null +++ b/src/main/java/server/poptato/todo/application/TodoTodayService.java @@ -0,0 +1,62 @@ +package server.poptato.todo.application; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.converter.TodoDtoConverter; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; +import server.poptato.user.validator.UserValidator; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@Transactional +@RequiredArgsConstructor +@Service +public class TodoTodayService { + private final TodoRepository todoRepository; + private final UserValidator userValidator; + + public TodayListResponseDto getTodayList(long userId, int page, int size, LocalDate todayDate) { + userValidator.checkIsExistUser(userId); + + List todays = getAllTodays(userId, todayDate); + List todaySubList = getTodayPagination(todays, page, size); + int totalPageCount = (int) Math.ceil((double) todays.size() / size); + + return TodoDtoConverter.toTodayListDto(todayDate, todaySubList, totalPageCount); + } + + private List getTodayPagination(List todays, int page, int size) { + List todaySubList; + + int start = (page) * size; + int end = Math.min(start + size, todays.size()); + + if (isThereNoToday(start, end)) return new ArrayList<>(); + + todaySubList = todays.subList(start, end); + return todaySubList; + } + + private List getAllTodays(long userId, LocalDate todayDate) { + List todays = new ArrayList<>(); + + List incompleteTodos = todoRepository.findIncompleteTodays(userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); + List completedTodos = todoRepository.findCompletedTodays(userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); + + todays.addAll(incompleteTodos); + todays.addAll(completedTodos); + + return todays; + } + + private boolean isThereNoToday(int start, int end) { + return start >= end; + } +} diff --git a/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java b/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java index 1f7568a..cda6ba6 100644 --- a/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/BacklogCreateResponseDto.java @@ -1,12 +1,7 @@ package server.poptato.todo.application.response; -import lombok.AllArgsConstructor; import lombok.Builder; -import lombok.Getter; -@Getter -@AllArgsConstructor @Builder -public class BacklogCreateResponseDto { - Long todoId; -} +public record BacklogCreateResponseDto(Long todoId){ +} \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java b/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java index cd48b18..9e9e595 100644 --- a/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/HistoryResponseDto.java @@ -1,15 +1,8 @@ package server.poptato.todo.application.response; -import lombok.AllArgsConstructor; -import lombok.Getter; - +import lombok.Builder; import java.time.LocalDate; - -@Getter -@AllArgsConstructor -public class HistoryResponseDto { - private Long todoId; - private String content; - private LocalDate date; +@Builder +public record HistoryResponseDto(Long todoId, String content,LocalDate date) { } \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java b/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java index ed5585b..ffaca68 100644 --- a/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java @@ -1,13 +1,9 @@ package server.poptato.todo.application.response; -import lombok.AllArgsConstructor; -import lombok.Getter; +import lombok.Builder; import java.util.List; -@Getter -@AllArgsConstructor -public class PaginatedHistoryResponseDto { - private List histories; - private int totalPageCount; +@Builder +public record PaginatedHistoryResponseDto(List histories, int totalPageCount) { } \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java b/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java index 9c5f9c7..7cc8ea0 100644 --- a/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java @@ -1,15 +1,9 @@ package server.poptato.todo.application.response; -import lombok.AllArgsConstructor; import lombok.Builder; -import lombok.Getter; import java.util.List; -@Getter @Builder -@AllArgsConstructor -public class PaginatedYesterdayResponseDto { - private List yesterdays; - private int totalPageCount; +public record PaginatedYesterdayResponseDto(List yesterdays,int totalPageCount) { } diff --git a/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java index 9d6ca4a..7061de1 100644 --- a/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/TodayResponseDto.java @@ -23,11 +23,14 @@ public TodayResponseDto(Todo todo) { this.isBookmark = todo.isBookmark(); this.deadline = todo.getDeadline(); - if (todo.getDeadline() != null && todo.getTodayDate() != null) { + if (hasDeadline(todo)) { this.dDay = (int) ChronoUnit.DAYS.between(todo.getTodayDate(), todo.getDeadline()); - } else { - // ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ NULL - this.dDay = null; + return; } + this.dDay = null; + } + + private boolean hasDeadline(Todo todo) { + return todo.getDeadline() != null && todo.getTodayDate() != null; } } diff --git a/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java b/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java index b68549a..9b0ceb9 100644 --- a/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/TodoDetailResponseDto.java @@ -1,16 +1,9 @@ package server.poptato.todo.application.response; -import lombok.AllArgsConstructor; import lombok.Builder; -import lombok.Getter; import java.time.LocalDate; -@Getter @Builder -@AllArgsConstructor -public class TodoDetailResponseDto { - String content; - LocalDate deadline; - Boolean isBookmark; +public record TodoDetailResponseDto(String content, LocalDate deadline, Boolean isBookmark) { } diff --git a/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java b/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java index 4d466d7..3adcd86 100644 --- a/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/YesterdayResponseDto.java @@ -1,13 +1,7 @@ package server.poptato.todo.application.response; -import lombok.AllArgsConstructor; import lombok.Builder; -import lombok.Getter; -@Getter @Builder -@AllArgsConstructor -public class YesterdayResponseDto { - private Long todoId; - private String content; +public record YesterdayResponseDto(Long todoId, String content) { } \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java b/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java new file mode 100644 index 0000000..149b88f --- /dev/null +++ b/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java @@ -0,0 +1,32 @@ +package server.poptato.todo.converter; + +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Component; +import server.poptato.todo.application.response.BacklogListResponseDto; +import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.domain.entity.Todo; + +import java.time.LocalDate; +import java.util.List; + +@Component +public class TodoDtoConverter { + public static TodayListResponseDto toTodayListDto(LocalDate todayDate, List todaySubList, int totalPageCount) { + return TodayListResponseDto.builder() + .date(todayDate) + .todays(todaySubList) + .totalPageCount(totalPageCount) + .build(); + } + + public static BacklogListResponseDto toBacklogListDto(Page backlogs) { + return BacklogListResponseDto.builder() + .totalCount(backlogs.getTotalElements()) + .backlogs(backlogs.getContent()) + .totalPageCount(backlogs.getTotalPages()) + .build(); + } + + private TodoDtoConverter() { + } +} diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index d827cec..c3fc667 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -29,4 +29,18 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime Page findByUserIdAndTypeAndTodayStatus(Long userId, Type type, TodayStatus todayStatus, Pageable pageable); List findByTypeAndTodayStatus(Type today, TodayStatus incomplete); Integer findMinBacklogOrderByUserIdOrZero(Long userId); + + default List findIncompleteTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus){ + return findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( + userId, type, todayDate, todayStatus); + } + default List findCompletedTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus){ + return findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + userId, type, todayDate, todayStatus); + } + + default Page findBacklogsByUserId(Long userId, List types, Pageable pageable){ + return findByUserIdAndTypeInOrderByBacklogOrderDesc( + userId, types, pageable); + } } diff --git a/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java b/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java deleted file mode 100644 index 442f590..0000000 --- a/src/main/java/server/poptato/user/api/request/UserChangeNameRequestDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package server.poptato.user.api.request; - -import jakarta.validation.constraints.NotBlank; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Builder -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class UserChangeNameRequestDto { - @NotBlank(message = "์ด๋ฆ„์€ ๋นˆ ๊ฐ’์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.") - String newName; -} diff --git a/src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java b/src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java index 2672cd0..c7cff0a 100644 --- a/src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java +++ b/src/main/java/server/poptato/user/application/response/UserInfoResponseDto.java @@ -1,11 +1,7 @@ package server.poptato.user.application.response; -import lombok.AllArgsConstructor; -import lombok.Getter; +import lombok.Builder; -@Getter -@AllArgsConstructor -public class UserInfoResponseDto { - private String name; - private String email; +@Builder +public record UserInfoResponseDto(String name, String email){ } diff --git a/src/main/java/server/poptato/user/application/service/UserService.java b/src/main/java/server/poptato/user/application/service/UserService.java index 8190456..a04bfa5 100644 --- a/src/main/java/server/poptato/user/application/service/UserService.java +++ b/src/main/java/server/poptato/user/application/service/UserService.java @@ -6,6 +6,7 @@ import server.poptato.auth.application.service.JwtService; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.user.application.response.UserInfoResponseDto; +import server.poptato.user.converter.UserDtoConverter; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.validator.UserValidator; @@ -29,6 +30,6 @@ public void deleteUser(Long userId) { @Transactional(readOnly = true) public UserInfoResponseDto getUserInfo(Long userId) { User user = userValidator.checkIsExistAndReturnUser(userId); - return new UserInfoResponseDto(user.getName(), user.getEmail()); + return UserDtoConverter.toUserInfoDto(user); } } diff --git a/src/main/java/server/poptato/user/converter/UserDtoConverter.java b/src/main/java/server/poptato/user/converter/UserDtoConverter.java new file mode 100644 index 0000000..495ae67 --- /dev/null +++ b/src/main/java/server/poptato/user/converter/UserDtoConverter.java @@ -0,0 +1,20 @@ +package server.poptato.user.converter; + +import org.springframework.stereotype.Component; +import server.poptato.user.application.response.UserInfoResponseDto; +import server.poptato.user.domain.entity.User; + +@Component +public class UserDtoConverter { + + public static UserInfoResponseDto toUserInfoDto(User user) { + return UserInfoResponseDto.builder() + .name(user.getName()) + .email(user.getEmail()) + .build(); + + } + + private UserDtoConverter() { + } +} diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index d923a2c..5d56d8e 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -16,7 +16,9 @@ import server.poptato.todo.api.request.BacklogCreateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; +import server.poptato.todo.application.TodoBacklogService; import server.poptato.todo.application.TodoService; +import server.poptato.todo.application.TodoTodayService; import server.poptato.todo.exception.TodoException; import server.poptato.user.application.service.UserService; @@ -42,6 +44,10 @@ public class TodoControllerTest { @MockBean private TodoService todoService; @MockBean + private TodoBacklogService todoBacklogService; + @MockBean + private TodoTodayService todoTodayService; + @MockBean private UserService userService; @Autowired private JwtService jwtService; @@ -84,7 +90,7 @@ public class TodoControllerTest { .andDo(print()); LocalDate todayDate = LocalDate.now(); - verify(todoService).getTodayList(1,0, 8,todayDate); + verify(todoTodayService).getTodayList(1,0, 8,todayDate); } @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @@ -150,7 +156,7 @@ public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ .andExpect(status().isOk()) .andDo(print()); - verify(todoService).getBacklogList(1L,0, 8); + verify(todoBacklogService).getBacklogList(1L,0, 8); } @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @@ -232,7 +238,7 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andDo(print()); // ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋œ ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ™•์ธ (userId = 1L, page = 0, size = 15) - verify(todoService).getHistories(1L, 0, 15); + verify(todoBacklogService).getHistories(1L, 0, 15); } @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") From 64a035a4ad9068dfc9383c868203147cb1bce92d Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 29 Oct 2024 19:23:28 +0900 Subject: [PATCH 160/177] =?UTF-8?q?refactor:=20Todo=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8,=20Policy=20=EB=8F=84=EB=A9=94=EC=9D=B8=20API=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/policy/api/PolicyController.java | 7 +- .../policy/application/PolicyService.java | 8 +- .../response/PolicyResponseDto.java | 9 ++ .../policy/converter/PolicyDtoConverter.java | 22 +++ .../todo/api/TodoBacklogController.java | 8 +- .../poptato/todo/api/TodoController.java | 12 +- .../poptato/todo/api/TodoTodayController.java | 4 +- .../todo/application/TodoBacklogService.java | 53 +++---- .../poptato/todo/application/TodoService.java | 133 +++++++++--------- .../response/PaginatedHistoryResponseDto.java | 24 +++- .../PaginatedYesterdayResponseDto.java | 21 ++- .../todo/converter/TodoDtoConverter.java | 31 +++- .../poptato/todo/domain/entity/Todo.java | 3 +- .../domain/repository/TodoRepository.java | 6 +- .../infra/repository/JpaTodoRepository.java | 4 +- .../user/converter/UserDtoConverter.java | 1 - 16 files changed, 222 insertions(+), 124 deletions(-) create mode 100644 src/main/java/server/poptato/policy/application/response/PolicyResponseDto.java create mode 100644 src/main/java/server/poptato/policy/converter/PolicyDtoConverter.java diff --git a/src/main/java/server/poptato/policy/api/PolicyController.java b/src/main/java/server/poptato/policy/api/PolicyController.java index 2138409..6519f73 100644 --- a/src/main/java/server/poptato/policy/api/PolicyController.java +++ b/src/main/java/server/poptato/policy/api/PolicyController.java @@ -5,6 +5,7 @@ import org.springframework.web.bind.annotation.RestController; import server.poptato.global.response.BaseResponse; import server.poptato.policy.application.PolicyService; +import server.poptato.policy.application.response.PolicyResponseDto; import server.poptato.policy.domain.entity.Policy; @RestController @@ -13,8 +14,8 @@ public class PolicyController { private final PolicyService policyService; @GetMapping("/policy") - public BaseResponse getTodayList(){ - Policy policy = policyService.getPrivacyPolicy(); - return new BaseResponse<>(policy); + public BaseResponse getPolicy(){ + PolicyResponseDto response = policyService.getPrivacyPolicy(); + return new BaseResponse<>(response); } } diff --git a/src/main/java/server/poptato/policy/application/PolicyService.java b/src/main/java/server/poptato/policy/application/PolicyService.java index b4bf83d..754b783 100644 --- a/src/main/java/server/poptato/policy/application/PolicyService.java +++ b/src/main/java/server/poptato/policy/application/PolicyService.java @@ -2,6 +2,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import server.poptato.policy.application.response.PolicyResponseDto; +import server.poptato.policy.converter.PolicyDtoConverter; import server.poptato.policy.domain.entity.Policy; import server.poptato.policy.domain.repository.PolicyRepository; import server.poptato.policy.exception.PolicyException; @@ -12,8 +14,10 @@ @RequiredArgsConstructor public class PolicyService { private final PolicyRepository policyRepository; - public Policy getPrivacyPolicy() { - return policyRepository.findTopByOrderByCreatedAtDesc() + + public PolicyResponseDto getPrivacyPolicy() { + Policy policy = policyRepository.findTopByOrderByCreatedAtDesc() .orElseThrow(() -> new PolicyException(POLICY_NOT_FOUND_EXCEPTION)); + return PolicyDtoConverter.toPolicyDto(policy); } } diff --git a/src/main/java/server/poptato/policy/application/response/PolicyResponseDto.java b/src/main/java/server/poptato/policy/application/response/PolicyResponseDto.java new file mode 100644 index 0000000..56384e1 --- /dev/null +++ b/src/main/java/server/poptato/policy/application/response/PolicyResponseDto.java @@ -0,0 +1,9 @@ +package server.poptato.policy.application.response; + +import lombok.Builder; + +import java.time.LocalDateTime; + +@Builder +public record PolicyResponseDto(Long id, String content, LocalDateTime createdAt) { +} diff --git a/src/main/java/server/poptato/policy/converter/PolicyDtoConverter.java b/src/main/java/server/poptato/policy/converter/PolicyDtoConverter.java new file mode 100644 index 0000000..7b2601b --- /dev/null +++ b/src/main/java/server/poptato/policy/converter/PolicyDtoConverter.java @@ -0,0 +1,22 @@ +package server.poptato.policy.converter; + +import org.springframework.stereotype.Component; +import server.poptato.policy.application.response.PolicyResponseDto; +import server.poptato.policy.domain.entity.Policy; + +@Component +public class PolicyDtoConverter { + + public static PolicyResponseDto toPolicyDto(Policy policy) { + return PolicyResponseDto.builder() + .id(policy.getId()) + .content(policy.getContent()) + .createdAt(policy.getCreatedAt()) + .build(); + + } + + private PolicyDtoConverter() { + } +} + diff --git a/src/main/java/server/poptato/todo/api/TodoBacklogController.java b/src/main/java/server/poptato/todo/api/TodoBacklogController.java index 79fc81e..dd769c5 100644 --- a/src/main/java/server/poptato/todo/api/TodoBacklogController.java +++ b/src/main/java/server/poptato/todo/api/TodoBacklogController.java @@ -22,14 +22,14 @@ public BaseResponse getBacklogList( @UserId Long userId, @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "8") int size) { - BacklogListResponseDto backlogListResponse = todoBacklogService.getBacklogList(userId, page, size); - return new BaseResponse<>(backlogListResponse); + BacklogListResponseDto response = todoBacklogService.getBacklogList(userId, page, size); + return new BaseResponse<>(response); } @PostMapping("/backlog") public BaseResponse generateBacklog(@UserId Long userId, @Validated @RequestBody BacklogCreateRequestDto backlogCreateRequestDto) { - BacklogCreateResponseDto response = todoBacklogService.generateBacklog(userId, backlogCreateRequestDto.getContent()); + BacklogCreateResponseDto response = todoBacklogService.generateBacklog(userId, backlogCreateRequestDto); return new BaseResponse<>(response); } @@ -39,7 +39,6 @@ public BaseResponse getHistories( @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "15") int size) { PaginatedHistoryResponseDto response = todoBacklogService.getHistories(userId, page, size); - return new BaseResponse<>(response); } @@ -48,7 +47,6 @@ public BaseResponse getYesterdays( @UserId Long userId, @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "15") int size) { - PaginatedYesterdayResponseDto response = todoBacklogService.getYesterdays(userId, page, size); return new BaseResponse<>(response); } diff --git a/src/main/java/server/poptato/todo/api/TodoController.java b/src/main/java/server/poptato/todo/api/TodoController.java index eec02a5..6ba0153 100644 --- a/src/main/java/server/poptato/todo/api/TodoController.java +++ b/src/main/java/server/poptato/todo/api/TodoController.java @@ -18,7 +18,7 @@ public class TodoController { private final TodoService todoService; @DeleteMapping("/todo/{todoId}") - public BaseResponse deleteTodoById(@UserId Long userId, @PathVariable Long todoId) { + public BaseResponse deleteTodo(@UserId Long userId, @PathVariable Long todoId) { todoService.deleteTodoById(userId, todoId); return new BaseResponse<>(); } @@ -26,7 +26,7 @@ public BaseResponse deleteTodoById(@UserId Long userId, @PathVariable Long todoI @PatchMapping("/swipe") public BaseResponse swipe(@UserId Long userId, @Validated @RequestBody SwipeRequestDto swipeRequestDto) { - todoService.swipe(userId, swipeRequestDto.getTodoId()); + todoService.swipe(userId, swipeRequestDto); return new BaseResponse<>(); } @@ -54,16 +54,16 @@ public BaseResponse getTodoInfo(@UserId Long userId, @PatchMapping("/todo/{todoId}/deadline") public BaseResponse updateDeadline(@UserId Long userId, @PathVariable Long todoId, - @Validated @RequestBody DeadlineUpdateRequestDto requestDto) { - todoService.updateDeadline(userId, todoId, requestDto.getDeadline()); + @Validated @RequestBody DeadlineUpdateRequestDto deadlineUpdateRequestDto) { + todoService.updateDeadline(userId, todoId, deadlineUpdateRequestDto); return new BaseResponse<>(); } @PatchMapping("/todo/{todoId}/content") public BaseResponse updateContent(@UserId Long userId, @PathVariable Long todoId, - @Validated @RequestBody ContentUpdateRequestDto requestDto) { - todoService.updateContent(userId, todoId, requestDto.getContent()); + @Validated @RequestBody ContentUpdateRequestDto contentUpdateRequestDto) { + todoService.updateContent(userId, todoId, contentUpdateRequestDto); return new BaseResponse<>(); } diff --git a/src/main/java/server/poptato/todo/api/TodoTodayController.java b/src/main/java/server/poptato/todo/api/TodoTodayController.java index c6eed6d..ae08794 100644 --- a/src/main/java/server/poptato/todo/api/TodoTodayController.java +++ b/src/main/java/server/poptato/todo/api/TodoTodayController.java @@ -22,7 +22,7 @@ public BaseResponse getTodayList( @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "8") int size){ LocalDate todayDate = LocalDate.now(); - TodayListResponseDto todayListResponse = todoTodayService.getTodayList(userId, page, size, todayDate); - return new BaseResponse<>(todayListResponse); + TodayListResponseDto response = todoTodayService.getTodayList(userId, page, size, todayDate); + return new BaseResponse<>(response); } } diff --git a/src/main/java/server/poptato/todo/application/TodoBacklogService.java b/src/main/java/server/poptato/todo/application/TodoBacklogService.java index f8adf7a..30a36c1 100644 --- a/src/main/java/server/poptato/todo/application/TodoBacklogService.java +++ b/src/main/java/server/poptato/todo/application/TodoBacklogService.java @@ -7,7 +7,11 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import server.poptato.todo.application.response.*; +import server.poptato.todo.api.request.BacklogCreateRequestDto; +import server.poptato.todo.application.response.BacklogCreateResponseDto; +import server.poptato.todo.application.response.BacklogListResponseDto; +import server.poptato.todo.application.response.PaginatedHistoryResponseDto; +import server.poptato.todo.application.response.PaginatedYesterdayResponseDto; import server.poptato.todo.converter.TodoDtoConverter; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; @@ -16,7 +20,6 @@ import server.poptato.user.validator.UserValidator; import java.util.List; -import java.util.stream.Collectors; @Transactional @RequiredArgsConstructor @@ -27,52 +30,36 @@ public class TodoBacklogService { public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { userValidator.checkIsExistUser(userId); - Page backlogs = getBacklogsPagination(userId, page, size); - return TodoDtoConverter.toBacklogListDto(backlogs); } - public BacklogCreateResponseDto generateBacklog(Long userId, String content) { + public BacklogCreateResponseDto generateBacklog(Long userId, BacklogCreateRequestDto backlogCreateRequestDto) { userValidator.checkIsExistUser(userId); Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); - Todo backlog = Todo.createBacklog(userId, content, maxBacklogOrder + 1); - Todo newBacklog = todoRepository.save(backlog); - return BacklogCreateResponseDto.builder() - .todoId(newBacklog.getId()) - .build(); + Todo newBacklog = createnewBacklog(userId, backlogCreateRequestDto, maxBacklogOrder); + return TodoDtoConverter.toBacklogCreateDto(newBacklog); } + public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { userValidator.checkIsExistUser(userId); Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "completedDateTime")); - // ์œ ์ € ์•„์ด๋””์™€ completedDate๊ฐ€ null์ด ์•„๋‹Œ ๊ฒƒ๋“ค์„ ๊ฐ€์ ธ์˜ด - Page todosPage = todoRepository.findByUserIdAndCompletedDateTimeIsNotNull(userId, pageable); - - List histories = todosPage.getContent().stream() - .map(todo -> new HistoryResponseDto( - todo.getId(), - todo.getContent(), - todo.getCompletedDateTime().toLocalDate() // ๋‚ ์งœ๋ฅผ LocalDate๋กœ ๋ณ€ํ™˜ - )) - .collect(Collectors.toList()); + List types = List.of(Type.BACKLOG, Type.YESTERDAY); + Page historiesPage = todoRepository.findHistories(userId, types, pageable); - return new PaginatedHistoryResponseDto(histories, todosPage.getTotalPages()); + return TodoDtoConverter.toHistoryListDto(historiesPage); } public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int size) { - Pageable pageable = PageRequest.of(page, size); - Page todosPage = todoRepository.findByUserIdAndTypeAndTodayStatus(userId, Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); + userValidator.checkIsExistUser(userId); - List yesterdays = todosPage.getContent().stream() - .map(todo -> new YesterdayResponseDto( - todo.getId(), - todo.getContent() - )) - .collect(Collectors.toList()); + Pageable pageable = PageRequest.of(page, size); + Page yesterdaysPage = todoRepository.findByUserIdAndTypeAndTodayStatus(userId, Type.YESTERDAY, TodayStatus.INCOMPLETE, pageable); - return new PaginatedYesterdayResponseDto(yesterdays, todosPage.getTotalPages()); + return TodoDtoConverter.toYesterdayListDto(yesterdaysPage); } + private Page getBacklogsPagination(Long userId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); List types = List.of(Type.BACKLOG, Type.YESTERDAY); @@ -81,4 +68,10 @@ private Page getBacklogsPagination(Long userId, int page, int size) { return backlogs; } + + private Todo createnewBacklog(Long userId, BacklogCreateRequestDto backlogCreateRequestDto, Integer maxBacklogOrder) { + Todo backlog = Todo.createBacklog(userId, backlogCreateRequestDto.getContent(), maxBacklogOrder + 1); + Todo newBacklog = todoRepository.save(backlog); + return newBacklog; + } } diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index d782872..faa67cc 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -3,8 +3,12 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import server.poptato.todo.api.request.ContentUpdateRequestDto; +import server.poptato.todo.api.request.DeadlineUpdateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; +import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.response.TodoDetailResponseDto; +import server.poptato.todo.converter.TodoDtoConverter; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; @@ -13,7 +17,6 @@ import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; import server.poptato.user.validator.UserValidator; -import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -29,95 +32,82 @@ public class TodoService { public void deleteTodoById(Long userId, Long todoId) { userValidator.checkIsExistUser(userId); - Todo todo = todoRepository.findByIdAndUserId(todoId, userId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - - todoRepository.delete(todo); + Todo findTodo = validateAndReturnTodo(userId, todoId); + todoRepository.delete(findTodo); } public void toggleIsBookmark(Long userId, Long todoId) { - // ํ•ด๋‹น Todo๋ฅผ ์กฐํšŒ - Todo todo = todoRepository.findByIdAndUserId(todoId, userId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - - // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ + Todo todo = validateAndReturnTodo(userId, todoId); todo.toggleBookmark(); } - - public void swipe(Long userId, Long todoId) { + public void swipe(Long userId, SwipeRequestDto swipeRequestDto) { userValidator.checkIsExistUser(userId); - Todo todo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if (todo.getUserId() != userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - - if (todo.getType().equals(Type.TODAY)) { - swipeTodayToBacklog(todo); - } else if (todo.getType().equals(Type.YESTERDAY) || todo.getType().equals(Type.BACKLOG)) { - swipeBacklogToToday(todo); + Todo findTodo = validateAndReturnTodo(userId, swipeRequestDto.getTodoId()); + if (isToday(findTodo)) { + swipeTodayToBacklog(findTodo); + return; } + swipeBacklogToToday(findTodo); } public void dragAndDrop(Long userId, DragAndDropRequestDto requestDto) { userValidator.checkIsExistUser(userId); - List todos = getTodos(requestDto); + List todos = getTodosByIds(requestDto.getTodoIds()); checkIsValidToDragAndDrop(userId, todos, requestDto); - if (requestDto.getType().equals(Type.TODAY)) { + if (isTypeToday(requestDto.getType())) { reassignTodayOrder(todos, requestDto.getTodoIds()); - } else if (requestDto.getType().equals(Type.BACKLOG)) { - reassignBacklogOrder(todos, requestDto.getTodoIds()); + return; } + reassignBacklogOrder(todos, requestDto.getTodoIds()); } public TodoDetailResponseDto getTodoInfo(Long userId, Long todoId) { userValidator.checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if (findTodo.getUserId() != userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - - return TodoDetailResponseDto.builder() - .content(findTodo.getContent()) - .isBookmark(findTodo.isBookmark()) - .deadline(findTodo.getDeadline()) - .build(); + Todo findTodo = validateAndReturnTodo(userId, todoId); + return TodoDtoConverter.toTodoDetailInfoDto(findTodo); } - public void updateDeadline(Long userId, Long todoId, LocalDate deadline) { + public void updateDeadline(Long userId, Long todoId, DeadlineUpdateRequestDto deadlineUpdateRequestDto) { userValidator.checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if (findTodo.getUserId() != userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - findTodo.updateDeadline(deadline); + Todo findTodo = validateAndReturnTodo(userId, todoId); + findTodo.updateDeadline(deadlineUpdateRequestDto.getDeadline()); //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด todoRepository.save(findTodo); } - public void updateContent(Long userId, Long todoId, String content) { + public void updateContent(Long userId, Long todoId, ContentUpdateRequestDto contentUpdateRequestDto) { userValidator.checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - if (findTodo.getUserId() != userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); - findTodo.updateContent(content); + Todo findTodo = validateAndReturnTodo(userId, todoId); + findTodo.updateContent(contentUpdateRequestDto.getContent()); //TODO: ์—ฌ๊ธฐ๋„ ์™œ SAVE๊ฐ€ ํ•„์ˆ˜์ธ์ง€ ๋ชฐ๊ฒŸ๋‹ด todoRepository.save(findTodo); } public void updateIsCompleted(Long userId, Long todoId) { userValidator.checkIsExistUser(userId); - Todo findTodo = todoRepository.findById(todoId) - .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - checkIsValidToUpdateIsCompleted(userId, findTodo); + Todo findTodo = validateAndReturnTodo(userId, todoId); + checkIsValidToUpdateIsCompleted(findTodo); - if (findTodo.getTodayStatus().equals(TodayStatus.COMPLETED)) { - findTodo.updateTodayStatusToInComplete(); - } else { - findTodo.updateTodayStatusToCompleted(); + if (isStatusCompleted(findTodo)) { + Integer minTodayOrder = todoRepository.findMinTodayOrderByUserIdOrZero(userId); + findTodo.updateTodayStatusToInComplete(minTodayOrder); + return; } + findTodo.updateTodayStatusToCompleted(); + } + + private boolean isStatusCompleted(Todo findTodo) { + return findTodo.getTodayStatus().equals(TodayStatus.COMPLETED); + } + + private Todo validateAndReturnTodo(Long userId, Long todoId) { + Todo findTodo = todoRepository.findById(todoId) + .orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); + if (findTodo.getUserId() != userId) + throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + return findTodo; } private void swipeBacklogToToday(Todo todo) { @@ -126,37 +116,41 @@ private void swipeBacklogToToday(Todo todo) { } private void swipeTodayToBacklog(Todo todo) { - if (todo.getTodayStatus().equals(TodayStatus.COMPLETED)) + if (isCompletedTodo(todo)) throw new TodoException(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO); Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(todo.getUserId()); todo.changeToBacklog(maxBacklogOrder); } - private List getTodos(DragAndDropRequestDto requestDto) { + private boolean isCompletedTodo(Todo todo) { + return todo.getTodayStatus().equals(TodayStatus.COMPLETED); + } + + private List getTodosByIds(List todoIds) { List todos = new ArrayList<>(); - for (Long todoId : requestDto.getTodoIds()) { + for (Long todoId : todoIds) { todos.add(todoRepository.findById(todoId).get()); } return todos; } - private void checkIsValidToDragAndDrop(Long userId, List todos, DragAndDropRequestDto requestDto) { - if (todos.size() != requestDto.getTodoIds().size()) { + private void checkIsValidToDragAndDrop(Long userId, List todos, DragAndDropRequestDto dragAndDropRequestDto) { + if (todos.size() != dragAndDropRequestDto.getTodoIds().size()) { throw new TodoException(TodoExceptionErrorCode.TODO_NOT_EXIST); } for (Todo todo : todos) { if (!todo.getUserId().equals(userId)) { throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); } - if (requestDto.getType().equals(Type.TODAY) && todo.getTodayStatus() == TodayStatus.COMPLETED) { + if (dragAndDropRequestDto.getType().equals(Type.TODAY) && todo.getTodayStatus() == TodayStatus.COMPLETED) { throw new TodoException(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO); } - if (requestDto.getType().equals(Type.TODAY)) { + if (dragAndDropRequestDto.getType().equals(Type.TODAY)) { if (!todo.getType().equals(Type.TODAY)) { throw new TodoException(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH); } } - if (requestDto.getType().equals(Type.BACKLOG)) { + if (dragAndDropRequestDto.getType().equals(Type.BACKLOG)) { if (!(todo.getType().equals(Type.BACKLOG) || todo.getType().equals(Type.YESTERDAY))) { throw new TodoException(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH); } @@ -182,13 +176,20 @@ private void reassignBacklogOrder(List todos, List todoIds) { } - - private void checkIsValidToUpdateIsCompleted(Long userId, Todo todo) { - if (todo.getUserId() != userId) - throw new TodoException(TodoExceptionErrorCode.TODO_USER_NOT_MATCH); + private void checkIsValidToUpdateIsCompleted(Todo todo) { if (todo.getType().equals(Type.BACKLOG)) throw new TodoException(TodoExceptionErrorCode.BACKLOG_CANT_COMPLETE); if (todo.getType().equals(Type.YESTERDAY) && todo.getTodayStatus().equals(TodayStatus.COMPLETED)) throw new TodoException(TodoExceptionErrorCode.YESTERDAY_CANT_COMPLETE); } + + + private boolean isToday(Todo findTodo) { + return findTodo.getType().equals(Type.TODAY); + } + + + private boolean isTypeToday(Type type) { + return type.equals(Type.TODAY); + } } diff --git a/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java b/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java index ffaca68..a387614 100644 --- a/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/PaginatedHistoryResponseDto.java @@ -1,9 +1,29 @@ package server.poptato.todo.application.response; import lombok.Builder; +import lombok.Getter; +import org.springframework.data.domain.Page; +import server.poptato.todo.domain.entity.Todo; import java.util.List; +import java.util.stream.Collectors; + +@Getter +public class PaginatedHistoryResponseDto { + List histories; + int totalPageCount; + + @Builder + public PaginatedHistoryResponseDto(Page todosPage) { + this.histories = todosPage.getContent().stream() + .map(todo -> new HistoryResponseDto( + todo.getId(), + todo.getContent(), + todo.getCompletedDateTime().toLocalDate() + )) + .collect(Collectors.toList()); + + this.totalPageCount = todosPage.getTotalPages(); + } -@Builder -public record PaginatedHistoryResponseDto(List histories, int totalPageCount) { } \ No newline at end of file diff --git a/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java b/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java index 7cc8ea0..52f246b 100644 --- a/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java +++ b/src/main/java/server/poptato/todo/application/response/PaginatedYesterdayResponseDto.java @@ -1,9 +1,26 @@ package server.poptato.todo.application.response; import lombok.Builder; +import lombok.Getter; +import org.springframework.data.domain.Page; +import server.poptato.todo.domain.entity.Todo; import java.util.List; +import java.util.stream.Collectors; -@Builder -public record PaginatedYesterdayResponseDto(List yesterdays,int totalPageCount) { +@Getter +public class PaginatedYesterdayResponseDto { + List yesterdays; + int totalPageCount; + + @Builder + public PaginatedYesterdayResponseDto(Page yesterdaysPage) { + this.yesterdays = yesterdaysPage.getContent().stream() + .map(todo -> new YesterdayResponseDto( + todo.getId(), + todo.getContent() + )) + .collect(Collectors.toList()); + this.totalPageCount = yesterdaysPage.getTotalPages(); + } } diff --git a/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java b/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java index 149b88f..aeef42b 100644 --- a/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java +++ b/src/main/java/server/poptato/todo/converter/TodoDtoConverter.java @@ -2,8 +2,7 @@ import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; -import server.poptato.todo.application.response.BacklogListResponseDto; -import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.application.response.*; import server.poptato.todo.domain.entity.Todo; import java.time.LocalDate; @@ -27,6 +26,34 @@ public static BacklogListResponseDto toBacklogListDto(Page backlogs) { .build(); } + public static BacklogCreateResponseDto toBacklogCreateDto(Todo todo) { + return BacklogCreateResponseDto.builder() + .todoId(todo.getId()) + .build(); + } + + public static TodoDetailResponseDto toTodoDetailInfoDto(Todo todo) { + return TodoDetailResponseDto.builder() + .content(todo.getContent()) + .isBookmark(todo.isBookmark()) + .deadline(todo.getDeadline()) + .build(); + } + + public static PaginatedHistoryResponseDto toHistoryListDto(Page todosPage) { + return PaginatedHistoryResponseDto + .builder() + .todosPage(todosPage) + .build(); + } + + public static PaginatedYesterdayResponseDto toYesterdayListDto(Page yesterdaysPage) { + return PaginatedYesterdayResponseDto + .builder() + .yesterdaysPage(yesterdaysPage) + .build(); + } + private TodoDtoConverter() { } } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index 74714d8..f5364dc 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -97,8 +97,9 @@ public void updateContent(String content) { this.content = content; } - public void updateTodayStatusToInComplete() { + public void updateTodayStatusToInComplete(int minTodayOrder) { this.todayStatus = TodayStatus.INCOMPLETE; + this.todayOrder = --minTodayOrder; this.completedDateTime = null; } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index c3fc667..bb0192c 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -19,11 +19,12 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime Optional findById(Long todoId); Optional findByIdAndUserId(Long todoId, Long userId); void delete(Todo todo); - Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); + Page findByUserIdAndCompletedDateTimeIsNotNullAndTypeIn(Long userId, List types, Pageable pageable); Todo save(Todo todo); Page findByUserIdAndTypeInOrderByBacklogOrderDesc(Long userId, List types, Pageable pageable); Integer findMaxBacklogOrderByUserIdOrZero(Long userId); Integer findMaxTodayOrderByUserIdOrZero(Long userId); + Integer findMinTodayOrderByUserIdOrZero(Long userId); int findMaxBacklogOrderByIdIn(List ids); int findMaxTodayOrderByIdIn(List ids); Page findByUserIdAndTypeAndTodayStatus(Long userId, Type type, TodayStatus todayStatus, Pageable pageable); @@ -43,4 +44,7 @@ default Page findBacklogsByUserId(Long userId, List types, Pageable return findByUserIdAndTypeInOrderByBacklogOrderDesc( userId, types, pageable); } + default Page findHistories(Long userId, List types, Pageable pageable) { + return findByUserIdAndTypeInOrderByBacklogOrderDesc(userId, types, pageable); + } } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index b1816b5..48299b9 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -21,6 +21,8 @@ public interface JpaTodoRepository extends TodoRepository, JpaRepository ids); @Query("SELECT MAX(t.backlogOrder) FROM Todo t WHERE t.id IN :ids") int findMaxBacklogOrderByIdIn(@Param("ids") List ids); - @Query("SELECT COALESCE(MIN(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId") + @Query("SELECT COALESCE(MIN(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.backlogOrder IS NOT NULL") Integer findMinBacklogOrderByUserIdOrZero(@Param("userId") Long userId); + @Query("SELECT COALESCE(MIN(t.todayOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.todayOrder IS NOT NULL") + Integer findMinTodayOrderByUserIdOrZero(Long userId); } diff --git a/src/main/java/server/poptato/user/converter/UserDtoConverter.java b/src/main/java/server/poptato/user/converter/UserDtoConverter.java index 495ae67..d98fe8e 100644 --- a/src/main/java/server/poptato/user/converter/UserDtoConverter.java +++ b/src/main/java/server/poptato/user/converter/UserDtoConverter.java @@ -12,7 +12,6 @@ public static UserInfoResponseDto toUserInfoDto(User user) { .name(user.getName()) .email(user.getEmail()) .build(); - } private UserDtoConverter() { From 2b75ba7e5105bcab8e03a772e75a12a8d103da72 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Fri, 1 Nov 2024 15:55:59 +0900 Subject: [PATCH 161/177] =?UTF-8?q?fix:=20=EC=99=84=EB=A3=8C=EB=90=9C=20?= =?UTF-8?q?=ED=95=A0=20=EC=9D=BC=20desc=20->=20ascr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/server/poptato/todo/application/TodoService.java | 2 +- .../server/poptato/todo/domain/repository/TodoRepository.java | 2 +- .../poptato/todo/domain/repository/TodoRepositoryTest.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index 49a8f7d..018d454 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -43,7 +43,7 @@ public TodayListResponseDto getTodayList(long userId, int page, int size, LocalD todays.addAll(incompleteTodos); // ์™„๋ฃŒ๋œ ํ•  ์ผ ์กฐํšŒ - List completedTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + List completedTodos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); todays.addAll(completedTodos); diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index d827cec..b833b90 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -14,7 +14,7 @@ public interface TodoRepository { void deleteAllByUserId(Long userId); List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); - List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); Optional findById(Long todoId); Optional findByIdAndUserId(Long todoId, Long userId); diff --git a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java index 3e21ae3..c57fbf2 100644 --- a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java +++ b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java @@ -29,7 +29,7 @@ class TodoRepositoryTest { LocalDate todayDate = LocalDate.of(2024, 10, 16); //when - List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( + List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); assertThat(todos).isNotEmpty(); @@ -45,7 +45,7 @@ class TodoRepositoryTest { // ์™„๋ฃŒ๋œ ํ•  ์ผ์€ completeDateTime์ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ for (int i = 0; i < todos.size() - 1; i++) { - assertThat(todos.get(i).getCompletedDateTime()).isAfterOrEqualTo(todos.get(i + 1).getCompletedDateTime()); + assertThat(todos.get(i).getCompletedDateTime()).isBeforeOrEqualTo(todos.get(i + 1).getCompletedDateTime()); } } From 456edf49e3bb5f72b7a7d514d1c8be240a78d403 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 17:52:23 +0900 Subject: [PATCH 162/177] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/request/KakaoLoginRequestDto.java | 8 +- .../api/request/ReissueTokenRequestDto.java | 5 + .../api/request/ContentUpdateRequestDto.java | 4 + .../api/request/DeadlineUpdateRequestDto.java | 5 + .../todo/application/TodoBacklogService.java | 22 +- .../poptato/todo/application/TodoService.java | 7 + .../poptato/todo/domain/entity/Todo.java | 8 +- .../domain/repository/TodoRepository.java | 15 +- .../infra/repository/JpaTodoRepository.java | 9 + .../poptato/user/resolver/UserResolver.java | 6 +- .../poptato/auth/api/AuthControllerTest.java | 111 +++++ .../auth/application/AuthServiceTest.java | 112 +++++ .../todo/api/TodoBacklogControllerTest.java | 128 ++++++ .../poptato/todo/api/TodoControllerTest.java | 287 +++--------- .../todo/api/TodoTodayControllerTest.java | 88 ++++ .../todo/application/BacklogCreateTest.java | 44 -- .../application/TodoBacklogServiceTest.java | 125 ++++++ .../todo/application/TodoServiceTest.java | 409 +++++------------- .../application/TodoTodayServiceTest.java | 74 ++++ .../response/TodayResponseDtoTest.java | 8 +- .../domain/repository/TodoRepositoryTest.java | 64 ++- .../poptato/user/api/UserControllerTest.java | 40 +- .../user/application/UserServiceTest.java | 29 +- 23 files changed, 961 insertions(+), 647 deletions(-) create mode 100644 src/test/java/server/poptato/auth/api/AuthControllerTest.java create mode 100644 src/test/java/server/poptato/auth/application/AuthServiceTest.java create mode 100644 src/test/java/server/poptato/todo/api/TodoBacklogControllerTest.java create mode 100644 src/test/java/server/poptato/todo/api/TodoTodayControllerTest.java delete mode 100644 src/test/java/server/poptato/todo/application/BacklogCreateTest.java create mode 100644 src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java create mode 100644 src/test/java/server/poptato/todo/application/TodoTodayServiceTest.java diff --git a/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java b/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java index 75808e7..df014a8 100644 --- a/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java +++ b/src/main/java/server/poptato/auth/api/request/KakaoLoginRequestDto.java @@ -1,12 +1,16 @@ package server.poptato.auth.api.request; -import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Getter +@Builder @NoArgsConstructor +@AllArgsConstructor public class KakaoLoginRequestDto { - @NotEmpty(message = "kakaoCode๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") + @NotBlank(message = "kakaoCode๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") String kakaoCode; } diff --git a/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java b/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java index 2eeb4fb..b5e7cd7 100644 --- a/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java +++ b/src/main/java/server/poptato/auth/api/request/ReissueTokenRequestDto.java @@ -1,12 +1,17 @@ package server.poptato.auth.api.request; import jakarta.validation.constraints.NotEmpty; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Getter +@Builder @NoArgsConstructor +@AllArgsConstructor public class ReissueTokenRequestDto { + //TODO: ์‚ฌ์šฉ์•ˆํ•˜๋Š” ํ•„๋“œ @NotEmpty(message = "ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์‹œ accessToken์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") String accessToken; @NotEmpty(message = "ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์‹œ refreshToken์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") diff --git a/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java b/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java index fb72010..4f34994 100644 --- a/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java +++ b/src/main/java/server/poptato/todo/api/request/ContentUpdateRequestDto.java @@ -1,11 +1,15 @@ package server.poptato.todo.api.request; import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Getter @NoArgsConstructor +@AllArgsConstructor +@Builder public class ContentUpdateRequestDto { @NotBlank(message = "ํ•  ์ผ ์ˆ˜์ • ์‹œ ๋‚ด์šฉ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.") String content; diff --git a/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java b/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java index 392c827..b8171fe 100644 --- a/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java +++ b/src/main/java/server/poptato/todo/api/request/DeadlineUpdateRequestDto.java @@ -1,11 +1,16 @@ package server.poptato.todo.api.request; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import java.time.LocalDate; @Getter +@Builder +@AllArgsConstructor @NoArgsConstructor public class DeadlineUpdateRequestDto { LocalDate deadline; diff --git a/src/main/java/server/poptato/todo/application/TodoBacklogService.java b/src/main/java/server/poptato/todo/application/TodoBacklogService.java index 30a36c1..71a594c 100644 --- a/src/main/java/server/poptato/todo/application/TodoBacklogService.java +++ b/src/main/java/server/poptato/todo/application/TodoBacklogService.java @@ -19,6 +19,7 @@ import server.poptato.todo.domain.value.Type; import server.poptato.user.validator.UserValidator; +import java.time.LocalDate; import java.util.List; @Transactional @@ -37,20 +38,23 @@ public BacklogListResponseDto getBacklogList(Long userId, int page, int size) { public BacklogCreateResponseDto generateBacklog(Long userId, BacklogCreateRequestDto backlogCreateRequestDto) { userValidator.checkIsExistUser(userId); Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); - Todo newBacklog = createnewBacklog(userId, backlogCreateRequestDto, maxBacklogOrder); + Todo newBacklog = createNewBacklog(userId, backlogCreateRequestDto, maxBacklogOrder); return TodoDtoConverter.toBacklogCreateDto(newBacklog); } public PaginatedHistoryResponseDto getHistories(Long userId, int page, int size) { userValidator.checkIsExistUser(userId); - Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "completedDateTime")); - - List types = List.of(Type.BACKLOG, Type.YESTERDAY); - Page historiesPage = todoRepository.findHistories(userId, types, pageable); - + Page historiesPage = getHistoriesPage(userId, page, size); return TodoDtoConverter.toHistoryListDto(historiesPage); } + private Page getHistoriesPage(Long userId, int page, int size) { + Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "completedDateTime")); + LocalDate today = LocalDate.now(); + Page historiesPage = todoRepository.findHistories(userId, today, pageable); + return historiesPage; + } + public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int size) { userValidator.checkIsExistUser(userId); @@ -63,13 +67,13 @@ public PaginatedYesterdayResponseDto getYesterdays(Long userId, int page, int si private Page getBacklogsPagination(Long userId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); List types = List.of(Type.BACKLOG, Type.YESTERDAY); - - Page backlogs = todoRepository.findBacklogsByUserId(userId, types, pageRequest); + List statuses = List.of(TodayStatus.COMPLETED); + Page backlogs = todoRepository.findBacklogsByUserId(userId, types, statuses, pageRequest); return backlogs; } - private Todo createnewBacklog(Long userId, BacklogCreateRequestDto backlogCreateRequestDto, Integer maxBacklogOrder) { + private Todo createNewBacklog(Long userId, BacklogCreateRequestDto backlogCreateRequestDto, Integer maxBacklogOrder) { Todo backlog = Todo.createBacklog(userId, backlogCreateRequestDto.getContent(), maxBacklogOrder + 1); Todo newBacklog = todoRepository.save(backlog); return newBacklog; diff --git a/src/main/java/server/poptato/todo/application/TodoService.java b/src/main/java/server/poptato/todo/application/TodoService.java index faa67cc..bfa6253 100644 --- a/src/main/java/server/poptato/todo/application/TodoService.java +++ b/src/main/java/server/poptato/todo/application/TodoService.java @@ -95,9 +95,16 @@ public void updateIsCompleted(Long userId, Long todoId) { findTodo.updateTodayStatusToInComplete(minTodayOrder); return; } + if (isTypeYesterday(findTodo)){ + findTodo.updateYesterdayStatusToCompleted(); + } findTodo.updateTodayStatusToCompleted(); } + private boolean isTypeYesterday(Todo findTodo) { + return findTodo.getType().equals(Type.YESTERDAY); + } + private boolean isStatusCompleted(Todo findTodo) { return findTodo.getTodayStatus().equals(TodayStatus.COMPLETED); } diff --git a/src/main/java/server/poptato/todo/domain/entity/Todo.java b/src/main/java/server/poptato/todo/domain/entity/Todo.java index f5364dc..4eb9b74 100644 --- a/src/main/java/server/poptato/todo/domain/entity/Todo.java +++ b/src/main/java/server/poptato/todo/domain/entity/Todo.java @@ -49,7 +49,6 @@ public class Todo{ private LocalDateTime createDate; @LastModifiedDate private LocalDateTime modifyDate; - // isBookmark ๊ฐ’์„ ํ† ๊ธ€ํ•˜๋Š” ๋„๋ฉ”์ธ ๋ฉ”์„œ๋“œ public static Todo createBacklog(Long userId, String content, Integer backlogOrder) { return Todo.builder() @@ -109,6 +108,12 @@ public void updateTodayStatusToCompleted() { this.todayOrder = null; } + public void updateYesterdayStatusToCompleted() { + this.todayStatus = TodayStatus.COMPLETED; + this.completedDateTime = LocalDateTime.now(); + this.backlogOrder = null; + } + public void setType(Type type) { this.type = type; } @@ -116,4 +121,5 @@ public void setType(Type type) { public void setTodayStatus(TodayStatus todayStatus) { this.todayStatus = todayStatus; } + } diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index bb0192c..8c59685 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -17,11 +17,10 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); Optional findById(Long todoId); - Optional findByIdAndUserId(Long todoId, Long userId); void delete(Todo todo); - Page findByUserIdAndCompletedDateTimeIsNotNullAndTypeIn(Long userId, List types, Pageable pageable); + Page findByUserIdAndCompletedStatusAndDifferentTodayDate(Long userId, TodayStatus todayStatus, LocalDate today, Pageable pageable); Todo save(Todo todo); - Page findByUserIdAndTypeInOrderByBacklogOrderDesc(Long userId, List types, Pageable pageable); + Page findByUserIdAndTypeInAndTodayStatusNotInOrderByBacklogOrderDesc(Long userId, List types, List excludedStatuses, Pageable pageable); Integer findMaxBacklogOrderByUserIdOrZero(Long userId); Integer findMaxTodayOrderByUserIdOrZero(Long userId); Integer findMinTodayOrderByUserIdOrZero(Long userId); @@ -40,11 +39,11 @@ default List findCompletedTodays(Long userId, Type type, LocalDate todayDa userId, type, todayDate, todayStatus); } - default Page findBacklogsByUserId(Long userId, List types, Pageable pageable){ - return findByUserIdAndTypeInOrderByBacklogOrderDesc( - userId, types, pageable); + default Page findBacklogsByUserId(Long userId, List types, List statuses, Pageable pageable){ + return findByUserIdAndTypeInAndTodayStatusNotInOrderByBacklogOrderDesc( + userId, types, statuses, pageable); } - default Page findHistories(Long userId, List types, Pageable pageable) { - return findByUserIdAndTypeInOrderByBacklogOrderDesc(userId, types, pageable); + default Page findHistories(Long userId, LocalDate today, Pageable pageable) { + return findByUserIdAndCompletedStatusAndDifferentTodayDate(userId, TodayStatus.COMPLETED, today, pageable); } } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index 48299b9..f9f3b6f 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -7,7 +7,9 @@ import org.springframework.data.repository.query.Param; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import java.time.LocalDate; import java.util.List; public interface JpaTodoRepository extends TodoRepository, JpaRepository { @@ -25,4 +27,11 @@ public interface JpaTodoRepository extends TodoRepository, JpaRepository :todayDate") + Page findByUserIdAndCompletedStatusAndDifferentTodayDate( + @Param("userId") Long userId, + @Param("todayStatus") TodayStatus todayStatus, + @Param("todayDate") LocalDate todayDate, + Pageable pageable + ); } diff --git a/src/main/java/server/poptato/user/resolver/UserResolver.java b/src/main/java/server/poptato/user/resolver/UserResolver.java index 4aa07b4..ca572b5 100644 --- a/src/main/java/server/poptato/user/resolver/UserResolver.java +++ b/src/main/java/server/poptato/user/resolver/UserResolver.java @@ -32,9 +32,9 @@ public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer m if (token == null || token.isBlank() || !token.startsWith("Bearer ")) { throw new AuthException(TOKEN_NOT_EXIST); } - final String encodedUserId = token.substring("Bearer ".length()); - jwtService.verifyToken(token); - final String decodedUserId = jwtService.getUserIdInToken(encodedUserId); + final String extractedToken = token.substring("Bearer ".length()); + jwtService.verifyToken(extractedToken); + final String decodedUserId = jwtService.getUserIdInToken(extractedToken); try { return Long.parseLong(decodedUserId); } catch (NumberFormatException e) { diff --git a/src/test/java/server/poptato/auth/api/AuthControllerTest.java b/src/test/java/server/poptato/auth/api/AuthControllerTest.java new file mode 100644 index 0000000..46d75c0 --- /dev/null +++ b/src/test/java/server/poptato/auth/api/AuthControllerTest.java @@ -0,0 +1,111 @@ +package server.poptato.auth.api; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.ValidatorFactory; +import org.junit.jupiter.api.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import server.poptato.auth.api.request.KakaoLoginRequestDto; +import server.poptato.auth.application.service.AuthService; +import server.poptato.auth.application.service.JwtService; +import server.poptato.global.dto.TokenPair; +import server.poptato.user.application.service.UserService; + +import java.util.Set; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +public class AuthControllerTest { + @Autowired + private MockMvc mockMvc; + @MockBean + private AuthService authService; + @MockBean + private UserService userService; + @Autowired + private JwtService jwtService; + @Autowired + private RedisTemplate redisTemplate; + + private TokenPair tokenPair; + private Validator validator; + private String accessToken; + private String refreshToken; + private final String userId = "1"; + + @BeforeEach + void createAccessToken_UserIdIsOne() { + tokenPair = jwtService.generateTokenPair(userId); + accessToken = tokenPair.accessToken(); + refreshToken = tokenPair.refreshToken(); + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + } + + @AfterEach + void deleteRefreshToken() { + jwtService.deleteRefreshToken(userId); + } + + @DisplayName("๋กœ๊ทธ์ธ ์‹œ, ์•ก์„ธ์Šคํ† ํฐ์ด ๋น„์–ด์žˆ์œผ๋ฉด Validator๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + public void login_ValidationException() { + //given + String emptyKakaoCode = " "; + KakaoLoginRequestDto kakaoLoginRequestDto = KakaoLoginRequestDto.builder() + .kakaoCode(emptyKakaoCode) + .build(); + + //when + Set> violations = validator.validate(kakaoLoginRequestDto); + + //then + Assertions.assertEquals(violations.size(), 1); + } + + @DisplayName("๋กœ๊ทธ์•„์›ƒ ์‹œ, ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + public void logout_Success() throws Exception { + //when & then + mockMvc.perform(post("/auth/logout") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + @DisplayName("๋กœ๊ทธ์•„์›ƒ ์‹œ, JWT ํ† ํฐ์ด ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + public void logout_UnAuthorizedException() throws Exception { + //when & then + mockMvc.perform(post("/auth/logout") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isUnauthorized()) + .andDo(print()); + } + + @DisplayName("ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์š”์ฒญ ์‹œ, ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + public void refresh_Success() throws Exception { + //when & then + mockMvc.perform(post("/auth/refresh") + .content("{\"accessToken\": \"" + accessToken + "\", \"refreshToken\": \"" + refreshToken + "\"}") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + +} diff --git a/src/test/java/server/poptato/auth/application/AuthServiceTest.java b/src/test/java/server/poptato/auth/application/AuthServiceTest.java new file mode 100644 index 0000000..3da968c --- /dev/null +++ b/src/test/java/server/poptato/auth/application/AuthServiceTest.java @@ -0,0 +1,112 @@ +package server.poptato.auth.application; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.RedisTemplate; +import server.poptato.auth.api.request.ReissueTokenRequestDto; +import server.poptato.auth.application.service.AuthService; +import server.poptato.auth.application.service.JwtService; +import server.poptato.auth.exception.AuthException; +import server.poptato.external.oauth.SocialService; +import server.poptato.external.oauth.SocialServiceProvider; +import server.poptato.global.dto.TokenPair; +import server.poptato.user.domain.repository.UserRepository; +import server.poptato.user.exception.UserException; +import server.poptato.user.validator.UserValidator; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.INVALID_TOKEN; + +@SpringBootTest +public class AuthServiceTest { + @Autowired + private AuthService authService; + @Autowired + private SocialService socialService; + @Autowired + private SocialServiceProvider socialServiceProvider; + @Autowired + private UserRepository userRepository; + @Autowired + private JwtService jwtService; + @Autowired + private UserValidator userValidator; + private ReissueTokenRequestDto validTokenRequestDto; + private String accessToken; + private String refreshToken; + private String userIdTypeString = "1"; + + @Autowired + private RedisTemplate redisTemplate; + + @BeforeEach + public void setup() { + TokenPair tokenPair = jwtService.generateTokenPair(userIdTypeString); + accessToken = tokenPair.accessToken(); + refreshToken = tokenPair.refreshToken(); + validTokenRequestDto = new ReissueTokenRequestDto(accessToken, refreshToken); + } + + @AfterEach + void deleteRefreshToken() { + jwtService.deleteRefreshToken(userIdTypeString); + } + + @DisplayName("๋กœ๊ทธ์•„์›ƒ ์‹œ, ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + public void logout_Success() { + // given + long userId = Long.parseLong(userIdTypeString); + + // when + authService.logout(userId); + + // then + String storedRefreshToken = redisTemplate.opsForValue().get(String.valueOf(userId)); + assertThat(storedRefreshToken).isNull(); + } + + @DisplayName("๋กœ๊ทธ์•„์›ƒ ์‹œ, ์œ ์ €๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + public void logout_UserNotExistException() { + // given + Long userId = 5L; + + // then + assertThrows(UserException.class, () -> authService.logout(userId)); + } + + @DisplayName("ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์‹œ, ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void refresh_Success() { + //when + TokenPair refreshTokenPair = authService.refresh(validTokenRequestDto); + + //then + assertNotNull(refreshTokenPair); + assertNotNull(refreshTokenPair.accessToken()); + assertNotNull(refreshTokenPair.refreshToken()); + } + + @DisplayName("ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ ์‹œ, ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void refresh_InvalidTokenException() { + // given + String invalidRefreshToken = "bbb"; + ReissueTokenRequestDto invalidRequestDto = ReissueTokenRequestDto.builder() + .accessToken(accessToken) + .refreshToken(invalidRefreshToken) + .build(); + + //when & then + assertThrows(AuthException.class, () -> authService.refresh(invalidRequestDto)) + .getMessage() + .equals(INVALID_TOKEN); + } +} diff --git a/src/test/java/server/poptato/todo/api/TodoBacklogControllerTest.java b/src/test/java/server/poptato/todo/api/TodoBacklogControllerTest.java new file mode 100644 index 0000000..01b81e4 --- /dev/null +++ b/src/test/java/server/poptato/todo/api/TodoBacklogControllerTest.java @@ -0,0 +1,128 @@ +package server.poptato.todo.api; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.ValidatorFactory; +import org.junit.jupiter.api.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.api.request.BacklogCreateRequestDto; +import server.poptato.todo.application.TodoBacklogService; +import server.poptato.user.application.service.UserService; + +import java.util.Set; + +import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +class TodoBacklogControllerTest { + @Autowired + private MockMvc mockMvc; + @MockBean + private TodoBacklogService todoBacklogService; + @MockBean + private UserService userService; + @Autowired + private JwtService jwtService; + @MockBean + private RedisTemplate redisTemplate; + private Validator validator; + private String accessToken; + private final String userId = "1"; + + @BeforeEach + void createAccessToken_And_SetValidator() { + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); + accessToken = jwtService.createAccessToken(userId); + } + + @AfterEach + void deleteRefreshToken() { + jwtService.deleteRefreshToken(userId); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•˜๋ฉด ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void getBacklogList_Success() throws Exception { + //given & when & then + mockMvc.perform(get("/backlogs") + .param("page", "0") + .param("size", "8") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @Test + void getBacklogList_Default_QueryString_Success() throws Exception { + //given & when & then + mockMvc.perform(get("/backlogs") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + + verify(todoBacklogService).getBacklogList(1L, 0, 8); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void getBacklogList_TokenNotExistException() throws Exception { + //given & when & then + mockMvc.perform(get("/backlogs") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isUnauthorized()) + .andDo(print()); + } + + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ content๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋น„์–ด์žˆ์œผ๋ฉด Validator๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void generateBacklog_ValidatorException() { + //given + String emptyContent = " "; + String nullContent = null; + BacklogCreateRequestDto emptyContentCreateRequestDto = BacklogCreateRequestDto.builder() + .content(emptyContent) + .build(); + + BacklogCreateRequestDto nullContentCreateRequestDto = BacklogCreateRequestDto.builder() + .content(nullContent) + .build(); + + //when + Set> emptyViolations = validator.validate(emptyContentCreateRequestDto); + Set> nullViolations = validator.validate(nullContentCreateRequestDto); + + //then + Assertions.assertEquals(emptyViolations.size(), 1); + Assertions.assertEquals(nullViolations.size(), 1); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void generateBacklog_Success() throws Exception { + //when + mockMvc.perform(post("/backlog") + .content("{\"content\": \"ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ •๋ณธ\"}") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/api/TodoControllerTest.java b/src/test/java/server/poptato/todo/api/TodoControllerTest.java index 5d56d8e..f5f2c8c 100644 --- a/src/test/java/server/poptato/todo/api/TodoControllerTest.java +++ b/src/test/java/server/poptato/todo/api/TodoControllerTest.java @@ -13,28 +13,19 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import server.poptato.auth.application.service.JwtService; -import server.poptato.todo.api.request.BacklogCreateRequestDto; +import server.poptato.todo.api.request.ContentUpdateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; import server.poptato.todo.api.request.SwipeRequestDto; import server.poptato.todo.application.TodoBacklogService; import server.poptato.todo.application.TodoService; -import server.poptato.todo.application.TodoTodayService; -import server.poptato.todo.exception.TodoException; import server.poptato.user.application.service.UserService; -import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; - -import java.time.LocalDate; import java.util.ArrayList; import java.util.Set; -import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; @SpringBootTest @AutoConfigureMockMvc @@ -46,8 +37,6 @@ public class TodoControllerTest { @MockBean private TodoBacklogService todoBacklogService; @MockBean - private TodoTodayService todoTodayService; - @MockBean private UserService userService; @Autowired private JwtService jwtService; @@ -58,138 +47,83 @@ public class TodoControllerTest { private final String userId = "1"; @BeforeEach - void userId๊ฐ€_1์ธ_์•ก์„ธ์Šคํ† ํฐ_์ƒ์„ฑ() { + void createAccessToken_And_SetValidator() { + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + validator = factory.getValidator(); accessToken = jwtService.createAccessToken(userId); } @AfterEach - void ์•ก์„ธ์Šคํ† ํฐ_๋น„ํ™œ์„ฑํ™”() { + void deleteRefreshToken() { jwtService.deleteRefreshToken(userId); } - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") + + @DisplayName("ํ•  ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { - //when - mockMvc.perform(get("/todays") - .param("page","0") - .param("size","8") - .header("Authorization", "Bearer "+accessToken) + void updateContent_Success() throws Exception { + //given + Long todoId = 1L; + + //when & then + mockMvc.perform(patch("/todo/{todoId}/content", todoId) + .header("Authorization", "Bearer " + accessToken) + .content("{\"content\": \"๋‚ด์šฉ ์ˆ˜์ •\"}") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andDo(print()); } - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @DisplayName("ํ•  ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์‹œ content๊ฐ€ null์ด๊ฑฐ๋‚˜ ๋น„์–ด์žˆ์œผ๋ฉด ๊ฒ€์ฆ๊ธฐ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { + void updateContent_Validator_Exception() { + //given + String emptyContent = " "; + String nullContent = null; + ContentUpdateRequestDto emptyContentUpdateRequestDto = ContentUpdateRequestDto.builder() + .content(emptyContent) + .build(); + + ContentUpdateRequestDto nullContentUpdateRequestDto = ContentUpdateRequestDto.builder() + .content(nullContent) + .build(); //when - mockMvc.perform(get("/todays") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); - LocalDate todayDate = LocalDate.now(); + Set> emptyViolations = validator.validate(emptyContentUpdateRequestDto); + Set> nullViolations = validator.validate(nullContentUpdateRequestDto); - verify(todoTodayService).getTodayList(1,0, 8,todayDate); + //then + Assertions.assertEquals(emptyViolations.size(), 1); + Assertions.assertEquals(nullViolations.size(), 1); } - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("ํ•  ์ผ ์‚ญ์ œ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค") @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { - //when - mockMvc.perform(get("/todays") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isUnauthorized()) - .andDo(print()); - } - @Test - public void shouldReturnNoContent_WhenTodoIsDeleted() throws Exception { //ํˆฌ๋‘ ์žˆ์„ ๋•Œ + void delete_Success() throws Exception { + //given Long todoId = 1L; - Long userId = 1L; - - // todoService์˜ deleteTodoById ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค์ • - doNothing().when(todoService).deleteTodoById(userId, todoId); + //when & then mockMvc.perform(delete("/todo/{todoId}", todoId) .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()); - - verify(todoService, times(1)).deleteTodoById(userId, todoId); - } - - @Test - public void shouldReturnNotFound_WhenTodoDoesNotExist() throws Exception { //ํˆฌ๋‘ ์—†์„ ๋•Œ - Long todoId = 144L; - Long userId = 1L; - - // todoService์˜ deleteTodoById๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ exception ๋ฐœ์ƒํ•˜๋„๋ก ์„ค์ • - doThrow(new TodoException(TODO_NOT_EXIST)) - .when(todoService).deleteTodoById(userId, todoId); - - mockMvc.perform(delete("/todo/{todoId}", todoId) - .header("Authorization", "Bearer " + accessToken)) - .andExpect(status().isBadRequest()); - - verify(todoService, times(1)).deleteTodoById(userId, todoId); - } - - @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { - //when - mockMvc.perform(get("/backlogs") - .param("page","0") - .param("size","8") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); - } - - @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { - //when - mockMvc.perform(get("/backlogs") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); - - verify(todoBacklogService).getBacklogList(1L,0, 8); } - @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { - //when - mockMvc.perform(get("/backlogs") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isUnauthorized()) - .andDo(print()); - } - - @Test - @DisplayName("isBookmark ํ† ๊ธ€ ์‹œ ์‘๋‹ต์ด ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธ") - public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { + @DisplayName("์ฆ๊ฒจ์ฐพ๊ธฐ ๋ณ€๊ฒฝ ์‹œ ์‘๋‹ต์ด ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธ") + void toggleIsBookmark_Success() throws Exception { + //given Long todoId = 1L; Long userId = 1L; - // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค์ • - doNothing().when(todoService).toggleIsBookmark(userId, todoId); - + //when & then mockMvc.perform(patch("/todo/{todoId}/bookmark", todoId) .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()); - - // todoService์˜ toggleIsBookmark ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - verify(todoService, times(1)).toggleIsBookmark(userId, todoId); } @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•œ๋‹ค.") @Test - void ํžˆ์Šคํ† ๋ฆฌ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() throws Exception { - // when + void getHistories_Success() throws Exception { + // given & when & then mockMvc.perform(get("/histories") .param("page", "0") .param("size", "15") @@ -199,118 +133,63 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { } - @DisplayName("์Šค์™€์ดํ”„ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— todoId๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") + @DisplayName("์Šค์™€์ดํ”„ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— todoId๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_์š”์ฒญ๋ฐ”๋””_์˜ˆ์™ธ(){ + void swipe_ValidatorException() { //given - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - validator = factory.getValidator(); - SwipeRequestDto request = SwipeRequestDto.builder() - .todoId(null).build(); + .todoId(null).build(); //when Set> violations = validator.validate(request); + //then Assertions.assertEquals(violations.size(), 1); } @DisplayName("์Šค์™€์ดํ”„ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_์„ฑ๊ณต_์‘๋‹ต() throws Exception { - //when + void swipe_Success() throws Exception { + //given & when & then mockMvc.perform(patch("/swipe") .content("{\"todoId\": 1}") - .header("Authorization", "Bearer "+accessToken) + .header("Authorization", "Bearer " + accessToken) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andDo(print()); } - @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํžˆ์Šคํ† ๋ฆฌ_๋ชฉ๋ก์กฐํšŒ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { - // when - mockMvc.perform(get("/histories") + void dragAndDrop_Success() throws Exception { + //given & when & then + mockMvc.perform(patch("/dragAndDrop") + .content("{\"type\": \"TODAY\", \"todoIds\": [1, 2, 3, 4]}") .header("Authorization", "Bearer " + accessToken) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andDo(print()); - - // ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋œ ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ™•์ธ (userId = 1L, page = 0, size = 15) - verify(todoBacklogService).getHistories(1L, 0, 15); } - @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— type์ด๋‚˜ list๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ํžˆ์Šคํ† ๋ฆฌ_๋ชฉ๋ก์กฐํšŒ_JWT_์˜ˆ์™ธ() throws Exception { - // when - mockMvc.perform(get("/histories") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isUnauthorized()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 401 ์‘๋‹ต - .andDo(print()); - } - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์š”์ฒญ ๋ฐ”๋””์— type์ด๋‚˜ list๊ฐ€ ์—†์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์š”์ฒญ๋ฐ”๋””_์˜ˆ์™ธ(){ + void dragAndDrop_ValidatorException() { //given - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - validator = factory.getValidator(); - - DragAndDropRequestDto request = DragAndDropRequestDto.builder() + DragAndDropRequestDto dragAndDropRequestDto = DragAndDropRequestDto.builder() .type(null) .todoIds(new ArrayList<>()) .build(); //when - Set> violations = validator.validate(request); - //then - Assertions.assertEquals(violations.size(), 2); - } - - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { - //when - mockMvc.perform(patch("/dragAndDrop") - .content("{\"type\": \"TODAY\", \"todoIds\": [1, 2, 3, 4]}") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); - } - @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์š”์ฒญ ๋ฐ”๋””์— content๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋น„์–ด์žˆ์œผ๋ฉด Validator๊ฐ€ ์žก๋Š”๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์š”์ฒญ๋ฐ”๋””_์˜ˆ์™ธ(){ - //given - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - validator = factory.getValidator(); - - BacklogCreateRequestDto request = BacklogCreateRequestDto.builder() - .content(" ") - .build(); + Set> violations = validator.validate(dragAndDropRequestDto); - //when - Set> violations = validator.validate(request); //then - Assertions.assertEquals(violations.size(), 1); - } - - @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { - //when - mockMvc.perform(post("/backlog") - .content("{\"content\": \"ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ •๋ณธ\"}") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); + Assertions.assertEquals(violations.size(), 2); } - @DisplayName("ํ•  ์ผ ์ •๋ณด ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @DisplayName("ํ•  ์ผ ์ƒ์„ธ ์ •๋ณด ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํ• ์ผ_์ •๋ณด_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + void getTodoInfo_Success() throws Exception { //given Long todoId = 1L; @@ -322,30 +201,9 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andDo(print()); } - @DisplayName("์–ด์ œ ํ•œ ์ผ ์กฐํšŒ ์‹œ Query String์— ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") - @Test - void ์–ด์ œํ•œ์ผ_์ฟผ๋ฆฌ์ŠคํŠธ๋ง_๊ธฐ๋ณธ๊ฐ’() throws Exception { - // when - mockMvc.perform(get("/yesterdays") - .header("Authorization", "Bearer "+accessToken) - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); - } - @DisplayName("์–ด์ œ ํ•œ ์ผ ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - @Test - void ์–ด์ œํ•œ์ผ_JWT_์˜ˆ์™ธ() throws Exception { - // when - mockMvc.perform(get("/yesterdays") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isUnauthorized()) // JWT๊ฐ€ ์—†์œผ๋ฏ€๋กœ 401 ์‘๋‹ต - .andDo(print()); - - } - @DisplayName("๋งˆ๊ฐ๊ธฐํ•œ ์ˆ˜์ • ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ๋งˆ๊ฐ๊ธฐํ•œ_์ˆ˜์ •_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + void updateDeadline_Success() throws Exception { //given Long todoId = 1L; @@ -358,24 +216,9 @@ public void shouldReturnOk_WhenIsBookmarkToggled() throws Exception { .andDo(print()); } - @DisplayName("ํ•  ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") - @Test - void ํ• ์ผ_๋‚ด์šฉ_์ˆ˜์ •_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { - //given - Long todoId = 1L; - - //when - mockMvc.perform(patch("/todo/{todoId}/content", todoId) - .header("Authorization", "Bearer " + accessToken) - .content("{\"content\": \"๋‚ด์šฉ ์ˆ˜์ •\"}") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andDo(print()); - } - - @DisplayName("ํˆฌ๋ฐ์ด ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @DisplayName("ํ•  ์ผ ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์š”์ฒญ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์š”์ฒญ_์„ฑ๊ณต_์‘๋‹ต() throws Exception { + void updateIsCompleted_Success() throws Exception { //given Long todoId = 1L; diff --git a/src/test/java/server/poptato/todo/api/TodoTodayControllerTest.java b/src/test/java/server/poptato/todo/api/TodoTodayControllerTest.java new file mode 100644 index 0000000..a5c1cfa --- /dev/null +++ b/src/test/java/server/poptato/todo/api/TodoTodayControllerTest.java @@ -0,0 +1,88 @@ +package server.poptato.todo.api; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import server.poptato.auth.application.service.JwtService; +import server.poptato.todo.application.TodoTodayService; +import server.poptato.user.application.service.UserService; + +import java.time.LocalDate; + +import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +class TodoTodayControllerTest { + @Autowired + private MockMvc mockMvc; + @MockBean + private TodoTodayService todoTodayService; + @Autowired + private JwtService jwtService; + @MockBean + private RedisTemplate redisTemplate; + @MockBean + private UserService userService; + private String accessToken; + private final String userId = "1"; + + @BeforeEach + void createAccessToken_UserIdOne() { + accessToken = jwtService.createAccessToken(userId); + } + + @AfterEach + void deleteRefreshToken() { + jwtService.deleteRefreshToken(userId); + } + + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ page์™€ size๋ฅผ query string์œผ๋กœ ๋ฐ›๊ณ  ํ—ค๋”์— accessToken์„ ๋‹ด์•„ ์š”์ฒญํ•˜๋ฉด ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void getTodayList_Success() throws Exception { + //given & when & then + mockMvc.perform(get("/todays") + .param("page", "0") + .param("size", "8") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ Query String์— Default ๊ฐ’์ด ์ ์šฉ๋˜๊ณ , JWT๋กœ ์‚ฌ์šฉ์ž ์•„์ด๋””๋ฅผ ์กฐํšŒํ•œ๋‹ค.") + @Test + void getTodayList_Default_QueryString_Success() throws Exception { + //given & when & then + mockMvc.perform(get("/todays") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(print()); + LocalDate todayDate = LocalDate.now(); + + verify(todoTodayService).getTodayList(1, 0, 8, todayDate); + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ ํ—ค๋”์— JWT๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @Test + void getTodayList_TokenNotExistException() throws Exception { + //given & when & then + mockMvc.perform(get("/todays") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isUnauthorized()) + .andDo(print()); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java b/src/test/java/server/poptato/todo/application/BacklogCreateTest.java deleted file mode 100644 index 45ee6a6..0000000 --- a/src/test/java/server/poptato/todo/application/BacklogCreateTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package server.poptato.todo.application; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import server.poptato.todo.domain.entity.Todo; -import server.poptato.todo.domain.repository.TodoRepository; -import server.poptato.todo.domain.value.Type; - -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest -public class BacklogCreateTest { - @Autowired - private TodoService todoService; - @Autowired - private TodoRepository todoRepository; - - @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ํ•  ์ผ์˜ ๊ฐ’๋“ค์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_์ƒ์„ฑ_์†์„ฑ_๊ธฐ๋ณธ๊ฐ’(){ - //given - Long userId = 1L; - String content = "๋‚ด์šฉ"; - - //when - Long todoId = todoService.generateBacklog(userId,content).getTodoId(); - Todo findTodo = todoRepository.findById(todoId).get(); - - //then - assertThat(findTodo.getId()).isNotNull(); - assertThat(findTodo.getTodayOrder()).isNull(); - assertThat(findTodo.getTodayDate()).isNull(); - assertThat(findTodo.getTodayStatus()).isNull(); - assertThat(findTodo.getDeadline()).isNull(); - assertThat(findTodo.getContent()).isEqualTo(content); - assertThat(findTodo.getType()).isEqualTo(Type.BACKLOG); - assertThat(findTodo.getUserId()).isEqualTo(userId); - assertThat(findTodo.isBookmark()).isEqualTo(false); - assertThat(findTodo.getBacklogOrder()).isEqualTo(21L); - assertThat(findTodo.getCompletedDateTime()).isNull(); - } -} diff --git a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java new file mode 100644 index 0000000..e179148 --- /dev/null +++ b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java @@ -0,0 +1,125 @@ +package server.poptato.todo.application; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.api.request.BacklogCreateRequestDto; +import server.poptato.todo.application.response.*; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.Type; + +import java.time.LocalDate; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +class TodoBacklogServiceTest { + @Autowired + private TodoBacklogService todoBacklogService; + @Autowired + private TodoRepository todoRepository; + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ, size=8์„ ์š”์ฒญํ•˜๋ฉด 8๊ฐœ๊ฐ€ ์‘๋‹ต๋œ๋‹ค.") + @Test + void getBackList_Success() { + //given + Long userId = 1L; + int page = 0; + int size = 8; + + //when + List backlogList = todoBacklogService.getBacklogList(userId, page, size).getBacklogs(); + + //then + assertThat(backlogList.size()).isEqualTo(size); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋ฐฑ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @Test + void getBacklogList_EmptyToday_Success() { + //given + Long userId = 50L; + int page = 0; + int size = 8; + + //when + BacklogListResponseDto backlogList = todoBacklogService.getBacklogList(userId, page, size); + + //then + assertThat(backlogList.getBacklogs()).isEmpty(); + assertThat(backlogList.getTotalPageCount()).isEqualTo(0); + } + + @DisplayName("๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @Test + void generateBacklog_Success() { + //given + Long userId = 1L; + String content = "ํ•  ์ผ ๋‚ด์šฉ"; + BacklogCreateRequestDto backlogCreateRequestDto = BacklogCreateRequestDto.builder() + .content(content) + .build(); + Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); + + //when + BacklogCreateResponseDto backlogCreateResponseDto = todoBacklogService.generateBacklog(userId, backlogCreateRequestDto); + Todo newTodo = todoRepository.findById(backlogCreateResponseDto.todoId()).get(); + + //then + assertThat(newTodo).isNotNull(); + assertThat(newTodo.getUserId()).isEqualTo(userId); + assertThat(newTodo.getContent()).isEqualTo(content); + assertThat(newTodo.getBacklogOrder()).isEqualTo(maxBacklogOrder + 1); + assertThat(newTodo.getType()).isEqualTo(Type.BACKLOG); + assertThat(newTodo.isBookmark()).isFalse(); + assertThat(newTodo.getTodayStatus()).isNull(); + assertThat(newTodo.getCompletedDateTime()).isNull(); + } + @Test + @DisplayName("๊ธฐ๋ก ์กฐํšŒ ์‹œ ํŽ˜์ด์ง• ๋ฐ ์ •๋ ฌํ•˜์—ฌ ๊ธฐ๋ก ์กฐํšŒ๋ฅผ ์„ฑ๊ณตํ•œ๋‹ค.") + void getHistories_Success() { + // given + Long userId = 1L; + int page = 0; + int size = 5; + + // when + PaginatedHistoryResponseDto historiesPage = todoBacklogService.getHistories(userId, page, size); + + // then + int actualSize = historiesPage.getHistories().size(); + + assertThat(actualSize).isLessThanOrEqualTo(size); + assertThat(historiesPage.getTotalPageCount()).isGreaterThan(0); + + List histories = historiesPage.getHistories(); + for (int i = 0; i < histories.size() - 1; i++) { + LocalDate current = histories.get(i).date(); + LocalDate next = histories.get(i + 1).date(); + + assertThat(current).isAfterOrEqualTo(next); + } + } + + + @Test + @DisplayName("์–ด์ œํ•œ์ผ ์กฐํšŒ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + void getYesterdays_Success() { + // given + Long userId = 1L; + int page = 0; + int size = 5; // ํ•œ๋ฒˆ์— 5๊ฐœ์˜ todo ๊ฐ€์ ธ์˜ค๊ธฐ + + // when + PaginatedYesterdayResponseDto result = todoBacklogService.getYesterdays(userId, page, size); + + // then + assertThat(result.getYesterdays()).hasSizeLessThanOrEqualTo(size); + assertThat(result.getTotalPageCount()).isGreaterThan(0); + assertThat(result.getYesterdays().get(0).todoId()).isNotNull(); + assertThat(result.getYesterdays().get(0).content()).isNotNull(); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/application/TodoServiceTest.java b/src/test/java/server/poptato/todo/application/TodoServiceTest.java index 7e7e462..5540c5c 100644 --- a/src/test/java/server/poptato/todo/application/TodoServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoServiceTest.java @@ -4,16 +4,18 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.todo.api.request.ContentUpdateRequestDto; +import server.poptato.todo.api.request.DeadlineUpdateRequestDto; import server.poptato.todo.api.request.DragAndDropRequestDto; -import server.poptato.todo.application.response.*; +import server.poptato.todo.api.request.SwipeRequestDto; +import server.poptato.todo.application.response.TodoDetailResponseDto; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; import server.poptato.todo.exception.TodoException; import server.poptato.todo.exception.errorcode.TodoExceptionErrorCode; -import server.poptato.user.exception.UserException; -import server.poptato.user.exception.errorcode.UserExceptionErrorCode; import java.time.LocalDate; import java.util.List; @@ -21,9 +23,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static server.poptato.todo.exception.errorcode.TodoExceptionErrorCode.TODO_NOT_EXIST; +@Transactional @SpringBootTest class TodoServiceTest { @Autowired @@ -31,321 +32,190 @@ class TodoServiceTest { @Autowired private TodoRepository todoRepository; - @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ์œ ์ €์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("ํ• ์ผ ์‚ญ์ œ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํ•ด๋‹นํ•˜๋Š”_์œ ์ €์ •๋ณด_์—†๋Š”_์˜ˆ์™ธ(){ - //given - Long notExistUserId = 100L; - int page = 0; - int size = 8; - LocalDate todayDate = LocalDate.now(); - //when & then - assertThatThrownBy(()-> todoService.getTodayList(notExistUserId,page,size,todayDate)) - .isInstanceOf(UserException.class) - .hasMessage(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); - } - @DisplayName("size=8์„ ์š”์ฒญํ•˜๋ฉด, ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต๋œ๋‹ค.") - @Test - void ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ_8๊ฐœ๋งŒ_์‘๋‹ต(){ - //given - Long userId = 1L; - int page = 0; - int size = 8; - LocalDate todayDate = LocalDate.of(2024,10,16); - //when & then - assertThat(todoService.getTodayList(userId,page,size,todayDate).getTodays().size()).isEqualTo(size); - } - - @DisplayName("์œ ํšจํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ˆ˜์ผ ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") - @Test - void ์œ ํšจํ•˜์ง€_์•Š์€_ํŽ˜์ด์ง€_์ˆ˜_์‘๋‹ต(){ - //given - Long userId = 1L; - int page = 2; - int size = 8; - LocalDate todayDate = LocalDate.of(2024,10,16); - //when - TodayListResponseDto todayList = todoService.getTodayList(userId, page, size, todayDate); - //then - assertThat(todayList.getTodays()).isEmpty(); - } - - @DisplayName("ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") - @Test - void ํˆฌ๋ฐ์ด_๋ฐ์ดํ„ฐ_์ˆ˜_0๊ฐœ_์‘๋‹ต(){ - //given - Long userId = 50L; - int page = 0; - int size = 8; - LocalDate todayDate = LocalDate.now(); - //when - TodayListResponseDto todayList = todoService.getTodayList(userId, page, size, todayDate); - //then - assertThat(todayList.getTodays()).isEmpty(); - assertThat(todayList.getTotalPageCount()).isEqualTo(0); - } - - @DisplayName("๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ_์ˆ˜_0๊ฐœ_์‘๋‹ต(){ - //given - Long userId = 50L; - int page = 0; - int size = 8; - //when - BacklogListResponseDto backlogList = todoService.getBacklogList(userId, page, size); - //then - assertThat(backlogList.getBacklogs()).isEmpty(); - assertThat(backlogList.getTotalPageCount()).isEqualTo(0); - } - - @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ๋จผ์ € ์กฐํšŒ๋˜๊ณ , ๊ทธ ๋‹ค์Œ ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ์กฐํšŒ๋œ๋‹ค.") - @Test - void ํˆฌ๋ฐ์ด_๋ชฉ๋ก_์กฐํšŒ_๋‹ฌ์„ฑ์—ฌ๋ถ€_์ •๋ ฌ(){ - //given - Long userId = 1L; - int page = 0; - int size = 8; - LocalDate todayDate = LocalDate.now(); - - //when - TodayListResponseDto todayList = todoService.getTodayList(userId, page, size, todayDate); - - //then - boolean foundCompleted = false; - for (TodayResponseDto today : todayList.getTodays()) { - if (today.getTodayStatus() == TodayStatus.COMPLETED) { - foundCompleted = true; - } - // COMPLETED๊ฐ€ ๋‚˜์˜ค๊ธฐ ์‹œ์ž‘ํ•œ ์ดํ›„์—๋Š” INCOMPLETE๊ฐ€ ๋‚˜์™€์„œ๋Š” ์•ˆ๋จ - if (foundCompleted) { - assertThat(today.getTodayStatus()).isEqualTo(TodayStatus.COMPLETED); - } - } - } - // ์ƒˆ๋กœ์šด ์œ ์ €๋กœ ์‚ญ์ œ ํ…Œ์ŠคํŠธ - @DisplayName("ํˆฌ๋‘๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์ € 1์˜ ํˆฌ๋‘๋ฅผ ์‚ญ์ œํ•œ๋‹ค.") - @Test - public void shouldDeleteTodoById_WhenTodoExists_ForUser1() { + void delete_Success() { //given Long userId = 1L; - Todo todo = Todo.builder() - .userId(userId) - .content("Test Todo") - .type(Type.BACKLOG) - .todayStatus(TodayStatus.COMPLETED) - .build(); - - // ์‹ค์ œ๋กœ Todo ์ €์žฅ - Todo savedTodo = todoRepository.save(todo); - Long todoId = savedTodo.getId(); // ์ €์žฅ๋œ Todo ID ๊ฐ€์ ธ์˜ค๊ธฐ - System.out.println(todoId); + Long todoId = 27L; //when todoService.deleteTodoById(userId, todoId); //then Optional deletedTodo = todoRepository.findById(todoId); - assertThat(deletedTodo).isEmpty(); // ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ฆ - } - - @DisplayName("ํˆฌ๋‘๊ฐ€ ์—†์„ ๋•Œ ์œ ์ € 2์˜ ํˆฌ๋‘๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - @Test - public void shouldThrowException_WhenTodoNotFound_ForUser2() { - //given - Long nonExistentTodoId = 1000L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํˆฌ๋‘ ID - Long userId = 1L; - - //when & then - assertThrows(TodoException.class, () -> { - todoService.deleteTodoById(userId, nonExistentTodoId); // ํˆฌ๋‘๊ฐ€ ์—†์„ ๋•Œ ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฒ€์ฆ - }); - } - @DisplayName("size=8์„ ์š”์ฒญํ•˜๋ฉด, ๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‘๋‹ต๋œ๋‹ค.") - @Test - void ๋ฐฑ๋กœ๊ทธ_๋ฐ์ดํ„ฐ_8๊ฐœ๋งŒ_์‘๋‹ต(){ - //given - Long userId = 1L; - int page = 0; - int size = 8; - //when & then - assertThat(todoService.getBacklogList(userId,page,size).getBacklogs().size()).isEqualTo(size); + assertThat(deletedTodo).isEmpty(); } - @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•  ์ผ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("์Šค์™€์ดํ”„ ์‹œ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•  ์ผ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_์กด์žฌํ•˜์ง€_์•Š๋Š”_ํ• ์ผ_์˜ˆ์™ธ(){ + void swipe_TodoNotExistException() { //given Long notExistTodoId = 1000L; Long userId = 1L; + SwipeRequestDto swipeRequestDto = SwipeRequestDto.builder() + .todoId(notExistTodoId) + .build(); + //when & then - assertThatThrownBy(()-> todoService.swipe(userId,notExistTodoId)) + assertThatThrownBy(() -> todoService.swipe(userId, swipeRequestDto)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.TODO_NOT_EXIST.getMessage()); } - @DisplayName("์‚ฌ์šฉ์ž์˜ ํ•  ์ผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("์Šค์™€์ดํ”„ ์‹œ, ์‚ฌ์šฉ์ž์˜ ํ•  ์ผ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_์‚ฌ์šฉ์ž_์˜ˆ์™ธ(){ + void swipe_TodoUserNotMatchException() { //given Long todoId = 1L; Long userId = 50L; + SwipeRequestDto swipeRequestDto = SwipeRequestDto.builder() + .todoId(todoId) + .build(); + //when & then - assertThatThrownBy(()-> todoService.swipe(userId,todoId)) + assertThatThrownBy(() -> todoService.swipe(userId, swipeRequestDto)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.TODO_USER_NOT_MATCH.getMessage()); } - @DisplayName("๋‹ฌ์„ฑํ•œ TODAY์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("์Šค์™€์ดํ”„ ์‹œ, ๋‹ฌ์„ฑํ•œ TODAY์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_๋‹ฌ์„ฑํ•œ_ํˆฌ๋ฐ์ด_์˜ˆ์™ธ(){ + void swipe_AlreadyCompletedTodoException() { //given Long userId = 1L; Long todoId = 3L; + SwipeRequestDto swipeRequestDto = SwipeRequestDto.builder() + .todoId(todoId) + .build(); + //when & then - assertThatThrownBy(()-> todoService.swipe(userId,todoId)) + assertThatThrownBy(() -> todoService.swipe(userId, swipeRequestDto)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO.getMessage()); } - @DisplayName("TODAY์ธ ํ• ์ผ์ด๋ฉด BACKLOG๋กœ ์ˆ˜์ •๋œ๋‹ค.") + @DisplayName("์Šค์™€์ดํ”„ ์‹œ, TODAY์ธ ํ• ์ผ์ด๋ฉด BACKLOG๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ •๋œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_TODAY์—์„œ_BACKLOG๋กœ(){ + void swipe_Today_Success() { //given Long userId = 1L; Long todoId = 4L; - //when & then - todoService.swipe(userId,todoId); + Integer maxBacklogOrder = todoRepository.findMaxBacklogOrderByUserIdOrZero(userId); + SwipeRequestDto swipeRequestDto = SwipeRequestDto.builder() + .todoId(todoId) + .build(); + + //when + todoService.swipe(userId, swipeRequestDto); + Todo findTodo = todoRepository.findById(todoId).get(); - assertThat(todoRepository.findById(todoId).get().getType()).isEqualTo(Type.BACKLOG); + //then + assertThat(findTodo.getType()).isEqualTo(Type.BACKLOG); + assertThat(findTodo.getBacklogOrder()).isEqualTo(maxBacklogOrder + 1); + assertThat(findTodo.getTodayOrder()).isNull(); + assertThat(findTodo.getTodayStatus()).isNull(); + assertThat(findTodo.getTodayDate()).isNull(); } - @DisplayName("BACKLOG์ธ ํ• ์ผ์„ ์Šค์™€์ดํ”„ํ•˜๋ฉด todayOrder๊ฐ€ 17์ด ๋œ๋‹ค.") + @DisplayName("์Šค์™€์ดํ”„ ์‹œ, BACKLOG์ธ ํ• ์ผ์ด๋ฉด TODAY๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ •๋œ๋‹ค.") @Test - void ์Šค์™€์ดํ”„_TODAYORDER_๊ฐฑ์‹ _์„ฑ๊ณต(){ + void swipe_Backlog_Success() { //given Long userId = 1L; Long todoId = 18L; - //when & then - todoService.swipe(userId,todoId); - - assertThat(todoRepository.findById(todoId).get().getTodayOrder()).isEqualTo(17); - } - - @Test - @DisplayName("isBookmark๊ฐ€ true์ผ ๋•Œ false๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ…Œ์ŠคํŠธ") - void toggleIsBookmark_TrueToFalse() { - // given - Todo todo = Todo.builder() - .userId(1L) - .type(Type.TODAY) - .content("Sample Todo") - .isBookmark(true) // isBookmark๊ฐ€ true๋กœ ์„ค์ •๋จ + Integer maxTodayOrder = todoRepository.findMaxTodayOrderByUserIdOrZero(userId); + SwipeRequestDto swipeRequestDto = SwipeRequestDto.builder() + .todoId(todoId) .build(); - // Todo๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅ - Todo savedTodo = todoRepository.save(todo); - Long todoId = savedTodo.getId(); - - // when: toggleIsBookmark ํ˜ธ์ถœ - todoService.toggleIsBookmark(1L,todoId); + //when + todoService.swipe(userId, swipeRequestDto); + Todo findTodo = todoRepository.findById(todoId).get(); - // then: DB์—์„œ Todo๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธ - Todo updatedTodo = todoRepository.findByIdAndUserId(todoId, 1L).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - assertThat(updatedTodo.isBookmark()).isFalse(); // isBookmark๊ฐ€ false๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + //then + assertThat(findTodo.getType()).isEqualTo(Type.TODAY); + assertThat(findTodo.getBacklogOrder()).isNull(); + assertThat(findTodo.getTodayOrder()).isEqualTo(maxTodayOrder + 1); + assertThat(findTodo.getTodayStatus()).isEqualTo(TodayStatus.INCOMPLETE); + assertThat(findTodo.getTodayDate()).isEqualTo(LocalDate.now()); } @Test - @DisplayName("isBookmark๊ฐ€ false์ผ ๋•Œ true๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ…Œ์ŠคํŠธ") - void toggleIsBookmark_FalseToTrue() { + @DisplayName("์ฆ๊ฒจ์ฐพ๊ธฐ ๋ณ€๊ฒฝ ์‹œ isBookmark๊ฐ€ true์ด๋ฉด false๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.") + void toggleIsBookmark_TrueToFalse_Success() { // given - Todo todo = Todo.builder() - .userId(1L) - .type(Type.TODAY) - .content("Sample Todo") - .isBookmark(false) // isBookmark๊ฐ€ false๋กœ ์„ค์ •๋จ - .build(); - - // Todo๋ฅผ ์‹ค์ œ๋กœ ์ €์žฅ - Todo savedTodo = todoRepository.save(todo); - Long todoId = savedTodo.getId(); + Long userId = 1L; + Long todoId = 28L; - // when: toggleIsBookmark ํ˜ธ์ถœ (void ๋ฉ”์„œ๋“œ) - todoService.toggleIsBookmark(1L,todoId); + // when + todoService.toggleIsBookmark(userId, todoId); - // then: DB์—์„œ Todo๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์„œ ํ™•์ธ - Todo updatedTodo = todoRepository.findById(todoId).orElseThrow(() -> new TodoException(TODO_NOT_EXIST)); - assertThat(updatedTodo.isBookmark()).isTrue(); // isBookmark๊ฐ€ true๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ + // then + Todo updatedTodo = todoRepository.findById(todoId).get(); + assertThat(updatedTodo.isBookmark()).isFalse(); } @Test - @DisplayName("์กด์žฌํ•˜์ง€ ์•Š๋Š” Todo ID์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - void toggleIsBookmark_TodoNotFound() { + @DisplayName("์ฆ๊ฒจ์ฐพ๊ธฐ ๋ณ€๊ฒฝ ์‹œ isBookmark๊ฐ€ false์ด๋ฉด true๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.") + void toggleIsBookmark_FalseToTrue_Success() { // given - Long nonExistentTodoId = 999L; // ์กด์žฌํ•˜์ง€ ์•Š๋Š” Todo ID + Long userId = 1L; + Long todoId = 27L; - // when & then - assertThrows(TodoException.class, () -> { - todoService.toggleIsBookmark(1L, nonExistentTodoId); // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ - }); - } - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์‚ฌ์šฉ์ž์˜ ํ• ์ผ์ด ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") - @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์‚ฌ์šฉ์ž์˜_ํ• ์ผ์ด_์•„๋‹Œ_์˜ˆ์™ธ(){ - //given - Long userId = 50L; - DragAndDropRequestDto request = DragAndDropRequestDto.builder() - .type(Type.TODAY) - .todoIds(List.of(1L)) - .build(); + // when + todoService.toggleIsBookmark(userId, todoId); - //when & then - assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) - .isInstanceOf(TodoException.class) - .hasMessage(TodoExceptionErrorCode.TODO_USER_NOT_MATCH.getMessage()); + // then + Todo updatedTodo = todoRepository.findById(todoId).get(); + assertThat(updatedTodo.isBookmark()).isTrue(); } @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ์ด Type๊ณผ ๋งž์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_ํƒ€์ž…์ด_๋งž์ง€_์•Š๋Š”_์˜ˆ์™ธ(){ + void dragAndDrop_TodoTypeNotMatchException() { //given Long userId = 1L; DragAndDropRequestDto request = DragAndDropRequestDto.builder() .type(Type.BACKLOG) .todoIds(List.of(1L)) .build(); + //when & then - assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + assertThatThrownBy(() -> todoService.dragAndDrop(userId, request)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.TODO_TYPE_NOT_MATCH.getMessage()); } @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ์ด๋ฏธ ๋‹ฌ์„ฑํ•œ TODAY ํฌํ•จ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ด๋ฏธ_๋‹ฌ์„ฑํ•œ_ํˆฌ๋ฐ์ด_์˜ˆ์™ธ(){ + void dragAndDrop_AlreadyCompletedTodoException() { //given Long userId = 1L; DragAndDropRequestDto request = DragAndDropRequestDto.builder() .type(Type.TODAY) .todoIds(List.of(3L)) .build(); + //when & then - assertThatThrownBy(()-> todoService.dragAndDrop(userId,request)) + assertThatThrownBy(() -> todoService.dragAndDrop(userId, request)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.ALREADY_COMPLETED_TODO.getMessage()); } - @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ๋“ค์˜ Order๋ฅผ ์žฌ์ •๋ ฌํ•œ๋‹ค.") + @DisplayName("๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์‹œ ํ•  ์ผ๋“ค์˜ Order๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์žฌ์ •๋ ฌํ•œ๋‹ค.") @Test - void ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ_์ˆœ์„œ_์žฌ์ •๋ ฌ(){ + void dragAndDrop_Success() { //given Long userId = 1L; DragAndDropRequestDto request = DragAndDropRequestDto.builder() .type(Type.TODAY) - .todoIds(List.of(1L,5L,2L,4L)) + .todoIds(List.of(1L, 5L, 2L, 4L)) .build(); + //when - todoService.dragAndDrop(userId,request); + todoService.dragAndDrop(userId, request); + //then Todo TodoId1 = todoRepository.findById(1L).get(); Todo TodoId5 = todoRepository.findById(5L).get(); @@ -357,112 +227,71 @@ void toggleIsBookmark_TodoNotFound() { assertThat(TodoId2.getTodayOrder()).isEqualTo(3L); assertThat(TodoId4.getTodayOrder()).isEqualTo(2L); } - @Test - @DisplayName("Histories ํŽ˜์ด์ง• ๋ฐ ์ •๋ ฌ ํ…Œ์ŠคํŠธ") - void getHistories_ShouldReturnPagedAndSortedResult() { - // given - Long userId = 1L; - int page = 0; - int size = 5; - - // when - PaginatedHistoryResponseDto result = todoService.getHistories(userId, page, size); - - // then - // result์˜ histories ๋ฆฌ์ŠคํŠธ์˜ ์‹ค์ œ ํฌ๊ธฐ - int actualSize = result.getHistories().size(); - - // ํŽ˜์ด์ง€๋‹น ๋ฐ˜ํ™˜๋˜๋Š” ํ•ญ๋ชฉ์˜ ์ˆ˜๊ฐ€ size ์ดํ•˜์ธ์ง€ ํ™•์ธ (๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€์ผ ๊ฒฝ์šฐ ์ ์„ ์ˆ˜ ์žˆ์Œ) - assertThat(actualSize).isLessThanOrEqualTo(size); - - // ์ „์ฒด ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๊ณ„์‚ฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - assertThat(result.getTotalPageCount()).isGreaterThan(0); - - // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - List histories = result.getHistories(); - for (int i = 0; i < histories.size() - 1; i++) { - LocalDate current = histories.get(i).getDate(); - LocalDate next = histories.get(i + 1).getDate(); - - // ํ˜„์žฌ ํ•ญ๋ชฉ์˜ ๋‚ ์งœ๊ฐ€ ๋‹ค์Œ ํ•ญ๋ชฉ์˜ ๋‚ ์งœ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ดํ›„์ธ์ง€(๋‚ด๋ฆผ์ฐจ์ˆœ์ธ์ง€) ํ™•์ธ - assertThat(current).isAfterOrEqualTo(next); - } - } + @DisplayName("ํ•  ์ผ ์ƒ์„ธ ์กฐํšŒ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - @DisplayName("YESTERDAY ํƒ€์ž…๊ณผ INCOMPLETE ์ƒํƒœ์ธ todo ๋ชฉ๋ก์„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฐ€์ ธ์˜จ๋‹ค") - void getYesterdays_ShouldReturnPagedResult() { - // given - Long userId = 1L; - int page = 0; - int size = 5; // ํ•œ๋ฒˆ์— 5๊ฐœ์˜ todo ๊ฐ€์ ธ์˜ค๊ธฐ - - // when - PaginatedYesterdayResponseDto result = todoService.getYesterdays(userId, page, size); - - // then - assertThat(result.getYesterdays()).hasSizeLessThanOrEqualTo(size); // ํŽ˜์ด์ง• ํฌ๊ธฐ๋งŒํผ ๊ฐ€์ ธ์˜ด - assertThat(result.getTotalPageCount()).isGreaterThan(0); // ์ด ํŽ˜์ด์ง€ ์ˆ˜๊ฐ€ 0๋ณด๋‹ค ํผ - assertThat(result.getYesterdays().get(0).getTodoId()).isNotNull(); // ์ฒซ ๋ฒˆ์งธ todo์˜ ID๊ฐ€ null์ด ์•„๋‹˜ - assertThat(result.getYesterdays().get(0).getContent()).isNotNull(); // ์ฒซ ๋ฒˆ์งธ todo์˜ ๋‚ด์šฉ์ด null์ด ์•„๋‹˜ - } - - @DisplayName("ํ•  ์ผ ์ƒ์„ธ์กฐํšŒ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") - @Test - void ํ• ์ผ_์ƒ์„ธ์กฐํšŒ_์„ฑ๊ณต(){ + void getTodoInfo_Success() { //given Long userId = 1L; Long todoId = 10L; + //when TodoDetailResponseDto todoInfo = todoService.getTodoInfo(userId, todoId); + //then - assertThat(todoInfo.getContent()).isEqualTo("ํ•  ์ผ 10"); - assertThat(todoInfo.getDeadline()).isEqualTo(LocalDate.of(2024,10,26)); - assertThat(todoInfo.getIsBookmark()).isTrue(); + assertThat(todoInfo.content()).isEqualTo("ํ•  ์ผ 10"); + assertThat(todoInfo.deadline()).isEqualTo(LocalDate.of(2024, 10, 26)); + assertThat(todoInfo.isBookmark()).isTrue(); } @DisplayName("๋งˆ๊ฐ๊ธฐํ•œ ์ˆ˜์ • ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ๋งˆ๊ฐ๊ธฐํ•œ_์ˆ˜์ •_์„ฑ๊ณต(){ + void updateDeadline_Success() { //given Long userId = 1L; Long todoId = 11L; - LocalDate updateDate = LocalDate.of(2024,12,25); + LocalDate updateDate = LocalDate.of(2024, 12, 25); + DeadlineUpdateRequestDto deadlineUpdateRequestDto = DeadlineUpdateRequestDto.builder() + .deadline(updateDate) + .build(); //when - todoService.updateDeadline(userId,todoId,updateDate); + todoService.updateDeadline(userId, todoId, deadlineUpdateRequestDto); Todo findTodo = todoRepository.findById(todoId).get(); //then assertThat(findTodo.getDeadline()).isEqualTo(updateDate); } - @DisplayName("ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + @DisplayName("ํ•  ์ผ ๋‚ด์šฉ ์ˆ˜์ • ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํ• ์ผ_๋‚ด์šฉ_์ˆ˜์ •_์„ฑ๊ณต(){ + void updateContent_Success() { //given Long userId = 1L; Long todoId = 11L; - String updateContent = "ํ• ์ผ ๋‚ด์šฉ ์ˆ˜์ •"; + String updateContent = "ํ•  ์ผ ๋‚ด์šฉ ์ˆ˜์ •"; + ContentUpdateRequestDto contentUpdateRequestDto = ContentUpdateRequestDto.builder() + .content(updateContent) + .build(); //when - todoService.updateContent(userId,todoId,updateContent); - Todo findTodo = todoRepository.findById(todoId).get(); + todoService.updateContent(userId, todoId, contentUpdateRequestDto); //then + Todo findTodo = todoRepository.findById(todoId).get(); assertThat(findTodo.getContent()).isEqualTo(updateContent); } @DisplayName("ํˆฌ๋ฐ์ด ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์„ฑ๊ณต(){ + void updateIsCompleted_Today_Success() { //given Long userId = 1L; Long todoId = 1L; //when - todoService.updateIsCompleted(userId,todoId); + todoService.updateIsCompleted(userId, todoId); Todo findTodo = todoRepository.findById(todoId).get(); //then @@ -472,13 +301,13 @@ void getYesterdays_ShouldReturnPagedResult() { @DisplayName("์–ด์ œํ•œ์ผ ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") @Test - void ์–ด์ œํ•œ์ผ_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์„ฑ๊ณต(){ + void updateIsCompleted_Yesterday_Success() { //given Long userId = 1L; Long todoId = 35L; //when - todoService.updateIsCompleted(userId,todoId); + todoService.updateIsCompleted(userId, todoId); Todo findTodo = todoRepository.findById(todoId).get(); //then @@ -486,15 +315,15 @@ void getYesterdays_ShouldReturnPagedResult() { assertThat(findTodo.getCompletedDateTime()).isNotNull(); } - @DisplayName("๋ฐฑ๋กœ๊ทธ ๋‹ฌ์„ฑ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + @DisplayName("ํ•  ์ผ ๋‹ฌ์„ฑ ์—ฌ๋ถ€ ๋ณ€๊ฒฝ ์‹œ ๋ฐฑ๋กœ๊ทธ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") @Test - void ๋ฐฑ๋กœ๊ทธ_๋‹ฌ์„ฑ์—ฌ๋ถ€_๋ณ€๊ฒฝ_์˜ˆ์™ธ(){ + void updateIsCompleted_BacklogCantCompleteException() { //given Long userId = 1L; Long todoId = 20L; //when & then - assertThatThrownBy(()-> todoService.updateIsCompleted(userId,todoId)) + assertThatThrownBy(() -> todoService.updateIsCompleted(userId, todoId)) .isInstanceOf(TodoException.class) .hasMessage(TodoExceptionErrorCode.BACKLOG_CANT_COMPLETE.getMessage()); } diff --git a/src/test/java/server/poptato/todo/application/TodoTodayServiceTest.java b/src/test/java/server/poptato/todo/application/TodoTodayServiceTest.java new file mode 100644 index 0000000..74ed178 --- /dev/null +++ b/src/test/java/server/poptato/todo/application/TodoTodayServiceTest.java @@ -0,0 +1,74 @@ +package server.poptato.todo.application; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import server.poptato.todo.application.response.TodayListResponseDto; +import server.poptato.todo.application.response.TodayResponseDto; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; + +import java.time.LocalDate; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +class TodoTodayServiceTest { + @Autowired + private TodoTodayService todoTodayService; + @Autowired + private TodoRepository todoRepository; + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, size=8์„ ์š”์ฒญํ•˜๋ฉด ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด ๋ฐ์ดํ„ฐ ๋จผ์ € 8๊ฐœ ์‘๋‹ต๋œ๋‹ค.") + @Test + void getTodayList_Success(){ + //given + Long userId = 1L; + int page = 0; + int size = 8; + LocalDate todayDate = LocalDate.of(2024,10,16); + + //when + List todayList = todoTodayService.getTodayList(userId, page, size, todayDate).getTodays(); + + //then + assertThat(todayList.size()).isEqualTo(size); + assertThat(todayList) + .allMatch(today -> today.getTodayStatus() == TodayStatus.INCOMPLETE); + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ์œ ํšจํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ˆ˜์ผ ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @Test + void getTodayList_NotValidPage_Success(){ + //given + Long userId = 1L; + int page = 2; + int size = 8; + LocalDate todayDate = LocalDate.of(2024,10,16); + + //when + TodayListResponseDto todayList = todoTodayService.getTodayList(userId, page, size, todayDate); + + //then + assertThat(todayList.getTodays()).isEmpty(); + } + + @DisplayName("ํˆฌ๋ฐ์ด ๋ชฉ๋ก ์กฐํšŒ ์‹œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.") + @Test + void getTodayList_EmptyToday_Success(){ + //given + Long userId = 50L; + int page = 0; + int size = 8; + LocalDate todayDate = LocalDate.now(); + + //when + TodayListResponseDto todayList = todoTodayService.getTodayList(userId, page, size, todayDate); + + //then + assertThat(todayList.getTodays()).isEmpty(); + assertThat(todayList.getTotalPageCount()).isEqualTo(0); + } +} \ No newline at end of file diff --git a/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java b/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java index 6480505..cb38430 100644 --- a/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java +++ b/src/test/java/server/poptato/todo/application/response/TodayResponseDtoTest.java @@ -7,12 +7,12 @@ import java.time.LocalDate; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; class TodayResponseDtoTest { @DisplayName("์˜ค๋Š˜์ด 16์ผ์ด๊ณ  ๋งˆ๊ฐ์ด 20์ผ์ด๋ฉด ๋‚จ์€ ์ผ์€ 4์ผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.") @Test - void ๋งˆ๊ฐ๊ธฐํ•œ์ด_์ •์ƒ์ ์œผ๋กœ_๊ณ„์‚ฐ๋œ๋‹ค() { + void calculateDDay_Success() { //given Todo todo = Todo.builder() .id(1000L) @@ -30,9 +30,9 @@ class TodayResponseDtoTest { assertThat(responseDto.getDDay()).isEqualTo(4); } - @DisplayName("๋งˆ๊ฐ์ด ์„ค์ •์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ NULL๋กœ ์ •์ƒ ์‘๋‹ต๋œ๋‹ค.") + @DisplayName("๋งˆ๊ฐ์ด ์„ค์ • ์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ NULL๋กœ ์ •์ƒ ์‘๋‹ต๋œ๋‹ค.") @Test - void ๋งˆ๊ฐ๊ธฐํ•œ_null_์‘๋‹ต() { + void responseDDAYNull_Success() { //given Todo todo = Todo.builder() .id(1L) diff --git a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java index 3e21ae3..b8a7f03 100644 --- a/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java +++ b/src/test/java/server/poptato/todo/domain/repository/TodoRepositoryTest.java @@ -7,6 +7,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.value.TodayStatus; import server.poptato.todo.domain.value.Type; @@ -21,85 +22,80 @@ class TodoRepositoryTest { @Autowired private TodoRepository todoRepository; - @DisplayName("userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋‹ฌ์„ฑ๋œ ํˆฌ๋ฐ์ด๊ฐ€ ๋‹ฌ์„ฑ ์‹œ๊ฐ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") + @DisplayName("๋‹ฌ์„ฑ๋œ ํˆฌ๋ฐ์ด ์กฐํšŒ ์‹œ, userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋‹ฌ์„ฑ๋œ ํˆฌ๋ฐ์ด๊ฐ€ ๋‹ฌ์„ฑ ์‹œ๊ฐ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋‹ฌ์„ฑ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() { + void findCompletedToday_Success() { //given Long userId = 1L; LocalDate todayDate = LocalDate.of(2024, 10, 16); //when - List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeDesc( - userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); + List todos = todoRepository.findCompletedTodays(userId, Type.TODAY, todayDate, TodayStatus.COMPLETED); + //then assertThat(todos).isNotEmpty(); - - // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getUserId().equals(userId))).isTrue(); - - // type์ด ๋ชจ๋‘ TODAY์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getType() == Type.TODAY)).isTrue(); - - // todayDate๊ฐ€ ๋ชจ๋‘ 2024-10-16์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getTodayDate().equals(todayDate))).isTrue(); - - // ์™„๋ฃŒ๋œ ํ•  ์ผ์€ completeDateTime์ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ for (int i = 0; i < todos.size() - 1; i++) { assertThat(todos.get(i).getCompletedDateTime()).isAfterOrEqualTo(todos.get(i + 1).getCompletedDateTime()); } } - @DisplayName("userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") + @DisplayName("๋ฏธ๋‹ฌ์„ฑ๋œ ํˆฌ๋ฐ์ด ์กฐํšŒ ์‹œ, userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋ฏธ๋‹ฌ์„ฑ ํˆฌ๋ฐ์ด๊ฐ€ TodayOrder์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") @Test - void ํˆฌ๋ฐ์ด_๋ฏธ๋‹ฌ์„ฑ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() { + void findInCompleteToday_Success() { //given Long userId = 1L; LocalDate todayDate = LocalDate.of(2024, 10, 16); //when - List todos = todoRepository.findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( - userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); + List todos = todoRepository.findIncompleteTodays(userId, Type.TODAY, todayDate, TodayStatus.INCOMPLETE); + //then assertThat(todos).isNotEmpty(); - - // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getUserId().equals(userId))).isTrue(); - - // type์ด ๋ชจ๋‘ TODAY์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getType() == Type.TODAY)).isTrue(); - - // todayDate๊ฐ€ ๋ชจ๋‘ 2024-10-16์ธ์ง€ ํ™•์ธ assertThat(todos.stream().allMatch(todo -> todo.getTodayDate().equals(todayDate))).isTrue(); - - // ๋ฏธ์™„๋ฃŒ๋œ ํ•  ์ผ์€ todayOrder๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ for (int i = 0; i < todos.size() - 1; i++) { assertThat(todos.get(i).getTodayOrder()).isGreaterThan(todos.get(i + 1).getTodayOrder()); } } - @DisplayName("userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋ฐฑ๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") + @DisplayName("๋ฐฑ๋กœ๊ทธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ, userId๊ฐ€ 1์ด ๋“ฑ๋กํ•œ ๋ฐฑ๋กœ๊ทธ ๋ฆฌ์ŠคํŠธ๊ฐ€ BacklogOrder์— ๋”ฐ๋ผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋œ๋‹ค.") @Test - void ๋ฐฑ๋กœ๊ทธ_๋ชฉ๋ก์กฐํšŒ_์„ฑ๊ณต์‘๋‹ต() { + void findBacklogs_Success() { //given Long userId = 1L; List types = List.of(Type.BACKLOG, Type.YESTERDAY); + List statuses = List.of(TodayStatus.COMPLETED); PageRequest pageRequest = PageRequest.of(0, 8); //when - Page backlogs = todoRepository.findByUserIdAndTypeInOrderByBacklogOrderDesc( - userId, types, pageRequest); + Page backlogs = todoRepository.findBacklogsByUserId(userId, types, statuses, pageRequest); + //then assertThat(backlogs.getContent()).isNotEmpty(); - - // userId๊ฐ€ ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธ assertThat(backlogs.getContent().stream().allMatch(backlog -> backlog.getUserId().equals(userId))).isTrue(); - - // type์ด BACKLOG ํ˜น์€ YESTERDAY์ธ์ง€ ํ™•์ธ assertThat(backlogs.getContent().stream().allMatch(backlog -> backlog.getType().equals(Type.BACKLOG) || backlog.getType().equals(Type.YESTERDAY))).isTrue(); - - // backlogOrder๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ for (int i = 0; i < backlogs.getContent().size() - 1; i++) { assertThat(backlogs.getContent().get(i).getBacklogOrder()).isGreaterThan(backlogs.getContent().get(i + 1).getBacklogOrder()); } } + + @DisplayName("ํžˆ์Šคํ† ๋ฆฌ ์กฐํšŒ ์‹œ,userId๊ฐ€ 1์˜ ๊ธฐ๋ก์„ ์กฐํšŒํ•œ๋‹ค") + @Test + void findHistories_Success(){ + //given + Long userId = 1L; + LocalDate today = LocalDate.of(2024,10,30); + Pageable pageable = PageRequest.of(0, 15, Sort.by(Sort.Direction.DESC, "completedDateTime")); + + //when + Page histories = todoRepository.findHistories(userId, today, pageable); + + //then + assertThat(histories).isNotNull(); + assertThat(histories.getContent().size()).isEqualTo(6); + } } \ No newline at end of file diff --git a/src/test/java/server/poptato/user/api/UserControllerTest.java b/src/test/java/server/poptato/user/api/UserControllerTest.java index 4d4ed76..813de5b 100644 --- a/src/test/java/server/poptato/user/api/UserControllerTest.java +++ b/src/test/java/server/poptato/user/api/UserControllerTest.java @@ -1,7 +1,5 @@ package server.poptato.user.api; -import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.validation.Validator; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -40,39 +38,44 @@ class UserControllerTest { private final String userId = "1"; @BeforeEach - void userId๊ฐ€_1์ธ_์•ก์„ธ์Šคํ† ํฐ_์ƒ์„ฑ() { + void createAccessToken_UserIdIsOne() { accessToken = jwtService.createAccessToken(userId); } @AfterEach - void ์•ก์„ธ์Šคํ† ํฐ_๋น„ํ™œ์„ฑํ™”() { + void deleteRefreshToken() { jwtService.deleteRefreshToken(userId); } @Test - @DisplayName("ํ”„๋กœํ•„ ์กฐํšŒ ์„ฑ๊ณต ํ…Œ์ŠคํŠธ") - void getUserNameAndEmail() throws Exception { + @DisplayName("๋งˆ์ดํŽ˜์ด์ง€ ์กฐํšŒ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + void getUserInfo_Success() throws Exception { + //given & when & then mockMvc.perform(get("/user/mypage") - .header("Authorization", "Bearer "+accessToken) + .header("Authorization", "Bearer " + accessToken) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andDo(print()); } + @Test - @DisplayName("ํ”„๋กœํ•„ ์กฐํšŒ ์‹คํŒจ ํ…Œ์ŠคํŠธ - invalid token") - void getUserNameAndEmailFailedInvalidToken() throws Exception { + @DisplayName("๋งˆ์ดํŽ˜์ด์ง€ ์กฐํšŒ ์‹œ ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + void getUserInfo_InvalidTokenException() throws Exception { + //given String invalidToken = "invalidToken"; + + //when & then mockMvc.perform(get("/user/mypage") - .header("Authorization", "Bearer "+invalidToken) + .header("Authorization", "Bearer " + invalidToken) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isUnauthorized()) .andDo(print()); } @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์„ฑ๊ณต - ํ† ํฐ ๊ฒ€์ฆ ํ›„ ์‘๋‹ต ํ™•์ธ") - void deleteUserSuccess() throws Exception { - + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + void deleteUser_Success() throws Exception { + //given & when & then mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + accessToken)) .andExpect(status().isOk()) @@ -80,18 +83,21 @@ void deleteUserSuccess() throws Exception { } @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ํ† ํฐ ์—†์Œ") - void deleteUserFailureNoToken() throws Exception { + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹œ ํ† ํฐ์ด ์—†์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.") + void deleteUser_NoTokenException() throws Exception { + //given & when & then mockMvc.perform(MockMvcRequestBuilders.delete("/user")) .andExpect(status().isUnauthorized()) .andDo(print()); } @Test - @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ - ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ") - void deleteUserFailureInvalidToken() throws Exception { + @DisplayName("ํšŒ์› ํƒˆํ‡ด ์‹œ ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ์ด๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค") + void deleteUser_InvalidTokenException() throws Exception { + //given String invalidToken = "invalidToken"; + //when & then mockMvc.perform(MockMvcRequestBuilders.delete("/user") .header("Authorization", "Bearer " + invalidToken)) .andExpect(status().isUnauthorized()) diff --git a/src/test/java/server/poptato/user/application/UserServiceTest.java b/src/test/java/server/poptato/user/application/UserServiceTest.java index f8b31e9..07c587a 100644 --- a/src/test/java/server/poptato/user/application/UserServiceTest.java +++ b/src/test/java/server/poptato/user/application/UserServiceTest.java @@ -8,8 +8,10 @@ import server.poptato.user.application.service.UserService; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; +import server.poptato.user.exception.errorcode.UserExceptionErrorCode; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; @SpringBootTest class UserServiceTest { @@ -20,28 +22,29 @@ class UserServiceTest { @Autowired private UserRepository userRepository; @Test - @DisplayName("getUserNameAndEmailById ๋ฉ”์„œ๋“œ๋Š” ์œ ํšจํ•œ userId๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค") - public void shouldReturnUserNameAndEmail_WhenUserIdIsValid() { - // Given + @DisplayName("๋งˆ์ดํŽ˜์ด์ง€ ์กฐํšŒ ์‹œ ์„ฑ๊ณตํ•œ๋‹ค.") + public void getUserInfo_Success() { + // given Long userId = 1L; - // When + // when UserInfoResponseDto responseDto = userService.getUserInfo(userId); - // Then - assertThat(responseDto.getName()).isEqualTo("Poptato"); - assertThat(responseDto.getEmail()).isEqualTo("poptato@naver.com"); + // then + assertThat(responseDto.name()).isEqualTo("Poptato"); + assertThat(responseDto.email()).isEqualTo("poptato@naver.com"); } @Test - @DisplayName("getUserNameAndEmailById ๋ฉ”์„œ๋“œ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ userId๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ UserException์„ ๋˜์ง„๋‹ค") - public void shouldThrowUserException_WhenUserIdIsInvalid() { - // Given + @DisplayName("๋งˆ์•„ํŽ˜์ด์ง€ ์กฐํšŒ ์‹œ, ์œ ํšจํ•˜์ง€ ์•Š์€ userId๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ UserException์„ ๋˜์ง„๋‹ค") + public void getUserInfo_UserNotExistException() { + // given Long invalidUserId = 2L; - // When & Then - org.junit.jupiter.api.Assertions.assertThrows(UserException.class, - () -> userService.getUserInfo(invalidUserId)); + // when & then + assertThatThrownBy(()-> userService.getUserInfo(invalidUserId)) + .isInstanceOf(UserException.class) + .hasMessage(UserExceptionErrorCode.USER_NOT_EXIST.getMessage()); } } From fc0ac5f944a6f2a3c0f0898cffecf8cb647af880 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 18:17:27 +0900 Subject: [PATCH 163/177] =?UTF-8?q?fix:=20ci=EC=97=90=EC=84=9C=20redis=20i?= =?UTF-8?q?mage=20=EB=B0=9B=EB=8F=84=EB=A1=9D=20ci.yml=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 43 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da9c89a..d3c10bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,66 +1,67 @@ name: Java CI with Gradle -#dev ๋ธŒ๋žœ์น˜๋กœ prํ•  ๋•Œ CI ์ ์šฉ +# dev ๋ธŒ๋žœ์น˜๋กœ PRํ•  ๋•Œ CI ์ ์šฉ on: pull_request: branches: [ "dev" ] types: [ opened, synchronize ] - push: # push ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ - branches: # ํƒ€๊ฒŸ ๋ธŒ๋žœ์น˜ + push: + branches: - dev -#build ์ž‘์—… +# build ์ž‘์—… jobs: build: - #์ž‘์—…์ด ์‹คํ–‰๋  ํ™˜๊ฒฝ ์ง€์ • runs-on: ubuntu-latest permissions: contents: read - #๊ฐ ๋‹จ๊ณ„๊ฐ€ ์ˆœ์ž์ ์œผ๋กœ ์ง„ํ–‰ steps: - - uses: actions/checkout@v4 - #JDK 17 ์„ค์น˜ + # ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ + - name: Checkout code + uses: actions/checkout@v4 + + # JDK 17 ์„ค์น˜ - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' + # Redis ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ + - name: Pull Redis image + run: docker pull redis:latest + + # main์˜ resources ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ - name: Create main resources directory run: mkdir -p src/main/resources + # test์˜ resources ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ - name: Create test resources directory run: mkdir -p src/test/resources # main์˜ application.yml ์ƒ์„ฑ - name: Set Release YML File run: | - cd ./src/main/resources - touch ./application.yml - echo "${{ secrets.APPLICATION_YML }}" > ./application.yml + echo "${{ secrets.APPLICATION_YML }}" > src/main/resources/application.yml # test์˜ data.sql ์ƒ์„ฑ - name: Set Test DATA SQL File run: | - cd ./src/test/resources - touch ./data.sql - echo "${{ secrets.TEST_DATA_SQL }}" > ./data.sql + echo "${{ secrets.TEST_DATA_SQL }}" > src/test/resources/data.sql # test์˜ application.yml ์ƒ์„ฑ - name: Set Release Test YML File run: | - cd ./src/test/resources - touch ./application.yml - echo "${{ secrets.APPLICATION_TEST_YML }}" > ./application.yml + echo "${{ secrets.APPLICATION_TEST_YML }}" > src/test/resources/application.yml - #Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด + # Gradle ์„ค์ • ๋ฐ ์˜์กด์„ฑ ๋‹ค์šด - name: Setup Gradle - uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + uses: gradle/actions/setup-gradle@v3.1.0 - #Permission Denied ํ•ด๊ฒฐ + # gradlew ํŒŒ์ผ ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ - name: Make gradlew executable run: chmod +x ./gradlew - #๋นŒ๋“œ ์ž‘์—… ์‹คํ–‰(ํ…Œ์ŠคํŠธ๋„ ๊ฐ™์ด ์ง„ํ–‰) + # ๋นŒ๋“œ ์ž‘์—… ์‹คํ–‰(ํ…Œ์ŠคํŠธ ํฌํ•จ) - name: Build with Gradle Wrapper run: ./gradlew build From 587d72c6d36e42b4814f1bc57227fec81dd1865e Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 18:24:31 +0900 Subject: [PATCH 164/177] =?UTF-8?q?fix:=20ci=EC=97=90=EC=84=9C=20redis=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=ED=95=98=EB=8F=84=EB=A1=9D=20ci.yml=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3c10bb..4e30409 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,6 +31,11 @@ jobs: - name: Pull Redis image run: docker pull redis:latest + # Redis ์‹คํ–‰ + - name: Run Redis container + run: | + docker run -d --name redis-server -p 6379:6379 redis:latest + # main์˜ resources ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ - name: Create main resources directory run: mkdir -p src/main/resources From 18cfe40d4d3356c432b2a44b1c68a07a267a43de Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 18:27:07 +0900 Subject: [PATCH 165/177] =?UTF-8?q?fix:=20ci=EC=97=90=EC=84=9C=20redis=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=ED=95=98=EB=8F=84=EB=A1=9D=20ci.yml=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e30409..5429d6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,7 @@ jobs: - name: Run Redis container run: | docker run -d --name redis-server -p 6379:6379 redis:latest + sleep 5 # main์˜ resources ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ - name: Create main resources directory From 092c703fa0f233849eb0d6a1dfe8b070509da4af Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 18:31:02 +0900 Subject: [PATCH 166/177] =?UTF-8?q?fix:=20ci=EC=97=90=EC=84=9C=20redis=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=ED=95=98=EB=8F=84=EB=A1=9D=20ci.yml=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5429d6e..59eb45e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,15 +27,11 @@ jobs: java-version: '17' distribution: 'temurin' - # Redis ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ - - name: Pull Redis image - run: docker pull redis:latest - # Redis ์‹คํ–‰ - - name: Run Redis container - run: | - docker run -d --name redis-server -p 6379:6379 redis:latest - sleep 5 + - name: Start Redis + uses: supercharge/redis-github-action@1.1.0 + with: + redis-version: 6 # main์˜ resources ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ - name: Create main resources directory From e5b004ad8fbfb65d902436bcb6f9c06ea54f2fd7 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 19:22:04 +0900 Subject: [PATCH 167/177] =?UTF-8?q?fix:=20@TestContainers=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=97=AC=20test=EC=9A=A9=20redis=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ .../server/poptato/auth/api/AuthControllerTest.java | 11 +++++++++++ .../poptato/auth/application/AuthServiceTest.java | 11 +++++++++++ 3 files changed, 25 insertions(+) diff --git a/build.gradle b/build.gradle index 053341f..338b5d7 100644 --- a/build.gradle +++ b/build.gradle @@ -46,8 +46,11 @@ dependencies { //test testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation 'com.h2database:h2' + testImplementation "org.testcontainers:testcontainers:1.19.0" + testImplementation "org.testcontainers:junit-jupiter:1.19.0" implementation 'com.squareup.okhttp3:okhttp:4.9.3' implementation 'com.google.code.gson:gson:2.9.0' diff --git a/src/test/java/server/poptato/auth/api/AuthControllerTest.java b/src/test/java/server/poptato/auth/api/AuthControllerTest.java index 46d75c0..63d8dc7 100644 --- a/src/test/java/server/poptato/auth/api/AuthControllerTest.java +++ b/src/test/java/server/poptato/auth/api/AuthControllerTest.java @@ -12,6 +12,10 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import server.poptato.auth.api.request.KakaoLoginRequestDto; import server.poptato.auth.application.service.AuthService; import server.poptato.auth.application.service.JwtService; @@ -24,6 +28,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +@Testcontainers @SpringBootTest @AutoConfigureMockMvc public class AuthControllerTest { @@ -44,6 +49,12 @@ public class AuthControllerTest { private String refreshToken; private final String userId = "1"; + @Container + private static final GenericContainer redisContainer = + new GenericContainer<>("redis:latest") + .withExposedPorts(6379) + .waitingFor(Wait.forListeningPort()); + @BeforeEach void createAccessToken_UserIdIsOne() { tokenPair = jwtService.generateTokenPair(userId); diff --git a/src/test/java/server/poptato/auth/application/AuthServiceTest.java b/src/test/java/server/poptato/auth/application/AuthServiceTest.java index 3da968c..f335292 100644 --- a/src/test/java/server/poptato/auth/application/AuthServiceTest.java +++ b/src/test/java/server/poptato/auth/application/AuthServiceTest.java @@ -7,6 +7,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import server.poptato.auth.api.request.ReissueTokenRequestDto; import server.poptato.auth.application.service.AuthService; import server.poptato.auth.application.service.JwtService; @@ -23,6 +27,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.INVALID_TOKEN; +@Testcontainers @SpringBootTest public class AuthServiceTest { @Autowired @@ -45,6 +50,12 @@ public class AuthServiceTest { @Autowired private RedisTemplate redisTemplate; + @Container + private static final GenericContainer redisContainer = + new GenericContainer<>("redis:latest") + .withExposedPorts(6379) + .waitingFor(Wait.forListeningPort()); + @BeforeEach public void setup() { TokenPair tokenPair = jwtService.generateTokenPair(userIdTypeString); From 23cb539383f44da59fdedae5af3e3de2a4ac0243 Mon Sep 17 00:00:00 2001 From: Kyounglin <102944310+pkl0912@users.noreply.github.com> Date: Sun, 3 Nov 2024 21:01:04 +0900 Subject: [PATCH 168/177] =?UTF-8?q?Chore:=20README=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6188acf..0606405 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,19 @@ ## ๐Ÿฅ” Poptato Backend Server ๐Ÿฅ” -README ์ˆ˜์ •์ค‘.. + +--- + +### ๐Ÿ“˜ ERD (Entity-Relationship Diagram) + +![ERD Diagram](https://github.com/user-attachments/assets/1f3a7541-9f03-4649-bf6d-aed7028f7711) + +--- + +### ๐Ÿ›  System Architecture + +![System Architecture Diagram](https://github.com/user-attachments/assets/212fe9e6-545b-4f56-b453-118824447fbe) + +--- + +### ๐Ÿ“„ API ๋ช…์„ธ์„œ + +[๐Ÿ”— API ๋ช…์„ธ์„œ ๋ฐ”๋กœ๊ฐ€๊ธฐ](https://mountain-fang-96a.notion.site/API-7fc88f1d9d1f448f8926e959e1605cc9?pvs=4) From fd6b0cf916385ecd035970e0ea0bb3ed06516428 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 21:02:24 +0900 Subject: [PATCH 169/177] =?UTF-8?q?fix:=20test=EC=9A=A9=20redis=20?= =?UTF-8?q?=ED=8F=AC=ED=8A=B8=EB=B2=88=ED=98=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/auth/api/AuthControllerTest.java | 19 ++++++++++++++++++- .../auth/application/AuthServiceTest.java | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/test/java/server/poptato/auth/api/AuthControllerTest.java b/src/test/java/server/poptato/auth/api/AuthControllerTest.java index 63d8dc7..6f29059 100644 --- a/src/test/java/server/poptato/auth/api/AuthControllerTest.java +++ b/src/test/java/server/poptato/auth/api/AuthControllerTest.java @@ -1,5 +1,9 @@ package server.poptato.auth.api; +import com.github.dockerjava.api.model.ExposedPort; +import com.github.dockerjava.api.model.HostConfig; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.api.model.Ports; import jakarta.validation.ConstraintViolation; import jakarta.validation.Validation; import jakarta.validation.Validator; @@ -11,6 +15,8 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.MediaType; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.web.servlet.MockMvc; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; @@ -53,7 +59,18 @@ public class AuthControllerTest { private static final GenericContainer redisContainer = new GenericContainer<>("redis:latest") .withExposedPorts(6379) - .waitingFor(Wait.forListeningPort()); + .waitingFor(Wait.forListeningPort()) + .withCreateContainerCmdModifier(cmd -> + cmd.withHostConfig(new HostConfig().withPortBindings( + new PortBinding(Ports.Binding.bindPort(63799), new ExposedPort(6379)) + )) + ); + + @DynamicPropertySource + static void configureRedisProperties(DynamicPropertyRegistry registry) { + registry.add("spring.redis.host", redisContainer::getHost); + registry.add("spring.redis.port", () -> redisContainer.getMappedPort(6379)); + } @BeforeEach void createAccessToken_UserIdIsOne() { diff --git a/src/test/java/server/poptato/auth/application/AuthServiceTest.java b/src/test/java/server/poptato/auth/application/AuthServiceTest.java index f335292..6bf3681 100644 --- a/src/test/java/server/poptato/auth/application/AuthServiceTest.java +++ b/src/test/java/server/poptato/auth/application/AuthServiceTest.java @@ -1,5 +1,9 @@ package server.poptato.auth.application; +import com.github.dockerjava.api.model.ExposedPort; +import com.github.dockerjava.api.model.HostConfig; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.api.model.Ports; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -7,6 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; @@ -54,7 +60,18 @@ public class AuthServiceTest { private static final GenericContainer redisContainer = new GenericContainer<>("redis:latest") .withExposedPorts(6379) - .waitingFor(Wait.forListeningPort()); + .waitingFor(Wait.forListeningPort()) + .withCreateContainerCmdModifier(cmd -> + cmd.withHostConfig(new HostConfig().withPortBindings( + new PortBinding(Ports.Binding.bindPort(63799), new ExposedPort(6379)) + )) + ); + + @DynamicPropertySource + static void configureRedisProperties(DynamicPropertyRegistry registry) { + registry.add("spring.redis.host", redisContainer::getHost); + registry.add("spring.redis.port", () -> redisContainer.getMappedPort(6379)); + } @BeforeEach public void setup() { From a117ee172dfc65a884e3f6628f5edf6bbca515ae Mon Sep 17 00:00:00 2001 From: Kyounglin <102944310+pkl0912@users.noreply.github.com> Date: Sun, 3 Nov 2024 21:03:57 +0900 Subject: [PATCH 170/177] =?UTF-8?q?Fix:=20Readme=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0606405..a1cbfda 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ ### ๐Ÿ“˜ ERD (Entity-Relationship Diagram) -![ERD Diagram](https://github.com/user-attachments/assets/1f3a7541-9f03-4649-bf6d-aed7028f7711) +ERD Diagram --- ### ๐Ÿ›  System Architecture -![System Architecture Diagram](https://github.com/user-attachments/assets/212fe9e6-545b-4f56-b453-118824447fbe) +System Architecture Diagram --- From 2af54c9f43f4a3d5b0db5b790194e09b4b7c0a8f Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 22:20:39 +0900 Subject: [PATCH 171/177] =?UTF-8?q?fix:=20backlog=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20todayStatus?= =?UTF-8?q?=EA=B0=80=20null=EC=9D=B8=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=EB=8F=84=20=EC=A1=B0=ED=9A=8C=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poptato/todo/domain/repository/TodoRepository.java | 5 +++-- .../poptato/todo/application/TodoBacklogServiceTest.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 2d8728a..2f7053b 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -20,7 +20,8 @@ List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTime void delete(Todo todo); Page findByUserIdAndCompletedStatusAndDifferentTodayDate(Long userId, TodayStatus todayStatus, LocalDate today, Pageable pageable); Todo save(Todo todo); - Page findByUserIdAndTypeInAndTodayStatusNotInOrderByBacklogOrderDesc(Long userId, List types, List excludedStatuses, Pageable pageable); + Page findByUserIdAndTypeInAndTodayStatusNotInOrTodayStatusIsNullOrderByBacklogOrderDesc( + Long userId, List types, List statuses, Pageable pageable); Integer findMaxBacklogOrderByUserIdOrZero(Long userId); Integer findMaxTodayOrderByUserIdOrZero(Long userId); Integer findMinTodayOrderByUserIdOrZero(Long userId); @@ -40,7 +41,7 @@ default List findCompletedTodays(Long userId, Type type, LocalDate todayDa } default Page findBacklogsByUserId(Long userId, List types, List statuses, Pageable pageable){ - return findByUserIdAndTypeInAndTodayStatusNotInOrderByBacklogOrderDesc( + return findByUserIdAndTypeInAndTodayStatusNotInOrTodayStatusIsNullOrderByBacklogOrderDesc( userId, types, statuses, pageable); } default Page findHistories(Long userId, LocalDate today, Pageable pageable) { diff --git a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java index e179148..c2ea682 100644 --- a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java @@ -111,7 +111,7 @@ void getYesterdays_Success() { // given Long userId = 1L; int page = 0; - int size = 5; // ํ•œ๋ฒˆ์— 5๊ฐœ์˜ todo ๊ฐ€์ ธ์˜ค๊ธฐ + int size = 5; // when PaginatedYesterdayResponseDto result = todoBacklogService.getYesterdays(userId, page, size); From 1d873fd38e23b3648434761a199ac87bcef8775a Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Sun, 3 Nov 2024 23:35:10 +0900 Subject: [PATCH 172/177] =?UTF-8?q?fix:=20findBacklogs=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/TodoRepository.java | 27 +++++++++++++------ .../infra/repository/JpaTodoRepository.java | 10 +++++-- .../application/TodoBacklogServiceTest.java | 6 ++++- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 2f7053b..6c813a4 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -12,38 +12,49 @@ public interface TodoRepository { void deleteAllByUserId(Long userId); + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); + List findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus); + Optional findById(Long todoId); + void delete(Todo todo); + Page findByUserIdAndCompletedStatusAndDifferentTodayDate(Long userId, TodayStatus todayStatus, LocalDate today, Pageable pageable); + Todo save(Todo todo); - Page findByUserIdAndTypeInAndTodayStatusNotInOrTodayStatusIsNullOrderByBacklogOrderDesc( - Long userId, List types, List statuses, Pageable pageable); + + Page findBacklogsByUserId(Long userId, List types, List statuses, Pageable pageable); + Integer findMaxBacklogOrderByUserIdOrZero(Long userId); + Integer findMaxTodayOrderByUserIdOrZero(Long userId); + Integer findMinTodayOrderByUserIdOrZero(Long userId); + int findMaxBacklogOrderByIdIn(List ids); + int findMaxTodayOrderByIdIn(List ids); + Page findByUserIdAndTypeAndTodayStatus(Long userId, Type type, TodayStatus todayStatus, Pageable pageable); + List findByTypeAndTodayStatus(Type today, TodayStatus incomplete); + Integer findMinBacklogOrderByUserIdOrZero(Long userId); - default List findIncompleteTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus){ + default List findIncompleteTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus) { return findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByTodayOrderDesc( userId, type, todayDate, todayStatus); } - default List findCompletedTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus){ + + default List findCompletedTodays(Long userId, Type type, LocalDate todayDate, TodayStatus todayStatus) { return findByUserIdAndTypeAndTodayDateAndTodayStatusOrderByCompletedDateTimeAsc( userId, type, todayDate, todayStatus); } - default Page findBacklogsByUserId(Long userId, List types, List statuses, Pageable pageable){ - return findByUserIdAndTypeInAndTodayStatusNotInOrTodayStatusIsNullOrderByBacklogOrderDesc( - userId, types, statuses, pageable); - } default Page findHistories(Long userId, LocalDate today, Pageable pageable) { return findByUserIdAndCompletedStatusAndDifferentTodayDate(userId, TodayStatus.COMPLETED, today, pageable); } diff --git a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java index f9f3b6f..72bbd26 100644 --- a/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java +++ b/src/main/java/server/poptato/todo/infra/repository/JpaTodoRepository.java @@ -8,13 +8,12 @@ import server.poptato.todo.domain.entity.Todo; import server.poptato.todo.domain.repository.TodoRepository; import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; import java.time.LocalDate; import java.util.List; public interface JpaTodoRepository extends TodoRepository, JpaRepository { - @Query("SELECT t FROM Todo t WHERE t.userId = :userId AND t.completedDateTime IS NOT NULL") - Page findByUserIdAndCompletedDateTimeIsNotNull(Long userId, Pageable pageable); @Query("SELECT COALESCE(MAX(t.backlogOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.backlogOrder IS NOT NULL") Integer findMaxBacklogOrderByUserIdOrZero(Long userId); @Query("SELECT COALESCE(MAX(t.todayOrder), 0) FROM Todo t WHERE t.userId = :userId AND t.todayOrder IS NOT NULL") @@ -34,4 +33,11 @@ Page findByUserIdAndCompletedStatusAndDifferentTodayDate( @Param("todayDate") LocalDate todayDate, Pageable pageable ); + @Query("SELECT t FROM Todo t WHERE t.userId = :userId AND (t.type IN :types AND (t.todayStatus NOT IN :statuses OR t.todayStatus IS NULL)) " + + "ORDER BY t.backlogOrder DESC") + Page findBacklogsByUserId( + @Param("userId") Long userId, + @Param("types") List types, + @Param("statuses") List statuses, + Pageable pageable); } diff --git a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java index c2ea682..85eae86 100644 --- a/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java +++ b/src/test/java/server/poptato/todo/application/TodoBacklogServiceTest.java @@ -47,9 +47,13 @@ void getBacklogList_EmptyToday_Success() { //when BacklogListResponseDto backlogList = todoBacklogService.getBacklogList(userId, page, size); + for(BacklogResponseDto todo : backlogList.getBacklogs()){ + Long todoId = todo.getTodoId(); + System.out.println(todoId); + } //then - assertThat(backlogList.getBacklogs()).isEmpty(); + assertThat(backlogList.getBacklogs().size()).isEqualTo(0); assertThat(backlogList.getTotalPageCount()).isEqualTo(0); } From 227eb8b9cd996538428ff711175fd94d67a55444 Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 5 Nov 2024 17:27:10 +0900 Subject: [PATCH 173/177] =?UTF-8?q?refactor:=20=EC=8A=A4=EC=BC=80=EC=A4=84?= =?UTF-8?q?=EB=9F=AC=20=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/TodoScheduler.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoScheduler.java b/src/main/java/server/poptato/todo/application/TodoScheduler.java index 6996b8c..dc1d6fa 100644 --- a/src/main/java/server/poptato/todo/application/TodoScheduler.java +++ b/src/main/java/server/poptato/todo/application/TodoScheduler.java @@ -18,41 +18,48 @@ @RequiredArgsConstructor public class TodoScheduler { private final TodoRepository todoRepository; - @Scheduled(cron = "0 0 0 * * *") // ๋งค์ผ ์ž์ •์— ์‹คํ–‰ + @Scheduled(cron = "0 0 0 * * *") @Transactional public void updateTodoType() { - // 1. TODAY ์ƒํƒœ์—์„œ INCOMPLETE์ธ ํ•  ์ผ๋“ค์„ YESTERDAY๋กœ ์ „ํ™˜ (์‚ฌ์šฉ์ž๋ณ„๋กœ ์ฒ˜๋ฆฌ) - Map> todayIncompleteTodosByUser = todoRepository.findByTypeAndTodayStatus(Type.TODAY, TodayStatus.INCOMPLETE) - .stream() - .collect(Collectors.groupingBy(Todo::getUserId)); // ์‚ฌ์šฉ์ž๋ณ„๋กœ ๊ทธ๋ฃนํ™” + List updatedTodoIds = new ArrayList<>(); + Map> userIdAndIncompleteTodaysMap = changeIncompleteTodayToYesterday(updatedTodoIds); + List yesterdayIncompleteTodos = changeYesterdayToBacklog(updatedTodoIds); + save(userIdAndIncompleteTodaysMap, yesterdayIncompleteTodos); + } - List updatedTodoIds = new ArrayList<>(); // YESTERDAY๋กœ ์ „ํ™˜๋œ ํ• ์ผ๋“ค์˜ ID ์ €์žฅ + private Map> changeIncompleteTodayToYesterday(List updatedTodoIds) { + Map> userIdAndIncompleteTodaysMap = todoRepository.findByTypeAndTodayStatus(Type.TODAY, TodayStatus.INCOMPLETE) + .stream() + .collect(Collectors.groupingBy(Todo::getUserId)); - todayIncompleteTodosByUser.forEach((userId, todos) -> { + userIdAndIncompleteTodaysMap.forEach((userId, todos) -> { Integer minBacklogOrder = todoRepository.findMinBacklogOrderByUserIdOrZero(userId); int startingOrder = minBacklogOrder - 1; for (Todo todo : todos) { todo.setType(Type.YESTERDAY); todo.setBacklogOrder(startingOrder--); - updatedTodoIds.add(todo.getId()); // YESTERDAY๋กœ ์ „ํ™˜๋œ ํ•ญ๋ชฉ์˜ ID ์ถ”๊ฐ€ + updatedTodoIds.add(todo.getId()); } }); + return userIdAndIncompleteTodaysMap; + } - // 2. YESTERDAY ์ƒํƒœ์—์„œ INCOMPLETE์ธ ํ•  ์ผ๋“ค์„ BACKLOG๋กœ ์ „ํ™˜ (BacklogOrder ์œ ์ง€) - // ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ YESTERDAY๋กœ ์ „ํ™˜๋œ ํ•ญ๋ชฉ์„ ์ œ์™ธํ•˜๊ณ  ์ฒ˜๋ฆฌ + private List changeYesterdayToBacklog(List updatedTodoIds) { List yesterdayIncompleteTodos = todoRepository.findByTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE) .stream() - .filter(todo -> !updatedTodoIds.contains(todo.getId())) // ์ด๋ฏธ YESTERDAY๋กœ ๋ฐ”๋€ ํ•ญ๋ชฉ ์ œ์™ธ + .filter(todo -> !updatedTodoIds.contains(todo.getId())) .collect(Collectors.toList()); yesterdayIncompleteTodos.forEach(todo -> { todo.setType(Type.BACKLOG); todo.setTodayStatus(null); }); + return yesterdayIncompleteTodos; + } - // 3. ์ €์žฅ - for (Todo todo : todayIncompleteTodosByUser.values().stream().flatMap(List::stream).collect(Collectors.toList())) { + private void save(Map> userIdAndIncompleteTodaysMap, List yesterdayIncompleteTodos) { + for (Todo todo : userIdAndIncompleteTodaysMap.values().stream().flatMap(List::stream).collect(Collectors.toList())) { todoRepository.save(todo); } for (Todo todo : yesterdayIncompleteTodos) { From 6887b4f14c94dc101396f0078ed6ba33a840279e Mon Sep 17 00:00:00 2001 From: kang yeon joo Date: Tue, 5 Nov 2024 17:48:47 +0900 Subject: [PATCH 174/177] =?UTF-8?q?test:=20=EC=8A=A4=EC=BC=80=EC=A4=84?= =?UTF-8?q?=EB=9F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/application/TodoScheduler.java | 4 +- .../domain/repository/TodoRepository.java | 2 + .../todo/application/TodoSchedulerTest.java | 61 +++++++++++++++---- 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/src/main/java/server/poptato/todo/application/TodoScheduler.java b/src/main/java/server/poptato/todo/application/TodoScheduler.java index dc1d6fa..d986a9f 100644 --- a/src/main/java/server/poptato/todo/application/TodoScheduler.java +++ b/src/main/java/server/poptato/todo/application/TodoScheduler.java @@ -23,7 +23,7 @@ public class TodoScheduler { public void updateTodoType() { List updatedTodoIds = new ArrayList<>(); Map> userIdAndIncompleteTodaysMap = changeIncompleteTodayToYesterday(updatedTodoIds); - List yesterdayIncompleteTodos = changeYesterdayToBacklog(updatedTodoIds); + List yesterdayIncompleteTodos = changeIncompleteYesterdayToBacklog(updatedTodoIds); save(userIdAndIncompleteTodaysMap, yesterdayIncompleteTodos); } @@ -45,7 +45,7 @@ private Map> changeIncompleteTodayToYesterday(List update return userIdAndIncompleteTodaysMap; } - private List changeYesterdayToBacklog(List updatedTodoIds) { + private List changeIncompleteYesterdayToBacklog(List updatedTodoIds) { List yesterdayIncompleteTodos = todoRepository.findByTypeAndTodayStatus(Type.YESTERDAY, TodayStatus.INCOMPLETE) .stream() .filter(todo -> !updatedTodoIds.contains(todo.getId())) diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 6c813a4..4b1f4ce 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -58,4 +58,6 @@ default List findCompletedTodays(Long userId, Type type, LocalDate todayDa default Page findHistories(Long userId, LocalDate today, Pageable pageable) { return findByUserIdAndCompletedStatusAndDifferentTodayDate(userId, TodayStatus.COMPLETED, today, pageable); } + + List findByType(Type type); } diff --git a/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java b/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java index c2c4257..8fb8522 100644 --- a/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java +++ b/src/test/java/server/poptato/todo/application/TodoSchedulerTest.java @@ -7,34 +7,73 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.scheduling.support.CronTrigger; import org.springframework.scheduling.support.SimpleTriggerContext; +import org.springframework.transaction.annotation.Transactional; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.Type; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +@Transactional @SpringBootTest class TodoSchedulerTest { + @Autowired + TodoRepository todoRepository; @Autowired TodoScheduler todoScheduler; + @Test - @DisplayName("updateType ๋ฉ”์„œ๋“œ๊ฐ€ ๋งค์ผ ์ž์ •์— ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค") - public void shouldTrigger_updateType_atEveryMidNight() throws ParseException { - // Given - ์ƒํ™ฉ ์„ค์ • - String cronExpression = "0 0 0 * * *"; // ์ž์ •์— ์‹คํ–‰๋˜๋Š” cron ํ‘œํ˜„์‹ + @DisplayName("์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋งค์ผ ์ž์ •์— ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.") + public void scheduler_cron_Success() throws ParseException { + //given + String cronExpression = "0 0 0 * * *"; CronTrigger trigger = new CronTrigger(cronExpression); Date startTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2023/12/19 23:59:50"); SimpleTriggerContext context = new SimpleTriggerContext(); context.update(startTime, startTime, startTime); - - // ์˜ˆ์ƒ๋˜๋Š” ์‹คํ–‰ ์‹œ๊ฐ„ ๋ชฉ๋ก String expectedTime = "2023/12/20 00:00:00"; - Date nextExecutionTime = trigger.nextExecutionTime(context); - // Then - ๊ฒฐ๊ณผ ๊ฒ€์ฆ + //when & then String actualTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(nextExecutionTime); - - // ํƒ€์ž… ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ์œ„ํ•œ Matcher ์‚ฌ์šฉ - Assertions.assertThat(actualTime).isEqualTo(expectedTime); // ์—ฌ๊ธฐ์„œ `is`๋Š” ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ ์‚ฌ์šฉ + Assertions.assertThat(actualTime).isEqualTo(expectedTime); context.update(nextExecutionTime, nextExecutionTime, nextExecutionTime); } + + @Test + @DisplayName("updateTodoType ๋ฉ”์„œ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.") + void updateTodoType_Success() { + //when + todoScheduler.updateTodoType(); + + //then + List yesterdayTasks = todoRepository.findByType(Type.YESTERDAY); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 1"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 2"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 4"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 5"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 7"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 8"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 10"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 12"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 14"))); + assertTrue(yesterdayTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 16"))); + + List backlogTasks = todoRepository.findByType(Type.BACKLOG); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 1"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 2"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 3"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 4"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 5"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 6"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 7"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 8"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 9"))); + assertTrue(backlogTasks.stream().anyMatch(todo -> todo.getContent().equals("ํ•  ์ผ 10"))); + } } \ No newline at end of file From fb16c91eb79a513c52c32bd1999fd1916e15fbf5 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 6 Nov 2024 17:32:16 +0900 Subject: [PATCH 175/177] =?UTF-8?q?feat:=20=ED=8A=9C=ED=86=A0=EB=A6=AC?= =?UTF-8?q?=EC=96=BC=20=EB=B8=94=EB=9F=AD=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hs_err_pid15120.log | 648 ++ hs_err_pid33544.log | 1047 ++ replay_pid15120.log | 2715 +++++ replay_pid33544.log | 9957 +++++++++++++++++ .../auth/application/service/AuthService.java | 44 +- .../todo/constant/TutorialMessage.java | 20 + .../auth/application/AuthServiceTest.java | 46 + 7 files changed, 14474 insertions(+), 3 deletions(-) create mode 100644 hs_err_pid15120.log create mode 100644 hs_err_pid33544.log create mode 100644 replay_pid15120.log create mode 100644 replay_pid33544.log create mode 100644 src/main/java/server/poptato/todo/constant/TutorialMessage.java diff --git a/hs_err_pid15120.log b/hs_err_pid15120.log new file mode 100644 index 0000000..0122487 --- /dev/null +++ b/hs_err_pid15120.log @@ -0,0 +1,648 @@ +# +# There is insufficient memory for the Java Runtime Environment to continue. +# Native memory allocation (malloc) failed to allocate 873680 bytes for Chunk::new +# Possible reasons: +# The system is out of physical RAM or swap space +# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap +# Possible solutions: +# Reduce memory load on the system +# Increase physical memory or swap space +# Check if swap backing store is full +# Decrease Java heap size (-Xmx/-Xms) +# Decrease number of Java threads +# Decrease Java thread stack sizes (-Xss) +# Set larger code cache with -XX:ReservedCodeCacheSize= +# JVM is running with Unscaled Compressed Oops mode in which the Java heap is +# placed in the first 4GB address space. The Java Heap base address is the +# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress +# to set the Java Heap base and to place the Java Heap above 4GB virtual address. +# This output file may be truncated or incomplete. +# +# Out of Memory Error (arena.cpp:189), pid=15120, tid=24928 +# +# JRE version: Java(TM) SE Runtime Environment (17.0.8+9) (build 17.0.8+9-LTS-211) +# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.8+9-LTS-211, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) +# No core dump will be written. Minidumps are not enabled by default on client versions of Windows +# + +--------------- S U M M A R Y ------------ + +Command Line: -Dorg.gradle.internal.worker.tmpdir=C:\Poptato_Server\build\tmp\test\work -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=KR -Duser.language=ko -Duser.variant -ea worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 1' + +Host: Intel(R) Core(TM) i3-8130U CPU @ 2.20GHz, 4 cores, 7G, Windows 10 , 64 bit Build 19041 (10.0.19041.4957) +Time: Wed Nov 6 17:21:31 2024 Windows 10 , 64 bit Build 19041 (10.0.19041.4957) elapsed time: 5.085364 seconds (0d 0h 0m 5s) + +--------------- T H R E A D --------------- + +Current thread (0x00000156e51470d0): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=24928, stack(0x0000000a4a000000,0x0000000a4a100000)] + + +Current CompileTask: +C2: 5085 1834 4 java.net.URLStreamHandler::parseURL (1201 bytes) + +Stack: [0x0000000a4a000000,0x0000000a4a100000] +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +V [jvm.dll+0x677d0a] +V [jvm.dll+0x7d8c54] +V [jvm.dll+0x7da3fe] +V [jvm.dll+0x7daa63] +V [jvm.dll+0x245c5f] +V [jvm.dll+0xaaa6b] +V [jvm.dll+0xab00c] +V [jvm.dll+0x361e8e] +V [jvm.dll+0x32c551] +V [jvm.dll+0x32b9ea] +V [jvm.dll+0x217fff] +V [jvm.dll+0x217431] +V [jvm.dll+0x1a3af0] +V [jvm.dll+0x2270be] +V [jvm.dll+0x22535b] +V [jvm.dll+0x78e7bc] +V [jvm.dll+0x788bba] +V [jvm.dll+0x676b35] +C [ucrtbase.dll+0x21bb2] +C [KERNEL32.DLL+0x17374] +C [ntdll.dll+0x4cc91] + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x00000156e5cc31f0, length=15, elements={ +0x000001568a069f50, 0x00000156e51244f0, 0x00000156e5125160, 0x00000156e51432d0, +0x00000156e5145090, 0x00000156e5145a40, 0x00000156e51463f0, 0x00000156e51470d0, +0x00000156e5148b80, 0x00000156e5150160, 0x00000156e5412fd0, 0x00000156e535f0a0, +0x00000156e5b1ec30, 0x00000156e5cc3980, 0x00000156e5cc57a0 +} + +Java Threads: ( => current thread ) + 0x000001568a069f50 JavaThread "Test worker" [_thread_in_native, id=28268, stack(0x0000000a49300000,0x0000000a49400000)] + 0x00000156e51244f0 JavaThread "Reference Handler" daemon [_thread_blocked, id=10524, stack(0x0000000a49a00000,0x0000000a49b00000)] + 0x00000156e5125160 JavaThread "Finalizer" daemon [_thread_blocked, id=32916, stack(0x0000000a49b00000,0x0000000a49c00000)] + 0x00000156e51432d0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=32880, stack(0x0000000a49c00000,0x0000000a49d00000)] + 0x00000156e5145090 JavaThread "Attach Listener" daemon [_thread_blocked, id=31032, stack(0x0000000a49d00000,0x0000000a49e00000)] + 0x00000156e5145a40 JavaThread "Service Thread" daemon [_thread_blocked, id=11988, stack(0x0000000a49e00000,0x0000000a49f00000)] + 0x00000156e51463f0 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=18124, stack(0x0000000a49f00000,0x0000000a4a000000)] +=>0x00000156e51470d0 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=24928, stack(0x0000000a4a000000,0x0000000a4a100000)] + 0x00000156e5148b80 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=32800, stack(0x0000000a4a100000,0x0000000a4a200000)] + 0x00000156e5150160 JavaThread "Sweeper thread" daemon [_thread_blocked, id=26360, stack(0x0000000a4a200000,0x0000000a4a300000)] + 0x00000156e5412fd0 JavaThread "Notification Thread" daemon [_thread_blocked, id=33152, stack(0x0000000a4a300000,0x0000000a4a400000)] + 0x00000156e535f0a0 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=26132, stack(0x0000000a4a500000,0x0000000a4a600000)] + 0x00000156e5b1ec30 JavaThread "/127.0.0.1:56947 to /127.0.0.1:56946 workers" [_thread_blocked, id=17628, stack(0x0000000a4ab00000,0x0000000a4ac00000)] + 0x00000156e5cc3980 JavaThread "/127.0.0.1:56947 to /127.0.0.1:56946 workers Thread 2" [_thread_blocked, id=16000, stack(0x0000000a4ac00000,0x0000000a4ad00000)] + 0x00000156e5cc57a0 JavaThread "/127.0.0.1:56947 to /127.0.0.1:56946 workers Thread 3" [_thread_in_native, id=16524, stack(0x0000000a4ad00000,0x0000000a4ae00000)] + +Other Threads: + 0x000001568a12e560 VMThread "VM Thread" [stack: 0x0000000a49900000,0x0000000a49a00000] [id=15060] + 0x00000156e542e930 WatcherThread [stack: 0x0000000a4a400000,0x0000000a4a500000] [id=32840] + 0x000001568a095c30 GCTaskThread "GC Thread#0" [stack: 0x0000000a49400000,0x0000000a49500000] [id=32920] + 0x00000156e58bc4d0 GCTaskThread "GC Thread#1" [stack: 0x0000000a4a600000,0x0000000a4a700000] [id=19680] + 0x00000156e58ba900 GCTaskThread "GC Thread#2" [stack: 0x0000000a4a700000,0x0000000a4a800000] [id=27272] + 0x00000156e5b1fc40 GCTaskThread "GC Thread#3" [stack: 0x0000000a4a800000,0x0000000a4a900000] [id=33040] + 0x000001568a09ba80 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000000a49500000,0x0000000a49600000] [id=19524] + 0x000001568a09c390 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000000a49600000,0x0000000a49700000] [id=31036] + 0x000001568a110940 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000000a49700000,0x0000000a49800000] [id=27020] + 0x00000156e54f7740 ConcurrentGCThread "G1 Refine#1" [stack: 0x0000000a4a900000,0x0000000a4aa00000] [id=14768] + 0x000001568a112270 ConcurrentGCThread "G1 Service" [stack: 0x0000000a49800000,0x0000000a49900000] [id=19464] + +Threads with active compile tasks: +C2 CompilerThread0 5163 1834 4 java.net.URLStreamHandler::parseURL (1201 bytes) + +VM state: not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x00000000e0000000, size: 512 MB, Compressed Oops mode: 32-bit + +CDS archive(s) mapped at: [0x00000156a4000000-0x00000156a4bd0000-0x00000156a4bd0000), size 12386304, SharedBaseAddress: 0x00000156a4000000, ArchiveRelocationMode: 1. +Compressed class space mapped at: 0x00000156a5000000-0x00000156e5000000, reserved size: 1073741824 +Narrow klass base: 0x00000156a4000000, Narrow klass shift: 0, Narrow klass range: 0x100000000 + +GC Precious Log: + CPUs: 4 total, 4 available + Memory: 8107M + Large Page Support: Disabled + NUMA Support: Disabled + Compressed Oops: Enabled (32-bit) + Heap Region Size: 1M + Heap Min Capacity: 8M + Heap Initial Capacity: 128M + Heap Max Capacity: 512M + Pre-touch: Disabled + Parallel Workers: 4 + Concurrent Workers: 1 + Concurrent Refinement Workers: 4 + Periodic GC: Disabled + +Heap: + garbage-first heap total 131072K, used 33168K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 21 young (21504K), 2 survivors (2048K) + Metaspace used 12960K, committed 13248K, reserved 1114112K + class space used 1646K, committed 1792K, reserved 1048576K + +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next) +| 0|0x00000000e0000000, 0x00000000e0100000, 0x00000000e0100000|100%|HS| |TAMS 0x00000000e0000000, 0x00000000e0000000| Complete +| 1|0x00000000e0100000, 0x00000000e0200000, 0x00000000e0200000|100%|HC| |TAMS 0x00000000e0100000, 0x00000000e0100000| Complete +| 2|0x00000000e0200000, 0x00000000e0300000, 0x00000000e0300000|100%|HS| |TAMS 0x00000000e0200000, 0x00000000e0200000| Complete +| 3|0x00000000e0300000, 0x00000000e0400000, 0x00000000e0400000|100%|HS| |TAMS 0x00000000e0300000, 0x00000000e0300000| Complete +| 4|0x00000000e0400000, 0x00000000e0500000, 0x00000000e0500000|100%| O| |TAMS 0x00000000e0400000, 0x00000000e0400000| Untracked +| 5|0x00000000e0500000, 0x00000000e0600000, 0x00000000e0600000|100%| O| |TAMS 0x00000000e0500000, 0x00000000e0500000| Untracked +| 6|0x00000000e0600000, 0x00000000e0700000, 0x00000000e0700000|100%| O| |TAMS 0x00000000e0600000, 0x00000000e0600000| Untracked +| 7|0x00000000e0700000, 0x00000000e0800000, 0x00000000e0800000|100%| O| |TAMS 0x00000000e0700000, 0x00000000e0700000| Untracked +| 8|0x00000000e0800000, 0x00000000e0900000, 0x00000000e0900000|100%| O| |TAMS 0x00000000e0800000, 0x00000000e0800000| Untracked +| 9|0x00000000e0900000, 0x00000000e0a00000, 0x00000000e0a00000|100%| O| |TAMS 0x00000000e0900000, 0x00000000e0900000| Untracked +| 10|0x00000000e0a00000, 0x00000000e0b00000, 0x00000000e0b00000|100%| O| |TAMS 0x00000000e0a00000, 0x00000000e0a00000| Untracked +| 11|0x00000000e0b00000, 0x00000000e0c00000, 0x00000000e0c00000|100%| O| |TAMS 0x00000000e0b00000, 0x00000000e0b00000| Untracked +| 12|0x00000000e0c00000, 0x00000000e0cdd000, 0x00000000e0d00000| 86%| O| |TAMS 0x00000000e0c00000, 0x00000000e0c00000| Untracked +| 13|0x00000000e0d00000, 0x00000000e0d00000, 0x00000000e0e00000| 0%| F| |TAMS 0x00000000e0d00000, 0x00000000e0d00000| Untracked +| 14|0x00000000e0e00000, 0x00000000e0e00000, 0x00000000e0f00000| 0%| F| |TAMS 0x00000000e0e00000, 0x00000000e0e00000| Untracked +| 15|0x00000000e0f00000, 0x00000000e0f00000, 0x00000000e1000000| 0%| F| |TAMS 0x00000000e0f00000, 0x00000000e0f00000| Untracked +| 16|0x00000000e1000000, 0x00000000e1000000, 0x00000000e1100000| 0%| F| |TAMS 0x00000000e1000000, 0x00000000e1000000| Untracked +| 17|0x00000000e1100000, 0x00000000e1100000, 0x00000000e1200000| 0%| F| |TAMS 0x00000000e1100000, 0x00000000e1100000| Untracked +| 18|0x00000000e1200000, 0x00000000e1200000, 0x00000000e1300000| 0%| F| |TAMS 0x00000000e1200000, 0x00000000e1200000| Untracked +| 19|0x00000000e1300000, 0x00000000e1300000, 0x00000000e1400000| 0%| F| |TAMS 0x00000000e1300000, 0x00000000e1300000| Untracked +| 20|0x00000000e1400000, 0x00000000e1400000, 0x00000000e1500000| 0%| F| |TAMS 0x00000000e1400000, 0x00000000e1400000| Untracked +| 21|0x00000000e1500000, 0x00000000e1500000, 0x00000000e1600000| 0%| F| |TAMS 0x00000000e1500000, 0x00000000e1500000| Untracked +| 22|0x00000000e1600000, 0x00000000e1600000, 0x00000000e1700000| 0%| F| |TAMS 0x00000000e1600000, 0x00000000e1600000| Untracked +| 23|0x00000000e1700000, 0x00000000e1700000, 0x00000000e1800000| 0%| F| |TAMS 0x00000000e1700000, 0x00000000e1700000| Untracked +| 24|0x00000000e1800000, 0x00000000e1800000, 0x00000000e1900000| 0%| F| |TAMS 0x00000000e1800000, 0x00000000e1800000| Untracked +| 25|0x00000000e1900000, 0x00000000e1900000, 0x00000000e1a00000| 0%| F| |TAMS 0x00000000e1900000, 0x00000000e1900000| Untracked +| 26|0x00000000e1a00000, 0x00000000e1a00000, 0x00000000e1b00000| 0%| F| |TAMS 0x00000000e1a00000, 0x00000000e1a00000| Untracked +| 27|0x00000000e1b00000, 0x00000000e1b00000, 0x00000000e1c00000| 0%| F| |TAMS 0x00000000e1b00000, 0x00000000e1b00000| Untracked +| 28|0x00000000e1c00000, 0x00000000e1c00000, 0x00000000e1d00000| 0%| F| |TAMS 0x00000000e1c00000, 0x00000000e1c00000| Untracked +| 29|0x00000000e1d00000, 0x00000000e1d00000, 0x00000000e1e00000| 0%| F| |TAMS 0x00000000e1d00000, 0x00000000e1d00000| Untracked +| 30|0x00000000e1e00000, 0x00000000e1e00000, 0x00000000e1f00000| 0%| F| |TAMS 0x00000000e1e00000, 0x00000000e1e00000| Untracked +| 31|0x00000000e1f00000, 0x00000000e1f00000, 0x00000000e2000000| 0%| F| |TAMS 0x00000000e1f00000, 0x00000000e1f00000| Untracked +| 32|0x00000000e2000000, 0x00000000e2000000, 0x00000000e2100000| 0%| F| |TAMS 0x00000000e2000000, 0x00000000e2000000| Untracked +| 33|0x00000000e2100000, 0x00000000e2100000, 0x00000000e2200000| 0%| F| |TAMS 0x00000000e2100000, 0x00000000e2100000| Untracked +| 34|0x00000000e2200000, 0x00000000e2200000, 0x00000000e2300000| 0%| F| |TAMS 0x00000000e2200000, 0x00000000e2200000| Untracked +| 35|0x00000000e2300000, 0x00000000e2300000, 0x00000000e2400000| 0%| F| |TAMS 0x00000000e2300000, 0x00000000e2300000| Untracked +| 36|0x00000000e2400000, 0x00000000e2400000, 0x00000000e2500000| 0%| F| |TAMS 0x00000000e2400000, 0x00000000e2400000| Untracked +| 37|0x00000000e2500000, 0x00000000e2500000, 0x00000000e2600000| 0%| F| |TAMS 0x00000000e2500000, 0x00000000e2500000| Untracked +| 38|0x00000000e2600000, 0x00000000e2600000, 0x00000000e2700000| 0%| F| |TAMS 0x00000000e2600000, 0x00000000e2600000| Untracked +| 39|0x00000000e2700000, 0x00000000e2700000, 0x00000000e2800000| 0%| F| |TAMS 0x00000000e2700000, 0x00000000e2700000| Untracked +| 40|0x00000000e2800000, 0x00000000e2800000, 0x00000000e2900000| 0%| F| |TAMS 0x00000000e2800000, 0x00000000e2800000| Untracked +| 41|0x00000000e2900000, 0x00000000e2900000, 0x00000000e2a00000| 0%| F| |TAMS 0x00000000e2900000, 0x00000000e2900000| Untracked +| 42|0x00000000e2a00000, 0x00000000e2a00000, 0x00000000e2b00000| 0%| F| |TAMS 0x00000000e2a00000, 0x00000000e2a00000| Untracked +| 43|0x00000000e2b00000, 0x00000000e2b00000, 0x00000000e2c00000| 0%| F| |TAMS 0x00000000e2b00000, 0x00000000e2b00000| Untracked +| 44|0x00000000e2c00000, 0x00000000e2c00000, 0x00000000e2d00000| 0%| F| |TAMS 0x00000000e2c00000, 0x00000000e2c00000| Untracked +| 45|0x00000000e2d00000, 0x00000000e2d00000, 0x00000000e2e00000| 0%| F| |TAMS 0x00000000e2d00000, 0x00000000e2d00000| Untracked +| 46|0x00000000e2e00000, 0x00000000e2e00000, 0x00000000e2f00000| 0%| F| |TAMS 0x00000000e2e00000, 0x00000000e2e00000| Untracked +| 47|0x00000000e2f00000, 0x00000000e2f00000, 0x00000000e3000000| 0%| F| |TAMS 0x00000000e2f00000, 0x00000000e2f00000| Untracked +| 48|0x00000000e3000000, 0x00000000e3000000, 0x00000000e3100000| 0%| F| |TAMS 0x00000000e3000000, 0x00000000e3000000| Untracked +| 49|0x00000000e3100000, 0x00000000e3100000, 0x00000000e3200000| 0%| F| |TAMS 0x00000000e3100000, 0x00000000e3100000| Untracked +| 50|0x00000000e3200000, 0x00000000e3200000, 0x00000000e3300000| 0%| F| |TAMS 0x00000000e3200000, 0x00000000e3200000| Untracked +| 51|0x00000000e3300000, 0x00000000e3300000, 0x00000000e3400000| 0%| F| |TAMS 0x00000000e3300000, 0x00000000e3300000| Untracked +| 52|0x00000000e3400000, 0x00000000e3400000, 0x00000000e3500000| 0%| F| |TAMS 0x00000000e3400000, 0x00000000e3400000| Untracked +| 53|0x00000000e3500000, 0x00000000e3500000, 0x00000000e3600000| 0%| F| |TAMS 0x00000000e3500000, 0x00000000e3500000| Untracked +| 54|0x00000000e3600000, 0x00000000e3600000, 0x00000000e3700000| 0%| F| |TAMS 0x00000000e3600000, 0x00000000e3600000| Untracked +| 55|0x00000000e3700000, 0x00000000e3700000, 0x00000000e3800000| 0%| F| |TAMS 0x00000000e3700000, 0x00000000e3700000| Untracked +| 56|0x00000000e3800000, 0x00000000e3800000, 0x00000000e3900000| 0%| F| |TAMS 0x00000000e3800000, 0x00000000e3800000| Untracked +| 57|0x00000000e3900000, 0x00000000e3900000, 0x00000000e3a00000| 0%| F| |TAMS 0x00000000e3900000, 0x00000000e3900000| Untracked +| 58|0x00000000e3a00000, 0x00000000e3a00000, 0x00000000e3b00000| 0%| F| |TAMS 0x00000000e3a00000, 0x00000000e3a00000| Untracked +| 59|0x00000000e3b00000, 0x00000000e3b00000, 0x00000000e3c00000| 0%| F| |TAMS 0x00000000e3b00000, 0x00000000e3b00000| Untracked +| 60|0x00000000e3c00000, 0x00000000e3c00000, 0x00000000e3d00000| 0%| F| |TAMS 0x00000000e3c00000, 0x00000000e3c00000| Untracked +| 61|0x00000000e3d00000, 0x00000000e3d00000, 0x00000000e3e00000| 0%| F| |TAMS 0x00000000e3d00000, 0x00000000e3d00000| Untracked +| 62|0x00000000e3e00000, 0x00000000e3e00000, 0x00000000e3f00000| 0%| F| |TAMS 0x00000000e3e00000, 0x00000000e3e00000| Untracked +| 63|0x00000000e3f00000, 0x00000000e3f00000, 0x00000000e4000000| 0%| F| |TAMS 0x00000000e3f00000, 0x00000000e3f00000| Untracked +| 64|0x00000000e4000000, 0x00000000e4000000, 0x00000000e4100000| 0%| F| |TAMS 0x00000000e4000000, 0x00000000e4000000| Untracked +| 65|0x00000000e4100000, 0x00000000e4100000, 0x00000000e4200000| 0%| F| |TAMS 0x00000000e4100000, 0x00000000e4100000| Untracked +| 66|0x00000000e4200000, 0x00000000e4200000, 0x00000000e4300000| 0%| F| |TAMS 0x00000000e4200000, 0x00000000e4200000| Untracked +| 67|0x00000000e4300000, 0x00000000e4300000, 0x00000000e4400000| 0%| F| |TAMS 0x00000000e4300000, 0x00000000e4300000| Untracked +| 68|0x00000000e4400000, 0x00000000e4400000, 0x00000000e4500000| 0%| F| |TAMS 0x00000000e4400000, 0x00000000e4400000| Untracked +| 69|0x00000000e4500000, 0x00000000e4500000, 0x00000000e4600000| 0%| F| |TAMS 0x00000000e4500000, 0x00000000e4500000| Untracked +| 70|0x00000000e4600000, 0x00000000e4600000, 0x00000000e4700000| 0%| F| |TAMS 0x00000000e4600000, 0x00000000e4600000| Untracked +| 71|0x00000000e4700000, 0x00000000e4700000, 0x00000000e4800000| 0%| F| |TAMS 0x00000000e4700000, 0x00000000e4700000| Untracked +| 72|0x00000000e4800000, 0x00000000e4800000, 0x00000000e4900000| 0%| F| |TAMS 0x00000000e4800000, 0x00000000e4800000| Untracked +| 73|0x00000000e4900000, 0x00000000e4900000, 0x00000000e4a00000| 0%| F| |TAMS 0x00000000e4900000, 0x00000000e4900000| Untracked +| 74|0x00000000e4a00000, 0x00000000e4a00000, 0x00000000e4b00000| 0%| F| |TAMS 0x00000000e4a00000, 0x00000000e4a00000| Untracked +| 75|0x00000000e4b00000, 0x00000000e4b00000, 0x00000000e4c00000| 0%| F| |TAMS 0x00000000e4b00000, 0x00000000e4b00000| Untracked +| 76|0x00000000e4c00000, 0x00000000e4c00000, 0x00000000e4d00000| 0%| F| |TAMS 0x00000000e4c00000, 0x00000000e4c00000| Untracked +| 77|0x00000000e4d00000, 0x00000000e4d00000, 0x00000000e4e00000| 0%| F| |TAMS 0x00000000e4d00000, 0x00000000e4d00000| Untracked +| 78|0x00000000e4e00000, 0x00000000e4e00000, 0x00000000e4f00000| 0%| F| |TAMS 0x00000000e4e00000, 0x00000000e4e00000| Untracked +| 79|0x00000000e4f00000, 0x00000000e4f00000, 0x00000000e5000000| 0%| F| |TAMS 0x00000000e4f00000, 0x00000000e4f00000| Untracked +| 80|0x00000000e5000000, 0x00000000e5000000, 0x00000000e5100000| 0%| F| |TAMS 0x00000000e5000000, 0x00000000e5000000| Untracked +| 81|0x00000000e5100000, 0x00000000e5100000, 0x00000000e5200000| 0%| F| |TAMS 0x00000000e5100000, 0x00000000e5100000| Untracked +| 82|0x00000000e5200000, 0x00000000e5200000, 0x00000000e5300000| 0%| F| |TAMS 0x00000000e5200000, 0x00000000e5200000| Untracked +| 83|0x00000000e5300000, 0x00000000e5300000, 0x00000000e5400000| 0%| F| |TAMS 0x00000000e5300000, 0x00000000e5300000| Untracked +| 84|0x00000000e5400000, 0x00000000e5400000, 0x00000000e5500000| 0%| F| |TAMS 0x00000000e5400000, 0x00000000e5400000| Untracked +| 85|0x00000000e5500000, 0x00000000e5500000, 0x00000000e5600000| 0%| F| |TAMS 0x00000000e5500000, 0x00000000e5500000| Untracked +| 86|0x00000000e5600000, 0x00000000e5600000, 0x00000000e5700000| 0%| F| |TAMS 0x00000000e5600000, 0x00000000e5600000| Untracked +| 87|0x00000000e5700000, 0x00000000e5700000, 0x00000000e5800000| 0%| F| |TAMS 0x00000000e5700000, 0x00000000e5700000| Untracked +| 88|0x00000000e5800000, 0x00000000e5800000, 0x00000000e5900000| 0%| F| |TAMS 0x00000000e5800000, 0x00000000e5800000| Untracked +| 89|0x00000000e5900000, 0x00000000e5900000, 0x00000000e5a00000| 0%| F| |TAMS 0x00000000e5900000, 0x00000000e5900000| Untracked +| 90|0x00000000e5a00000, 0x00000000e5a00000, 0x00000000e5b00000| 0%| F| |TAMS 0x00000000e5a00000, 0x00000000e5a00000| Untracked +| 91|0x00000000e5b00000, 0x00000000e5b00000, 0x00000000e5c00000| 0%| F| |TAMS 0x00000000e5b00000, 0x00000000e5b00000| Untracked +| 92|0x00000000e5c00000, 0x00000000e5c00000, 0x00000000e5d00000| 0%| F| |TAMS 0x00000000e5c00000, 0x00000000e5c00000| Untracked +| 93|0x00000000e5d00000, 0x00000000e5d00000, 0x00000000e5e00000| 0%| F| |TAMS 0x00000000e5d00000, 0x00000000e5d00000| Untracked +| 94|0x00000000e5e00000, 0x00000000e5e00000, 0x00000000e5f00000| 0%| F| |TAMS 0x00000000e5e00000, 0x00000000e5e00000| Untracked +| 95|0x00000000e5f00000, 0x00000000e5f00000, 0x00000000e6000000| 0%| F| |TAMS 0x00000000e5f00000, 0x00000000e5f00000| Untracked +| 96|0x00000000e6000000, 0x00000000e6000000, 0x00000000e6100000| 0%| F| |TAMS 0x00000000e6000000, 0x00000000e6000000| Untracked +| 97|0x00000000e6100000, 0x00000000e6100000, 0x00000000e6200000| 0%| F| |TAMS 0x00000000e6100000, 0x00000000e6100000| Untracked +| 98|0x00000000e6200000, 0x00000000e6200000, 0x00000000e6300000| 0%| F| |TAMS 0x00000000e6200000, 0x00000000e6200000| Untracked +| 99|0x00000000e6300000, 0x00000000e6300000, 0x00000000e6400000| 0%| F| |TAMS 0x00000000e6300000, 0x00000000e6300000| Untracked +| 100|0x00000000e6400000, 0x00000000e6400000, 0x00000000e6500000| 0%| F| |TAMS 0x00000000e6400000, 0x00000000e6400000| Untracked +| 101|0x00000000e6500000, 0x00000000e6500000, 0x00000000e6600000| 0%| F| |TAMS 0x00000000e6500000, 0x00000000e6500000| Untracked +| 102|0x00000000e6600000, 0x00000000e6600000, 0x00000000e6700000| 0%| F| |TAMS 0x00000000e6600000, 0x00000000e6600000| Untracked +| 103|0x00000000e6700000, 0x00000000e6700000, 0x00000000e6800000| 0%| F| |TAMS 0x00000000e6700000, 0x00000000e6700000| Untracked +| 104|0x00000000e6800000, 0x00000000e6800000, 0x00000000e6900000| 0%| F| |TAMS 0x00000000e6800000, 0x00000000e6800000| Untracked +| 105|0x00000000e6900000, 0x00000000e6900000, 0x00000000e6a00000| 0%| F| |TAMS 0x00000000e6900000, 0x00000000e6900000| Untracked +| 106|0x00000000e6a00000, 0x00000000e6a80800, 0x00000000e6b00000| 50%| E| |TAMS 0x00000000e6a00000, 0x00000000e6a00000| Complete +| 107|0x00000000e6b00000, 0x00000000e6b87280, 0x00000000e6c00000| 52%| S|CS|TAMS 0x00000000e6b00000, 0x00000000e6b00000| Complete +| 108|0x00000000e6c00000, 0x00000000e6d00000, 0x00000000e6d00000|100%| S|CS|TAMS 0x00000000e6c00000, 0x00000000e6c00000| Complete +| 109|0x00000000e6d00000, 0x00000000e6e00000, 0x00000000e6e00000|100%| E|CS|TAMS 0x00000000e6d00000, 0x00000000e6d00000| Complete +| 110|0x00000000e6e00000, 0x00000000e6f00000, 0x00000000e6f00000|100%| E|CS|TAMS 0x00000000e6e00000, 0x00000000e6e00000| Complete +| 111|0x00000000e6f00000, 0x00000000e7000000, 0x00000000e7000000|100%| E|CS|TAMS 0x00000000e6f00000, 0x00000000e6f00000| Complete +| 112|0x00000000e7000000, 0x00000000e7100000, 0x00000000e7100000|100%| E|CS|TAMS 0x00000000e7000000, 0x00000000e7000000| Complete +| 113|0x00000000e7100000, 0x00000000e7200000, 0x00000000e7200000|100%| E|CS|TAMS 0x00000000e7100000, 0x00000000e7100000| Complete +| 114|0x00000000e7200000, 0x00000000e7300000, 0x00000000e7300000|100%| E|CS|TAMS 0x00000000e7200000, 0x00000000e7200000| Complete +| 115|0x00000000e7300000, 0x00000000e7400000, 0x00000000e7400000|100%| E|CS|TAMS 0x00000000e7300000, 0x00000000e7300000| Complete +| 116|0x00000000e7400000, 0x00000000e7500000, 0x00000000e7500000|100%| E|CS|TAMS 0x00000000e7400000, 0x00000000e7400000| Complete +| 117|0x00000000e7500000, 0x00000000e7600000, 0x00000000e7600000|100%| E|CS|TAMS 0x00000000e7500000, 0x00000000e7500000| Complete +| 118|0x00000000e7600000, 0x00000000e7700000, 0x00000000e7700000|100%| E|CS|TAMS 0x00000000e7600000, 0x00000000e7600000| Complete +| 119|0x00000000e7700000, 0x00000000e7800000, 0x00000000e7800000|100%| E|CS|TAMS 0x00000000e7700000, 0x00000000e7700000| Complete +| 120|0x00000000e7800000, 0x00000000e7900000, 0x00000000e7900000|100%| E|CS|TAMS 0x00000000e7800000, 0x00000000e7800000| Complete +| 121|0x00000000e7900000, 0x00000000e7a00000, 0x00000000e7a00000|100%| E|CS|TAMS 0x00000000e7900000, 0x00000000e7900000| Complete +| 122|0x00000000e7a00000, 0x00000000e7b00000, 0x00000000e7b00000|100%| E|CS|TAMS 0x00000000e7a00000, 0x00000000e7a00000| Complete +| 123|0x00000000e7b00000, 0x00000000e7c00000, 0x00000000e7c00000|100%| E|CS|TAMS 0x00000000e7b00000, 0x00000000e7b00000| Complete +| 124|0x00000000e7c00000, 0x00000000e7d00000, 0x00000000e7d00000|100%| E|CS|TAMS 0x00000000e7c00000, 0x00000000e7c00000| Complete +| 125|0x00000000e7d00000, 0x00000000e7e00000, 0x00000000e7e00000|100%| E|CS|TAMS 0x00000000e7d00000, 0x00000000e7d00000| Complete +| 126|0x00000000e7e00000, 0x00000000e7f00000, 0x00000000e7f00000|100%| E|CS|TAMS 0x00000000e7e00000, 0x00000000e7e00000| Complete +| 127|0x00000000e7f00000, 0x00000000e8000000, 0x00000000e8000000|100%| E|CS|TAMS 0x00000000e7f00000, 0x00000000e7f00000| Complete + +Card table byte_map: [0x00000156a0900000,0x00000156a0a00000] _byte_map_base: 0x00000156a0200000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x000001568a096140, (CMBitMap*) 0x000001568a096180 + Prev Bits: [0x00000156a0b00000, 0x00000156a1300000) + Next Bits: [0x00000156a1300000, 0x00000156a1b00000) + +Polling page: 0x0000015688040000 + +Metaspace: + +Usage: + Non-class: 11.09 MB used. + Class: 1.62 MB used. + Both: 12.71 MB used. + +Virtual space: + Non-class space: 64.00 MB reserved, 11.25 MB ( 18%) committed, 1 nodes. + Class space: 1.00 GB reserved, 1.75 MB ( <1%) committed, 1 nodes. + Both: 1.06 GB reserved, 13.00 MB ( 1%) committed. + +Chunk freelists: + Non-Class: 4.30 MB + Class: 14.27 MB + Both: 18.56 MB + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB +Initial GC threshold: 21.00 MB +Current GC threshold: 21.00 MB +CDS: on +MetaspaceReclaimPolicy: balanced + - commit_granule_bytes: 65536. + - commit_granule_words: 8192. + - virtual_space_node_default_size: 8388608. + - enlarge_chunks_in_place: 1. + - new_chunks_are_fully_committed: 0. + - uncommit_free_chunks: 1. + - use_allocation_guard: 0. + - handle_deallocations: 1. + + +Internal statistics: + +num_allocs_failed_limit: 0. +num_arena_births: 202. +num_arena_deaths: 0. +num_vsnodes_births: 2. +num_vsnodes_deaths: 0. +num_space_committed: 208. +num_space_uncommitted: 0. +num_chunks_returned_to_freelist: 0. +num_chunks_taken_from_freelist: 629. +num_chunk_merges: 0. +num_chunk_splits: 395. +num_chunks_enlarged: 277. +num_purges: 0. +num_inconsistent_stats: 0. + +CodeHeap 'non-profiled nmethods': size=120000Kb used=734Kb max_used=734Kb free=119265Kb + bounds [0x00000156993d0000, 0x0000015699640000, 0x00000156a0900000] +CodeHeap 'profiled nmethods': size=120000Kb used=3810Kb max_used=3810Kb free=116189Kb + bounds [0x0000015691900000, 0x0000015691cc0000, 0x0000015698e30000] +CodeHeap 'non-nmethods': size=5760Kb used=1201Kb max_used=1237Kb free=4558Kb + bounds [0x0000015698e30000, 0x00000156990a0000, 0x00000156993d0000] + total_blobs=2334 nmethods=1833 adapters=413 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 4.857 Thread 0x00000156e5148b80 1829 3 sun.util.locale.BaseLocale::equals (71 bytes) +Event: 4.857 Thread 0x00000156e5148b80 nmethod 1829 0x0000015691cb5810 code [0x0000015691cb59e0, 0x0000015691cb5ed8] +Event: 4.857 Thread 0x00000156e5148b80 1827 3 java.util.Locale::hasExtensions (13 bytes) +Event: 4.857 Thread 0x00000156e5148b80 nmethod 1827 0x0000015691cb5f90 code [0x0000015691cb6120, 0x0000015691cb6298] +Event: 4.857 Thread 0x00000156e5148b80 1828 3 java.util.Locale::stripExtensions (20 bytes) +Event: 4.858 Thread 0x00000156e5148b80 nmethod 1828 0x0000015691cb6310 code [0x0000015691cb64c0, 0x0000015691cb6748] +Event: 4.859 Thread 0x00000156e5148b80 1830 3 java.util.Collections$EmptyList::iterator (4 bytes) +Event: 4.859 Thread 0x00000156e5148b80 nmethod 1830 0x0000015691cb6810 code [0x0000015691cb69a0, 0x0000015691cb6b18] +Event: 4.860 Thread 0x00000156e5148b80 1831 ! 3 java.util.concurrent.ConcurrentHashMap::initTable (112 bytes) +Event: 4.860 Thread 0x00000156e5148b80 nmethod 1831 0x0000015691cb6c10 code [0x0000015691cb6de0, 0x0000015691cb7368] +Event: 4.861 Thread 0x00000156e5148b80 1832 3 java.util.Calendar::internalSet (8 bytes) +Event: 4.861 Thread 0x00000156e5148b80 nmethod 1832 0x0000015691cb7510 code [0x0000015691cb76a0, 0x0000015691cb77d8] +Event: 4.864 Thread 0x00000156e51470d0 nmethod 1823 0x0000015699486690 code [0x0000015699486840, 0x0000015699486ff8] +Event: 4.864 Thread 0x00000156e51470d0 1825 4 java.lang.ref.SoftReference::get (29 bytes) +Event: 4.865 Thread 0x00000156e51470d0 nmethod 1825 0x0000015699487390 code [0x0000015699487500, 0x00000156994875f8] +Event: 4.865 Thread 0x00000156e51470d0 1819 4 java.lang.StringUTF16::compress (20 bytes) +Event: 4.866 Thread 0x00000156e51470d0 nmethod 1819 0x0000015699487690 code [0x0000015699487820, 0x0000015699487a78] +Event: 4.905 Thread 0x00000156e5148b80 1833 3 java.lang.NamedPackage:: (59 bytes) +Event: 4.907 Thread 0x00000156e5148b80 nmethod 1833 0x0000015691cb7890 code [0x0000015691cb7b20, 0x0000015691cb8618] +Event: 4.991 Thread 0x00000156e51470d0 1834 4 java.net.URLStreamHandler::parseURL (1201 bytes) + +GC Heap History (6 events): +Event: 1.318 GC heap before +{Heap before GC invocations=0 (full 0): + garbage-first heap total 131072K, used 17408K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 13 young (13312K), 0 survivors (0K) + Metaspace used 1982K, committed 2176K, reserved 1114112K + class space used 201K, committed 256K, reserved 1048576K +} +Event: 1.324 GC heap after +{Heap after GC invocations=1 (full 0): + garbage-first heap total 131072K, used 11687K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 1982K, committed 2176K, reserved 1114112K + class space used 201K, committed 256K, reserved 1048576K +} +Event: 1.823 GC heap before +{Heap before GC invocations=1 (full 0): + garbage-first heap total 131072K, used 18855K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 9 young (9216K), 2 survivors (2048K) + Metaspace used 4557K, committed 4736K, reserved 1114112K + class space used 568K, committed 640K, reserved 1048576K +} +Event: 1.828 GC heap after +{Heap after GC invocations=2 (full 0): + garbage-first heap total 131072K, used 13136K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 4557K, committed 4736K, reserved 1114112K + class space used 568K, committed 640K, reserved 1048576K +} +Event: 3.373 GC heap before +{Heap before GC invocations=2 (full 0): + garbage-first heap total 131072K, used 30544K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 19 young (19456K), 2 survivors (2048K) + Metaspace used 8532K, committed 8768K, reserved 1114112K + class space used 1145K, committed 1280K, reserved 1048576K +} +Event: 3.378 GC heap after +{Heap after GC invocations=3 (full 0): + garbage-first heap total 131072K, used 14736K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 8532K, committed 8768K, reserved 1114112K + class space used 1145K, committed 1280K, reserved 1048576K +} + +Deoptimization events (20 events): +Event: 3.789 Thread 0x000001568a069f50 DEOPT PACKING pc=0x0000015699409634 sp=0x0000000a493f93e0 +Event: 3.789 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e823a3 sp=0x0000000a493f92d0 mode 2 +Event: 3.790 Thread 0x000001568a069f50 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00000156994459a8 relative=0x0000000000000408 +Event: 3.790 Thread 0x000001568a069f50 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000156994459a8 method=java.lang.StringBuilder.toString()Ljava/lang/String; @ 4 c2 +Event: 3.790 Thread 0x000001568a069f50 DEOPT PACKING pc=0x00000156994459a8 sp=0x0000000a493f9460 +Event: 3.790 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e823a3 sp=0x0000000a493f9440 mode 2 +Event: 4.121 Thread 0x000001568a069f50 DEOPT PACKING pc=0x0000015691c7ceb8 sp=0x0000000a493f8a70 +Event: 4.121 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e82b43 sp=0x0000000a493f7f88 mode 0 +Event: 4.220 Thread 0x000001568a069f50 Uncommon trap: trap_request=0xffffff45 fr.pc=0x0000015699459cc0 relative=0x00000000000009a0 +Event: 4.220 Thread 0x000001568a069f50 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000015699459cc0 method=java.util.HashMap.hash(Ljava/lang/Object;)I @ 1 c2 +Event: 4.220 Thread 0x000001568a069f50 DEOPT PACKING pc=0x0000015699459cc0 sp=0x0000000a493fa290 +Event: 4.220 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e823a3 sp=0x0000000a493fa220 mode 2 +Event: 4.220 Thread 0x000001568a069f50 Uncommon trap: trap_request=0xffffff45 fr.pc=0x000001569944a698 relative=0x0000000000000098 +Event: 4.220 Thread 0x000001568a069f50 Uncommon trap: reason=unstable_if action=reinterpret pc=0x000001569944a698 method=java.util.HashMap.hash(Ljava/lang/Object;)I @ 1 c2 +Event: 4.220 Thread 0x000001568a069f50 DEOPT PACKING pc=0x000001569944a698 sp=0x0000000a493fa290 +Event: 4.220 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e823a3 sp=0x0000000a493fa228 mode 2 +Event: 4.369 Thread 0x000001568a069f50 DEOPT PACKING pc=0x0000015691c7ceb8 sp=0x0000000a493fb240 +Event: 4.369 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e82b43 sp=0x0000000a493fa758 mode 0 +Event: 4.422 Thread 0x000001568a069f50 DEOPT PACKING pc=0x0000015691c7ceb8 sp=0x0000000a493f4780 +Event: 4.422 Thread 0x000001568a069f50 DEOPT UNPACKING pc=0x0000015698e82b43 sp=0x0000000a493f3c98 mode 0 + +Classes unloaded (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 2.909 Thread 0x000001568a069f50 Exception (0x00000000e703fa20) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 2.953 Thread 0x000001568a069f50 Exception (0x00000000e7094fe0) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 2.962 Thread 0x000001568a069f50 Exception (0x00000000e7098bb0) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 826] +Event: 2.981 Thread 0x000001568a069f50 Exception (0x00000000e70bac88) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.111 Thread 0x000001568a069f50 Exception (0x00000000e6f38680) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.112 Thread 0x000001568a069f50 Exception (0x00000000e6f3c000) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.117 Thread 0x000001568a069f50 Exception (0x00000000e6f4b6a0) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.172 Thread 0x000001568a069f50 Exception (0x00000000e6f9ca48) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.264 Thread 0x000001568a069f50 Exception (0x00000000e6e627a8) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.289 Thread 0x000001568a069f50 Exception (0x00000000e6ed4ad8) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.481 Thread 0x000001568a069f50 Exception (0x00000000e7e55680) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.754 Thread 0x000001568a069f50 Exception (0x00000000e7ce06f8) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 3.790 Thread 0x000001568a069f50 Exception (0x00000000e7cef730) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516] +Event: 3.899 Thread 0x000001568a069f50 Exception (0x00000000e7b78248) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 3.900 Thread 0x000001568a069f50 Exception (0x00000000e7b7c368) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 4.220 Thread 0x000001568a069f50 Implicit null exception at 0x0000015699459360 to 0x0000015699459ca4 +Event: 4.220 Thread 0x000001568a069f50 Implicit null exception at 0x000001569944a60f to 0x000001569944a689 +Event: 4.455 Thread 0x000001568a069f50 Exception (0x00000000e79da750) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516] +Event: 4.473 Thread 0x000001568a069f50 Exception (0x00000000e78429b8) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] +Event: 4.535 Thread 0x000001568a069f50 Exception (0x00000000e7701e60) +thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759] + +VM Operations (20 events): +Event: 1.523 Executing VM operation: HandshakeAllThreads +Event: 1.523 Executing VM operation: HandshakeAllThreads done +Event: 1.823 Executing VM operation: G1CollectForAllocation +Event: 1.828 Executing VM operation: G1CollectForAllocation done +Event: 1.895 Executing VM operation: HandshakeAllThreads +Event: 1.895 Executing VM operation: HandshakeAllThreads done +Event: 2.111 Executing VM operation: HandshakeAllThreads +Event: 2.111 Executing VM operation: HandshakeAllThreads done +Event: 2.274 Executing VM operation: HandshakeAllThreads +Event: 2.274 Executing VM operation: HandshakeAllThreads done +Event: 2.363 Executing VM operation: HandshakeAllThreads +Event: 2.363 Executing VM operation: HandshakeAllThreads done +Event: 3.365 Executing VM operation: Cleanup +Event: 3.366 Executing VM operation: Cleanup done +Event: 3.373 Executing VM operation: G1CollectForAllocation +Event: 3.378 Executing VM operation: G1CollectForAllocation done +Event: 3.632 Executing VM operation: HandshakeAllThreads +Event: 3.632 Executing VM operation: HandshakeAllThreads done +Event: 4.647 Executing VM operation: Cleanup +Event: 4.647 Executing VM operation: Cleanup done + +Events (20 events): +Event: 4.570 loading class java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet +Event: 4.570 loading class java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet done +Event: 4.570 loading class java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1 +Event: 4.570 loading class java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1 done +Event: 4.570 loading class java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry +Event: 4.571 loading class java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry done +Event: 4.796 loading class java/beans/Transient +Event: 4.797 loading class java/beans/Transient done +Event: 4.797 loading class java/beans/ConstructorProperties +Event: 4.797 loading class java/beans/ConstructorProperties done +Event: 4.837 loading class java/text/ParseException +Event: 4.837 loading class java/text/ParseException done +Event: 4.859 loading class sun/text/resources/cldr/FormatData_en +Event: 4.859 loading class sun/text/resources/cldr/FormatData_en done +Event: 4.860 loading class sun/text/resources/cldr/FormatData_en_US +Event: 4.860 loading class sun/text/resources/cldr/FormatData_en_US done +Event: 4.891 loading class java/io/StringReader +Event: 4.892 loading class java/io/StringReader done +Event: 4.892 loading class java/io/CharArrayReader +Event: 4.892 loading class java/io/CharArrayReader done + + +Dynamic libraries: +0x00007ff73ddf0000 - 0x00007ff73de00000 C:\Program Files\Java\jdk-17\bin\java.exe +0x00007ffbf4430000 - 0x00007ffbf4628000 C:\Windows\SYSTEM32\ntdll.dll +0x00007ffbf38e0000 - 0x00007ffbf39a2000 C:\Windows\System32\KERNEL32.DLL +0x00007ffbf2060000 - 0x00007ffbf235e000 C:\Windows\System32\KERNELBASE.dll +0x00007ffbf1eb0000 - 0x00007ffbf1fb0000 C:\Windows\System32\ucrtbase.dll +0x00007ffbe80a0000 - 0x00007ffbe80bb000 C:\Program Files\Java\jdk-17\bin\VCRUNTIME140.dll +0x00007ffbe80c0000 - 0x00007ffbe80d9000 C:\Program Files\Java\jdk-17\bin\jli.dll +0x00007ffbf3f50000 - 0x00007ffbf4002000 C:\Windows\System32\ADVAPI32.dll +0x00007ffbf3630000 - 0x00007ffbf36ce000 C:\Windows\System32\msvcrt.dll +0x00007ffbf2fb0000 - 0x00007ffbf3050000 C:\Windows\System32\sechost.dll +0x00007ffbf24b0000 - 0x00007ffbf25d3000 C:\Windows\System32\RPCRT4.dll +0x00007ffbf1e80000 - 0x00007ffbf1ea7000 C:\Windows\System32\bcrypt.dll +0x00007ffbf3190000 - 0x00007ffbf332d000 C:\Windows\System32\USER32.dll +0x00007ffbf1bf0000 - 0x00007ffbf1c12000 C:\Windows\System32\win32u.dll +0x00007ffbf3330000 - 0x00007ffbf335b000 C:\Windows\System32\GDI32.dll +0x00007ffbf1ad0000 - 0x00007ffbf1be7000 C:\Windows\System32\gdi32full.dll +0x00007ffbf2360000 - 0x00007ffbf23fd000 C:\Windows\System32\msvcp_win.dll +0x00007ffbdb930000 - 0x00007ffbdbbca000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16\COMCTL32.dll +0x00007ffbe68d0000 - 0x00007ffbe68da000 C:\Windows\SYSTEM32\VERSION.dll +0x00007ffbf3050000 - 0x00007ffbf307f000 C:\Windows\System32\IMM32.DLL +0x00007ffbea290000 - 0x00007ffbea29c000 C:\Program Files\Java\jdk-17\bin\vcruntime140_1.dll +0x00007ffbbfc50000 - 0x00007ffbbfcde000 C:\Program Files\Java\jdk-17\bin\msvcp140.dll +0x00007ffb57560000 - 0x00007ffb5813e000 C:\Program Files\Java\jdk-17\bin\server\jvm.dll +0x00007ffbf25e0000 - 0x00007ffbf25e8000 C:\Windows\System32\PSAPI.DLL +0x00007ffbd9870000 - 0x00007ffbd9879000 C:\Windows\SYSTEM32\WSOCK32.dll +0x00007ffbf3360000 - 0x00007ffbf33cb000 C:\Windows\System32\WS2_32.dll +0x00007ffbd8e80000 - 0x00007ffbd8ea7000 C:\Windows\SYSTEM32\WINMM.dll +0x00007ffbf02b0000 - 0x00007ffbf02c2000 C:\Windows\SYSTEM32\kernel.appcore.dll +0x00007ffbe8110000 - 0x00007ffbe811a000 C:\Program Files\Java\jdk-17\bin\jimage.dll +0x00007ffbeffc0000 - 0x00007ffbf01a4000 C:\Windows\SYSTEM32\DBGHELP.DLL +0x00007ffbd7980000 - 0x00007ffbd79b4000 C:\Windows\SYSTEM32\dbgcore.DLL +0x00007ffbf1c20000 - 0x00007ffbf1ca2000 C:\Windows\System32\bcryptPrimitives.dll +0x00007ffbcfa20000 - 0x00007ffbcfa45000 C:\Program Files\Java\jdk-17\bin\java.dll +0x00007ffb9bd50000 - 0x00007ffb9be27000 C:\Program Files\Java\jdk-17\bin\jsvml.dll +0x00007ffbf26e0000 - 0x00007ffbf2e4f000 C:\Windows\System32\SHELL32.dll +0x00007ffbef740000 - 0x00007ffbefee4000 C:\Windows\SYSTEM32\windows.storage.dll +0x00007ffbf4010000 - 0x00007ffbf4363000 C:\Windows\System32\combase.dll +0x00007ffbf1500000 - 0x00007ffbf152e000 C:\Windows\SYSTEM32\Wldp.dll +0x00007ffbf36d0000 - 0x00007ffbf379d000 C:\Windows\System32\OLEAUT32.dll +0x00007ffbf30e0000 - 0x00007ffbf318d000 C:\Windows\System32\SHCORE.dll +0x00007ffbf2450000 - 0x00007ffbf24a5000 C:\Windows\System32\shlwapi.dll +0x00007ffbf1a00000 - 0x00007ffbf1a24000 C:\Windows\SYSTEM32\profapi.dll +0x00007ffbdcf10000 - 0x00007ffbdcf29000 C:\Program Files\Java\jdk-17\bin\net.dll +0x00007ffbe4bd0000 - 0x00007ffbe4cdd000 C:\Windows\SYSTEM32\WINHTTP.dll +0x00007ffbf1260000 - 0x00007ffbf12ca000 C:\Windows\system32\mswsock.dll +0x00007ffbd28e0000 - 0x00007ffbd28f6000 C:\Program Files\Java\jdk-17\bin\nio.dll +0x00007ffbe2510000 - 0x00007ffbe2528000 C:\Program Files\Java\jdk-17\bin\zip.dll +0x00007ffbe7dd0000 - 0x00007ffbe7de0000 C:\Program Files\Java\jdk-17\bin\verify.dll +0x00007ffbd8220000 - 0x00007ffbd822e000 C:\Program Files\Java\jdk-17\bin\sunmscapi.dll +0x00007ffbf1d20000 - 0x00007ffbf1e7c000 C:\Windows\System32\CRYPT32.dll +0x00007ffbf1570000 - 0x00007ffbf1597000 C:\Windows\SYSTEM32\ncrypt.dll +0x00007ffbf1530000 - 0x00007ffbf156b000 C:\Windows\SYSTEM32\NTASN1.dll +0x00007ffbe24c0000 - 0x00007ffbe24c7000 C:\Windows\system32\wshunix.dll +0x00007ffbf1450000 - 0x00007ffbf1468000 C:\Windows\SYSTEM32\CRYPTSP.dll +0x00007ffbf0ae0000 - 0x00007ffbf0b14000 C:\Windows\system32\rsaenh.dll +0x00007ffbf1980000 - 0x00007ffbf19ae000 C:\Windows\SYSTEM32\USERENV.dll +0x00007ffbf1470000 - 0x00007ffbf147c000 C:\Windows\SYSTEM32\CRYPTBASE.dll +0x00007ffbf0ef0000 - 0x00007ffbf0f2b000 C:\Windows\SYSTEM32\IPHLPAPI.DLL +0x00007ffbf2fa0000 - 0x00007ffbf2fa8000 C:\Windows\System32\NSI.dll +0x00007ffbe3c80000 - 0x00007ffbe3c97000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL +0x00007ffbe4660000 - 0x00007ffbe467d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL +0x00007ffbf0f40000 - 0x00007ffbf100a000 C:\Windows\SYSTEM32\DNSAPI.dll + +dbghelp: loaded successfully - version: 4.0.5 - missing functions: none +symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Java\jdk-17\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16;C:\Program Files\Java\jdk-17\bin\server + +VM Arguments: +jvm_args: -Dorg.gradle.internal.worker.tmpdir=C:\Poptato_Server\build\tmp\test\work -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=KR -Duser.language=ko -Duser.variant -ea +java_command: worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 1' +java_class_path (initial): C:\\Users\\user1\\.gradle\\caches\\8.10.2\\workerMain\\gradle-worker.jar;C:\\Poptato_Server\\build\\classes\\java\\test;C:\\Poptato_Server\\build\\resources\\test;C:\\Poptato_Server\\build\\classes\\java\\main;C:\\Poptato_Server\\build\\resources\\main;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-web\\3.2.1\\e27e36d4222fd4d589e634e1c7f5f09f0316147c\\spring-boot-starter-web-3.2.1.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-data-jpa\\3.2.1\\3d48124f433375cf0113aa69603021635b55a21a\\spring-boot-starter-data-jpa-3.2.1.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-validation\\3.2.1\\54a35ea1de2c7de2c701e93740228240218cc9dd\\spring-boot-starter-validation-3.2.1.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-jdbc\\3.2.1\\e3de1c46cd238d55f0c2a5f5ea416fadce000318\\spring-boot-starter-jdbc-3.2.1.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\org.springframework.boot\\spring-boot-starter-data-redis\\3.2.1\\9b162003e51a62075cf2dc84932e0b1c77149e1\\spring-boot-starter-data-redis-3.2.1.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\com.squareup.okhttp3\\okhttp\\4.9.3\\b0b14b3d12980912723fb8b66afb48dcda742fcb\\okhttp-4.9.3.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\com.google.code.gson\\gson\\2.9.0\\8a1167e089096758b49f9b34066ef98b2f4b37aa\\gson-2.9.0.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\io.jsonwebtoken\\jjwt-impl\\0.11.2\\8fd8acf9d3cb9a2db05bfa484c2a1408cc3507f9\\jjwt-impl-0.11.2.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\io.jsonwebtoken\\jjwt-jackson\\0.11.2\\bff0b63d4cbace7b38551a70350875e69201ffeb\\jjwt-jackson-0.11.2.jar;C:\\Users\\user1\\.gradle\\caches\\modules-2\\files-2.1\\io.jsonwebtoken\\jjwt-api\\0.11.2\\57c34dce3e88 +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 3 {product} {ergonomic} + uint ConcGCThreads = 1 {product} {ergonomic} + uint G1ConcRefinementThreads = 4 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 134217728 {product} {ergonomic} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 536870912 {product} {command line} + size_t MaxNewSize = 321912832 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + size_t MinHeapSize = 8388608 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 5832780 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122912730 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122912730 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + size_t SoftMaxHeapSize = 536870912 {manageable} {ergonomic} + bool UseCompressedClassPointers = true {product lp64_product} {ergonomic} + bool UseCompressedOops = true {product lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=C:\Program Files\Java\jdk-17 +CLASSPATH=C:\Program Files\Java\jdk-17\lib;.; +PATH=C:\Python312\Scripts\;C:\Python312\;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;กฐC:\Program Files\Java\jdk-17\bin;:\MinGW\bin;C:\Program Files\Bandizip\;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files\Git\cmd;C:\Program Files\MATLAB\R2023a\bin;C:\Program Files\PuTTY\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Ruby32-x64\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\user1\AppData\Local\Microsoft\WindowsApps;C:\Users\user1\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.3\bin;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.3\bin;C:\Users\user1\AppData\Local\gitkraken\bin;C:\Program Files\Java\jdk-17\bin;C:\Users\user1\AppData\Roaming\npm +USERNAME=user1 +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 10, GenuineIntel + + + +--------------- S Y S T E M --------------- + +OS: + Windows 10 , 64 bit Build 19041 (10.0.19041.4957) +OS uptime: 4 days 21:43 hours +Hyper-V role detected + +CPU: total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 142 stepping 10 microcode 0xb4, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt, hv + +Memory: 4k page, system-wide physical 8107M (150M free) +TotalPageFile size 32683M (AvailPageFile size 2M) +current process WorkingSet (physical memory assigned to process): 112M, peak: 112M +current process commit charge ("private bytes"): 243M, peak: 244M + +vm_info: Java HotSpot(TM) 64-Bit Server VM (17.0.8+9-LTS-211) for windows-amd64 JRE (17.0.8+9-LTS-211), built on Jun 14 2023 10:34:31 by "mach5one" with MS VC++ 17.1 (VS2022) + +END. diff --git a/hs_err_pid33544.log b/hs_err_pid33544.log new file mode 100644 index 0000000..c1a2ce5 --- /dev/null +++ b/hs_err_pid33544.log @@ -0,0 +1,1047 @@ +# +# There is insufficient memory for the Java Runtime Environment to continue. +# Native memory allocation (malloc) failed to allocate 1120176 bytes for Chunk::new +# Possible reasons: +# The system is out of physical RAM or swap space +# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap +# Possible solutions: +# Reduce memory load on the system +# Increase physical memory or swap space +# Check if swap backing store is full +# Decrease Java heap size (-Xmx/-Xms) +# Decrease number of Java threads +# Decrease Java thread stack sizes (-Xss) +# Set larger code cache with -XX:ReservedCodeCacheSize= +# JVM is running with Unscaled Compressed Oops mode in which the Java heap is +# placed in the first 4GB address space. The Java Heap base address is the +# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress +# to set the Java Heap base and to place the Java Heap above 4GB virtual address. +# This output file may be truncated or incomplete. +# +# Out of Memory Error (arena.cpp:189), pid=33544, tid=28752 +# +# JRE version: Java(TM) SE Runtime Environment (17.0.8+9) (build 17.0.8+9-LTS-211) +# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.8+9-LTS-211, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) +# No core dump will be written. Minidumps are not enabled by default on client versions of Windows +# + +--------------- S U M M A R Y ------------ + +Command Line: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=384m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=KR -Duser.language=ko -Duser.variant -javaagent:C:\Users\user1\.gradle\wrapper\dists\gradle-8.10.2-bin\a04bxjujx95o3nb99gddekhwo\gradle-8.10.2\lib\agents\gradle-instrumentation-agent-8.10.2.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 8.10.2 + +Host: Intel(R) Core(TM) i3-8130U CPU @ 2.20GHz, 4 cores, 7G, Windows 10 , 64 bit Build 19041 (10.0.19041.4957) +Time: Wed Nov 6 17:21:31 2024 Windows 10 , 64 bit Build 19041 (10.0.19041.4957) elapsed time: 131.305696 seconds (0d 0h 2m 11s) + +--------------- T H R E A D --------------- + +Current thread (0x000001ff7e6ccd10): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=28752, stack(0x000000be98900000,0x000000be98a00000)] + + +Current CompileTask: +C2: 131305 17284 4 com.sun.beans.TypeResolver::resolve (37 bytes) + +Stack: [0x000000be98900000,0x000000be98a00000] +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +V [jvm.dll+0x677d0a] +V [jvm.dll+0x7d8c54] +V [jvm.dll+0x7da3fe] +V [jvm.dll+0x7daa63] +V [jvm.dll+0x245c5f] +V [jvm.dll+0xaaa6b] +V [jvm.dll+0xab00c] +V [jvm.dll+0x2ab5cf] +V [jvm.dll+0x580435] +V [jvm.dll+0x220b22] +V [jvm.dll+0x220eff] +V [jvm.dll+0x219e56] +V [jvm.dll+0x217329] +V [jvm.dll+0x1a3af0] +V [jvm.dll+0x2270be] +V [jvm.dll+0x22535b] +V [jvm.dll+0x78e7bc] +V [jvm.dll+0x788bba] +V [jvm.dll+0x676b35] +C [ucrtbase.dll+0x21bb2] +C [KERNEL32.DLL+0x17374] +C [ntdll.dll+0x4cc91] + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x000001ff291e56b0, length=101, elements={ +0x000001ff7365e600, 0x000001ff7e6a6350, 0x000001ff7e6a70d0, 0x000001ff7e6c6100, +0x000001ff7e6c9ae0, 0x000001ff7e6ca3a0, 0x000001ff7e6cac60, 0x000001ff7e6ccd10, +0x000001ff7e6d0650, 0x000001ff7e729ab0, 0x000001ff7e78d260, 0x000001ff7e800520, +0x000001ff7f2f3780, 0x000001ff282d1230, 0x000001ff7f3235d0, 0x000001ff7eb106e0, +0x000001ff28627980, 0x000001ff28190d70, 0x000001ff28191610, 0x000001ff28b72070, +0x000001ff28b73550, 0x000001ff28b73a20, 0x000001ff29246d80, 0x000001ff292463e0, +0x000001ff29245570, 0x000001ff292468b0, 0x000001ff29247720, 0x000001ff29244bd0, +0x000001ff29244230, 0x000001ff292450a0, 0x000001ff29247bf0, 0x000001ff29245f10, +0x000001ff29245a40, 0x000001ff2a7223d0, 0x000001ff2a71e540, 0x000001ff2a721f00, +0x000001ff2a7228a0, 0x000001ff2a722d70, 0x000001ff2a721090, 0x000001ff2a7240b0, +0x000001ff2a721560, 0x000001ff2a71e070, 0x000001ff2a7258c0, 0x000001ff2a720220, +0x000001ff2a723710, 0x000001ff2a71f3b0, 0x000001ff2a724580, 0x000001ff2a71eee0, +0x000001ff2a7206f0, 0x000001ff29247250, 0x000001ff2b165dd0, 0x000001ff2b166770, +0x000001ff2b165900, 0x000001ff2b163c20, 0x000001ff2b166c40, 0x000001ff2b1645c0, +0x000001ff2b163280, 0x000001ff2b164a90, 0x000001ff2b1662a0, 0x000001ff2b164f60, +0x000001ff2b163750, 0x000001ff2b165430, 0x000001ff2b1640f0, 0x000001ff2a93df10, +0x000001ff2a939bb0, 0x000001ff2a93bd60, 0x000001ff2a93c230, 0x000001ff2a939210, +0x000001ff2a938d40, 0x000001ff2a937530, 0x000001ff2a9383a0, 0x000001ff2a93a080, +0x000001ff2a9396e0, 0x000001ff2a93a550, 0x000001ff2a93da40, 0x000001ff2a93aa20, +0x000001ff2a93aef0, 0x000001ff2a93e8b0, 0x000001ff2a93b3c0, 0x000001ff2a93c700, +0x000001ff2a93b890, 0x000001ff2a937060, 0x000001ff2a93cbd0, 0x000001ff2a93d0a0, +0x000001ff2a937a00, 0x000001ff2a937ed0, 0x000001ff2a93e3e0, 0x000001ff283449a0, +0x000001ff28341980, 0x000001ff283427f0, 0x000001ff2b3fb820, 0x000001ff28345340, +0x000001ff2ad2feb0, 0x000001ff2ad30380, 0x000001ff2b3fae80, 0x000001ff2b3fb350, +0x000001ff2b3fa010, 0x000001ff2b3fa4e0, 0x000001ff2ad30850, 0x000001ff2af3f050, +0x000001ff2af3eb80 +} + +Java Threads: ( => current thread ) + 0x000001ff7365e600 JavaThread "main" [_thread_blocked, id=25084, stack(0x000000be97c00000,0x000000be97d00000)] + 0x000001ff7e6a6350 JavaThread "Reference Handler" daemon [_thread_blocked, id=16508, stack(0x000000be98300000,0x000000be98400000)] + 0x000001ff7e6a70d0 JavaThread "Finalizer" daemon [_thread_blocked, id=22316, stack(0x000000be98400000,0x000000be98500000)] + 0x000001ff7e6c6100 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=27816, stack(0x000000be98500000,0x000000be98600000)] + 0x000001ff7e6c9ae0 JavaThread "Attach Listener" daemon [_thread_blocked, id=27520, stack(0x000000be98600000,0x000000be98700000)] + 0x000001ff7e6ca3a0 JavaThread "Service Thread" daemon [_thread_blocked, id=19372, stack(0x000000be98700000,0x000000be98800000)] + 0x000001ff7e6cac60 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=15932, stack(0x000000be98800000,0x000000be98900000)] +=>0x000001ff7e6ccd10 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=28752, stack(0x000000be98900000,0x000000be98a00000)] + 0x000001ff7e6d0650 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=16280, stack(0x000000be98a00000,0x000000be98b00000)] + 0x000001ff7e729ab0 JavaThread "Sweeper thread" daemon [_thread_blocked, id=16448, stack(0x000000be98b00000,0x000000be98c00000)] + 0x000001ff7e78d260 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=27112, stack(0x000000be98c00000,0x000000be98d00000)] + 0x000001ff7e800520 JavaThread "Notification Thread" daemon [_thread_blocked, id=23972, stack(0x000000be98d00000,0x000000be98e00000)] + 0x000001ff7f2f3780 JavaThread "Daemon health stats" [_thread_blocked, id=29580, stack(0x000000be99200000,0x000000be99300000)] + 0x000001ff282d1230 JavaThread "Incoming local TCP Connector on port 56892" [_thread_in_native, id=24908, stack(0x000000be99300000,0x000000be99400000)] + 0x000001ff7f3235d0 JavaThread "Daemon periodic checks" [_thread_blocked, id=29624, stack(0x000000be99400000,0x000000be99500000)] + 0x000001ff7eb106e0 JavaThread "Daemon" [_thread_blocked, id=18984, stack(0x000000be99500000,0x000000be99600000)] + 0x000001ff28627980 JavaThread "Handler for socket connection from /127.0.0.1:56892 to /127.0.0.1:56894" [_thread_in_native, id=33256, stack(0x000000be99600000,0x000000be99700000)] + 0x000001ff28190d70 JavaThread "Cancel handler" [_thread_blocked, id=6328, stack(0x000000be99700000,0x000000be99800000)] + 0x000001ff28191610 JavaThread "Daemon worker" [_thread_blocked, id=30800, stack(0x000000be99800000,0x000000be99900000)] + 0x000001ff28b72070 JavaThread "Asynchronous log dispatcher for DefaultDaemonConnection: socket connection from /127.0.0.1:56892 to /127.0.0.1:56894" [_thread_blocked, id=20196, stack(0x000000be99900000,0x000000be99a00000)] + 0x000001ff28b73550 JavaThread "Stdin handler" [_thread_blocked, id=25312, stack(0x000000be99a00000,0x000000be99b00000)] + 0x000001ff28b73a20 JavaThread "Daemon client event forwarder" [_thread_blocked, id=20976, stack(0x000000be99b00000,0x000000be99c00000)] + 0x000001ff29246d80 JavaThread "Cache worker for journal cache (C:\Users\user1\.gradle\caches\journal-1)" [_thread_blocked, id=21896, stack(0x000000be99c00000,0x000000be99d00000)] + 0x000001ff292463e0 JavaThread "File lock request listener" [_thread_in_native, id=20824, stack(0x000000be99d00000,0x000000be99e00000)] + 0x000001ff29245570 JavaThread "Cache worker for file hash cache (C:\Users\user1\.gradle\caches\8.10.2\fileHashes)" [_thread_blocked, id=27428, stack(0x000000be99e00000,0x000000be99f00000)] + 0x000001ff292468b0 JavaThread "Cache worker for file hash cache (C:\Poptato_Server\.gradle\8.10.2\fileHashes)" [_thread_blocked, id=16608, stack(0x000000be99f00000,0x000000be9a000000)] + 0x000001ff29247720 JavaThread "Cache worker for Build Output Cleanup Cache (C:\Poptato_Server\.gradle\buildOutputCleanup)" [_thread_blocked, id=21272, stack(0x000000be9a000000,0x000000be9a100000)] + 0x000001ff29244bd0 JavaThread "File watcher server" daemon [_thread_in_native, id=28648, stack(0x000000be9a100000,0x000000be9a200000)] + 0x000001ff29244230 JavaThread "File watcher consumer" daemon [_thread_blocked, id=32596, stack(0x000000be9a200000,0x000000be9a300000)] + 0x000001ff292450a0 JavaThread "Cache worker for checksums cache (C:\Poptato_Server\.gradle\8.10.2\checksums)" [_thread_blocked, id=32372, stack(0x000000be9a300000,0x000000be9a400000)] + 0x000001ff29247bf0 JavaThread "Cache worker for file content cache (C:\Users\user1\.gradle\caches\8.10.2\fileContent)" [_thread_blocked, id=29180, stack(0x000000be9a400000,0x000000be9a500000)] + 0x000001ff29245f10 JavaThread "Cache worker for cache directory md-rule (C:\Users\user1\.gradle\caches\8.10.2\md-rule)" [_thread_blocked, id=23632, stack(0x000000be9a500000,0x000000be9a600000)] + 0x000001ff29245a40 JavaThread "Cache worker for cache directory md-supplier (C:\Users\user1\.gradle\caches\8.10.2\md-supplier)" [_thread_blocked, id=29448, stack(0x000000be9a600000,0x000000be9a700000)] + 0x000001ff2a7223d0 JavaThread "jar transforms" [_thread_blocked, id=28396, stack(0x000000be9a700000,0x000000be9a800000)] + 0x000001ff2a71e540 JavaThread "jar transforms Thread 2" [_thread_blocked, id=25504, stack(0x000000be9a800000,0x000000be9a900000)] + 0x000001ff2a721f00 JavaThread "jar transforms Thread 3" [_thread_blocked, id=21688, stack(0x000000be9a900000,0x000000be9aa00000)] + 0x000001ff2a7228a0 JavaThread "jar transforms Thread 4" [_thread_blocked, id=28540, stack(0x000000be9aa00000,0x000000be9ab00000)] + 0x000001ff2a722d70 JavaThread "Unconstrained build operations" [_thread_blocked, id=33368, stack(0x000000be9ad00000,0x000000be9ae00000)] + 0x000001ff2a721090 JavaThread "Unconstrained build operations Thread 2" [_thread_blocked, id=29476, stack(0x000000be9ae00000,0x000000be9af00000)] + 0x000001ff2a7240b0 JavaThread "Unconstrained build operations Thread 3" [_thread_blocked, id=31000, stack(0x000000be9af00000,0x000000be9b000000)] + 0x000001ff2a721560 JavaThread "Unconstrained build operations Thread 4" [_thread_blocked, id=32516, stack(0x000000be9b000000,0x000000be9b100000)] + 0x000001ff2a71e070 JavaThread "Unconstrained build operations Thread 5" [_thread_blocked, id=29816, stack(0x000000be9b100000,0x000000be9b200000)] + 0x000001ff2a7258c0 JavaThread "Unconstrained build operations Thread 6" [_thread_blocked, id=15340, stack(0x000000be9b200000,0x000000be9b300000)] + 0x000001ff2a720220 JavaThread "Unconstrained build operations Thread 7" [_thread_blocked, id=26968, stack(0x000000be9b300000,0x000000be9b400000)] + 0x000001ff2a723710 JavaThread "Unconstrained build operations Thread 8" [_thread_blocked, id=10632, stack(0x000000be9b400000,0x000000be9b500000)] + 0x000001ff2a71f3b0 JavaThread "Unconstrained build operations Thread 9" [_thread_blocked, id=18752, stack(0x000000be9b500000,0x000000be9b600000)] + 0x000001ff2a724580 JavaThread "Memory manager" [_thread_blocked, id=25684, stack(0x000000be9b600000,0x000000be9b700000)] + 0x000001ff2a71eee0 JavaThread "ForkJoinPool.commonPool-worker-1" daemon [_thread_blocked, id=11632, stack(0x000000be9b800000,0x000000be9b900000)] + 0x000001ff2a7206f0 JavaThread "ForkJoinPool.commonPool-worker-3" daemon [_thread_blocked, id=30400, stack(0x000000be9ba00000,0x000000be9bb00000)] + 0x000001ff29247250 JavaThread "included builds" [_thread_blocked, id=29648, stack(0x000000be9bf00000,0x000000be9c000000)] + 0x000001ff2b165dd0 JavaThread "Execution worker" [_thread_blocked, id=23588, stack(0x000000be9c000000,0x000000be9c100000)] + 0x000001ff2b166770 JavaThread "Execution worker Thread 2" [_thread_blocked, id=13116, stack(0x000000be9c100000,0x000000be9c200000)] + 0x000001ff2b165900 JavaThread "Execution worker Thread 3" [_thread_blocked, id=21864, stack(0x000000be9c200000,0x000000be9c300000)] + 0x000001ff2b163c20 JavaThread "Cache worker for execution history cache (C:\Poptato_Server\.gradle\8.10.2\executionHistory)" [_thread_blocked, id=33420, stack(0x000000be9c300000,0x000000be9c400000)] + 0x000001ff2b166c40 JavaThread "Unconstrained build operations Thread 10" [_thread_blocked, id=33016, stack(0x000000be9c500000,0x000000be9c600000)] + 0x000001ff2b1645c0 JavaThread "Unconstrained build operations Thread 11" [_thread_blocked, id=32804, stack(0x000000be9c600000,0x000000be9c700000)] + 0x000001ff2b163280 JavaThread "Unconstrained build operations Thread 12" [_thread_blocked, id=3812, stack(0x000000be9c700000,0x000000be9c800000)] + 0x000001ff2b164a90 JavaThread "Unconstrained build operations Thread 13" [_thread_blocked, id=33444, stack(0x000000be9c800000,0x000000be9c900000)] + 0x000001ff2b1662a0 JavaThread "Unconstrained build operations Thread 14" [_thread_blocked, id=32696, stack(0x000000be9c900000,0x000000be9ca00000)] + 0x000001ff2b164f60 JavaThread "Unconstrained build operations Thread 15" [_thread_blocked, id=24004, stack(0x000000be9c400000,0x000000be9c500000)] + 0x000001ff2b163750 JavaThread "Unconstrained build operations Thread 16" [_thread_blocked, id=18600, stack(0x000000be9ca00000,0x000000be9cb00000)] + 0x000001ff2b165430 JavaThread "Unconstrained build operations Thread 17" [_thread_blocked, id=26028, stack(0x000000be9cb00000,0x000000be9cc00000)] + 0x000001ff2b1640f0 JavaThread "Unconstrained build operations Thread 18" [_thread_blocked, id=17004, stack(0x000000be9cc00000,0x000000be9cd00000)] + 0x000001ff2a93df10 JavaThread "Unconstrained build operations Thread 19" [_thread_blocked, id=3788, stack(0x000000be9cd00000,0x000000be9ce00000)] + 0x000001ff2a939bb0 JavaThread "Unconstrained build operations Thread 20" [_thread_blocked, id=21960, stack(0x000000be9ce00000,0x000000be9cf00000)] + 0x000001ff2a93bd60 JavaThread "Unconstrained build operations Thread 21" [_thread_blocked, id=22096, stack(0x000000be9cf00000,0x000000be9d000000)] + 0x000001ff2a93c230 JavaThread "Unconstrained build operations Thread 22" [_thread_blocked, id=4240, stack(0x000000be9d000000,0x000000be9d100000)] + 0x000001ff2a939210 JavaThread "Unconstrained build operations Thread 23" [_thread_blocked, id=18800, stack(0x000000be9d100000,0x000000be9d200000)] + 0x000001ff2a938d40 JavaThread "Unconstrained build operations Thread 24" [_thread_blocked, id=2340, stack(0x000000be9d200000,0x000000be9d300000)] + 0x000001ff2a937530 JavaThread "Unconstrained build operations Thread 25" [_thread_blocked, id=3584, stack(0x000000be9d300000,0x000000be9d400000)] + 0x000001ff2a9383a0 JavaThread "Unconstrained build operations Thread 26" [_thread_blocked, id=23960, stack(0x000000be9d400000,0x000000be9d500000)] + 0x000001ff2a93a080 JavaThread "Unconstrained build operations Thread 27" [_thread_blocked, id=24528, stack(0x000000be9d500000,0x000000be9d600000)] + 0x000001ff2a9396e0 JavaThread "Unconstrained build operations Thread 28" [_thread_blocked, id=20056, stack(0x000000be9d600000,0x000000be9d700000)] + 0x000001ff2a93a550 JavaThread "Unconstrained build operations Thread 29" [_thread_blocked, id=31540, stack(0x000000be9d700000,0x000000be9d800000)] + 0x000001ff2a93da40 JavaThread "Unconstrained build operations Thread 30" [_thread_blocked, id=28028, stack(0x000000be9d800000,0x000000be9d900000)] + 0x000001ff2a93aa20 JavaThread "Unconstrained build operations Thread 31" [_thread_blocked, id=22672, stack(0x000000be9d900000,0x000000be9da00000)] + 0x000001ff2a93aef0 JavaThread "Unconstrained build operations Thread 32" [_thread_blocked, id=15084, stack(0x000000be9da00000,0x000000be9db00000)] + 0x000001ff2a93e8b0 JavaThread "Unconstrained build operations Thread 33" [_thread_blocked, id=25340, stack(0x000000be9db00000,0x000000be9dc00000)] + 0x000001ff2a93b3c0 JavaThread "Unconstrained build operations Thread 34" [_thread_blocked, id=22284, stack(0x000000be9dc00000,0x000000be9dd00000)] + 0x000001ff2a93c700 JavaThread "Unconstrained build operations Thread 35" [_thread_blocked, id=21492, stack(0x000000be9dd00000,0x000000be9de00000)] + 0x000001ff2a93b890 JavaThread "Unconstrained build operations Thread 36" [_thread_blocked, id=23376, stack(0x000000be9de00000,0x000000be9df00000)] + 0x000001ff2a937060 JavaThread "Unconstrained build operations Thread 37" [_thread_blocked, id=25468, stack(0x000000be9df00000,0x000000be9e000000)] + 0x000001ff2a93cbd0 JavaThread "Unconstrained build operations Thread 38" [_thread_blocked, id=19884, stack(0x000000be9e000000,0x000000be9e100000)] + 0x000001ff2a93d0a0 JavaThread "Unconstrained build operations Thread 39" [_thread_blocked, id=33372, stack(0x000000be9e100000,0x000000be9e200000)] + 0x000001ff2a937a00 JavaThread "Unconstrained build operations Thread 40" [_thread_blocked, id=31704, stack(0x000000be9e200000,0x000000be9e300000)] + 0x000001ff2a937ed0 JavaThread "Cache worker for Java compile cache (C:\Users\user1\.gradle\caches\8.10.2\javaCompile)" [_thread_blocked, id=14760, stack(0x000000be9e400000,0x000000be9e500000)] + 0x000001ff2a93e3e0 JavaThread "Build operations" [_thread_blocked, id=21956, stack(0x000000be9e500000,0x000000be9e600000)] + 0x000001ff283449a0 JavaThread "Build operations Thread 2" [_thread_blocked, id=32776, stack(0x000000be9e600000,0x000000be9e700000)] + 0x000001ff28341980 JavaThread "Build operations Thread 3" [_thread_blocked, id=21700, stack(0x000000be9e700000,0x000000be9e800000)] + 0x000001ff283427f0 JavaThread "Build operations Thread 4" [_thread_blocked, id=8948, stack(0x000000be97a00000,0x000000be97b00000)] + 0x000001ff2b3fb820 JavaThread "Dispatch org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor@202fab06" [_thread_blocked, id=7808, stack(0x000000be97b00000,0x000000be97c00000)] + 0x000001ff28345340 JavaThread "Dispatch org.gradle.api.internal.tasks.testing.processors.RestartEveryNTestClassProcessor@1778fe1b" [_thread_blocked, id=33660, stack(0x000000be9ac00000,0x000000be9ad00000)] + 0x000001ff2ad2feb0 JavaThread "Incoming local TCP Connector on port 56946" [_thread_blocked, id=21940, stack(0x000000be9b900000,0x000000be9ba00000)] + 0x000001ff2ad30380 JavaThread "Exec process Thread 4" [_thread_in_native, id=32400, stack(0x000000be9bb00000,0x000000be9bc00000)] + 0x000001ff2b3fae80 JavaThread "Exec process Thread 5" [_thread_blocked, id=3772, stack(0x000000be9e800000,0x000000be9e900000)] + 0x000001ff2b3fb350 JavaThread "Exec process Thread 6" [_thread_in_native, id=30464, stack(0x000000be9e900000,0x000000be9ea00000)] + 0x000001ff2b3fa010 JavaThread "Exec process Thread 7" [_thread_in_native, id=25636, stack(0x000000be9ea00000,0x000000be9eb00000)] + 0x000001ff2b3fa4e0 JavaThread "/127.0.0.1:56946 to /127.0.0.1:56947 workers" [_thread_blocked, id=1356, stack(0x000000be9bc00000,0x000000be9bd00000)] + 0x000001ff2ad30850 JavaThread "/127.0.0.1:56946 to /127.0.0.1:56947 workers Thread 2" [_thread_blocked, id=28276, stack(0x000000be9eb00000,0x000000be9ec00000)] + 0x000001ff2af3f050 JavaThread "/127.0.0.1:56946 to /127.0.0.1:56947 workers Thread 3" [_thread_blocked, id=13868, stack(0x000000be9ec00000,0x000000be9ed00000)] + 0x000001ff2af3eb80 JavaThread "/127.0.0.1:56946 to /127.0.0.1:56947 workers Thread 4" [_thread_in_native, id=28656, stack(0x000000be9ed00000,0x000000be9ee00000)] + +Other Threads: + 0x000001ff7e6a20b0 VMThread "VM Thread" [stack: 0x000000be98200000,0x000000be98300000] [id=29068] + 0x000001ff7e884720 WatcherThread [stack: 0x000000be98e00000,0x000000be98f00000] [id=22660] + 0x000001ff7368b940 GCTaskThread "GC Thread#0" [stack: 0x000000be97d00000,0x000000be97e00000] [id=32996] + 0x000001ff7e983c70 GCTaskThread "GC Thread#1" [stack: 0x000000be98f00000,0x000000be99000000] [id=17732] + 0x000001ff7e983f20 GCTaskThread "GC Thread#2" [stack: 0x000000be99000000,0x000000be99100000] [id=8992] + 0x000001ff7e9841d0 GCTaskThread "GC Thread#3" [stack: 0x000000be99100000,0x000000be99200000] [id=17364] + 0x000001ff7154e8e0 ConcurrentGCThread "G1 Main Marker" [stack: 0x000000be97e00000,0x000000be97f00000] [id=32952] + 0x000001ff7368c0b0 ConcurrentGCThread "G1 Conc#0" [stack: 0x000000be97f00000,0x000000be98000000] [id=13600] + 0x000001ff7372e730 ConcurrentGCThread "G1 Refine#0" [stack: 0x000000be98000000,0x000000be98100000] [id=31300] + 0x000001ff2ae86300 ConcurrentGCThread "G1 Refine#1" [stack: 0x000000be9ab00000,0x000000be9ac00000] [id=27644] + 0x000001ff29eb8b40 ConcurrentGCThread "G1 Refine#2" [stack: 0x000000be9b700000,0x000000be9b800000] [id=33288] + 0x000001ff29eb96c0 ConcurrentGCThread "G1 Refine#3" [stack: 0x000000be9e300000,0x000000be9e400000] [id=33076] + 0x000001ff7e56a240 ConcurrentGCThread "G1 Service" [stack: 0x000000be98100000,0x000000be98200000] [id=31784] + +Threads with active compile tasks: +C2 CompilerThread0 131442 17284 4 com.sun.beans.TypeResolver::resolve (37 bytes) + +VM state: not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x00000000e0000000, size: 512 MB, Compressed Oops mode: 32-bit + +CDS archive(s) mapped at: [0x000001ff0f000000-0x000001ff0fbd0000-0x000001ff0fbd0000), size 12386304, SharedBaseAddress: 0x000001ff0f000000, ArchiveRelocationMode: 1. +Compressed class space mapped at: 0x000001ff10000000-0x000001ff24000000, reserved size: 335544320 +Narrow klass base: 0x000001ff0f000000, Narrow klass shift: 0, Narrow klass range: 0x100000000 + +GC Precious Log: + CPUs: 4 total, 4 available + Memory: 8107M + Large Page Support: Disabled + NUMA Support: Disabled + Compressed Oops: Enabled (32-bit) + Heap Region Size: 1M + Heap Min Capacity: 256M + Heap Initial Capacity: 256M + Heap Max Capacity: 512M + Pre-touch: Disabled + Parallel Workers: 4 + Concurrent Workers: 1 + Concurrent Refinement Workers: 4 + Periodic GC: Disabled + +Heap: + garbage-first heap total 295936K, used 175032K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 56 young (57344K), 1 survivors (1024K) + Metaspace used 73722K, committed 74496K, reserved 393216K + class space used 9949K, committed 10304K, reserved 327680K + +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next) +| 0|0x00000000e0000000, 0x00000000e0100000, 0x00000000e0100000|100%|HS| |TAMS 0x00000000e0100000, 0x00000000e0000000| Complete +| 1|0x00000000e0100000, 0x00000000e0200000, 0x00000000e0200000|100%|HC| |TAMS 0x00000000e0200000, 0x00000000e0100000| Complete +| 2|0x00000000e0200000, 0x00000000e0300000, 0x00000000e0300000|100%|HC| |TAMS 0x00000000e0300000, 0x00000000e0200000| Complete +| 3|0x00000000e0300000, 0x00000000e0400000, 0x00000000e0400000|100%|HC| |TAMS 0x00000000e0400000, 0x00000000e0300000| Complete +| 4|0x00000000e0400000, 0x00000000e0500000, 0x00000000e0500000|100%| O| |TAMS 0x00000000e0500000, 0x00000000e0400000| Untracked +| 5|0x00000000e0500000, 0x00000000e0600000, 0x00000000e0600000|100%| O| |TAMS 0x00000000e0600000, 0x00000000e0500000| Untracked +| 6|0x00000000e0600000, 0x00000000e0700000, 0x00000000e0700000|100%| O| |TAMS 0x00000000e0700000, 0x00000000e0600000| Untracked +| 7|0x00000000e0700000, 0x00000000e0800000, 0x00000000e0800000|100%| O| |TAMS 0x00000000e0800000, 0x00000000e0700000| Untracked +| 8|0x00000000e0800000, 0x00000000e0900000, 0x00000000e0900000|100%|HS| |TAMS 0x00000000e0900000, 0x00000000e0800000| Complete +| 9|0x00000000e0900000, 0x00000000e0a00000, 0x00000000e0a00000|100%| O| |TAMS 0x00000000e0a00000, 0x00000000e0900000| Untracked +| 10|0x00000000e0a00000, 0x00000000e0b00000, 0x00000000e0b00000|100%| O| |TAMS 0x00000000e0b00000, 0x00000000e0a00000| Untracked +| 11|0x00000000e0b00000, 0x00000000e0c00000, 0x00000000e0c00000|100%| O| |TAMS 0x00000000e0c00000, 0x00000000e0b00000| Untracked +| 12|0x00000000e0c00000, 0x00000000e0d00000, 0x00000000e0d00000|100%| O| |TAMS 0x00000000e0d00000, 0x00000000e0c00000| Untracked +| 13|0x00000000e0d00000, 0x00000000e0e00000, 0x00000000e0e00000|100%| O| |TAMS 0x00000000e0e00000, 0x00000000e0d00000| Untracked +| 14|0x00000000e0e00000, 0x00000000e0f00000, 0x00000000e0f00000|100%| O| |TAMS 0x00000000e0f00000, 0x00000000e0e00000| Untracked +| 15|0x00000000e0f00000, 0x00000000e1000000, 0x00000000e1000000|100%| O| |TAMS 0x00000000e1000000, 0x00000000e0f00000| Untracked +| 16|0x00000000e1000000, 0x00000000e1100000, 0x00000000e1100000|100%| O| |TAMS 0x00000000e1100000, 0x00000000e1000000| Untracked +| 17|0x00000000e1100000, 0x00000000e1200000, 0x00000000e1200000|100%| O| |TAMS 0x00000000e1200000, 0x00000000e1100000| Untracked +| 18|0x00000000e1200000, 0x00000000e1300000, 0x00000000e1300000|100%| O| |TAMS 0x00000000e1300000, 0x00000000e1200000| Untracked +| 19|0x00000000e1300000, 0x00000000e1400000, 0x00000000e1400000|100%| O| |TAMS 0x00000000e1400000, 0x00000000e1300000| Untracked +| 20|0x00000000e1400000, 0x00000000e1500000, 0x00000000e1500000|100%| O| |TAMS 0x00000000e1500000, 0x00000000e1400000| Untracked +| 21|0x00000000e1500000, 0x00000000e1600000, 0x00000000e1600000|100%| O| |TAMS 0x00000000e1600000, 0x00000000e1500000| Untracked +| 22|0x00000000e1600000, 0x00000000e1700000, 0x00000000e1700000|100%| O| |TAMS 0x00000000e1700000, 0x00000000e1600000| Untracked +| 23|0x00000000e1700000, 0x00000000e1800000, 0x00000000e1800000|100%| O| |TAMS 0x00000000e1800000, 0x00000000e1700000| Untracked +| 24|0x00000000e1800000, 0x00000000e1900000, 0x00000000e1900000|100%| O| |TAMS 0x00000000e1900000, 0x00000000e1800000| Untracked +| 25|0x00000000e1900000, 0x00000000e1a00000, 0x00000000e1a00000|100%| O| |TAMS 0x00000000e1a00000, 0x00000000e1900000| Untracked +| 26|0x00000000e1a00000, 0x00000000e1b00000, 0x00000000e1b00000|100%| O| |TAMS 0x00000000e1b00000, 0x00000000e1a00000| Untracked +| 27|0x00000000e1b00000, 0x00000000e1c00000, 0x00000000e1c00000|100%| O| |TAMS 0x00000000e1c00000, 0x00000000e1b00000| Untracked +| 28|0x00000000e1c00000, 0x00000000e1d00000, 0x00000000e1d00000|100%| O| |TAMS 0x00000000e1d00000, 0x00000000e1c00000| Untracked +| 29|0x00000000e1d00000, 0x00000000e1e00000, 0x00000000e1e00000|100%| O| |TAMS 0x00000000e1e00000, 0x00000000e1d00000| Untracked +| 30|0x00000000e1e00000, 0x00000000e1f00000, 0x00000000e1f00000|100%| O| |TAMS 0x00000000e1f00000, 0x00000000e1e00000| Untracked +| 31|0x00000000e1f00000, 0x00000000e2000000, 0x00000000e2000000|100%| O| |TAMS 0x00000000e2000000, 0x00000000e1f00000| Untracked +| 32|0x00000000e2000000, 0x00000000e2100000, 0x00000000e2100000|100%| O| |TAMS 0x00000000e2100000, 0x00000000e2000000| Untracked +| 33|0x00000000e2100000, 0x00000000e2200000, 0x00000000e2200000|100%| O| |TAMS 0x00000000e2200000, 0x00000000e2100000| Untracked +| 34|0x00000000e2200000, 0x00000000e2300000, 0x00000000e2300000|100%| O| |TAMS 0x00000000e2300000, 0x00000000e2200000| Untracked +| 35|0x00000000e2300000, 0x00000000e2400000, 0x00000000e2400000|100%| O| |TAMS 0x00000000e2400000, 0x00000000e2300000| Untracked +| 36|0x00000000e2400000, 0x00000000e2500000, 0x00000000e2500000|100%| O| |TAMS 0x00000000e2500000, 0x00000000e2400000| Untracked +| 37|0x00000000e2500000, 0x00000000e2600000, 0x00000000e2600000|100%| O| |TAMS 0x00000000e2600000, 0x00000000e2500000| Untracked +| 38|0x00000000e2600000, 0x00000000e2700000, 0x00000000e2700000|100%| O| |TAMS 0x00000000e2700000, 0x00000000e2600000| Untracked +| 39|0x00000000e2700000, 0x00000000e2800000, 0x00000000e2800000|100%| O| |TAMS 0x00000000e2800000, 0x00000000e2700000| Untracked +| 40|0x00000000e2800000, 0x00000000e2900000, 0x00000000e2900000|100%| O| |TAMS 0x00000000e2900000, 0x00000000e2800000| Untracked +| 41|0x00000000e2900000, 0x00000000e2a00000, 0x00000000e2a00000|100%| O| |TAMS 0x00000000e2a00000, 0x00000000e2900000| Untracked +| 42|0x00000000e2a00000, 0x00000000e2b00000, 0x00000000e2b00000|100%| O| |TAMS 0x00000000e2b00000, 0x00000000e2a00000| Untracked +| 43|0x00000000e2b00000, 0x00000000e2c00000, 0x00000000e2c00000|100%| O| |TAMS 0x00000000e2c00000, 0x00000000e2b00000| Untracked +| 44|0x00000000e2c00000, 0x00000000e2d00000, 0x00000000e2d00000|100%| O| |TAMS 0x00000000e2d00000, 0x00000000e2c00000| Untracked +| 45|0x00000000e2d00000, 0x00000000e2e00000, 0x00000000e2e00000|100%| O| |TAMS 0x00000000e2e00000, 0x00000000e2d00000| Untracked +| 46|0x00000000e2e00000, 0x00000000e2f00000, 0x00000000e2f00000|100%| O| |TAMS 0x00000000e2f00000, 0x00000000e2e00000| Untracked +| 47|0x00000000e2f00000, 0x00000000e3000000, 0x00000000e3000000|100%| O| |TAMS 0x00000000e3000000, 0x00000000e2f00000| Untracked +| 48|0x00000000e3000000, 0x00000000e3100000, 0x00000000e3100000|100%| O| |TAMS 0x00000000e3100000, 0x00000000e3000000| Untracked +| 49|0x00000000e3100000, 0x00000000e3200000, 0x00000000e3200000|100%| O| |TAMS 0x00000000e3200000, 0x00000000e3100000| Untracked +| 50|0x00000000e3200000, 0x00000000e3300000, 0x00000000e3300000|100%| O| |TAMS 0x00000000e3300000, 0x00000000e3200000| Untracked +| 51|0x00000000e3300000, 0x00000000e3400000, 0x00000000e3400000|100%| O| |TAMS 0x00000000e3400000, 0x00000000e3300000| Untracked +| 52|0x00000000e3400000, 0x00000000e3500000, 0x00000000e3500000|100%| O| |TAMS 0x00000000e3500000, 0x00000000e3400000| Untracked +| 53|0x00000000e3500000, 0x00000000e3600000, 0x00000000e3600000|100%| O| |TAMS 0x00000000e3600000, 0x00000000e3500000| Untracked +| 54|0x00000000e3600000, 0x00000000e3700000, 0x00000000e3700000|100%| O| |TAMS 0x00000000e3700000, 0x00000000e3600000| Untracked +| 55|0x00000000e3700000, 0x00000000e3800000, 0x00000000e3800000|100%| O| |TAMS 0x00000000e3800000, 0x00000000e3700000| Untracked +| 56|0x00000000e3800000, 0x00000000e3900000, 0x00000000e3900000|100%| O| |TAMS 0x00000000e3900000, 0x00000000e3800000| Untracked +| 57|0x00000000e3900000, 0x00000000e3a00000, 0x00000000e3a00000|100%| O| |TAMS 0x00000000e3a00000, 0x00000000e3900000| Untracked +| 58|0x00000000e3a00000, 0x00000000e3b00000, 0x00000000e3b00000|100%| O| |TAMS 0x00000000e3b00000, 0x00000000e3a00000| Untracked +| 59|0x00000000e3b00000, 0x00000000e3c00000, 0x00000000e3c00000|100%| O| |TAMS 0x00000000e3c00000, 0x00000000e3b00000| Untracked +| 60|0x00000000e3c00000, 0x00000000e3d00000, 0x00000000e3d00000|100%| O| |TAMS 0x00000000e3d00000, 0x00000000e3c00000| Untracked +| 61|0x00000000e3d00000, 0x00000000e3e00000, 0x00000000e3e00000|100%| O| |TAMS 0x00000000e3e00000, 0x00000000e3d00000| Untracked +| 62|0x00000000e3e00000, 0x00000000e3f00000, 0x00000000e3f00000|100%| O| |TAMS 0x00000000e3f00000, 0x00000000e3e00000| Untracked +| 63|0x00000000e3f00000, 0x00000000e4000000, 0x00000000e4000000|100%| O| |TAMS 0x00000000e4000000, 0x00000000e3f00000| Untracked +| 64|0x00000000e4000000, 0x00000000e4100000, 0x00000000e4100000|100%| O| |TAMS 0x00000000e4100000, 0x00000000e4000000| Untracked +| 65|0x00000000e4100000, 0x00000000e4200000, 0x00000000e4200000|100%| O| |TAMS 0x00000000e4200000, 0x00000000e4100000| Untracked +| 66|0x00000000e4200000, 0x00000000e4300000, 0x00000000e4300000|100%| O| |TAMS 0x00000000e4300000, 0x00000000e4200000| Untracked +| 67|0x00000000e4300000, 0x00000000e4400000, 0x00000000e4400000|100%| O| |TAMS 0x00000000e4400000, 0x00000000e4300000| Untracked +| 68|0x00000000e4400000, 0x00000000e4500000, 0x00000000e4500000|100%| O| |TAMS 0x00000000e4500000, 0x00000000e4400000| Untracked +| 69|0x00000000e4500000, 0x00000000e4600000, 0x00000000e4600000|100%| O| |TAMS 0x00000000e4600000, 0x00000000e4500000| Untracked +| 70|0x00000000e4600000, 0x00000000e4700000, 0x00000000e4700000|100%| O| |TAMS 0x00000000e4700000, 0x00000000e4600000| Untracked +| 71|0x00000000e4700000, 0x00000000e4800000, 0x00000000e4800000|100%| O| |TAMS 0x00000000e4800000, 0x00000000e4700000| Untracked +| 72|0x00000000e4800000, 0x00000000e4800000, 0x00000000e4900000| 0%| F| |TAMS 0x00000000e4800000, 0x00000000e4800000| Untracked +| 73|0x00000000e4900000, 0x00000000e4a00000, 0x00000000e4a00000|100%| O| |TAMS 0x00000000e4900000, 0x00000000e4900000| Untracked +| 74|0x00000000e4a00000, 0x00000000e4b00000, 0x00000000e4b00000|100%| O| |TAMS 0x00000000e4b00000, 0x00000000e4a00000| Untracked +| 75|0x00000000e4b00000, 0x00000000e4c00000, 0x00000000e4c00000|100%|HS| |TAMS 0x00000000e4c00000, 0x00000000e4b00000| Complete +| 76|0x00000000e4c00000, 0x00000000e4d00000, 0x00000000e4d00000|100%|HC| |TAMS 0x00000000e4d00000, 0x00000000e4c00000| Complete +| 77|0x00000000e4d00000, 0x00000000e4e00000, 0x00000000e4e00000|100%| O| |TAMS 0x00000000e4d00000, 0x00000000e4d00000| Untracked +| 78|0x00000000e4e00000, 0x00000000e4e00000, 0x00000000e4f00000| 0%| F| |TAMS 0x00000000e4e00000, 0x00000000e4e00000| Untracked +| 79|0x00000000e4f00000, 0x00000000e5000000, 0x00000000e5000000|100%|HS| |TAMS 0x00000000e5000000, 0x00000000e4f00000| Complete +| 80|0x00000000e5000000, 0x00000000e5100000, 0x00000000e5100000|100%| O| |TAMS 0x00000000e5100000, 0x00000000e5000000| Untracked +| 81|0x00000000e5100000, 0x00000000e5200000, 0x00000000e5200000|100%| O| |TAMS 0x00000000e5100000, 0x00000000e5100000| Untracked +| 82|0x00000000e5200000, 0x00000000e5200000, 0x00000000e5300000| 0%| F| |TAMS 0x00000000e5200000, 0x00000000e5200000| Untracked +| 83|0x00000000e5300000, 0x00000000e5400000, 0x00000000e5400000|100%| O| |TAMS 0x00000000e5400000, 0x00000000e5300000| Untracked +| 84|0x00000000e5400000, 0x00000000e5500000, 0x00000000e5500000|100%| O| |TAMS 0x00000000e5500000, 0x00000000e5400000| Untracked +| 85|0x00000000e5500000, 0x00000000e5600000, 0x00000000e5600000|100%| O| |TAMS 0x00000000e5600000, 0x00000000e5500000| Untracked +| 86|0x00000000e5600000, 0x00000000e5600000, 0x00000000e5700000| 0%| F| |TAMS 0x00000000e5600000, 0x00000000e5600000| Untracked +| 87|0x00000000e5700000, 0x00000000e5700000, 0x00000000e5800000| 0%| F| |TAMS 0x00000000e5700000, 0x00000000e5700000| Untracked +| 88|0x00000000e5800000, 0x00000000e5800000, 0x00000000e5900000| 0%| F| |TAMS 0x00000000e5800000, 0x00000000e5800000| Untracked +| 89|0x00000000e5900000, 0x00000000e5900000, 0x00000000e5a00000| 0%| F| |TAMS 0x00000000e5900000, 0x00000000e5900000| Untracked +| 90|0x00000000e5a00000, 0x00000000e5a00000, 0x00000000e5b00000| 0%| F| |TAMS 0x00000000e5a00000, 0x00000000e5a00000| Untracked +| 91|0x00000000e5b00000, 0x00000000e5b00000, 0x00000000e5c00000| 0%| F| |TAMS 0x00000000e5b00000, 0x00000000e5b00000| Untracked +| 92|0x00000000e5c00000, 0x00000000e5c00000, 0x00000000e5d00000| 0%| F| |TAMS 0x00000000e5c00000, 0x00000000e5c00000| Untracked +| 93|0x00000000e5d00000, 0x00000000e5d00000, 0x00000000e5e00000| 0%| F| |TAMS 0x00000000e5d00000, 0x00000000e5d00000| Untracked +| 94|0x00000000e5e00000, 0x00000000e5e81200, 0x00000000e5f00000| 50%| O| |TAMS 0x00000000e5e00000, 0x00000000e5e00000| Untracked +| 95|0x00000000e5f00000, 0x00000000e5f00000, 0x00000000e6000000| 0%| F| |TAMS 0x00000000e5f00000, 0x00000000e5f00000| Untracked +| 96|0x00000000e6000000, 0x00000000e6100000, 0x00000000e6100000|100%| O| |TAMS 0x00000000e6100000, 0x00000000e6000000| Untracked +| 97|0x00000000e6100000, 0x00000000e6100000, 0x00000000e6200000| 0%| F| |TAMS 0x00000000e6100000, 0x00000000e6100000| Untracked +| 98|0x00000000e6200000, 0x00000000e6200000, 0x00000000e6300000| 0%| F| |TAMS 0x00000000e6200000, 0x00000000e6200000| Untracked +| 99|0x00000000e6300000, 0x00000000e6300000, 0x00000000e6400000| 0%| F| |TAMS 0x00000000e6300000, 0x00000000e6300000| Untracked +| 100|0x00000000e6400000, 0x00000000e6400000, 0x00000000e6500000| 0%| F| |TAMS 0x00000000e6400000, 0x00000000e6400000| Untracked +| 101|0x00000000e6500000, 0x00000000e6600000, 0x00000000e6600000|100%| O| |TAMS 0x00000000e6600000, 0x00000000e6500000| Untracked +| 102|0x00000000e6600000, 0x00000000e6700000, 0x00000000e6700000|100%| O| |TAMS 0x00000000e6700000, 0x00000000e6600000| Untracked +| 103|0x00000000e6700000, 0x00000000e6800000, 0x00000000e6800000|100%| O| |TAMS 0x00000000e6800000, 0x00000000e6700000| Untracked +| 104|0x00000000e6800000, 0x00000000e6900000, 0x00000000e6900000|100%| O| |TAMS 0x00000000e6900000, 0x00000000e6800000| Untracked +| 105|0x00000000e6900000, 0x00000000e6900000, 0x00000000e6a00000| 0%| F| |TAMS 0x00000000e6900000, 0x00000000e6900000| Untracked +| 106|0x00000000e6a00000, 0x00000000e6a00000, 0x00000000e6b00000| 0%| F| |TAMS 0x00000000e6a00000, 0x00000000e6a00000| Untracked +| 107|0x00000000e6b00000, 0x00000000e6c00000, 0x00000000e6c00000|100%| O| |TAMS 0x00000000e6c00000, 0x00000000e6b00000| Untracked +| 108|0x00000000e6c00000, 0x00000000e6d00000, 0x00000000e6d00000|100%| O| |TAMS 0x00000000e6d00000, 0x00000000e6c00000| Untracked +| 109|0x00000000e6d00000, 0x00000000e6e00000, 0x00000000e6e00000|100%| O| |TAMS 0x00000000e6e00000, 0x00000000e6d00000| Untracked +| 110|0x00000000e6e00000, 0x00000000e6e00000, 0x00000000e6f00000| 0%| F| |TAMS 0x00000000e6e00000, 0x00000000e6e00000| Untracked +| 111|0x00000000e6f00000, 0x00000000e7000000, 0x00000000e7000000|100%| O| |TAMS 0x00000000e7000000, 0x00000000e6f00000| Untracked +| 112|0x00000000e7000000, 0x00000000e7100000, 0x00000000e7100000|100%| O| |TAMS 0x00000000e7100000, 0x00000000e7000000| Untracked +| 113|0x00000000e7100000, 0x00000000e7200000, 0x00000000e7200000|100%| O| |TAMS 0x00000000e7200000, 0x00000000e7100000| Untracked +| 114|0x00000000e7200000, 0x00000000e7300000, 0x00000000e7300000|100%| O| |TAMS 0x00000000e7300000, 0x00000000e7200000| Untracked +| 115|0x00000000e7300000, 0x00000000e7400000, 0x00000000e7400000|100%| O| |TAMS 0x00000000e7400000, 0x00000000e7300000| Untracked +| 116|0x00000000e7400000, 0x00000000e7500000, 0x00000000e7500000|100%| O| |TAMS 0x00000000e7500000, 0x00000000e7400000| Untracked +| 117|0x00000000e7500000, 0x00000000e7600000, 0x00000000e7600000|100%| O| |TAMS 0x00000000e7600000, 0x00000000e7500000| Untracked +| 118|0x00000000e7600000, 0x00000000e7700000, 0x00000000e7700000|100%| O| |TAMS 0x00000000e7700000, 0x00000000e7600000| Untracked +| 119|0x00000000e7700000, 0x00000000e7700000, 0x00000000e7800000| 0%| F| |TAMS 0x00000000e7700000, 0x00000000e7700000| Untracked +| 120|0x00000000e7800000, 0x00000000e7800000, 0x00000000e7900000| 0%| F| |TAMS 0x00000000e7800000, 0x00000000e7800000| Untracked +| 121|0x00000000e7900000, 0x00000000e7900000, 0x00000000e7a00000| 0%| F| |TAMS 0x00000000e7900000, 0x00000000e7900000| Untracked +| 122|0x00000000e7a00000, 0x00000000e7a00000, 0x00000000e7b00000| 0%| F| |TAMS 0x00000000e7a00000, 0x00000000e7a00000| Untracked +| 123|0x00000000e7b00000, 0x00000000e7c00000, 0x00000000e7c00000|100%| O| |TAMS 0x00000000e7c00000, 0x00000000e7b00000| Untracked +| 124|0x00000000e7c00000, 0x00000000e7d00000, 0x00000000e7d00000|100%| O| |TAMS 0x00000000e7d00000, 0x00000000e7c00000| Untracked +| 125|0x00000000e7d00000, 0x00000000e7e00000, 0x00000000e7e00000|100%| O| |TAMS 0x00000000e7e00000, 0x00000000e7d00000| Untracked +| 126|0x00000000e7e00000, 0x00000000e7f00000, 0x00000000e7f00000|100%| O| |TAMS 0x00000000e7f00000, 0x00000000e7e00000| Untracked +| 127|0x00000000e7f00000, 0x00000000e8000000, 0x00000000e8000000|100%| O| |TAMS 0x00000000e8000000, 0x00000000e7f00000| Untracked +| 128|0x00000000e8000000, 0x00000000e8100000, 0x00000000e8100000|100%| O| |TAMS 0x00000000e8100000, 0x00000000e8000000| Untracked +| 129|0x00000000e8100000, 0x00000000e8200000, 0x00000000e8200000|100%| O| |TAMS 0x00000000e8200000, 0x00000000e8100000| Untracked +| 130|0x00000000e8200000, 0x00000000e8200000, 0x00000000e8300000| 0%| F| |TAMS 0x00000000e8200000, 0x00000000e8200000| Untracked +| 131|0x00000000e8300000, 0x00000000e8300000, 0x00000000e8400000| 0%| F| |TAMS 0x00000000e8300000, 0x00000000e8300000| Untracked +| 132|0x00000000e8400000, 0x00000000e8400000, 0x00000000e8500000| 0%| F| |TAMS 0x00000000e8400000, 0x00000000e8400000| Untracked +| 133|0x00000000e8500000, 0x00000000e8600000, 0x00000000e8600000|100%| O| |TAMS 0x00000000e8600000, 0x00000000e8500000| Untracked +| 134|0x00000000e8600000, 0x00000000e8700000, 0x00000000e8700000|100%| O| |TAMS 0x00000000e8700000, 0x00000000e8600000| Untracked +| 135|0x00000000e8700000, 0x00000000e8700000, 0x00000000e8800000| 0%| F| |TAMS 0x00000000e8700000, 0x00000000e8700000| Untracked +| 136|0x00000000e8800000, 0x00000000e8900000, 0x00000000e8900000|100%| O| |TAMS 0x00000000e8900000, 0x00000000e8800000| Untracked +| 137|0x00000000e8900000, 0x00000000e8900000, 0x00000000e8a00000| 0%| F| |TAMS 0x00000000e8900000, 0x00000000e8900000| Untracked +| 138|0x00000000e8a00000, 0x00000000e8b00000, 0x00000000e8b00000|100%| O| |TAMS 0x00000000e8b00000, 0x00000000e8a00000| Untracked +| 139|0x00000000e8b00000, 0x00000000e8b00000, 0x00000000e8c00000| 0%| F| |TAMS 0x00000000e8b00000, 0x00000000e8b00000| Untracked +| 140|0x00000000e8c00000, 0x00000000e8d00000, 0x00000000e8d00000|100%| O| |TAMS 0x00000000e8d00000, 0x00000000e8c00000| Untracked +| 141|0x00000000e8d00000, 0x00000000e8e00000, 0x00000000e8e00000|100%| O| |TAMS 0x00000000e8e00000, 0x00000000e8d00000| Untracked +| 142|0x00000000e8e00000, 0x00000000e8f00000, 0x00000000e8f00000|100%| O| |TAMS 0x00000000e8f00000, 0x00000000e8e00000| Untracked +| 143|0x00000000e8f00000, 0x00000000e9000000, 0x00000000e9000000|100%| O| |TAMS 0x00000000e9000000, 0x00000000e8f00000| Untracked +| 144|0x00000000e9000000, 0x00000000e9000000, 0x00000000e9100000| 0%| F| |TAMS 0x00000000e9000000, 0x00000000e9000000| Untracked +| 145|0x00000000e9100000, 0x00000000e9200000, 0x00000000e9200000|100%| O| |TAMS 0x00000000e9200000, 0x00000000e9100000| Untracked +| 146|0x00000000e9200000, 0x00000000e9300000, 0x00000000e9300000|100%| O| |TAMS 0x00000000e9245200, 0x00000000e9200000| Untracked +| 147|0x00000000e9300000, 0x00000000e9300000, 0x00000000e9400000| 0%| F| |TAMS 0x00000000e9300000, 0x00000000e9300000| Untracked +| 148|0x00000000e9400000, 0x00000000e9400000, 0x00000000e9500000| 0%| F| |TAMS 0x00000000e9400000, 0x00000000e9400000| Untracked +| 149|0x00000000e9500000, 0x00000000e9500000, 0x00000000e9600000| 0%| F| |TAMS 0x00000000e9500000, 0x00000000e9500000| Untracked +| 150|0x00000000e9600000, 0x00000000e9600000, 0x00000000e9700000| 0%| F| |TAMS 0x00000000e9600000, 0x00000000e9600000| Untracked +| 151|0x00000000e9700000, 0x00000000e9700000, 0x00000000e9800000| 0%| F| |TAMS 0x00000000e9700000, 0x00000000e9700000| Untracked +| 152|0x00000000e9800000, 0x00000000e9800000, 0x00000000e9900000| 0%| F| |TAMS 0x00000000e9800000, 0x00000000e9800000| Untracked +| 153|0x00000000e9900000, 0x00000000e9900000, 0x00000000e9a00000| 0%| F| |TAMS 0x00000000e9900000, 0x00000000e9900000| Untracked +| 154|0x00000000e9a00000, 0x00000000e9a00000, 0x00000000e9b00000| 0%| F| |TAMS 0x00000000e9a00000, 0x00000000e9a00000| Untracked +| 155|0x00000000e9b00000, 0x00000000e9b00000, 0x00000000e9c00000| 0%| F| |TAMS 0x00000000e9b00000, 0x00000000e9b00000| Untracked +| 156|0x00000000e9c00000, 0x00000000e9c00000, 0x00000000e9d00000| 0%| F| |TAMS 0x00000000e9c00000, 0x00000000e9c00000| Untracked +| 157|0x00000000e9d00000, 0x00000000e9d00000, 0x00000000e9e00000| 0%| F| |TAMS 0x00000000e9d00000, 0x00000000e9d00000| Untracked +| 158|0x00000000e9e00000, 0x00000000e9e00000, 0x00000000e9f00000| 0%| F| |TAMS 0x00000000e9e00000, 0x00000000e9e00000| Untracked +| 159|0x00000000e9f00000, 0x00000000e9f00000, 0x00000000ea000000| 0%| F| |TAMS 0x00000000e9f00000, 0x00000000e9f00000| Untracked +| 160|0x00000000ea000000, 0x00000000ea000000, 0x00000000ea100000| 0%| F| |TAMS 0x00000000ea000000, 0x00000000ea000000| Untracked +| 161|0x00000000ea100000, 0x00000000ea100000, 0x00000000ea200000| 0%| F| |TAMS 0x00000000ea100000, 0x00000000ea100000| Untracked +| 162|0x00000000ea200000, 0x00000000ea200000, 0x00000000ea300000| 0%| F| |TAMS 0x00000000ea200000, 0x00000000ea200000| Untracked +| 163|0x00000000ea300000, 0x00000000ea300000, 0x00000000ea400000| 0%| F| |TAMS 0x00000000ea300000, 0x00000000ea300000| Untracked +| 164|0x00000000ea400000, 0x00000000ea400000, 0x00000000ea500000| 0%| F| |TAMS 0x00000000ea400000, 0x00000000ea400000| Untracked +| 165|0x00000000ea500000, 0x00000000ea500000, 0x00000000ea600000| 0%| F| |TAMS 0x00000000ea500000, 0x00000000ea500000| Untracked +| 166|0x00000000ea600000, 0x00000000ea600000, 0x00000000ea700000| 0%| F| |TAMS 0x00000000ea600000, 0x00000000ea600000| Untracked +| 167|0x00000000ea700000, 0x00000000ea700000, 0x00000000ea800000| 0%| F| |TAMS 0x00000000ea700000, 0x00000000ea700000| Untracked +| 168|0x00000000ea800000, 0x00000000ea800000, 0x00000000ea900000| 0%| F| |TAMS 0x00000000ea800000, 0x00000000ea800000| Untracked +| 169|0x00000000ea900000, 0x00000000ea900000, 0x00000000eaa00000| 0%| F| |TAMS 0x00000000ea900000, 0x00000000ea900000| Untracked +| 170|0x00000000eaa00000, 0x00000000eaa00000, 0x00000000eab00000| 0%| F| |TAMS 0x00000000eaa00000, 0x00000000eaa00000| Untracked +| 171|0x00000000eab00000, 0x00000000eab00000, 0x00000000eac00000| 0%| F| |TAMS 0x00000000eab00000, 0x00000000eab00000| Untracked +| 172|0x00000000eac00000, 0x00000000eac00000, 0x00000000ead00000| 0%| F| |TAMS 0x00000000eac00000, 0x00000000eac00000| Untracked +| 173|0x00000000ead00000, 0x00000000ead00000, 0x00000000eae00000| 0%| F| |TAMS 0x00000000ead00000, 0x00000000ead00000| Untracked +| 174|0x00000000eae00000, 0x00000000eae00000, 0x00000000eaf00000| 0%| F| |TAMS 0x00000000eae00000, 0x00000000eae00000| Untracked +| 175|0x00000000eaf00000, 0x00000000eaf00000, 0x00000000eb000000| 0%| F| |TAMS 0x00000000eaf00000, 0x00000000eaf00000| Untracked +| 176|0x00000000eb000000, 0x00000000eb000000, 0x00000000eb100000| 0%| F| |TAMS 0x00000000eb000000, 0x00000000eb000000| Untracked +| 177|0x00000000eb100000, 0x00000000eb100000, 0x00000000eb200000| 0%| F| |TAMS 0x00000000eb100000, 0x00000000eb100000| Untracked +| 178|0x00000000eb200000, 0x00000000eb200000, 0x00000000eb300000| 0%| F| |TAMS 0x00000000eb200000, 0x00000000eb200000| Untracked +| 179|0x00000000eb300000, 0x00000000eb300000, 0x00000000eb400000| 0%| F| |TAMS 0x00000000eb300000, 0x00000000eb300000| Untracked +| 180|0x00000000eb400000, 0x00000000eb400000, 0x00000000eb500000| 0%| F| |TAMS 0x00000000eb400000, 0x00000000eb400000| Untracked +| 181|0x00000000eb500000, 0x00000000eb500000, 0x00000000eb600000| 0%| F| |TAMS 0x00000000eb500000, 0x00000000eb500000| Untracked +| 182|0x00000000eb600000, 0x00000000eb600000, 0x00000000eb700000| 0%| F| |TAMS 0x00000000eb600000, 0x00000000eb600000| Untracked +| 183|0x00000000eb700000, 0x00000000eb700000, 0x00000000eb800000| 0%| F| |TAMS 0x00000000eb700000, 0x00000000eb700000| Untracked +| 184|0x00000000eb800000, 0x00000000eb800000, 0x00000000eb900000| 0%| F| |TAMS 0x00000000eb800000, 0x00000000eb800000| Untracked +| 185|0x00000000eb900000, 0x00000000eb900000, 0x00000000eba00000| 0%| F| |TAMS 0x00000000eb900000, 0x00000000eb900000| Untracked +| 186|0x00000000eba00000, 0x00000000eba00000, 0x00000000ebb00000| 0%| F| |TAMS 0x00000000eba00000, 0x00000000eba00000| Untracked +| 187|0x00000000ebb00000, 0x00000000ebb00000, 0x00000000ebc00000| 0%| F| |TAMS 0x00000000ebb00000, 0x00000000ebb00000| Untracked +| 188|0x00000000ebc00000, 0x00000000ebc00000, 0x00000000ebd00000| 0%| F| |TAMS 0x00000000ebc00000, 0x00000000ebc00000| Untracked +| 189|0x00000000ebd00000, 0x00000000ebd00000, 0x00000000ebe00000| 0%| F| |TAMS 0x00000000ebd00000, 0x00000000ebd00000| Untracked +| 190|0x00000000ebe00000, 0x00000000ebe00000, 0x00000000ebf00000| 0%| F| |TAMS 0x00000000ebe00000, 0x00000000ebe00000| Untracked +| 191|0x00000000ebf00000, 0x00000000ebf00000, 0x00000000ec000000| 0%| F| |TAMS 0x00000000ebf00000, 0x00000000ebf00000| Untracked +| 192|0x00000000ec000000, 0x00000000ec06d150, 0x00000000ec100000| 42%| S|CS|TAMS 0x00000000ec000000, 0x00000000ec000000| Complete +| 193|0x00000000ec100000, 0x00000000ec100000, 0x00000000ec200000| 0%| F| |TAMS 0x00000000ec100000, 0x00000000ec100000| Untracked +| 194|0x00000000ec200000, 0x00000000ec200000, 0x00000000ec300000| 0%| F| |TAMS 0x00000000ec200000, 0x00000000ec200000| Untracked +| 195|0x00000000ec300000, 0x00000000ec300000, 0x00000000ec400000| 0%| F| |TAMS 0x00000000ec300000, 0x00000000ec300000| Untracked +| 196|0x00000000ec400000, 0x00000000ec400000, 0x00000000ec500000| 0%| F| |TAMS 0x00000000ec400000, 0x00000000ec400000| Untracked +| 197|0x00000000ec500000, 0x00000000ec500000, 0x00000000ec600000| 0%| F| |TAMS 0x00000000ec500000, 0x00000000ec500000| Untracked +| 198|0x00000000ec600000, 0x00000000ec600000, 0x00000000ec700000| 0%| F| |TAMS 0x00000000ec600000, 0x00000000ec600000| Untracked +| 199|0x00000000ec700000, 0x00000000ec700000, 0x00000000ec800000| 0%| F| |TAMS 0x00000000ec700000, 0x00000000ec700000| Untracked +| 200|0x00000000ec800000, 0x00000000ec800000, 0x00000000ec900000| 0%| F| |TAMS 0x00000000ec800000, 0x00000000ec800000| Untracked +| 201|0x00000000ec900000, 0x00000000ec900000, 0x00000000eca00000| 0%| F| |TAMS 0x00000000ec900000, 0x00000000ec900000| Untracked +| 202|0x00000000eca00000, 0x00000000eca00000, 0x00000000ecb00000| 0%| F| |TAMS 0x00000000eca00000, 0x00000000eca00000| Untracked +| 203|0x00000000ecb00000, 0x00000000ecb00000, 0x00000000ecc00000| 0%| F| |TAMS 0x00000000ecb00000, 0x00000000ecb00000| Untracked +| 204|0x00000000ecc00000, 0x00000000ecc00000, 0x00000000ecd00000| 0%| F| |TAMS 0x00000000ecc00000, 0x00000000ecc00000| Untracked +| 205|0x00000000ecd00000, 0x00000000ecd00000, 0x00000000ece00000| 0%| F| |TAMS 0x00000000ecd00000, 0x00000000ecd00000| Untracked +| 206|0x00000000ece00000, 0x00000000ece00000, 0x00000000ecf00000| 0%| F| |TAMS 0x00000000ece00000, 0x00000000ece00000| Untracked +| 207|0x00000000ecf00000, 0x00000000ecf00000, 0x00000000ed000000| 0%| F| |TAMS 0x00000000ecf00000, 0x00000000ecf00000| Untracked +| 208|0x00000000ed000000, 0x00000000ed000000, 0x00000000ed100000| 0%| F| |TAMS 0x00000000ed000000, 0x00000000ed000000| Untracked +| 209|0x00000000ed100000, 0x00000000ed100000, 0x00000000ed200000| 0%| F| |TAMS 0x00000000ed100000, 0x00000000ed100000| Untracked +| 210|0x00000000ed200000, 0x00000000ed200000, 0x00000000ed300000| 0%| F| |TAMS 0x00000000ed200000, 0x00000000ed200000| Untracked +| 211|0x00000000ed300000, 0x00000000ed300000, 0x00000000ed400000| 0%| F| |TAMS 0x00000000ed300000, 0x00000000ed300000| Untracked +| 212|0x00000000ed400000, 0x00000000ed400000, 0x00000000ed500000| 0%| F| |TAMS 0x00000000ed400000, 0x00000000ed400000| Untracked +| 213|0x00000000ed500000, 0x00000000ed500000, 0x00000000ed600000| 0%| F| |TAMS 0x00000000ed500000, 0x00000000ed500000| Untracked +| 214|0x00000000ed600000, 0x00000000ed600000, 0x00000000ed700000| 0%| F| |TAMS 0x00000000ed600000, 0x00000000ed600000| Untracked +| 215|0x00000000ed700000, 0x00000000ed700000, 0x00000000ed800000| 0%| F| |TAMS 0x00000000ed700000, 0x00000000ed700000| Untracked +| 216|0x00000000ed800000, 0x00000000ed800000, 0x00000000ed900000| 0%| F| |TAMS 0x00000000ed800000, 0x00000000ed800000| Untracked +| 217|0x00000000ed900000, 0x00000000ed900000, 0x00000000eda00000| 0%| F| |TAMS 0x00000000ed900000, 0x00000000ed900000| Untracked +| 218|0x00000000eda00000, 0x00000000eda00000, 0x00000000edb00000| 0%| F| |TAMS 0x00000000eda00000, 0x00000000eda00000| Untracked +| 219|0x00000000edb00000, 0x00000000edb00000, 0x00000000edc00000| 0%| F| |TAMS 0x00000000edb00000, 0x00000000edb00000| Untracked +| 220|0x00000000edc00000, 0x00000000edc00000, 0x00000000edd00000| 0%| F| |TAMS 0x00000000edc00000, 0x00000000edc00000| Untracked +| 221|0x00000000edd00000, 0x00000000edd00000, 0x00000000ede00000| 0%| F| |TAMS 0x00000000edd00000, 0x00000000edd00000| Untracked +| 222|0x00000000ede00000, 0x00000000ede00000, 0x00000000edf00000| 0%| F| |TAMS 0x00000000ede00000, 0x00000000ede00000| Untracked +| 223|0x00000000edf00000, 0x00000000edf00000, 0x00000000ee000000| 0%| F| |TAMS 0x00000000edf00000, 0x00000000edf00000| Untracked +| 224|0x00000000ee000000, 0x00000000ee000000, 0x00000000ee100000| 0%| F| |TAMS 0x00000000ee000000, 0x00000000ee000000| Untracked +| 225|0x00000000ee100000, 0x00000000ee100000, 0x00000000ee200000| 0%| F| |TAMS 0x00000000ee100000, 0x00000000ee100000| Untracked +| 226|0x00000000ee200000, 0x00000000ee200000, 0x00000000ee300000| 0%| F| |TAMS 0x00000000ee200000, 0x00000000ee200000| Untracked +| 227|0x00000000ee300000, 0x00000000ee300000, 0x00000000ee400000| 0%| F| |TAMS 0x00000000ee300000, 0x00000000ee300000| Untracked +| 228|0x00000000ee400000, 0x00000000ee400000, 0x00000000ee500000| 0%| F| |TAMS 0x00000000ee400000, 0x00000000ee400000| Untracked +| 229|0x00000000ee500000, 0x00000000ee500000, 0x00000000ee600000| 0%| F| |TAMS 0x00000000ee500000, 0x00000000ee500000| Untracked +| 230|0x00000000ee600000, 0x00000000ee600000, 0x00000000ee700000| 0%| F| |TAMS 0x00000000ee600000, 0x00000000ee600000| Untracked +| 231|0x00000000ee700000, 0x00000000ee700000, 0x00000000ee800000| 0%| F| |TAMS 0x00000000ee700000, 0x00000000ee700000| Untracked +| 232|0x00000000ee800000, 0x00000000ee800000, 0x00000000ee900000| 0%| F| |TAMS 0x00000000ee800000, 0x00000000ee800000| Untracked +| 233|0x00000000ee900000, 0x00000000ee900000, 0x00000000eea00000| 0%| F| |TAMS 0x00000000ee900000, 0x00000000ee900000| Untracked +| 234|0x00000000eea00000, 0x00000000eea04808, 0x00000000eeb00000| 1%| E| |TAMS 0x00000000eea00000, 0x00000000eea00000| Complete +| 235|0x00000000eeb00000, 0x00000000eec00000, 0x00000000eec00000|100%| E|CS|TAMS 0x00000000eeb00000, 0x00000000eeb00000| Complete +| 236|0x00000000eec00000, 0x00000000eed00000, 0x00000000eed00000|100%| E|CS|TAMS 0x00000000eec00000, 0x00000000eec00000| Complete +| 237|0x00000000eed00000, 0x00000000eee00000, 0x00000000eee00000|100%| E|CS|TAMS 0x00000000eed00000, 0x00000000eed00000| Complete +| 238|0x00000000eee00000, 0x00000000eef00000, 0x00000000eef00000|100%| E|CS|TAMS 0x00000000eee00000, 0x00000000eee00000| Complete +| 239|0x00000000eef00000, 0x00000000ef000000, 0x00000000ef000000|100%| E|CS|TAMS 0x00000000eef00000, 0x00000000eef00000| Complete +| 240|0x00000000ef000000, 0x00000000ef100000, 0x00000000ef100000|100%| E|CS|TAMS 0x00000000ef000000, 0x00000000ef000000| Complete +| 241|0x00000000ef100000, 0x00000000ef200000, 0x00000000ef200000|100%| E|CS|TAMS 0x00000000ef100000, 0x00000000ef100000| Complete +| 242|0x00000000ef200000, 0x00000000ef300000, 0x00000000ef300000|100%| E|CS|TAMS 0x00000000ef200000, 0x00000000ef200000| Complete +| 243|0x00000000ef300000, 0x00000000ef400000, 0x00000000ef400000|100%| E|CS|TAMS 0x00000000ef300000, 0x00000000ef300000| Complete +| 244|0x00000000ef400000, 0x00000000ef500000, 0x00000000ef500000|100%| E|CS|TAMS 0x00000000ef400000, 0x00000000ef400000| Complete +| 245|0x00000000ef500000, 0x00000000ef600000, 0x00000000ef600000|100%| E|CS|TAMS 0x00000000ef500000, 0x00000000ef500000| Complete +| 246|0x00000000ef600000, 0x00000000ef700000, 0x00000000ef700000|100%| E|CS|TAMS 0x00000000ef600000, 0x00000000ef600000| Complete +| 247|0x00000000ef700000, 0x00000000ef800000, 0x00000000ef800000|100%| E|CS|TAMS 0x00000000ef700000, 0x00000000ef700000| Complete +| 248|0x00000000ef800000, 0x00000000ef900000, 0x00000000ef900000|100%| E|CS|TAMS 0x00000000ef800000, 0x00000000ef800000| Complete +| 249|0x00000000ef900000, 0x00000000efa00000, 0x00000000efa00000|100%| E|CS|TAMS 0x00000000ef900000, 0x00000000ef900000| Complete +| 250|0x00000000efa00000, 0x00000000efb00000, 0x00000000efb00000|100%| E|CS|TAMS 0x00000000efa00000, 0x00000000efa00000| Complete +| 251|0x00000000efb00000, 0x00000000efc00000, 0x00000000efc00000|100%| E|CS|TAMS 0x00000000efb00000, 0x00000000efb00000| Complete +| 252|0x00000000efc00000, 0x00000000efd00000, 0x00000000efd00000|100%| E|CS|TAMS 0x00000000efc00000, 0x00000000efc00000| Complete +| 253|0x00000000efd00000, 0x00000000efe00000, 0x00000000efe00000|100%| E|CS|TAMS 0x00000000efd00000, 0x00000000efd00000| Complete +| 254|0x00000000efe00000, 0x00000000eff00000, 0x00000000eff00000|100%| E|CS|TAMS 0x00000000efe00000, 0x00000000efe00000| Complete +| 255|0x00000000eff00000, 0x00000000f0000000, 0x00000000f0000000|100%| E|CS|TAMS 0x00000000eff00000, 0x00000000eff00000| Complete +| 256|0x00000000f0000000, 0x00000000f0100000, 0x00000000f0100000|100%| E|CS|TAMS 0x00000000f0000000, 0x00000000f0000000| Complete +| 257|0x00000000f0100000, 0x00000000f0200000, 0x00000000f0200000|100%| E|CS|TAMS 0x00000000f0100000, 0x00000000f0100000| Complete +| 258|0x00000000f0200000, 0x00000000f0300000, 0x00000000f0300000|100%| E|CS|TAMS 0x00000000f0200000, 0x00000000f0200000| Complete +| 259|0x00000000f0300000, 0x00000000f0400000, 0x00000000f0400000|100%| E|CS|TAMS 0x00000000f0300000, 0x00000000f0300000| Complete +| 260|0x00000000f0400000, 0x00000000f0500000, 0x00000000f0500000|100%| E|CS|TAMS 0x00000000f0400000, 0x00000000f0400000| Complete +| 261|0x00000000f0500000, 0x00000000f0600000, 0x00000000f0600000|100%| E|CS|TAMS 0x00000000f0500000, 0x00000000f0500000| Complete +| 262|0x00000000f0600000, 0x00000000f0700000, 0x00000000f0700000|100%| E|CS|TAMS 0x00000000f0600000, 0x00000000f0600000| Complete +| 263|0x00000000f0700000, 0x00000000f0800000, 0x00000000f0800000|100%| E|CS|TAMS 0x00000000f0700000, 0x00000000f0700000| Complete +| 264|0x00000000f0800000, 0x00000000f0900000, 0x00000000f0900000|100%| E|CS|TAMS 0x00000000f0800000, 0x00000000f0800000| Complete +| 265|0x00000000f0900000, 0x00000000f0a00000, 0x00000000f0a00000|100%| E|CS|TAMS 0x00000000f0900000, 0x00000000f0900000| Complete +| 266|0x00000000f0a00000, 0x00000000f0b00000, 0x00000000f0b00000|100%| E|CS|TAMS 0x00000000f0a00000, 0x00000000f0a00000| Complete +| 267|0x00000000f0b00000, 0x00000000f0c00000, 0x00000000f0c00000|100%| E|CS|TAMS 0x00000000f0b00000, 0x00000000f0b00000| Complete +| 268|0x00000000f0c00000, 0x00000000f0d00000, 0x00000000f0d00000|100%| E|CS|TAMS 0x00000000f0c00000, 0x00000000f0c00000| Complete +| 269|0x00000000f0d00000, 0x00000000f0e00000, 0x00000000f0e00000|100%| E|CS|TAMS 0x00000000f0d00000, 0x00000000f0d00000| Complete +| 270|0x00000000f0e00000, 0x00000000f0f00000, 0x00000000f0f00000|100%| E|CS|TAMS 0x00000000f0e00000, 0x00000000f0e00000| Complete +| 271|0x00000000f0f00000, 0x00000000f1000000, 0x00000000f1000000|100%| E|CS|TAMS 0x00000000f0f00000, 0x00000000f0f00000| Complete +| 272|0x00000000f1000000, 0x00000000f1100000, 0x00000000f1100000|100%| E|CS|TAMS 0x00000000f1000000, 0x00000000f1000000| Complete +| 273|0x00000000f1100000, 0x00000000f1200000, 0x00000000f1200000|100%| E|CS|TAMS 0x00000000f1100000, 0x00000000f1100000| Complete +| 274|0x00000000f1200000, 0x00000000f1300000, 0x00000000f1300000|100%| E|CS|TAMS 0x00000000f1200000, 0x00000000f1200000| Complete +| 275|0x00000000f1300000, 0x00000000f1400000, 0x00000000f1400000|100%| E|CS|TAMS 0x00000000f1300000, 0x00000000f1300000| Complete +| 276|0x00000000f1400000, 0x00000000f1500000, 0x00000000f1500000|100%| E|CS|TAMS 0x00000000f1400000, 0x00000000f1400000| Complete +| 277|0x00000000f1500000, 0x00000000f1600000, 0x00000000f1600000|100%| E|CS|TAMS 0x00000000f1500000, 0x00000000f1500000| Complete +| 278|0x00000000f1600000, 0x00000000f1700000, 0x00000000f1700000|100%| E|CS|TAMS 0x00000000f1600000, 0x00000000f1600000| Complete +| 279|0x00000000f1700000, 0x00000000f1800000, 0x00000000f1800000|100%| E|CS|TAMS 0x00000000f1700000, 0x00000000f1700000| Complete +| 280|0x00000000f1800000, 0x00000000f1900000, 0x00000000f1900000|100%| E|CS|TAMS 0x00000000f1800000, 0x00000000f1800000| Complete +| 281|0x00000000f1900000, 0x00000000f1a00000, 0x00000000f1a00000|100%| E|CS|TAMS 0x00000000f1900000, 0x00000000f1900000| Complete +| 282|0x00000000f1a00000, 0x00000000f1b00000, 0x00000000f1b00000|100%| E|CS|TAMS 0x00000000f1a00000, 0x00000000f1a00000| Complete +| 283|0x00000000f1b00000, 0x00000000f1c00000, 0x00000000f1c00000|100%| E|CS|TAMS 0x00000000f1b00000, 0x00000000f1b00000| Complete +| 284|0x00000000f1c00000, 0x00000000f1d00000, 0x00000000f1d00000|100%| E|CS|TAMS 0x00000000f1c00000, 0x00000000f1c00000| Complete +| 285|0x00000000f1d00000, 0x00000000f1e00000, 0x00000000f1e00000|100%| E|CS|TAMS 0x00000000f1d00000, 0x00000000f1d00000| Complete +| 286|0x00000000f1e00000, 0x00000000f1f00000, 0x00000000f1f00000|100%| E|CS|TAMS 0x00000000f1e00000, 0x00000000f1e00000| Complete +| 287|0x00000000f1f00000, 0x00000000f2000000, 0x00000000f2000000|100%| E|CS|TAMS 0x00000000f1f00000, 0x00000000f1f00000| Complete +| 288|0x00000000f2000000, 0x00000000f2100000, 0x00000000f2100000|100%| E|CS|TAMS 0x00000000f2000000, 0x00000000f2000000| Complete + +Card table byte_map: [0x000001ff7af00000,0x000001ff7b000000] _byte_map_base: 0x000001ff7a800000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x000001ff71549fb0, (CMBitMap*) 0x000001ff71549ff0 + Prev Bits: [0x000001ff7b100000, 0x000001ff7b900000) + Next Bits: [0x000001ff7b900000, 0x000001ff7c100000) + +Polling page: 0x000001ff717f0000 + +Metaspace: + +Usage: + Non-class: 62.28 MB used. + Class: 9.72 MB used. + Both: 71.99 MB used. + +Virtual space: + Non-class space: 64.00 MB reserved, 62.69 MB ( 98%) committed, 1 nodes. + Class space: 320.00 MB reserved, 10.06 MB ( 3%) committed, 1 nodes. + Both: 384.00 MB reserved, 72.75 MB ( 19%) committed. + +Chunk freelists: + Non-Class: 416.00 KB + Class: 5.97 MB + Both: 6.38 MB + +MaxMetaspaceSize: 384.00 MB +CompressedClassSpaceSize: 320.00 MB +Initial GC threshold: 21.00 MB +Current GC threshold: 119.62 MB +CDS: on +MetaspaceReclaimPolicy: balanced + - commit_granule_bytes: 65536. + - commit_granule_words: 8192. + - virtual_space_node_default_size: 8388608. + - enlarge_chunks_in_place: 1. + - new_chunks_are_fully_committed: 0. + - uncommit_free_chunks: 1. + - use_allocation_guard: 0. + - handle_deallocations: 1. + + +Internal statistics: + +num_allocs_failed_limit: 15. +num_arena_births: 892. +num_arena_deaths: 16. +num_vsnodes_births: 2. +num_vsnodes_deaths: 0. +num_space_committed: 1180. +num_space_uncommitted: 16. +num_chunks_returned_to_freelist: 133. +num_chunks_taken_from_freelist: 4169. +num_chunk_merges: 37. +num_chunk_splits: 2626. +num_chunks_enlarged: 1715. +num_purges: 2. +num_inconsistent_stats: 0. + +CodeHeap 'non-profiled nmethods': size=120000Kb used=10631Kb max_used=10737Kb free=109368Kb + bounds [0x000001ff07ad0000, 0x000001ff08560000, 0x000001ff0f000000] +CodeHeap 'profiled nmethods': size=120000Kb used=27226Kb max_used=27627Kb free=92773Kb + bounds [0x000001ff00000000, 0x000001ff01b10000, 0x000001ff07530000] +CodeHeap 'non-nmethods': size=5760Kb used=2370Kb max_used=2447Kb free=3389Kb + bounds [0x000001ff07530000, 0x000001ff077b0000, 0x000001ff07ad0000] + total_blobs=14615 nmethods=13722 adapters=804 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 130.838 Thread 0x000001ff7e6d0650 nmethod 17275 0x000001ff00c7cb90 code [0x000001ff00c7cde0, 0x000001ff00c7d948] +Event: 130.838 Thread 0x000001ff7e6d0650 17276 3 groovy.xml.markupsupport.StandardXmlAttributeFilter::apply (9 bytes) +Event: 130.838 Thread 0x000001ff7e6d0650 nmethod 17276 0x000001ff008e7410 code [0x000001ff008e75c0, 0x000001ff008e7808] +Event: 130.839 Thread 0x000001ff7e6d0650 17277 3 groovy.xml.markupsupport.StandardXmlAttributeFilter::apply (60 bytes) +Event: 130.839 Thread 0x000001ff7e6d0650 nmethod 17277 0x000001ff011de410 code [0x000001ff011de5e0, 0x000001ff011dea38] +Event: 130.839 Thread 0x000001ff7e6d0650 17278 3 groovy.xml.MarkupBuilder$DefaultXmlEscapingFunction$$Lambda$1454/0x000001ff1079aeb0:: (15 bytes) +Event: 130.839 Thread 0x000001ff7e6d0650 nmethod 17278 0x000001ff00531c10 code [0x000001ff00531dc0, 0x000001ff00531fd8] +Event: 130.839 Thread 0x000001ff7e6d0650 17279 3 groovy.xml.MarkupBuilder$DefaultXmlEscapingFunction$$Lambda$1454/0x000001ff1079aeb0::get (12 bytes) +Event: 130.840 Thread 0x000001ff7e6d0650 nmethod 17279 0x000001ff00267010 code [0x000001ff002671c0, 0x000001ff00267508] +Event: 130.848 Thread 0x000001ff7e6ccd10 17280 % 4 jdk.internal.loader.URLClassPath$JarLoader::validIndex @ 30 (94 bytes) +Event: 130.856 Thread 0x000001ff7e6d0650 17281 ! 3 java.io.Writer::write (52 bytes) +Event: 130.857 Thread 0x000001ff7e6d0650 nmethod 17281 0x000001ff0001e090 code [0x000001ff0001e240, 0x000001ff0001e688] +Event: 130.857 Thread 0x000001ff7e6d0650 17282 3 org.apache.groovy.io.StringBuilderWriter::write (16 bytes) +Event: 130.857 Thread 0x000001ff7e6d0650 nmethod 17282 0x000001ff0055be10 code [0x000001ff0055bfc0, 0x000001ff0055c1a8] +Event: 130.871 Thread 0x000001ff7e6ccd10 nmethod 17280% 0x000001ff08377890 code [0x000001ff08377a60, 0x000001ff08378368] +Event: 131.005 Thread 0x000001ff7e6d0650 17283 3 java.io.PrintWriter::ensureOpen (18 bytes) +Event: 131.005 Thread 0x000001ff7e6d0650 nmethod 17283 0x000001ff013b9790 code [0x000001ff013b9940, 0x000001ff013b9b48] +Event: 131.010 Thread 0x000001ff7e6ccd10 17284 4 com.sun.beans.TypeResolver::resolve (37 bytes) +Event: 131.012 Thread 0x000001ff7e6d0650 17286 3 org.gradle.internal.io.LineBufferingOutputStream::write (59 bytes) +Event: 131.015 Thread 0x000001ff7e6d0650 nmethod 17286 0x000001ff00d85c10 code [0x000001ff00d85ec0, 0x000001ff00d86c98] + +GC Heap History (20 events): +Event: 114.705 GC heap before +{Heap before GC invocations=33 (full 0): + garbage-first heap total 262144K, used 131684K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 15 young (15360K), 14 survivors (14336K) + Metaspace used 71990K, committed 73472K, reserved 393216K + class space used 9729K, committed 10176K, reserved 327680K +} +Event: 114.739 GC heap after +{Heap after GC invocations=34 (full 0): + garbage-first heap total 262144K, used 133178K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 71990K, committed 73472K, reserved 393216K + class space used 9729K, committed 10176K, reserved 327680K +} +Event: 117.563 GC heap before +{Heap before GC invocations=35 (full 0): + garbage-first heap total 262144K, used 176186K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 50 young (51200K), 2 survivors (2048K) + Metaspace used 72057K, committed 73536K, reserved 393216K + class space used 9731K, committed 10176K, reserved 327680K +} +Event: 117.585 GC heap after +{Heap after GC invocations=36 (full 0): + garbage-first heap total 262144K, used 143097K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 7 young (7168K), 7 survivors (7168K) + Metaspace used 72057K, committed 73536K, reserved 393216K + class space used 9731K, committed 10176K, reserved 327680K +} +Event: 117.744 GC heap before +{Heap before GC invocations=36 (full 0): + garbage-first heap total 262144K, used 148217K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 7 survivors (7168K) + Metaspace used 72061K, committed 73536K, reserved 393216K + class space used 9731K, committed 10176K, reserved 327680K +} +Event: 117.759 GC heap after +{Heap after GC invocations=37 (full 0): + garbage-first heap total 262144K, used 143234K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 72061K, committed 73536K, reserved 393216K + class space used 9731K, committed 10176K, reserved 327680K +} +Event: 118.971 GC heap before +{Heap before GC invocations=37 (full 0): + garbage-first heap total 262144K, used 187266K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 45 young (46080K), 2 survivors (2048K) + Metaspace used 72216K, committed 73536K, reserved 393216K + class space used 9738K, committed 10176K, reserved 327680K +} +Event: 118.991 GC heap after +{Heap after GC invocations=38 (full 0): + garbage-first heap total 262144K, used 150867K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 6 young (6144K), 6 survivors (6144K) + Metaspace used 72216K, committed 73536K, reserved 393216K + class space used 9738K, committed 10176K, reserved 327680K +} +Event: 120.726 GC heap before +{Heap before GC invocations=39 (full 0): + garbage-first heap total 262144K, used 191827K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 49 young (50176K), 6 survivors (6144K) + Metaspace used 72370K, committed 73536K, reserved 393216K + class space used 9739K, committed 10176K, reserved 327680K +} +Event: 120.744 GC heap after +{Heap after GC invocations=40 (full 0): + garbage-first heap total 262144K, used 149483K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 72370K, committed 73536K, reserved 393216K + class space used 9739K, committed 10176K, reserved 327680K +} +Event: 120.989 GC heap before +{Heap before GC invocations=40 (full 0): + garbage-first heap total 262144K, used 159723K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 2 survivors (2048K) + Metaspace used 72381K, committed 73536K, reserved 393216K + class space used 9739K, committed 10176K, reserved 327680K +} +Event: 121.000 GC heap after +{Heap after GC invocations=41 (full 0): + garbage-first heap total 262144K, used 144606K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 72381K, committed 73536K, reserved 393216K + class space used 9739K, committed 10176K, reserved 327680K +} +Event: 122.774 GC heap before +{Heap before GC invocations=41 (full 0): + garbage-first heap total 262144K, used 172254K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 30 young (30720K), 1 survivors (1024K) + Metaspace used 72575K, committed 73536K, reserved 393216K + class space used 9762K, committed 10176K, reserved 327680K +} +Event: 122.783 GC heap after +{Heap after GC invocations=42 (full 0): + garbage-first heap total 262144K, used 141220K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 72575K, committed 73536K, reserved 393216K + class space used 9762K, committed 10176K, reserved 327680K +} +Event: 123.550 GC heap before +{Heap before GC invocations=43 (full 0): + garbage-first heap total 295936K, used 200612K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 60 young (61440K), 2 survivors (2048K) + Metaspace used 72593K, committed 73536K, reserved 393216K + class space used 9762K, committed 10176K, reserved 327680K +} +Event: 123.559 GC heap after +{Heap after GC invocations=44 (full 0): + garbage-first heap total 295936K, used 143187K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 3 young (3072K), 3 survivors (3072K) + Metaspace used 72593K, committed 73536K, reserved 393216K + class space used 9762K, committed 10176K, reserved 327680K +} +Event: 123.678 GC heap before +{Heap before GC invocations=44 (full 0): + garbage-first heap total 295936K, used 153427K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 14 young (14336K), 3 survivors (3072K) + Metaspace used 72612K, committed 73600K, reserved 393216K + class space used 9766K, committed 10176K, reserved 327680K +} +Event: 123.690 GC heap after +{Heap after GC invocations=45 (full 0): + garbage-first heap total 295936K, used 122686K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 2 young (2048K), 2 survivors (2048K) + Metaspace used 72612K, committed 73600K, reserved 393216K + class space used 9766K, committed 10176K, reserved 327680K +} +Event: 124.519 GC heap before +{Heap before GC invocations=45 (full 0): + garbage-first heap total 295936K, used 218942K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 96 young (98304K), 2 survivors (2048K) + Metaspace used 72619K, committed 73600K, reserved 393216K + class space used 9766K, committed 10176K, reserved 327680K +} +Event: 124.521 GC heap after +{Heap after GC invocations=46 (full 0): + garbage-first heap total 295936K, used 119736K [0x00000000e0000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 72619K, committed 73600K, reserved 393216K + class space used 9766K, committed 10176K, reserved 327680K +} + +Deoptimization events (20 events): +Event: 129.818 Thread 0x000001ff2af3eb80 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001ff082e8164 relative=0x0000000000000184 +Event: 129.818 Thread 0x000001ff2af3eb80 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001ff082e8164 method=sun.nio.ch.IOUtil.readIntoNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JZZILsun/nio/ch/NativeDispatcher;)I @ 132 c2 +Event: 129.818 Thread 0x000001ff2af3eb80 DEOPT PACKING pc=0x000001ff082e8164 sp=0x000000be9edfeb70 +Event: 129.818 Thread 0x000001ff2af3eb80 DEOPT UNPACKING pc=0x000001ff075823a3 sp=0x000000be9edfeae0 mode 2 +Event: 130.831 Thread 0x000001ff2af3eb80 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001ff082e45a0 relative=0x0000000000000d20 +Event: 130.831 Thread 0x000001ff2af3eb80 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001ff082e45a0 method=sun.nio.ch.IOUtil.read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JZZILsun/nio/ch/NativeDispatcher;)I @ 1 c2 +Event: 130.831 Thread 0x000001ff2af3eb80 DEOPT PACKING pc=0x000001ff082e45a0 sp=0x000000be9edfec00 +Event: 130.831 Thread 0x000001ff2af3eb80 DEOPT UNPACKING pc=0x000001ff075823a3 sp=0x000000be9edfebe8 mode 2 +Event: 130.831 Thread 0x000001ff2af3eb80 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001ff082e8164 relative=0x0000000000000184 +Event: 130.831 Thread 0x000001ff2af3eb80 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001ff082e8164 method=sun.nio.ch.IOUtil.readIntoNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JZZILsun/nio/ch/NativeDispatcher;)I @ 132 c2 +Event: 130.831 Thread 0x000001ff2af3eb80 DEOPT PACKING pc=0x000001ff082e8164 sp=0x000000be9edfeb70 +Event: 130.831 Thread 0x000001ff2af3eb80 DEOPT UNPACKING pc=0x000001ff075823a3 sp=0x000000be9edfeae0 mode 2 +Event: 130.834 Thread 0x000001ff2b3fb820 Uncommon trap: trap_request=0xffffffc6 fr.pc=0x000001ff07ec64c8 relative=0x0000000000000508 +Event: 130.834 Thread 0x000001ff2b3fb820 Uncommon trap: reason=bimorphic_or_optimized_type_check action=maybe_recompile pc=0x000001ff07ec64c8 method=org.codehaus.groovy.util.SingleKeyHashMap.get(Ljava/lang/Object;)Ljava/lang/Object; @ 43 c2 +Event: 130.834 Thread 0x000001ff2b3fb820 DEOPT PACKING pc=0x000001ff07ec64c8 sp=0x000000be97bfb090 +Event: 130.834 Thread 0x000001ff2b3fb820 DEOPT UNPACKING pc=0x000001ff075823a3 sp=0x000000be97bfb028 mode 2 +Event: 130.840 Thread 0x000001ff2b3fb820 Uncommon trap: trap_request=0xffffffde fr.pc=0x000001ff081b340c relative=0x000000000000018c +Event: 130.840 Thread 0x000001ff2b3fb820 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000001ff081b340c method=java.lang.String.equals(Ljava/lang/Object;)Z @ 8 c2 +Event: 130.840 Thread 0x000001ff2b3fb820 DEOPT PACKING pc=0x000001ff081b340c sp=0x000000be97bf78c0 +Event: 130.840 Thread 0x000001ff2b3fb820 DEOPT UNPACKING pc=0x000001ff075823a3 sp=0x000000be97bf7858 mode 2 + +Classes unloaded (20 events): +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff109597c8 'lombok/javac/apt/MessagerDiagnosticsReceiver' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10959420 'lombok/javac/apt/InterceptingJavaFileManager' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10959218 'lombok/permit/dummy/Parent' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10959000 'lombok/core/CleanupRegistry' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10958c90 'lombok/javac/apt/LombokProcessor$1' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10958a98 'lombok/core/DiagnosticsReceiver' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10958800 'lombok/javac/apt/LombokProcessor' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089dcf0 'lombok/permit/Permit$Fake' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089daf0 'lombok/permit/Permit' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089d8c0 'lombok/core/AnnotationProcessor$EcjDescriptor' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089d688 'lombok/core/AnnotationProcessor$JavacDescriptor' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089d280 'lombok/core/AnnotationProcessor$ProcessorDescriptor' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089d000 'lombok/core/AnnotationProcessor' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff10958000 'lombok/launch/AnnotationProcessorHider$AstModificationNotifierData' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089cc20 'lombok/launch/AnnotationProcessorHider$ClaimingProcessor' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089c9a0 'lombok/launch/ClassFileMetaData' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089c788 'lombok/launch/PackageShader' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089c480 'lombok/launch/ShadowClassLoader' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089c280 'lombok/launch/Main' +Event: 110.289 Thread 0x000001ff7e6a20b0 Unloading class 0x000001ff1089c000 'lombok/launch/AnnotationProcessorHider$AnnotationProcessor' + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 125.563 Thread 0x000001ff2b166770 Exception (0x00000000ef95c0b8) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 125.593 Thread 0x000001ff2b166770 Exception (0x00000000ef9a4160) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 125.594 Thread 0x000001ff2b166770 Exception (0x00000000ef9b54d0) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 126.096 Thread 0x000001ff28345340 Exception ()V> (0x00000000ef489938) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 1107] +Event: 126.098 Thread 0x000001ff28345340 Exception ()V> (0x00000000ef495bc8) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 1107] +Event: 126.100 Thread 0x000001ff28345340 Exception ()V> (0x00000000ef4a3c80) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 1107] +Event: 126.101 Thread 0x000001ff28345340 Exception ()V> (0x00000000ef4aeba0) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 1107] +Event: 129.822 Thread 0x000001ff2b3fb820 Exception (0x00000000ef89bfd8) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 129.823 Thread 0x000001ff2b3fb820 Exception (0x00000000ef8a3550) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 130.838 Thread 0x000001ff2b3fb820 Exception (0x00000000ef8d51c8) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 130.838 Thread 0x000001ff2b3fb820 Exception (0x00000000eef129a0) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 130.841 Thread 0x000001ff2b3fb820 Exception (0x00000000eef22a40) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 535] +Event: 130.841 Thread 0x000001ff2b3fb820 Exception (0x00000000eef27370) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 535] +Event: 130.842 Thread 0x000001ff2b3fb820 Exception (0x00000000eef28118) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 535] +Event: 130.842 Thread 0x000001ff2b3fb820 Exception (0x00000000eef28f38) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 535] +Event: 130.842 Thread 0x000001ff2b3fb820 Exception (0x00000000eef29ce0) +thrown [s\open\src\hotspot\share\prims\jni.cpp, line 535] +Event: 130.850 Thread 0x000001ff2b3fb820 Exception (0x00000000eed2aff8) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 130.853 Thread 0x000001ff2b3fb820 Exception (0x00000000eecf42a0) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 131.009 Thread 0x000001ff2b3fb820 Exception (0x00000000eeb94ce0) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] +Event: 131.010 Thread 0x000001ff2b3fb820 Exception (0x00000000eebde928) +thrown [s\open\src\hotspot\share\classfile\systemDictionary.cpp, line 256] + +VM Operations (20 events): +Event: 124.835 Executing VM operation: HandshakeAllThreads +Event: 124.835 Executing VM operation: HandshakeAllThreads done +Event: 125.846 Executing VM operation: Cleanup +Event: 125.847 Executing VM operation: Cleanup done +Event: 125.888 Executing VM operation: HandshakeAllThreads +Event: 125.889 Executing VM operation: HandshakeAllThreads done +Event: 126.056 Executing VM operation: HandshakeAllThreads +Event: 126.056 Executing VM operation: HandshakeAllThreads done +Event: 127.069 Executing VM operation: Cleanup +Event: 127.069 Executing VM operation: Cleanup done +Event: 128.077 Executing VM operation: Cleanup +Event: 128.078 Executing VM operation: Cleanup done +Event: 128.100 Executing VM operation: HandshakeAllThreads +Event: 128.100 Executing VM operation: HandshakeAllThreads done +Event: 129.114 Executing VM operation: Cleanup +Event: 129.114 Executing VM operation: Cleanup done +Event: 130.120 Executing VM operation: Cleanup +Event: 130.120 Executing VM operation: Cleanup done +Event: 131.124 Executing VM operation: Cleanup +Event: 131.124 Executing VM operation: Cleanup done + +Events (20 events): +Event: 125.926 Thread 0x000001ff7e729ab0 flushing nmethod 0x000001ff01aa4710 +Event: 125.926 Thread 0x000001ff7e729ab0 flushing nmethod 0x000001ff01aa4e90 +Event: 125.926 Thread 0x000001ff7e729ab0 flushing nmethod 0x000001ff01aa7a10 +Event: 125.926 Thread 0x000001ff7e729ab0 flushing nmethod 0x000001ff01abf190 +Event: 125.926 Thread 0x000001ff7e729ab0 flushing nmethod 0x000001ff01abf690 +Event: 126.044 Thread 0x000001ff2ad2feb0 Thread added: 0x000001ff2ad2feb0 +Event: 126.103 loading class java/util/concurrent/ArrayBlockingQueue$Itrs +Event: 126.103 loading class java/util/concurrent/ArrayBlockingQueue$Itrs done +Event: 126.120 Thread 0x000001ff2ad30380 Thread added: 0x000001ff2ad30380 +Event: 126.145 Thread 0x000001ff2b3fa4e0 Thread added: 0x000001ff2b3fa4e0 +Event: 126.145 Thread 0x000001ff2b3fae80 Thread added: 0x000001ff2b3fae80 +Event: 126.146 Thread 0x000001ff2b3fb350 Thread added: 0x000001ff2b3fb350 +Event: 126.146 Thread 0x000001ff2b3fa010 Thread added: 0x000001ff2b3fa010 +Event: 126.811 Thread 0x000001ff2b3fa4e0 Thread exited: 0x000001ff2b3fa4e0 +Event: 128.007 Thread 0x000001ff2b3fa4e0 Thread added: 0x000001ff2b3fa4e0 +Event: 128.008 loading class java/nio/channels/AsynchronousCloseException +Event: 128.008 loading class java/nio/channels/AsynchronousCloseException done +Event: 128.046 Thread 0x000001ff2ad30850 Thread added: 0x000001ff2ad30850 +Event: 128.151 Thread 0x000001ff2af3f050 Thread added: 0x000001ff2af3f050 +Event: 128.154 Thread 0x000001ff2af3eb80 Thread added: 0x000001ff2af3eb80 + + +Dynamic libraries: +0x00007ff73ddf0000 - 0x00007ff73de00000 C:\Program Files\Java\jdk-17\bin\java.exe +0x00007ffbf4430000 - 0x00007ffbf4628000 C:\Windows\SYSTEM32\ntdll.dll +0x00007ffbf38e0000 - 0x00007ffbf39a2000 C:\Windows\System32\KERNEL32.DLL +0x00007ffbf2060000 - 0x00007ffbf235e000 C:\Windows\System32\KERNELBASE.dll +0x00007ffbf1eb0000 - 0x00007ffbf1fb0000 C:\Windows\System32\ucrtbase.dll +0x00007ffbe80c0000 - 0x00007ffbe80d9000 C:\Program Files\Java\jdk-17\bin\jli.dll +0x00007ffbf3f50000 - 0x00007ffbf4002000 C:\Windows\System32\ADVAPI32.dll +0x00007ffbf3630000 - 0x00007ffbf36ce000 C:\Windows\System32\msvcrt.dll +0x00007ffbf2fb0000 - 0x00007ffbf3050000 C:\Windows\System32\sechost.dll +0x00007ffbf24b0000 - 0x00007ffbf25d3000 C:\Windows\System32\RPCRT4.dll +0x00007ffbf1e80000 - 0x00007ffbf1ea7000 C:\Windows\System32\bcrypt.dll +0x00007ffbf3190000 - 0x00007ffbf332d000 C:\Windows\System32\USER32.dll +0x00007ffbf1bf0000 - 0x00007ffbf1c12000 C:\Windows\System32\win32u.dll +0x00007ffbf3330000 - 0x00007ffbf335b000 C:\Windows\System32\GDI32.dll +0x00007ffbf1ad0000 - 0x00007ffbf1be7000 C:\Windows\System32\gdi32full.dll +0x00007ffbf2360000 - 0x00007ffbf23fd000 C:\Windows\System32\msvcp_win.dll +0x00007ffbe80a0000 - 0x00007ffbe80bb000 C:\Program Files\Java\jdk-17\bin\VCRUNTIME140.dll +0x00007ffbdb930000 - 0x00007ffbdbbca000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16\COMCTL32.dll +0x00007ffbe68d0000 - 0x00007ffbe68da000 C:\Windows\SYSTEM32\VERSION.dll +0x00007ffbf3050000 - 0x00007ffbf307f000 C:\Windows\System32\IMM32.DLL +0x00007ffbea290000 - 0x00007ffbea29c000 C:\Program Files\Java\jdk-17\bin\vcruntime140_1.dll +0x00007ffbbfc50000 - 0x00007ffbbfcde000 C:\Program Files\Java\jdk-17\bin\msvcp140.dll +0x00007ffb57560000 - 0x00007ffb5813e000 C:\Program Files\Java\jdk-17\bin\server\jvm.dll +0x00007ffbf25e0000 - 0x00007ffbf25e8000 C:\Windows\System32\PSAPI.DLL +0x00007ffbd9870000 - 0x00007ffbd9879000 C:\Windows\SYSTEM32\WSOCK32.dll +0x00007ffbf3360000 - 0x00007ffbf33cb000 C:\Windows\System32\WS2_32.dll +0x00007ffbd8e80000 - 0x00007ffbd8ea7000 C:\Windows\SYSTEM32\WINMM.dll +0x00007ffbf02b0000 - 0x00007ffbf02c2000 C:\Windows\SYSTEM32\kernel.appcore.dll +0x00007ffbe8110000 - 0x00007ffbe811a000 C:\Program Files\Java\jdk-17\bin\jimage.dll +0x00007ffbeffc0000 - 0x00007ffbf01a4000 C:\Windows\SYSTEM32\DBGHELP.DLL +0x00007ffbd7980000 - 0x00007ffbd79b4000 C:\Windows\SYSTEM32\dbgcore.DLL +0x00007ffbf1c20000 - 0x00007ffbf1ca2000 C:\Windows\System32\bcryptPrimitives.dll +0x00007ffbe7e20000 - 0x00007ffbe7e2e000 C:\Program Files\Java\jdk-17\bin\instrument.dll +0x00007ffbcfa20000 - 0x00007ffbcfa45000 C:\Program Files\Java\jdk-17\bin\java.dll +0x00007ffb9bd50000 - 0x00007ffb9be27000 C:\Program Files\Java\jdk-17\bin\jsvml.dll +0x00007ffbf26e0000 - 0x00007ffbf2e4f000 C:\Windows\System32\SHELL32.dll +0x00007ffbef740000 - 0x00007ffbefee4000 C:\Windows\SYSTEM32\windows.storage.dll +0x00007ffbf4010000 - 0x00007ffbf4363000 C:\Windows\System32\combase.dll +0x00007ffbf1500000 - 0x00007ffbf152e000 C:\Windows\SYSTEM32\Wldp.dll +0x00007ffbf36d0000 - 0x00007ffbf379d000 C:\Windows\System32\OLEAUT32.dll +0x00007ffbf30e0000 - 0x00007ffbf318d000 C:\Windows\System32\SHCORE.dll +0x00007ffbf2450000 - 0x00007ffbf24a5000 C:\Windows\System32\shlwapi.dll +0x00007ffbf1a00000 - 0x00007ffbf1a24000 C:\Windows\SYSTEM32\profapi.dll +0x00007ffbe2510000 - 0x00007ffbe2528000 C:\Program Files\Java\jdk-17\bin\zip.dll +0x00007ffbdcf10000 - 0x00007ffbdcf29000 C:\Program Files\Java\jdk-17\bin\net.dll +0x00007ffbe4bd0000 - 0x00007ffbe4cdd000 C:\Windows\SYSTEM32\WINHTTP.dll +0x00007ffbf1260000 - 0x00007ffbf12ca000 C:\Windows\system32\mswsock.dll +0x00007ffbd28e0000 - 0x00007ffbd28f6000 C:\Program Files\Java\jdk-17\bin\nio.dll +0x00007ffbe7dd0000 - 0x00007ffbe7de0000 C:\Program Files\Java\jdk-17\bin\verify.dll +0x00007ffbc0840000 - 0x00007ffbc0867000 C:\Users\user1\.gradle\native\c067742578af261105cb4f569cf0c3c89f3d7b1fecec35dd04571415982c5e48\windows-amd64\native-platform.dll +0x00007ffb9bc00000 - 0x00007ffb9bd44000 C:\Users\user1\.gradle\native\100fb08df4bc3b14c8652ba06237920a3bd2aa13389f12d3474272988ae205f9\windows-amd64\native-platform-file-events.dll +0x00007ffbe1f80000 - 0x00007ffbe1f8a000 C:\Program Files\Java\jdk-17\bin\management.dll +0x00007ffbd8f50000 - 0x00007ffbd8f5b000 C:\Program Files\Java\jdk-17\bin\management_ext.dll +0x00007ffbf1450000 - 0x00007ffbf1468000 C:\Windows\SYSTEM32\CRYPTSP.dll +0x00007ffbf0ae0000 - 0x00007ffbf0b14000 C:\Windows\system32\rsaenh.dll +0x00007ffbf1980000 - 0x00007ffbf19ae000 C:\Windows\SYSTEM32\USERENV.dll +0x00007ffbf1470000 - 0x00007ffbf147c000 C:\Windows\SYSTEM32\CRYPTBASE.dll +0x00007ffbf0ef0000 - 0x00007ffbf0f2b000 C:\Windows\SYSTEM32\IPHLPAPI.DLL +0x00007ffbf2fa0000 - 0x00007ffbf2fa8000 C:\Windows\System32\NSI.dll +0x00007ffbe3c80000 - 0x00007ffbe3c97000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL +0x00007ffbe4660000 - 0x00007ffbe467d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL +0x00007ffbf0f40000 - 0x00007ffbf100a000 C:\Windows\SYSTEM32\DNSAPI.dll +0x00007ffbd8220000 - 0x00007ffbd822e000 C:\Program Files\Java\jdk-17\bin\sunmscapi.dll +0x00007ffbf1d20000 - 0x00007ffbf1e7c000 C:\Windows\System32\CRYPT32.dll +0x00007ffbf1570000 - 0x00007ffbf1597000 C:\Windows\SYSTEM32\ncrypt.dll +0x00007ffbf1530000 - 0x00007ffbf156b000 C:\Windows\SYSTEM32\NTASN1.dll +0x00007ffbe24c0000 - 0x00007ffbe24c7000 C:\Windows\system32\wshunix.dll + +dbghelp: loaded successfully - version: 4.0.5 - missing functions: none +symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Program Files\Java\jdk-17\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.4355_none_60b8b9eb71f62e16;C:\Program Files\Java\jdk-17\bin\server;C:\Users\user1\.gradle\native\c067742578af261105cb4f569cf0c3c89f3d7b1fecec35dd04571415982c5e48\windows-amd64;C:\Users\user1\.gradle\native\100fb08df4bc3b14c8652ba06237920a3bd2aa13389f12d3474272988ae205f9\windows-amd64 + +VM Arguments: +jvm_args: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=384m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=KR -Duser.language=ko -Duser.variant -javaagent:C:\Users\user1\.gradle\wrapper\dists\gradle-8.10.2-bin\a04bxjujx95o3nb99gddekhwo\gradle-8.10.2\lib\agents\gradle-instrumentation-agent-8.10.2.jar +java_command: org.gradle.launcher.daemon.bootstrap.GradleDaemon 8.10.2 +java_class_path (initial): C:\Users\user1\.gradle\wrapper\dists\gradle-8.10.2-bin\a04bxjujx95o3nb99gddekhwo\gradle-8.10.2\lib\gradle-daemon-main-8.10.2.jar +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 3 {product} {ergonomic} + size_t CompressedClassSpaceSize = 335544320 {product} {ergonomic} + uint ConcGCThreads = 1 {product} {ergonomic} + uint G1ConcRefinementThreads = 4 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + bool HeapDumpOnOutOfMemoryError = true {manageable} {command line} + size_t InitialHeapSize = 268435456 {product} {command line} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 536870912 {product} {command line} + size_t MaxMetaspaceSize = 402653184 {product} {command line} + size_t MaxNewSize = 321912832 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + size_t MinHeapSize = 268435456 {product} {command line} + uintx NonNMethodCodeHeapSize = 5832780 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122912730 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 122912730 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + size_t SoftMaxHeapSize = 536870912 {manageable} {ergonomic} + bool UseCompressedClassPointers = true {product lp64_product} {ergonomic} + bool UseCompressedOops = true {product lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=C:\Program Files\Java\jdk-17 +CLASSPATH=C:\Program Files\Java\jdk-17\lib;.; +PATH=C:\Python312\Scripts\;C:\Python312\;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;กฐC:\Program Files\Java\jdk-17\bin;:\MinGW\bin;C:\Program Files\Bandizip\;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files\Git\cmd;C:\Program Files\MATLAB\R2023a\bin;C:\Program Files\PuTTY\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Ruby32-x64\bin;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\user1\AppData\Local\Microsoft\WindowsApps;C:\Users\user1\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.3\bin;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.3\bin;C:\Users\user1\AppData\Local\gitkraken\bin;C:\Program Files\Java\jdk-17\bin;C:\Users\user1\AppData\Roaming\npm +USERNAME=user1 +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 10, GenuineIntel + + + +--------------- S Y S T E M --------------- + +OS: + Windows 10 , 64 bit Build 19041 (10.0.19041.4957) +OS uptime: 4 days 21:43 hours +Hyper-V role detected + +CPU: total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 142 stepping 10 microcode 0xb4, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt, hv + +Memory: 4k page, system-wide physical 8107M (150M free) +TotalPageFile size 32683M (AvailPageFile size 2M) +current process WorkingSet (physical memory assigned to process): 435M, peak: 481M +current process commit charge ("private bytes"): 568M, peak: 572M + +vm_info: Java HotSpot(TM) 64-Bit Server VM (17.0.8+9-LTS-211) for windows-amd64 JRE (17.0.8+9-LTS-211), built on Jun 14 2023 10:34:31 by "mach5one" with MS VC++ 17.1 (VS2022) + +END. diff --git a/replay_pid15120.log b/replay_pid15120.log new file mode 100644 index 0000000..a504cd7 --- /dev/null +++ b/replay_pid15120.log @@ -0,0 +1,2715 @@ +JvmtiExport can_access_local_variables 0 +JvmtiExport can_hotswap_or_post_breakpoint 0 +JvmtiExport can_post_on_exceptions 0 +# 283 ciObject found +ciInstanceKlass java/lang/Cloneable 1 0 7 100 1 100 1 1 1 +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/DeserializerCache +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/KeyDeserializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/std/StdKeyDeserializers +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/KeyDeserializers +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/ValueInstantiators +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/AbstractTypeResolver +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/BeanDeserializerModifier +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/cfg/DeserializerFactoryConfig +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/PropertyName +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/Deserializers +instanceKlass com/fasterxml/jackson/annotation/ObjectIdGenerator +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/ValueInstantiator +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/ResolvableDeserializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/ContextualDeserializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/ser/SerializerCache +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/ser/ResolvableSerializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/ser/ContextualSerializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/node/JsonNodeFactory +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/node/JsonNodeCreator +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/cfg/ContextAttributes +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/util/DefaultPrettyPrinter$NopIndenter +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/cfg/ConfigFeature +instanceKlass com/fasterxml/jackson/annotation/JsonFormat$Features +instanceKlass com/fasterxml/jackson/annotation/JsonFormat$Value +instanceKlass com/fasterxml/jackson/annotation/JsonInclude$Value +instanceKlass com/fasterxml/jackson/annotation/JacksonAnnotationValue +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/cfg/ConfigOverrides +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/AnnotationMap +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/util/Annotations +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/BeanDescription +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/cfg/MapperConfig +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/SimpleMixInResolver +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/ClassIntrospector$MixInResolver +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/util/RootNameLookup +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer$TableInfo +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/sym/ByteQuadsCanonicalizer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$Bucket +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/sym/CharsToNameCanonicalizer$TableInfo +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/sym/CharsToNameCanonicalizer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/io/SerializedString +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/util/DefaultPrettyPrinter$Indenter +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/util/DefaultPrettyPrinter +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/util/Instantiatable +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/PrettyPrinter +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/SerializableString +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/Base64Variant +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/Base64Variants +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/type/TypeParser +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/type/TypeFactory +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/cfg/BaseSettings +instanceKlass com/fasterxml/jackson/annotation/JacksonAnnotation +instanceKlass com/fasterxml/jackson/annotation/JsonAutoDetect +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/VisibilityChecker$Std +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/util/LRUMap +instanceKlass java/beans/ConstructorProperties +instanceKlass java/beans/Transient +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/jsonschema/SchemaAware +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/JsonSerializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/jsonFormatVisitors/JsonFormatVisitable +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/JsonDeserializer +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/ext/Java7Support +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/annotation/JsonDeserialize +instanceKlass com/fasterxml/jackson/annotation/JsonManagedReference +instanceKlass com/fasterxml/jackson/annotation/JsonBackReference +instanceKlass com/fasterxml/jackson/annotation/JsonUnwrapped +instanceKlass com/fasterxml/jackson/annotation/JsonRawValue +instanceKlass com/fasterxml/jackson/annotation/JsonTypeInfo +instanceKlass com/fasterxml/jackson/annotation/JsonFormat +instanceKlass com/fasterxml/jackson/annotation/JsonView +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/annotation/JsonSerialize +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/ConcreteBeanPropertyBase +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/BeanProperty +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/BeanPropertyDefinition +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/util/Named +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/TypeResolutionContext +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/Annotated +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/type/TypeBindings +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/JsonParser +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/JsonSerializable$Base +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/TreeNode +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/Module$SetupContext +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/JsonGenerator +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/jsontype/TypeResolverBuilder +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/ClassIntrospector +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/introspect/VisibilityChecker +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/AnnotationIntrospector +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/JsonSerializable +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/type/ResolvedType +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/ser/SerializerFactory +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/deser/DeserializerFactory +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/DatabindContext +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/jsontype/SubtypeResolver +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/JsonFactory +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/TreeCodec +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/databind/Module +instanceKlass org/testcontainers/shaded/com/fasterxml/jackson/core/Versioned +instanceKlass org/testcontainers/shaded/com/github/dockerjava/core/SSLConfig +instanceKlass org/testcontainers/shaded/com/github/dockerjava/core/DefaultDockerClientConfig$Builder +instanceKlass java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry +instanceKlass java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1 +instanceKlass org/testcontainers/shaded/com/github/dockerjava/core/DefaultDockerClientConfig +instanceKlass com/github/dockerjava/transport/SSLConfig +instanceKlass org/testcontainers/shaded/com/github/dockerjava/core/DockerClientConfig +instanceKlass com/github/dockerjava/transport/DockerHttpClient +instanceKlass javax/net/SocketFactory +instanceKlass org/testcontainers/dockerclient/DockerClientProviderStrategy +instanceKlass org/testcontainers/lifecycle/Startables$1 +instanceKlass org/testcontainers/lifecycle/Startables +instanceKlass org/testcontainers/shaded/com/google/common/base/Converter +instanceKlass org/testcontainers/shaded/com/google/common/base/Function +instanceKlass org/testcontainers/shaded/com/google/common/primitives/Ints +instanceKlass org/testcontainers/shaded/com/google/common/collect/Lists +instanceKlass java/util/concurrent/ForkJoinTask +instanceKlass java/util/concurrent/CompletableFuture$AsynchronousCompletionTask +instanceKlass java/util/concurrent/CompletableFuture$AltResult +instanceKlass java/util/concurrent/CompletableFuture +instanceKlass java/util/concurrent/CompletionStage +instanceKlass org/gradle/internal/io/StreamByteBuffer$StreamByteBufferChunk +instanceKlass org/gradle/internal/io/StreamByteBuffer +instanceKlass ch/qos/logback/core/CoreConstants +instanceKlass java/time/format/DateTimeFormatterBuilder$2 +instanceKlass java/time/LocalTime$1 +instanceKlass java/time/ZonedDateTime$1 +instanceKlass java/time/ZonedDateTime +instanceKlass java/time/chrono/ChronoZonedDateTime +instanceKlass java/time/temporal/TemporalQueries$7 +instanceKlass java/time/temporal/TemporalQueries$6 +instanceKlass java/time/temporal/TemporalQueries$5 +instanceKlass java/time/temporal/TemporalQueries$4 +instanceKlass java/time/temporal/TemporalQueries$3 +instanceKlass java/time/temporal/TemporalQueries$2 +instanceKlass java/time/temporal/TemporalQueries$1 +instanceKlass java/time/temporal/TemporalQueries +instanceKlass java/time/format/DateTimePrintContext +instanceKlass org/slf4j/helpers/FormattingTuple +instanceKlass org/slf4j/helpers/NormalizedParameters +instanceKlass org/slf4j/helpers/MessageFormatter +instanceKlass ch/qos/logback/classic/spi/EventArgUtil +instanceKlass java/time/Instant +instanceKlass java/time/Clock +instanceKlass java/time/InstantSource +instanceKlass ch/qos/logback/classic/spi/IThrowableProxy +instanceKlass ch/qos/logback/classic/spi/LoggingEvent +instanceKlass org/testcontainers/utility/ClasspathScanner +instanceKlass java/lang/Character$Subset +instanceKlass org/testcontainers/shaded/org/apache/commons/lang3/StringUtils +instanceKlass org/testcontainers/shaded/org/apache/commons/lang3/ClassUtils +instanceKlass org/testcontainers/shaded/org/apache/commons/lang3/exception/ExceptionUtils +instanceKlass org/testcontainers/shaded/com/google/common/collect/Hashing +instanceKlass org/testcontainers/shaded/com/google/common/base/Preconditions +instanceKlass org/testcontainers/shaded/com/google/common/collect/Platform +instanceKlass org/testcontainers/shaded/com/google/common/collect/ObjectArrays +instanceKlass org/testcontainers/shaded/com/google/common/collect/ImmutableCollection$Builder +instanceKlass org/testcontainers/shaded/com/google/common/collect/CollectPreconditions +instanceKlass org/testcontainers/utility/Versioning$AnyVersion +instanceKlass org/testcontainers/shaded/com/google/common/collect/AbstractMapEntry +instanceKlass org/testcontainers/shaded/com/google/common/collect/ImmutableMap$Builder +instanceKlass org/testcontainers/shaded/com/google/common/collect/UnmodifiableIterator +instanceKlass org/testcontainers/shaded/com/google/common/collect/BiMap +instanceKlass org/testcontainers/shaded/com/google/common/collect/ImmutableMap +instanceKlass org/testcontainers/utility/TestcontainersConfiguration +instanceKlass org/testcontainers/utility/ImageNameSubstitutor +instanceKlass org/testcontainers/images/AbstractImagePullPolicy +instanceKlass org/testcontainers/images/ImagePullPolicy +instanceKlass org/testcontainers/images/PullPolicy +instanceKlass org/testcontainers/utility/LazyFuture +instanceKlass org/testcontainers/core/CreateContainerCmdModifier +instanceKlass org/testcontainers/containers/wait/strategy/AbstractWaitStrategy$1 +instanceKlass org/testcontainers/containers/wait/strategy/AbstractWaitStrategy +instanceKlass org/testcontainers/containers/wait/strategy/Wait +instanceKlass com/github/dockerjava/api/DockerClientDelegate +instanceKlass org/testcontainers/utility/Versioning$TagVersioning +instanceKlass org/testcontainers/utility/Versioning +instanceKlass org/testcontainers/utility/DockerImageName +instanceKlass java/util/UUID$Holder +instanceKlass ch/qos/logback/classic/util/LoggerNameUtil +instanceKlass ch/qos/logback/classic/util/LogbackMDCAdapter +instanceKlass ch/qos/logback/core/util/StatusPrinter +instanceKlass ch/qos/logback/core/status/StatusUtil +instanceKlass ch/qos/logback/core/spi/AppenderAttachableImpl +instanceKlass ch/qos/logback/core/pattern/Converter +instanceKlass ch/qos/logback/core/util/CachingDateFormatter$CacheTuple +instanceKlass java/time/Period +instanceKlass java/time/chrono/ChronoPeriod +instanceKlass java/time/format/DateTimeFormatterBuilder$TextPrinterParser +instanceKlass java/time/format/DateTimeTextProvider$1 +instanceKlass java/time/format/DateTimeTextProvider +instanceKlass java/time/format/DateTimeTextProvider$LocaleStore +instanceKlass java/time/format/DateTimeFormatterBuilder$InstantPrinterParser +instanceKlass java/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser +instanceKlass java/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser +instanceKlass java/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser +instanceKlass java/time/format/DecimalStyle +instanceKlass java/time/format/DateTimeFormatterBuilder$CompositePrinterParser +instanceKlass java/time/chrono/AbstractChronology +instanceKlass java/time/chrono/Chronology +instanceKlass java/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser +instanceKlass java/time/format/DateTimeFormatterBuilder$NumberPrinterParser +instanceKlass java/time/format/DateTimeFormatterBuilder$DateTimePrinterParser +instanceKlass java/time/temporal/JulianFields +instanceKlass java/time/temporal/IsoFields +instanceKlass java/time/temporal/TemporalQuery +instanceKlass java/time/format/DateTimeFormatterBuilder +instanceKlass java/time/format/DateTimeFormatter +instanceKlass java/time/LocalTime +instanceKlass java/time/temporal/ValueRange +instanceKlass java/time/temporal/TemporalField +instanceKlass java/time/LocalDate +instanceKlass java/time/chrono/ChronoLocalDate +instanceKlass java/time/zone/ZoneOffsetTransition +instanceKlass java/time/LocalDateTime +instanceKlass java/time/chrono/ChronoLocalDateTime +instanceKlass java/time/temporal/TemporalAdjuster +instanceKlass java/time/zone/ZoneOffsetTransitionRule +instanceKlass java/time/zone/ZoneRules +instanceKlass java/time/zone/Ser +instanceKlass java/time/zone/ZoneRulesProvider$1 +instanceKlass java/time/zone/ZoneRulesProvider +instanceKlass java/time/ZoneId +instanceKlass ch/qos/logback/core/util/CachingDateFormatter +instanceKlass ch/qos/logback/core/util/COWArrayList +instanceKlass ch/qos/logback/core/spi/FilterAttachableImpl +instanceKlass ch/qos/logback/core/Appender +instanceKlass ch/qos/logback/core/spi/FilterAttachable +instanceKlass ch/qos/logback/core/encoder/Encoder +instanceKlass ch/qos/logback/core/Layout +instanceKlass java/lang/invoke/LambdaFormEditor$1 +instanceKlass java/lang/invoke/MethodHandles$1 +instanceKlass ch/qos/logback/core/spi/ContextAwareBase +instanceKlass ch/qos/logback/classic/util/ClassicEnvUtil +instanceKlass ch/qos/logback/core/status/StatusListener +instanceKlass ch/qos/logback/core/util/StatusListenerConfigHelper +instanceKlass ch/qos/logback/core/status/StatusBase +instanceKlass ch/qos/logback/core/util/EnvUtil +instanceKlass java/security/PermissionsEnumerator +instanceKlass java/util/PropertyPermissionCollection$1 +instanceKlass java/net/SocketPermissionCollection$1 +instanceKlass sun/security/provider/PolicyFile$8 +instanceKlass sun/security/provider/PolicyFile$6 +instanceKlass sun/security/util/PolicyUtil +instanceKlass sun/security/provider/PolicyFile$4 +instanceKlass java/net/HostPortrange +instanceKlass java/net/URLPermission$Authority +instanceKlass sun/security/provider/PolicyFile$PolicyEntry +instanceKlass java/util/Vector$1 +instanceKlass sun/security/util/PropertyExpander +instanceKlass sun/security/provider/PolicyParser$PermissionEntry +instanceKlass sun/security/provider/PolicyParser$GrantEntry +instanceKlass java/io/StreamTokenizer +instanceKlass sun/security/provider/PolicyParser +instanceKlass java/nio/channels/Channels +instanceKlass sun/nio/ch/FileChannelImpl$Closer +instanceKlass sun/nio/ch/NativeThreadSet +instanceKlass java/nio/channels/SeekableByteChannel +instanceKlass sun/nio/fs/WindowsChannelFactory$Flags +instanceKlass sun/nio/fs/WindowsChannelFactory$1 +instanceKlass sun/nio/fs/WindowsChannelFactory +instanceKlass sun/nio/fs/WindowsSecurityDescriptor +instanceKlass java/nio/file/attribute/FileAttribute +instanceKlass sun/security/provider/PolicyFile$2 +instanceKlass java/security/ProtectionDomain$JavaSecurityAccessImpl$1 +instanceKlass jdk/internal/access/JavaSecurityAccess$ProtectionDomainCache +instanceKlass sun/security/provider/PolicyFile$PolicyInfo +instanceKlass sun/security/provider/PolicyFile$1 +instanceKlass java/security/Policy$1 +instanceKlass java/security/Policy$PolicyInfo +instanceKlass java/security/Policy +instanceKlass ch/qos/logback/core/util/Loader$1 +instanceKlass ch/qos/logback/core/util/OptionHelper +instanceKlass ch/qos/logback/core/util/Loader +instanceKlass ch/qos/logback/classic/spi/Configurator +instanceKlass ch/qos/logback/core/spi/ContextAwareImpl +instanceKlass ch/qos/logback/classic/util/ContextInitializer$1 +instanceKlass ch/qos/logback/core/spi/ContextAware +instanceKlass ch/qos/logback/classic/util/ContextInitializer +instanceKlass ch/qos/logback/classic/Level +instanceKlass ch/qos/logback/classic/spi/ILoggingEvent +instanceKlass ch/qos/logback/core/spi/DeferredProcessingAware +instanceKlass org/slf4j/spi/LoggingEventBuilder +instanceKlass ch/qos/logback/classic/Logger +instanceKlass ch/qos/logback/core/spi/AppenderAttachable +instanceKlass org/slf4j/spi/LoggingEventAware +instanceKlass org/slf4j/spi/LocationAwareLogger +instanceKlass ch/qos/logback/classic/spi/LoggerContextVO +instanceKlass ch/qos/logback/core/spi/LogbackLock +instanceKlass ch/qos/logback/core/helpers/CyclicBuffer +instanceKlass ch/qos/logback/core/BasicStatusManager +instanceKlass ch/qos/logback/core/status/Status +instanceKlass ch/qos/logback/core/status/StatusManager +instanceKlass ch/qos/logback/core/ContextBase +instanceKlass ch/qos/logback/core/spi/LifeCycle +instanceKlass ch/qos/logback/core/Context +instanceKlass ch/qos/logback/core/spi/PropertyContainer +instanceKlass ch/qos/logback/classic/spi/LogbackServiceProvider +instanceKlass org/slf4j/helpers/Util +instanceKlass org/slf4j/helpers/NOPMDCAdapter +instanceKlass org/slf4j/helpers/NOPLoggerFactory +instanceKlass org/slf4j/helpers/NOP_FallbackServiceProvider +instanceKlass org/slf4j/helpers/ThreadLocalMapOfStacks +instanceKlass org/slf4j/helpers/BasicMDCAdapter +instanceKlass org/slf4j/Marker +instanceKlass org/slf4j/helpers/BasicMarkerFactory +instanceKlass org/slf4j/Logger +instanceKlass org/slf4j/helpers/SubstituteLoggerFactory +instanceKlass org/slf4j/ILoggerFactory +instanceKlass org/slf4j/spi/MDCAdapter +instanceKlass org/slf4j/IMarkerFactory +instanceKlass org/slf4j/helpers/SubstituteServiceProvider +instanceKlass org/slf4j/event/LoggingEvent +instanceKlass org/slf4j/spi/SLF4JServiceProvider +instanceKlass org/slf4j/LoggerFactory +instanceKlass com/github/dockerjava/api/DockerClient +instanceKlass com/github/dockerjava/api/async/ResultCallback +instanceKlass org/testcontainers/DockerClientFactory +instanceKlass java/time/Duration +instanceKlass java/time/temporal/TemporalAmount +instanceKlass org/testcontainers/utility/Base58 +instanceKlass org/rnorth/ducttape/Preconditions +instanceKlass org/rnorth/ducttape/ratelimits/RateLimiter +instanceKlass org/rnorth/ducttape/ratelimits/RateLimiterBuilder +instanceKlass java/time/temporal/Temporal +instanceKlass java/time/temporal/TemporalAccessor +instanceKlass org/testcontainers/shaded/org/awaitility/pollinterval/PollInterval +instanceKlass org/testcontainers/containers/startupcheck/StartupCheckStrategy +instanceKlass org/testcontainers/images/builder/Transferable +instanceKlass org/junit/runners/model/Statement +instanceKlass org/testcontainers/junit/jupiter/TestcontainersExtension$StoreAdapter +instanceKlass org/junit/platform/commons/support/ModifierSupport +instanceKlass org/springframework/beans/factory/annotation/Autowired +instanceKlass org/junit/jupiter/api/io/TempDir +instanceKlass org/junit/platform/engine/support/store/NamespacedHierarchicalStore$MemoizingSupplier$Failure +instanceKlass org/junit/platform/engine/support/store/NamespacedHierarchicalStore$MemoizingSupplier +instanceKlass org/junit/platform/engine/support/store/NamespacedHierarchicalStore$StoredValue +instanceKlass org/junit/platform/engine/support/store/NamespacedHierarchicalStore$CompositeKey +instanceKlass org/junit/jupiter/api/extension/ExtensionContext$Store$CloseableResource +instanceKlass org/junit/jupiter/engine/execution/NamespaceAwareStore +instanceKlass java/time/temporal/TemporalUnit +instanceKlass org/junit/jupiter/engine/extension/TimeoutDuration +instanceKlass java/net/URLDecoder +instanceKlass org/gradle/internal/MutableBoolean +instanceKlass org/junit/jupiter/api/Disabled +instanceKlass java/util/function/BooleanSupplier +instanceKlass org/junit/jupiter/api/extension/TestInstances +instanceKlass org/junit/jupiter/engine/execution/TestInstancesProvider +instanceKlass org/junit/jupiter/engine/execution/AfterEachMethodAdapter +instanceKlass org/junit/jupiter/engine/execution/BeforeEachMethodAdapter +instanceKlass org/springframework/test/context/DynamicPropertySource +instanceKlass org/junit/jupiter/engine/descriptor/LifecycleMethodUtils +instanceKlass org/junit/jupiter/api/extension/TestInstanceFactory +instanceKlass org/junit/jupiter/api/extension/RegisterExtension +instanceKlass org/testcontainers/junit/jupiter/Container +instanceKlass org/testcontainers/containers/FailureDetectingExternalResource +instanceKlass org/junit/rules/TestRule +instanceKlass org/testcontainers/lifecycle/Startable +instanceKlass org/testcontainers/containers/wait/strategy/WaitStrategyTarget +instanceKlass org/testcontainers/containers/Container +instanceKlass org/testcontainers/containers/ContainerState +instanceKlass org/testcontainers/containers/traits/LinkableContainer +instanceKlass org/springframework/data/redis/core/RedisAccessor +instanceKlass org/springframework/beans/factory/InitializingBean +instanceKlass org/springframework/beans/factory/BeanClassLoaderAware +instanceKlass org/springframework/beans/factory/Aware +instanceKlass org/springframework/data/redis/core/RedisOperations +instanceKlass server/poptato/user/validator/UserValidator +instanceKlass server/poptato/auth/application/service/JwtService +instanceKlass server/poptato/todo/domain/repository/TodoRepository +instanceKlass server/poptato/user/domain/repository/UserRepository +instanceKlass server/poptato/external/oauth/SocialServiceProvider +instanceKlass server/poptato/external/oauth/SocialService +instanceKlass server/poptato/auth/application/service/AuthService +instanceKlass org/springframework/util/ConcurrentReferenceHashMap$Reference +instanceKlass org/springframework/util/ConcurrentReferenceHashMap$ReferenceManager +instanceKlass org/springframework/util/Assert +instanceKlass org/springframework/util/ConcurrentReferenceHashMap$Task +instanceKlass org/springframework/util/ReflectionUtils$FieldFilter +instanceKlass org/springframework/util/ReflectionUtils$MethodFilter +instanceKlass org/springframework/util/ReflectionUtils +instanceKlass org/junit/jupiter/api/AfterAll +instanceKlass org/junit/jupiter/api/BeforeAll +instanceKlass org/testcontainers/lifecycle/TestDescription +instanceKlass java/util/stream/Nodes$ArrayNode +instanceKlass java/util/function/ToIntFunction +instanceKlass org/junit/jupiter/engine/descriptor/ExtensionUtils +instanceKlass org/junit/platform/engine/support/hierarchical/NodeTestTask$DefaultDynamicTestExecutor +instanceKlass org/junit/platform/engine/support/hierarchical/Node$Invocation +instanceKlass org/junit/platform/engine/support/hierarchical/Node$SkipResult +instanceKlass org/junit/jupiter/engine/execution/JupiterEngineExecutionContext$Builder +instanceKlass org/junit/platform/engine/support/store/NamespacedHierarchicalStore +instanceKlass org/junit/platform/engine/support/store/NamespacedHierarchicalStore$CloseAction +instanceKlass org/junit/jupiter/api/extension/ExtensionContext$Store +instanceKlass org/junit/jupiter/engine/descriptor/AbstractExtensionContext +instanceKlass org/junit/jupiter/engine/execution/DefaultExecutableInvoker +instanceKlass org/junit/jupiter/api/extension/AnnotatedElementContext +instanceKlass org/junit/jupiter/engine/extension/TempDirectory +instanceKlass org/junit/jupiter/engine/extension/TestReporterParameterResolver +instanceKlass org/junit/jupiter/api/TestInfo +instanceKlass org/junit/jupiter/engine/extension/TestInfoParameterResolver +instanceKlass org/junit/jupiter/api/extension/TestTemplateInvocationContext +instanceKlass org/junit/jupiter/engine/extension/RepeatedTestExtension +instanceKlass org/junit/jupiter/api/extension/TestTemplateInvocationContextProvider +instanceKlass org/junit/jupiter/api/extension/ExtensionContext$Namespace +instanceKlass org/junit/jupiter/api/Timeout +instanceKlass org/junit/jupiter/engine/extension/TimeoutExtension +instanceKlass org/junit/jupiter/engine/extension/DisabledCondition +instanceKlass org/junit/jupiter/engine/extension/MutableExtensionRegistry +instanceKlass org/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable +instanceKlass org/hamcrest/SelfDescribing +instanceKlass java/util/regex/Pattern$1 +instanceKlass org/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor +instanceKlass org/junit/platform/engine/support/hierarchical/NodeTestTask +instanceKlass org/junit/platform/engine/support/hierarchical/NodeTestTaskContext +instanceKlass org/junit/jupiter/api/parallel/ResourceLocks +instanceKlass org/junit/jupiter/api/parallel/ResourceLock +instanceKlass org/junit/platform/engine/support/hierarchical/NodeExecutionAdvisor +instanceKlass org/junit/platform/engine/support/hierarchical/NodeUtils$1 +instanceKlass org/junit/platform/engine/support/hierarchical/NodeUtils +instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock +instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock +instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock +instanceKlass org/junit/platform/engine/support/hierarchical/SingleLock +instanceKlass org/junit/platform/engine/support/hierarchical/ExclusiveResource +instanceKlass java/util/concurrent/locks/ReadWriteLock +instanceKlass org/junit/platform/engine/support/hierarchical/ResourceLock +instanceKlass org/junit/platform/engine/support/hierarchical/LockManager +instanceKlass org/junit/platform/engine/support/hierarchical/NodeTreeWalker +instanceKlass org/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask +instanceKlass org/junit/platform/engine/support/hierarchical/HierarchicalTestExecutor +instanceKlass org/junit/jupiter/engine/support/JupiterThrowableCollectorFactory +instanceKlass org/junit/platform/engine/support/hierarchical/ThrowableCollector +instanceKlass org/junit/platform/engine/support/hierarchical/ThrowableCollector$Factory +instanceKlass org/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State +instanceKlass org/junit/jupiter/engine/execution/JupiterEngineExecutionContext +instanceKlass java/util/concurrent/Future +instanceKlass org/junit/platform/engine/support/hierarchical/SameThreadHierarchicalTestExecutorService +instanceKlass org/junit/platform/engine/ExecutionRequest +instanceKlass org/junit/platform/launcher/core/DelegatingEngineExecutionListener +instanceKlass org/junit/platform/launcher/core/ExecutionListenerAdapter +instanceKlass org/junit/platform/launcher/core/CompositeEngineExecutionListener +instanceKlass org/junit/platform/engine/EngineExecutionListener$1 +instanceKlass org/junit/platform/launcher/core/StreamInterceptingTestExecutionListener +instanceKlass org/junit/platform/engine/reporting/ReportEntry +instanceKlass org/junit/platform/launcher/core/CompositeTestExecutionListener$EagerTestExecutionListener +instanceKlass org/junit/platform/launcher/TestIdentifier$SerializedForm +instanceKlass org/junit/platform/launcher/TestIdentifier +instanceKlass org/junit/platform/launcher/core/LauncherDiscoveryResult +instanceKlass java/util/LinkedList$LLSpliterator +instanceKlass java/util/regex/IntHashSet +instanceKlass java/util/regex/Matcher +instanceKlass java/util/regex/MatchResult +instanceKlass java/util/LinkedList$ListItr +instanceKlass org/junit/platform/commons/util/ExceptionUtils +instanceKlass org/junit/platform/launcher/EngineDiscoveryResult +instanceKlass org/junit/platform/commons/support/AnnotationSupport +instanceKlass org/junit/jupiter/api/TestMethodOrder +instanceKlass org/junit/jupiter/api/TestClassOrder +instanceKlass org/junit/jupiter/engine/discovery/AbstractOrderingVisitor$DescriptorWrapperOrderer +instanceKlass org/junit/jupiter/engine/discovery/AbstractOrderingVisitor$MessageGenerator +instanceKlass org/junit/jupiter/engine/discovery/AbstractAnnotatedDescriptorWrapper +instanceKlass org/junit/jupiter/api/ClassDescriptor +instanceKlass org/junit/jupiter/engine/descriptor/Filterable +instanceKlass java/util/HashMap$HashMapSpliterator +instanceKlass org/junit/platform/engine/support/descriptor/MethodSource +instanceKlass org/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall +instanceKlass org/junit/jupiter/api/extension/InvocationInterceptor +instanceKlass org/junit/jupiter/engine/execution/InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall +instanceKlass org/junit/platform/engine/discovery/FileSelector +instanceKlass org/junit/platform/engine/discovery/DirectorySelector +instanceKlass org/junit/platform/engine/discovery/IterationSelector +instanceKlass org/junit/platform/commons/util/ClassUtils +instanceKlass org/junit/platform/engine/discovery/MethodSelector +instanceKlass org/junit/platform/engine/discovery/NestedClassSelector +instanceKlass org/junit/platform/commons/support/ReflectionSupport +instanceKlass org/junit/platform/commons/util/CollectionUtils +instanceKlass java/util/stream/DistinctOps +instanceKlass java/util/Collections$2 +instanceKlass org/junit/platform/engine/SelectorResolutionResult +instanceKlass org/junit/jupiter/api/TestInstance +instanceKlass org/junit/jupiter/engine/descriptor/TestInstanceLifecycleUtils +instanceKlass org/junit/platform/engine/TestTag +instanceKlass org/junit/jupiter/api/Tags +instanceKlass org/junit/jupiter/api/Tag +instanceKlass org/junit/jupiter/api/DisplayNameGeneration +instanceKlass org/springframework/test/context/junit/jupiter/SpringExtension +instanceKlass org/junit/jupiter/api/extension/ParameterResolver +instanceKlass org/junit/jupiter/api/extension/AfterTestExecutionCallback +instanceKlass org/junit/jupiter/api/extension/BeforeTestExecutionCallback +instanceKlass org/junit/jupiter/api/extension/TestInstancePostProcessor +instanceKlass org/springframework/test/context/support/AbstractTestContextBootstrapper +instanceKlass org/springframework/test/context/TestContextBootstrapper +instanceKlass org/junit/jupiter/api/extension/Extensions +instanceKlass org/testcontainers/junit/jupiter/TestcontainersExtension +instanceKlass org/junit/jupiter/api/extension/ExecutionCondition +instanceKlass org/junit/jupiter/api/extension/AfterAllCallback +instanceKlass org/junit/jupiter/api/extension/AfterEachCallback +instanceKlass org/junit/jupiter/api/extension/BeforeAllCallback +instanceKlass org/junit/jupiter/api/extension/BeforeEachCallback +instanceKlass org/junit/jupiter/api/extension/Extension +instanceKlass java/lang/annotation/Repeatable +instanceKlass org/springframework/test/context/BootstrapWith +instanceKlass org/springframework/boot/test/context/SpringBootTest +instanceKlass org/junit/jupiter/api/extension/ExtendWith +instanceKlass org/testcontainers/junit/jupiter/Testcontainers +instanceKlass org/junit/platform/engine/support/descriptor/ClassSource +instanceKlass org/junit/jupiter/api/DisplayNameGenerator$IndicativeSentences +instanceKlass org/junit/jupiter/api/DisplayNameGenerator$Standard +instanceKlass org/junit/jupiter/engine/descriptor/DisplayNameUtils +instanceKlass org/junit/jupiter/engine/execution/InvocationInterceptorChain +instanceKlass org/junit/jupiter/api/extension/InvocationInterceptor$Invocation +instanceKlass org/junit/jupiter/api/extension/ReflectiveInvocationContext +instanceKlass org/junit/jupiter/engine/execution/InterceptingExecutableInvoker +instanceKlass org/junit/jupiter/api/extension/ConditionEvaluationResult +instanceKlass org/junit/jupiter/engine/execution/ConditionEvaluator +instanceKlass org/junit/jupiter/api/extension/TestInstanceFactoryContext +instanceKlass org/junit/jupiter/engine/extension/ExtensionRegistrar +instanceKlass org/junit/platform/engine/TestSource +instanceKlass org/junit/jupiter/engine/extension/ExtensionRegistry +instanceKlass org/junit/jupiter/api/AfterEach +instanceKlass java/util/stream/SortedOps +instanceKlass server/poptato/auth/api/request/ReissueTokenRequestDto +instanceKlass org/springframework/test/context/DynamicPropertyRegistry +instanceKlass com/github/dockerjava/api/command/CreateContainerCmd +instanceKlass com/github/dockerjava/api/command/SyncDockerCmd +instanceKlass com/github/dockerjava/api/command/DockerCmd +instanceKlass jdk/internal/vm/annotation/IntrinsicCandidate +instanceKlass org/junit/jupiter/api/DisplayName +instanceKlass org/junit/jupiter/api/BeforeEach +instanceKlass java/lang/Class$AnnotationData +instanceKlass org/junit/platform/commons/annotation/Testable +instanceKlass java/lang/annotation/Documented +instanceKlass org/junit/platform/commons/util/AnnotationUtils +instanceKlass org/testcontainers/containers/wait/strategy/WaitStrategy +instanceKlass org/junit/platform/commons/function/Try +instanceKlass java/nio/file/FileVisitor +instanceKlass org/junit/platform/commons/util/ClasspathScanner +instanceKlass org/junit/platform/commons/util/ReflectionUtils +instanceKlass org/junit/platform/engine/discovery/ClasspathRootSelector +instanceKlass org/junit/platform/engine/discovery/ClasspathResourceSelector +instanceKlass org/junit/platform/engine/support/discovery/SelectorResolver$Resolution +instanceKlass org/junit/platform/engine/discovery/UniqueIdSelector +instanceKlass org/junit/platform/engine/support/discovery/SelectorResolver$Match +instanceKlass org/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolution$DefaultContext +instanceKlass org/junit/platform/engine/support/discovery/SelectorResolver$Context +instanceKlass org/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolution +instanceKlass org/junit/jupiter/api/MethodOrdererContext +instanceKlass org/junit/jupiter/api/ClassOrdererContext +instanceKlass org/junit/jupiter/engine/discovery/AbstractOrderingVisitor +instanceKlass org/junit/jupiter/engine/discovery/MethodFinder +instanceKlass org/junit/jupiter/engine/discovery/MethodSelectorResolver +instanceKlass org/junit/jupiter/engine/discovery/ClassSelectorResolver +instanceKlass org/junit/platform/engine/support/discovery/ClassContainerSelectorResolver +instanceKlass java/lang/invoke/MethodHandle$1 +instanceKlass org/junit/platform/engine/CompositeFilter$1 +instanceKlass org/junit/platform/engine/CompositeFilter +instanceKlass org/junit/platform/engine/discovery/PackageNameFilter +instanceKlass org/junit/platform/engine/discovery/ClassNameFilter +instanceKlass org/junit/platform/engine/DiscoveryFilter +instanceKlass org/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$DefaultInitializationContext +instanceKlass org/junit/jupiter/engine/discovery/predicates/IsInnerClass +instanceKlass org/junit/jupiter/engine/discovery/predicates/IsNestedTestClass +instanceKlass org/junit/jupiter/engine/discovery/predicates/IsPotentialTestContainer +instanceKlass org/junit/jupiter/api/TestTemplate +instanceKlass org/junit/jupiter/api/TestFactory +instanceKlass org/junit/jupiter/api/Test +instanceKlass org/junit/jupiter/engine/discovery/predicates/IsTestableMethod +instanceKlass org/junit/jupiter/engine/discovery/predicates/IsTestClassWithTests +instanceKlass org/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$Builder +instanceKlass org/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext +instanceKlass org/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver +instanceKlass org/junit/platform/engine/TestDescriptor$Visitor +instanceKlass org/junit/platform/engine/support/discovery/SelectorResolver +instanceKlass org/junit/jupiter/engine/discovery/DiscoverySelectorResolver +instanceKlass org/junit/jupiter/api/extension/ExtensionContext +instanceKlass org/junit/jupiter/api/extension/ExecutableInvoker +instanceKlass org/junit/platform/engine/support/descriptor/AbstractTestDescriptor +instanceKlass org/junit/platform/engine/support/hierarchical/Node +instanceKlass org/junit/jupiter/api/io/TempDirFactory +instanceKlass org/junit/jupiter/api/ClassOrderer +instanceKlass org/junit/jupiter/api/MethodOrderer +instanceKlass org/junit/jupiter/api/DisplayNameGenerator +instanceKlass org/junit/jupiter/engine/config/InstantiatingConfigurationParameterConverter +instanceKlass org/junit/jupiter/engine/config/EnumConfigurationParameterConverter +instanceKlass org/junit/jupiter/engine/config/DefaultJupiterConfiguration +instanceKlass org/junit/jupiter/engine/config/CachingJupiterConfiguration +instanceKlass org/junit/platform/engine/UniqueId$Segment +instanceKlass java/util/BitSet +instanceKlass java/net/URLEncoder +instanceKlass java/lang/Character$CharacterCache +instanceKlass java/util/Formattable +instanceKlass java/util/Formatter$FixedString +instanceKlass java/util/Formatter$Flags +instanceKlass java/util/Formatter$FormatSpecifier +instanceKlass java/util/Formatter$FormatString +instanceKlass java/util/Formatter$Conversion +instanceKlass java/util/regex/Pattern$BitClass +instanceKlass java/util/Formatter +instanceKlass org/junit/platform/engine/UniqueIdFormat +instanceKlass java/util/stream/MatchOps$BooleanTerminalSink +instanceKlass java/util/stream/MatchOps$MatchOp +instanceKlass java/util/stream/MatchOps +instanceKlass org/junit/platform/engine/FilterResult +instanceKlass org/junit/platform/launcher/core/EngineFilterer +instanceKlass org/junit/platform/engine/UniqueId +instanceKlass org/gradle/api/internal/tasks/testing/failure/DefaultThrowableToTestFailureMapper +instanceKlass org/gradle/api/internal/tasks/testing/failure/ThrowableToTestFailureMapper +instanceKlass org/gradle/api/internal/tasks/testing/failure/TestFailureMapper +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestExecutionListener +instanceKlass org/junit/platform/launcher/core/DefaultDiscoveryRequest +instanceKlass org/junit/platform/launcher/LauncherDiscoveryListener$1 +instanceKlass org/junit/platform/engine/EngineDiscoveryListener$1 +instanceKlass org/junit/platform/launcher/listeners/discovery/AbortOnFailureLauncherDiscoveryListener +instanceKlass org/junit/platform/launcher/EngineFilter +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestClassProcessor$ClassMethodNameFilter +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$NoWildcardMatcher +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$FullQualifiedClassNameSelector +instanceKlass java/util/regex/ASCII +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$LastElementMatcher +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$ClassNameSelector +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$TestPattern +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher +instanceKlass org/junit/platform/launcher/LauncherDiscoveryRequest +instanceKlass org/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder +instanceKlass org/junit/platform/engine/discovery/ClassSelector +instanceKlass org/junit/platform/engine/DiscoverySelector +instanceKlass org/junit/platform/engine/discovery/DiscoverySelectors +instanceKlass server/poptato/auth/application/AuthServiceTest +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor +instanceKlass sun/invoke/util/VerifyAccess$1 +instanceKlass org/junit/platform/launcher/core/DelegatingLauncher +instanceKlass org/junit/platform/launcher/listeners/UniqueIdTrackingListener +instanceKlass java/util/stream/ForEachOps$ForEachOp +instanceKlass java/util/stream/ForEachOps +instanceKlass org/junit/platform/commons/util/ClassNamePatternFilterUtils +instanceKlass java/util/Spliterators$IteratorSpliterator +instanceKlass org/junit/platform/launcher/core/EngineIdValidator +instanceKlass org/junit/platform/launcher/core/EngineDiscoveryResultValidator +instanceKlass org/junit/platform/engine/EngineDiscoveryRequest +instanceKlass org/junit/platform/launcher/core/EngineDiscoveryOrchestrator +instanceKlass org/junit/platform/launcher/TestPlan$Visitor +instanceKlass org/junit/platform/engine/EngineExecutionListener +instanceKlass org/junit/platform/launcher/core/EngineExecutionOrchestrator +instanceKlass org/junit/platform/launcher/core/CompositeTestExecutionListener +instanceKlass org/junit/platform/launcher/TestExecutionListener +instanceKlass org/junit/platform/launcher/LauncherDiscoveryListener +instanceKlass org/junit/platform/engine/EngineDiscoveryListener +instanceKlass org/junit/platform/launcher/listeners/discovery/LauncherDiscoveryListeners +instanceKlass org/junit/platform/launcher/core/LauncherListenerRegistry +instanceKlass org/junit/platform/launcher/TestPlan +instanceKlass org/junit/platform/launcher/core/DefaultLauncher +instanceKlass org/junit/platform/launcher/PostDiscoveryFilter +instanceKlass org/junit/platform/engine/Filter +instanceKlass org/junit/platform/engine/support/hierarchical/EngineExecutionContext +instanceKlass org/junit/platform/engine/TestDescriptor +instanceKlass org/junit/jupiter/engine/config/JupiterConfiguration +instanceKlass org/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService +instanceKlass org/junit/platform/engine/support/hierarchical/HierarchicalTestEngine +instanceKlass sun/net/www/protocol/jar/JarFileFactory +instanceKlass sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController +instanceKlass jdk/internal/misc/ScopedMemoryAccess$Scope +instanceKlass org/junit/platform/engine/TestEngine +instanceKlass org/junit/platform/launcher/core/ServiceLoaderTestEngineRegistry +instanceKlass org/junit/platform/launcher/LauncherSessionListener$1 +instanceKlass org/junit/platform/launcher/core/ServiceLoaderRegistry +instanceKlass org/junit/platform/launcher/listeners/session/LauncherSessionListeners +instanceKlass org/junit/platform/launcher/core/ListenerRegistry +instanceKlass org/junit/platform/launcher/LauncherSessionListener +instanceKlass org/junit/platform/launcher/core/DefaultLauncherSession$1 +instanceKlass org/junit/platform/launcher/LauncherInterceptor +instanceKlass org/junit/platform/launcher/core/DefaultLauncherSession +instanceKlass org/junit/platform/launcher/core/LauncherConfigurationParameters$ParameterProvider$3 +instanceKlass org/junit/platform/commons/util/ClassLoaderUtils +instanceKlass java/util/regex/Pattern$TreeInfo +instanceKlass java/util/regex/Pattern$BmpCharPredicate +instanceKlass java/util/regex/Pattern$CharPredicate +instanceKlass java/util/regex/CharPredicates +instanceKlass java/util/regex/Pattern$Node +instanceKlass java/util/regex/Pattern +instanceKlass org/junit/platform/commons/util/StringUtils +instanceKlass org/junit/platform/launcher/core/LauncherConfigurationParameters$ParameterProvider$2 +instanceKlass org/junit/platform/launcher/core/LauncherConfigurationParameters$ParameterProvider +instanceKlass org/junit/platform/launcher/core/LauncherConfigurationParameters$Builder +instanceKlass org/junit/platform/commons/logging/LoggerFactory$DelegatingLogger +instanceKlass org/junit/platform/commons/logging/Logger +instanceKlass org/junit/platform/commons/logging/LoggerFactory +instanceKlass org/junit/platform/launcher/core/LauncherConfigurationParameters +instanceKlass org/junit/platform/commons/util/Preconditions +instanceKlass org/junit/platform/launcher/core/DefaultLauncherConfig +instanceKlass org/junit/platform/launcher/core/LauncherConfig$Builder +instanceKlass org/junit/platform/launcher/core/LauncherConfig +instanceKlass org/junit/platform/launcher/LauncherSession +instanceKlass org/junit/platform/engine/ConfigurationParameters +instanceKlass org/junit/platform/launcher/Launcher +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestWorker$3 +instanceKlass org/junit/platform/launcher/core/LauncherFactory +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$TypeInfo +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestWorker$2 +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestClassProcessor$BackwardsCompatibleLauncherSession +instanceKlass org/gradle/internal/actor/internal/DefaultActorFactory$BlockingActor +instanceKlass org/gradle/api/internal/tasks/testing/redirector/TestOutputRedirector$Forwarder +instanceKlass org/apache/commons/lang/StringUtils +instanceKlass org/gradle/api/internal/tasks/testing/redirector/TestOutputRedirector +instanceKlass org/gradle/api/internal/tasks/testing/redirector/DefaultStandardOutputRedirector$WriteAction +instanceKlass org/gradle/api/internal/tasks/testing/redirector/StandardOutputRedirector$OutputListener +instanceKlass org/gradle/api/internal/tasks/testing/redirector/DefaultStandardOutputRedirector +instanceKlass org/gradle/api/internal/tasks/testing/processors/CaptureTestOutputTestResultProcessor +instanceKlass org/gradle/internal/remote/internal/hub/DefaultMethodArgsSerializer$ArraySerializer +instanceKlass java/util/AbstractMap$SimpleImmutableEntry +instanceKlass org/gradle/api/internal/tasks/testing/results/AttachParentTestResultProcessor +instanceKlass java/util/concurrent/ConcurrentSkipListMap$Iter +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestWorker$1 +instanceKlass org/gradle/internal/remote/internal/hub/queue/MultiEndPointQueue$1 +instanceKlass org/gradle/internal/remote/internal/hub/DefaultMethodArgsSerializer$EmptyArraySerializer +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer$MethodDetails +instanceKlass java/nio/channels/spi/AbstractSelector$1 +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$ConnectionReceive +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$ConnectionDispatch +instanceKlass org/gradle/internal/remote/internal/hub/ConnectionState +instanceKlass org/gradle/internal/serialize/kryo/TypeSafeSerializer$2 +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer$MethodInvocationWriter +instanceKlass org/gradle/internal/remote/internal/hub/InterHubMessageSerializer$MessageWriter +instanceKlass org/gradle/internal/serialize/AbstractEncoder +instanceKlass org/gradle/internal/serialize/PositionAwareEncoder +instanceKlass org/gradle/internal/serialize/kryo/TypeSafeSerializer$1 +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer$MethodInvocationReader +instanceKlass org/gradle/internal/remote/internal/hub/InterHubMessageSerializer$MessageReader +instanceKlass org/gradle/internal/remote/internal/inet/SocketInetAddress$Serializer +instanceKlass org/gradle/internal/remote/internal/inet/SocketInetAddress +instanceKlass org/gradle/internal/io/BufferCaster +instanceKlass java/lang/invoke/ConstantBootstraps +instanceKlass java/nio/channels/SelectionKey +instanceKlass java/nio/BufferMismatch +instanceKlass sun/nio/ch/IOStatus +instanceKlass sun/nio/ch/Util$BufferCache +instanceKlass sun/security/provider/AbstractDrbg$NonceProvider +instanceKlass sun/nio/fs/BasicFileAttributesHolder +instanceKlass sun/nio/fs/WindowsDirectoryStream$WindowsDirectoryIterator +instanceKlass sun/nio/fs/WindowsDirectoryStream +instanceKlass java/nio/file/DirectoryStream +instanceKlass java/nio/file/Files$AcceptAllFilter +instanceKlass java/nio/file/DirectoryStream$Filter +instanceKlass java/net/NetworkInterface$1 +instanceKlass java/net/DefaultInterface +instanceKlass java/net/InterfaceAddress +instanceKlass java/net/NetworkInterface +instanceKlass sun/security/provider/SeedGenerator$1 +instanceKlass sun/security/provider/SeedGenerator +instanceKlass sun/security/provider/AbstractDrbg$SeederHolder +instanceKlass java/security/DrbgParameters$NextBytes +instanceKlass com/sun/security/sasl/Provider$1 +instanceKlass org/jcp/xml/dsig/internal/dom/XMLDSigRI$2 +instanceKlass org/jcp/xml/dsig/internal/dom/XMLDSigRI$1 +instanceKlass java/security/spec/ECFieldF2m +instanceKlass sun/security/util/ObjectIdentifier +instanceKlass sun/security/util/ByteArrayTagOrder +instanceKlass sun/security/util/ByteArrayLexOrder +instanceKlass sun/security/util/DerEncoder +instanceKlass java/security/spec/ECParameterSpec +instanceKlass java/security/spec/AlgorithmParameterSpec +instanceKlass java/security/spec/ECPoint +instanceKlass java/security/spec/EllipticCurve +instanceKlass java/security/spec/ECFieldFp +instanceKlass java/security/spec/ECField +instanceKlass sun/security/util/CurveDB +instanceKlass sun/security/ec/SunEC$1 +instanceKlass sun/security/smartcardio/SunPCSC$1 +instanceKlass sun/security/pkcs11/SunPKCS11$Descriptor +instanceKlass javax/security/auth/callback/CallbackHandler +instanceKlass javax/security/auth/Subject +instanceKlass com/sun/security/sasl/gsskerb/JdkSASL$1 +instanceKlass sun/security/mscapi/SunMSCAPI$2 +instanceKlass sun/security/mscapi/SunMSCAPI$1 +instanceKlass sun/security/jgss/SunProvider$1 +instanceKlass sun/security/jca/ProviderConfig$ProviderLoader +instanceKlass sun/security/jca/ProviderConfig$3 +instanceKlass sun/security/rsa/SunRsaSignEntries +instanceKlass sun/nio/ch/UnixDomainSocketsUtil +instanceKlass sun/nio/ch/UnixDomainSockets +instanceKlass sun/nio/ch/PipeImpl$Initializer$LoopbackConnector +instanceKlass sun/nio/ch/PipeImpl$Initializer +instanceKlass sun/security/provider/EntropySource +instanceKlass sun/security/provider/AbstractDrbg +instanceKlass java/security/DrbgParameters$Instantiation +instanceKlass java/security/DrbgParameters +instanceKlass sun/security/provider/MoreDrbgParameters +instanceKlass java/security/SecureRandomSpi +instanceKlass java/security/SecureRandomParameters +instanceKlass java/util/AbstractList$Itr +instanceKlass java/nio/channels/Pipe +instanceKlass sun/nio/ch/WEPoll +instanceKlass sun/nio/ch/Util$2 +instanceKlass sun/nio/ch/Util +instanceKlass java/nio/channels/Selector +instanceKlass java/nio/DirectByteBuffer$Deallocator +instanceKlass org/gradle/internal/serialize/FlushableEncoder +instanceKlass org/gradle/internal/remote/internal/KryoBackedMessageSerializer +instanceKlass org/gradle/internal/serialize/Encoder +instanceKlass org/gradle/internal/remote/internal/inet/SocketConnection +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer +instanceKlass org/gradle/internal/serialize/kryo/TypeSafeSerializer +instanceKlass java/util/concurrent/ForkJoinPool$WorkQueue +instanceKlass java/util/concurrent/ForkJoinPool$DefaultCommonPoolForkJoinWorkerThreadFactory +instanceKlass org/gradle/internal/serialize/ObjectWriter +instanceKlass java/util/concurrent/ForkJoinPool$1 +instanceKlass org/gradle/internal/serialize/ObjectReader +instanceKlass java/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory +instanceKlass java/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory +instanceKlass org/gradle/internal/remote/internal/hub/InterHubMessageSerializer +instanceKlass org/gradle/internal/remote/internal/hub/JavaSerializationBackedMethodArgsSerializer +instanceKlass org/gradle/internal/remote/internal/hub/DefaultMethodArgsSerializer +instanceKlass org/gradle/internal/concurrent/AbstractManagedExecutor$1 +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$Handler +instanceKlass org/gradle/internal/remote/internal/hub/queue/EndPointQueue +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection$DispatchWrapper +instanceKlass org/gradle/api/tasks/testing/TestFailureDetails +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestFailureSerializer +instanceKlass org/gradle/api/tasks/testing/TestFailure +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestOutputEventSerializer +instanceKlass org/gradle/api/internal/tasks/testing/DefaultTestOutputEvent +instanceKlass org/gradle/api/tasks/testing/TestOutputEvent +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$TestCompleteEventSerializer +instanceKlass org/gradle/api/internal/tasks/testing/TestCompleteEvent +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$NullableSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$TestStartEventSerializer +instanceKlass org/gradle/api/internal/tasks/testing/TestStartEvent +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestMethodDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestClassDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$WorkerTestSuiteDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestSuiteDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultParameterizedTestDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultNestedTestSuiteDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$IdSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestClassRunInfoSerializer +instanceKlass org/gradle/api/internal/tasks/testing/DefaultTestClassRunInfo +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer +instanceKlass org/gradle/internal/dispatch/ContextClassLoaderDispatch +instanceKlass org/gradle/internal/dispatch/ContextClassLoaderProxy +instanceKlass org/gradle/api/internal/tasks/testing/AbstractTestDescriptor +instanceKlass org/gradle/internal/id/CompositeIdGenerator$CompositeId +instanceKlass org/gradle/api/internal/tasks/testing/TestDescriptorInternal +instanceKlass org/gradle/api/tasks/testing/TestDescriptor +instanceKlass org/gradle/api/internal/tasks/testing/redirector/StandardOutputRedirector +instanceKlass org/gradle/api/internal/tasks/testing/SuiteTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/junit/AbstractJUnitTestClassProcessor +instanceKlass org/gradle/internal/actor/Actor +instanceKlass org/gradle/internal/actor/internal/DefaultActorFactory +instanceKlass org/gradle/internal/id/LongIdGenerator +instanceKlass org/gradle/internal/id/CompositeIdGenerator +instanceKlass sun/reflect/generics/tree/MethodTypeSignature +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestWorker$TestFrameworkServiceRegistry +instanceKlass org/gradle/process/internal/worker/child/ActionExecutionWorker$1 +instanceKlass org/gradle/process/internal/worker/child/SystemApplicationClassLoaderWorker$ContextImpl +instanceKlass org/gradle/process/internal/worker/child/ActionExecutionWorker +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$PrintStreamDestination +instanceKlass java/util/logging/ErrorManager +instanceKlass org/gradle/internal/logging/source/JavaUtilLoggingSystem$SnapshotImpl +instanceKlass org/gradle/internal/logging/config/LoggingSystemAdapter$SnapshotImpl +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$SnapshotImpl +instanceKlass org/gradle/internal/SystemProperties +instanceKlass org/gradle/internal/logging/events/StyledTextOutputEvent$Span +instanceKlass org/gradle/internal/logging/events/operations/StyledTextBuildOperationProgressDetails$Span +instanceKlass org/gradle/internal/operations/logging/StyledTextBuildOperationProgressDetails$Span +instanceKlass org/gradle/internal/concurrent/ThreadSafe +instanceKlass org/gradle/internal/remote/internal/hub/protocol/ChannelIdentifier +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$ChannelDispatch +instanceKlass org/gradle/internal/dispatch/MethodInvocation +instanceKlass org/gradle/process/internal/worker/child/WorkerLoggingProtocol +instanceKlass org/gradle/internal/logging/serializer/LogLevelChangeEventSerializer +instanceKlass org/gradle/internal/logging/serializer/SpanSerializer +instanceKlass org/gradle/internal/serialize/AbstractCollectionSerializer +instanceKlass org/gradle/internal/logging/serializer/StyledTextOutputEventSerializer +instanceKlass java/util/concurrent/atomic/Striped64$1 +instanceKlass jdk/internal/util/random/RandomSupport +instanceKlass java/util/Random +instanceKlass java/util/random/RandomGenerator +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$InstanceBasedSerializerFactory +instanceKlass org/gradle/internal/logging/serializer/LogEventSerializer +instanceKlass org/gradle/internal/serialize/AbstractSerializer +instanceKlass org/gradle/internal/serialize/BaseSerializerFactory +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$HierarchySerializerMatcher +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$StrictSerializerMatcher +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$SerializerClassMatcherStrategy +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$1 +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$SerializerFactory +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry +instanceKlass org/gradle/internal/serialize/SerializerRegistry +instanceKlass org/gradle/process/internal/worker/WorkerLoggingSerializer +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection$2 +instanceKlass org/gradle/internal/concurrent/ExecutorPolicy$CatchAndRecordFailures +instanceKlass java/util/concurrent/SynchronousQueue$TransferStack$SNode +instanceKlass java/util/concurrent/SynchronousQueue$Transferer +instanceKlass java/util/concurrent/ThreadPoolExecutor$AbortPolicy +instanceKlass java/util/concurrent/RejectedExecutionHandler +instanceKlass java/util/concurrent/Executors +instanceKlass org/gradle/internal/concurrent/ThreadFactoryImpl +instanceKlass java/util/concurrent/AbstractExecutorService +instanceKlass org/gradle/internal/remote/internal/hub/ConnectionSet +instanceKlass org/gradle/internal/remote/internal/hub/protocol/Routable +instanceKlass org/gradle/internal/remote/internal/hub/queue/MultiEndPointQueue +instanceKlass org/gradle/internal/remote/internal/hub/queue/QueueInitializer +instanceKlass org/gradle/internal/remote/internal/hub/protocol/InterHubMessage +instanceKlass org/gradle/internal/remote/internal/hub/queue/MultiChannelQueue +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$Discard +instanceKlass org/gradle/internal/remote/internal/hub/StreamFailureHandler +instanceKlass org/gradle/internal/dispatch/BoundedDispatch +instanceKlass org/gradle/internal/dispatch/StreamCompletion +instanceKlass org/gradle/internal/remote/internal/hub/RejectedMessageListener +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection$1 +instanceKlass org/gradle/internal/remote/internal/RemoteConnection +instanceKlass org/gradle/internal/remote/internal/Connection +instanceKlass org/gradle/internal/dispatch/Receive +instanceKlass org/gradle/internal/remote/internal/MessageSerializer +instanceKlass org/gradle/internal/remote/internal/inet/SocketConnectCompletion +instanceKlass sun/nio/ch/NativeThread +instanceKlass sun/net/NetHooks +instanceKlass java/nio/channels/spi/AbstractInterruptibleChannel$1 +instanceKlass sun/nio/ch/Interruptible +instanceKlass java/net/InetSocketAddress$InetSocketAddressHolder +instanceKlass sun/net/NetProperties$1 +instanceKlass sun/net/NetProperties +instanceKlass java/net/SocketImpl +instanceKlass java/net/SocketOptions +instanceKlass java/net/Socket +instanceKlass jdk/net/ExtendedSocketOptions$PlatformSocketOptions$1 +instanceKlass jdk/net/ExtendedSocketOptions$PlatformSocketOptions +instanceKlass jdk/net/ExtendedSocketOptions$ExtSocketOption +instanceKlass java/net/SocketOption +instanceKlass jdk/net/ExtendedSocketOptions +instanceKlass sun/net/ext/ExtendedSocketOptions +instanceKlass java/net/Inet6Address$Inet6AddressHolder +instanceKlass sun/nio/ch/Net$1 +instanceKlass java/net/ProtocolFamily +instanceKlass sun/nio/ch/Net +instanceKlass sun/nio/ch/IOUtil +instanceKlass sun/nio/ch/NativeDispatcher +instanceKlass sun/nio/ch/SelChImpl +instanceKlass sun/nio/ch/DefaultSelectorProvider +instanceKlass java/nio/channels/spi/SelectorProvider$Holder +instanceKlass java/nio/channels/spi/SelectorProvider +instanceKlass java/nio/channels/spi/AbstractInterruptibleChannel +instanceKlass java/nio/channels/InterruptibleChannel +instanceKlass java/nio/channels/NetworkChannel +instanceKlass java/nio/channels/GatheringByteChannel +instanceKlass java/nio/channels/ScatteringByteChannel +instanceKlass java/nio/channels/ByteChannel +instanceKlass java/nio/channels/WritableByteChannel +instanceKlass java/nio/channels/ReadableByteChannel +instanceKlass java/nio/channels/Channel +instanceKlass org/gradle/internal/serialize/StatefulSerializer +instanceKlass org/gradle/internal/remote/internal/hub/MethodArgsSerializer +instanceKlass org/gradle/internal/classloader/ClassLoaderHierarchy +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection +instanceKlass org/gradle/internal/remote/ObjectConnection +instanceKlass org/gradle/internal/remote/ObjectConnectionBuilder +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedClient +instanceKlass java/net/SocketAddress +instanceKlass org/gradle/internal/remote/internal/ConnectCompletion +instanceKlass org/gradle/internal/remote/internal/inet/TcpOutgoingConnector +instanceKlass org/gradle/process/internal/worker/child/SystemApplicationClassLoaderWorker$PrintUnrecoverableErrorToFileHandler +instanceKlass java/text/DontCareFieldPosition$1 +instanceKlass java/text/Format$FieldDelegate +instanceKlass java/text/DigitList +instanceKlass java/text/FieldPosition +instanceKlass java/lang/StringUTF16$CharsSpliterator +instanceKlass java/util/stream/Sink$ChainedInt +instanceKlass java/util/OptionalInt +instanceKlass java/util/stream/Sink$OfInt +instanceKlass java/util/function/IntConsumer +instanceKlass java/util/function/IntPredicate +instanceKlass java/util/stream/IntStream +instanceKlass java/lang/StringLatin1$CharsSpliterator +instanceKlass java/text/DecimalFormatSymbols +instanceKlass sun/util/resources/Bundles$2 +instanceKlass sun/util/resources/LocaleData$LocaleDataResourceBundleProvider +instanceKlass java/util/spi/ResourceBundleProvider +instanceKlass java/text/DateFormatSymbols +instanceKlass sun/util/calendar/CalendarUtils +instanceKlass sun/util/calendar/CalendarDate +instanceKlass sun/util/resources/Bundles$CacheKeyReference +instanceKlass java/util/ResourceBundle$ResourceBundleProviderHelper +instanceKlass sun/util/resources/Bundles$CacheKey +instanceKlass java/util/ResourceBundle$1 +instanceKlass jdk/internal/access/JavaUtilResourceBundleAccess +instanceKlass sun/util/resources/Bundles +instanceKlass sun/util/resources/LocaleData$LocaleDataStrategy +instanceKlass sun/util/resources/Bundles$Strategy +instanceKlass sun/util/resources/LocaleData$1 +instanceKlass sun/util/resources/LocaleData +instanceKlass sun/util/locale/provider/LocaleResources +instanceKlass java/util/ResourceBundle +instanceKlass java/util/ResourceBundle$Control +instanceKlass sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter +instanceKlass sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter +instanceKlass sun/util/locale/provider/LocaleServiceProviderPool +instanceKlass java/util/Locale$Builder +instanceKlass sun/util/locale/provider/CalendarDataUtility +instanceKlass sun/util/calendar/CalendarSystem$GregorianHolder +instanceKlass sun/util/calendar/CalendarSystem +instanceKlass java/util/Calendar$Builder +instanceKlass java/util/StringTokenizer +instanceKlass sun/util/locale/provider/AvailableLanguageTags +instanceKlass sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo +instanceKlass jdk/internal/module/ModulePatcher$PatchedModuleReader +instanceKlass sun/util/locale/LocaleObjectCache +instanceKlass sun/util/locale/BaseLocale$Key +instanceKlass sun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar +instanceKlass sun/util/locale/InternalLocaleBuilder +instanceKlass sun/util/locale/StringTokenIterator +instanceKlass sun/util/locale/ParseStatus +instanceKlass sun/util/locale/LanguageTag +instanceKlass sun/util/cldr/CLDRBaseLocaleDataMetaInfo +instanceKlass sun/util/locale/provider/LocaleDataMetaInfo +instanceKlass sun/util/locale/provider/ResourceBundleBasedAdapter +instanceKlass sun/util/locale/provider/LocaleProviderAdapter$1 +instanceKlass java/util/Collections$UnmodifiableCollection$1 +instanceKlass sun/util/locale/provider/LocaleProviderAdapter +instanceKlass java/util/spi/LocaleServiceProvider +instanceKlass sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule +instanceKlass sun/util/calendar/ZoneInfoFile$1 +instanceKlass sun/util/calendar/ZoneInfoFile +instanceKlass java/util/TimeZone +instanceKlass java/util/Calendar +instanceKlass java/text/AttributedCharacterIterator$Attribute +instanceKlass java/text/Format +instanceKlass org/gradle/process/internal/worker/child/DefaultWorkerDirectoryProvider +instanceKlass org/gradle/process/internal/worker/child/SystemApplicationClassLoaderWorker$WorkerServices$1 +instanceKlass org/gradle/process/internal/worker/child/WorkerLogEventListener +instanceKlass org/gradle/internal/event/ScopedListenerManager +instanceKlass org/gradle/internal/event/ListenerManager +instanceKlass org/gradle/process/internal/worker/child/WorkerDirectoryProvider +instanceKlass org/gradle/process/internal/health/memory/JvmMemoryInfo +instanceKlass org/gradle/process/internal/health/memory/OsMemoryInfo +instanceKlass org/gradle/process/internal/health/memory/MemoryManager +instanceKlass org/gradle/process/internal/worker/child/SystemApplicationClassLoaderWorker$WorkerServices +instanceKlass org/gradle/internal/remote/internal/inet/InetAddressFactory +instanceKlass org/gradle/internal/concurrent/ManagedThreadPoolExecutor +instanceKlass org/gradle/internal/concurrent/ManagedScheduledExecutor +instanceKlass java/util/concurrent/ScheduledExecutorService +instanceKlass org/gradle/internal/concurrent/ManagedExecutor +instanceKlass java/util/concurrent/ExecutorService +instanceKlass java/util/concurrent/Executor +instanceKlass org/gradle/internal/concurrent/AsyncStoppable +instanceKlass org/gradle/internal/concurrent/ExecutorPolicy +instanceKlass org/gradle/internal/concurrent/DefaultExecutorFactory +instanceKlass org/gradle/internal/concurrent/ExecutorFactory +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$CompositeServiceProvider +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ParentServices +instanceKlass org/gradle/internal/id/UUIDGenerator +instanceKlass org/gradle/internal/remote/internal/IncomingConnector +instanceKlass org/gradle/internal/remote/internal/OutgoingConnector +instanceKlass org/gradle/internal/remote/MessagingServer +instanceKlass org/gradle/internal/remote/MessagingClient +instanceKlass org/gradle/internal/remote/services/MessagingServices +instanceKlass org/gradle/process/internal/worker/child/SystemApplicationClassLoaderWorker$2 +instanceKlass java/lang/ProcessEnvironment$CheckedEntry +instanceKlass java/lang/ProcessEnvironment$CheckedEntrySet$1 +instanceKlass java/lang/ProcessEnvironment$EntryComparator +instanceKlass java/lang/ProcessEnvironment$NameComparator +instanceKlass org/gradle/api/internal/file/temp/DefaultTemporaryFileProvider +instanceKlass java/lang/Class$EnclosingMethodInfo +instanceKlass net/rubygrapefruit/platform/SystemInfo +instanceKlass net/rubygrapefruit/platform/file/FileSystems +instanceKlass net/rubygrapefruit/platform/memory/Memory +instanceKlass org/gradle/internal/jvm/Jvm +instanceKlass org/gradle/internal/jvm/JavaInfo +instanceKlass net/rubygrapefruit/platform/WindowsRegistry +instanceKlass org/gradle/internal/file/StatStatistics +instanceKlass org/gradle/internal/file/StatStatistics$Collector +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/GenericFileSystem +instanceKlass org/gradle/internal/service/InjectUtil +instanceKlass java/lang/invoke/MethodHandleImpl$ArrayAccessor +instanceKlass java/lang/invoke/MethodHandleImpl$2 +instanceKlass java/lang/invoke/MethodHandleImpl$LoopClauses +instanceKlass java/lang/invoke/MethodHandleImpl$CasesHolder +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$1 +instanceKlass org/gradle/internal/file/FileCanonicalizer +instanceKlass net/rubygrapefruit/platform/file/PosixFiles +instanceKlass net/rubygrapefruit/platform/file/Files +instanceKlass org/gradle/internal/os/OperatingSystem +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/GenericFileSystem$Factory +instanceKlass org/gradle/api/internal/file/temp/TemporaryFileProvider +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices$1 +instanceKlass org/gradle/internal/nativeintegration/filesystem/FileSystem +instanceKlass org/gradle/internal/file/FileSystem +instanceKlass org/gradle/internal/file/Stat +instanceKlass org/gradle/internal/file/Chmod +instanceKlass org/gradle/internal/file/FileModeMutator +instanceKlass org/gradle/internal/file/FileModeAccessor +instanceKlass org/gradle/internal/nativeintegration/filesystem/Symlink +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/FileSystemServices +instanceKlass org/gradle/internal/nativeintegration/jansi/DefaultJansiRuntimeResolver +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiRuntimeResolver +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiLibraryFactory +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiStorageLocator +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiBootPathConfigurer +instanceKlass org/gradle/internal/nativeintegration/network/HostnameLookup +instanceKlass net/rubygrapefruit/platform/ProcessLauncher +instanceKlass net/rubygrapefruit/platform/NativeIntegration +instanceKlass org/gradle/internal/nativeintegration/console/ConsoleDetector +instanceKlass org/gradle/internal/nativeintegration/ProcessEnvironment +instanceKlass org/gradle/initialization/GradleUserHomeDirProvider +instanceKlass org/gradle/internal/file/FileMetadataAccessor +instanceKlass org/gradle/internal/nativeintegration/NativeCapabilities +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManager$StartableLoggingSystem +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManager$StartableLoggingRouter +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManager +instanceKlass java/util/logging/Logger$SystemLoggerHelper$1 +instanceKlass java/util/logging/Logger$SystemLoggerHelper +instanceKlass java/util/logging/LogManager$4 +instanceKlass jdk/internal/logger/BootstrapLogger$BootstrapExecutors +instanceKlass jdk/internal/logger/LoggerFinderLoader +instanceKlass java/util/stream/Stream$Builder +instanceKlass java/util/stream/Streams$AbstractStreamBuilderImpl +instanceKlass java/util/stream/FindOps$FindOp +instanceKlass java/util/stream/FindOps$FindSink +instanceKlass java/util/stream/FindOps +instanceKlass java/util/ArrayList$ArrayListSpliterator +instanceKlass java/util/Hashtable$Enumerator +instanceKlass java/util/Collections$SynchronizedCollection +instanceKlass java/util/Properties$EntrySet +instanceKlass java/util/Collections$3 +instanceKlass java/util/logging/LogManager$LoggerContext$1 +instanceKlass java/util/logging/LogManager$VisitedLoggers +instanceKlass java/util/logging/LogManager$2 +instanceKlass java/util/logging/LogManager$LoggingProviderAccess +instanceKlass java/lang/Shutdown$Lock +instanceKlass java/lang/Shutdown +instanceKlass java/lang/ApplicationShutdownHooks$1 +instanceKlass java/lang/ApplicationShutdownHooks +instanceKlass java/util/Collections$SynchronizedMap +instanceKlass java/util/logging/LogManager$LogNode +instanceKlass java/util/logging/LogManager$LoggerContext +instanceKlass java/util/logging/LogManager$1 +instanceKlass java/util/logging/LogManager +instanceKlass java/util/logging/Logger$ConfigurationData +instanceKlass java/util/logging/Logger$LoggerBundle +instanceKlass java/util/logging/Handler +instanceKlass java/util/logging/Logger +instanceKlass java/util/logging/Level +instanceKlass org/gradle/internal/logging/source/JavaUtilLoggingSystem +instanceKlass org/gradle/internal/logging/slf4j/Slf4jLoggingConfigurer +instanceKlass org/gradle/internal/logging/config/LoggingSystemAdapter +instanceKlass org/gradle/internal/logging/source/StdErrLoggingSystem +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$SnapshotImpl +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$OutputEventDestination +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$1 +instanceKlass org/gradle/internal/logging/events/operations/StyledTextBuildOperationProgressDetails +instanceKlass org/gradle/internal/operations/logging/StyledTextBuildOperationProgressDetails +instanceKlass org/gradle/internal/io/TextStream +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem +instanceKlass org/gradle/internal/logging/source/StdOutLoggingSystem +instanceKlass org/gradle/internal/service/AnnotatedServiceLifecycleHandler +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$SingletonService$NonFactoryMarker +instanceKlass java/lang/reflect/WildcardType +instanceKlass sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator +instanceKlass java/lang/reflect/TypeVariable +instanceKlass sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl +instanceKlass sun/reflect/generics/tree/ClassSignature +instanceKlass sun/reflect/generics/tree/Signature +instanceKlass sun/reflect/generics/tree/FormalTypeParameter +instanceKlass sun/reflect/generics/repository/AbstractRepository +instanceKlass java/lang/reflect/ParameterizedType +instanceKlass org/gradle/internal/logging/LoggingManagerInternal +instanceKlass org/gradle/internal/logging/StandardOutputCapture +instanceKlass org/gradle/api/logging/LoggingManager +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ClassInspector$ClassDetails +instanceKlass org/gradle/util/internal/CollectionUtils +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$SingletonService$1 +instanceKlass java/util/concurrent/ConcurrentLinkedQueue$Node +instanceKlass org/gradle/internal/service/PrivateService +instanceKlass org/gradle/internal/reflect/JavaMethod +instanceKlass org/gradle/internal/service/AbstractServiceMethod +instanceKlass org/gradle/util/internal/ArrayUtils +instanceKlass java/lang/annotation/Target +instanceKlass sun/reflect/annotation/AnnotationInvocationHandler +instanceKlass sun/reflect/annotation/AnnotationParser$1 +instanceKlass java/lang/annotation/Inherited +instanceKlass java/lang/annotation/Retention +instanceKlass sun/reflect/annotation/ExceptionProxy +instanceKlass sun/reflect/annotation/AnnotationType$1 +instanceKlass sun/reflect/annotation/AnnotationType +instanceKlass java/lang/reflect/GenericArrayType +instanceKlass sun/reflect/generics/visitor/Reifier +instanceKlass sun/reflect/generics/visitor/TypeTreeVisitor +instanceKlass sun/reflect/generics/factory/CoreReflectionFactory +instanceKlass sun/reflect/generics/factory/GenericsFactory +instanceKlass sun/reflect/generics/scope/AbstractScope +instanceKlass sun/reflect/generics/scope/Scope +instanceKlass sun/reflect/generics/tree/ClassTypeSignature +instanceKlass sun/reflect/generics/tree/SimpleClassTypeSignature +instanceKlass sun/reflect/generics/tree/FieldTypeSignature +instanceKlass sun/reflect/generics/tree/BaseType +instanceKlass sun/reflect/generics/tree/TypeSignature +instanceKlass sun/reflect/generics/tree/ReturnType +instanceKlass sun/reflect/generics/tree/TypeArgument +instanceKlass sun/reflect/generics/tree/TypeTree +instanceKlass sun/reflect/generics/tree/Tree +instanceKlass sun/reflect/generics/parser/SignatureParser +instanceKlass org/gradle/internal/service/Provides +instanceKlass org/gradle/internal/logging/services/TextStreamOutputEventListener +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManagerFactory +instanceKlass org/gradle/internal/service/TypeStringFormatter +instanceKlass org/gradle/internal/service/RelevantMethods$RelevantMethodsBuilder +instanceKlass org/gradle/internal/Cast +instanceKlass org/gradle/internal/service/ServiceMethod +instanceKlass org/gradle/internal/service/MethodHandleBasedServiceMethodFactory +instanceKlass org/gradle/internal/service/DefaultServiceMethodFactory +instanceKlass org/gradle/internal/service/ServiceMethodFactory +instanceKlass org/gradle/internal/service/RelevantMethods +instanceKlass org/gradle/internal/service/DefaultServiceAccessToken +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ClassInspector +instanceKlass org/gradle/internal/service/ServiceAccess$1 +instanceKlass org/gradle/internal/service/ServiceAccessToken +instanceKlass org/gradle/internal/service/ServiceAccessScope +instanceKlass org/gradle/internal/service/ServiceAccess +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ThisAsService +instanceKlass org/gradle/internal/concurrent/CompositeStoppable$1 +instanceKlass org/gradle/internal/concurrent/CompositeStoppable +instanceKlass org/gradle/internal/service/AnnotatedServiceLifecycleHandler$Registration +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$OwnServices +instanceKlass org/gradle/internal/service/ServiceRegistration +instanceKlass org/gradle/internal/service/ServiceProvider$Visitor +instanceKlass org/gradle/internal/InternalTransformer +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ManagedObjectServiceProvider +instanceKlass org/gradle/internal/service/Service +instanceKlass org/gradle/internal/service/ServiceProvider +instanceKlass org/gradle/internal/logging/sink/OutputEventListenerManager$1 +instanceKlass org/gradle/internal/logging/sink/OutputEventListenerManager +instanceKlass org/gradle/internal/service/DefaultServiceRegistry +instanceKlass org/gradle/internal/service/ContainsServices +instanceKlass org/gradle/internal/service/CloseableServiceRegistry +instanceKlass org/gradle/internal/service/ServiceRegistryBuilder +instanceKlass org/gradle/internal/logging/services/LoggingServiceRegistry$1 +instanceKlass org/gradle/internal/logging/config/LoggingConfigurer +instanceKlass org/gradle/internal/logging/config/LoggingSourceSystem +instanceKlass org/gradle/internal/logging/text/StyledTextOutputFactory +instanceKlass org/gradle/internal/logging/services/LoggingServiceRegistry +instanceKlass org/gradle/process/internal/worker/messaging/WorkerConfig +instanceKlass java/util/Date +instanceKlass java/util/concurrent/ForkJoinPool$ManagedBlocker +instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer$Node +instanceKlass java/io/ObjectStreamClass$ExceptionInfo +instanceKlass java/util/function/Predicate +instanceKlass java/util/concurrent/ArrayBlockingQueue$Itrs +instanceKlass java/io/SerialCallbackContext +instanceKlass jdk/internal/reflect/UnsafeFieldAccessorFactory +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestFilterSpec +instanceKlass org/gradle/internal/actor/ActorFactory +instanceKlass org/gradle/internal/id/IdGenerator +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformSpec +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestClassProcessorFactory +instanceKlass java/io/ObjectInputStream$GetField +instanceKlass java/io/ObjectStreamClass$ClassDataSlot +instanceKlass java/lang/constant/DynamicConstantDesc +instanceKlass java/lang/constant/DirectMethodHandleDesc$1 +instanceKlass java/lang/constant/DirectMethodHandleDescImpl$1 +instanceKlass java/lang/constant/DirectMethodHandleDescImpl +instanceKlass java/lang/constant/DirectMethodHandleDesc +instanceKlass java/lang/constant/MethodHandleDesc$1 +instanceKlass java/lang/constant/MethodHandleDesc +instanceKlass java/lang/constant/MethodTypeDescImpl +instanceKlass java/lang/constant/MethodTypeDesc +instanceKlass java/lang/constant/ReferenceClassDescImpl +instanceKlass java/lang/constant/ConstantUtils +instanceKlass java/lang/constant/ClassDesc +instanceKlass java/lang/constant/ConstantDescs +instanceKlass java/lang/invoke/VarHandle$2 +instanceKlass java/lang/invoke/VarHandle$TypesAndInvokers +instanceKlass java/lang/invoke/VarHandle$AccessDescriptor +instanceKlass java/lang/invoke/VarHandleByteArrayBase +instanceKlass sun/security/provider/ByteArrayAccess$BE +instanceKlass sun/security/provider/ByteArrayAccess +instanceKlass sun/security/util/MessageDigestSpi2 +instanceKlass sun/security/jca/GetInstance$Instance +instanceKlass sun/security/util/SecurityProviderConstants +instanceKlass java/security/Provider$UString +instanceKlass java/security/Provider$Service +instanceKlass sun/security/provider/NativePRNG$NonBlocking +instanceKlass sun/security/provider/NativePRNG$Blocking +instanceKlass sun/security/provider/NativePRNG +instanceKlass sun/security/provider/SunEntries$1 +instanceKlass sun/security/provider/SunEntries +instanceKlass sun/security/util/SecurityConstants +instanceKlass sun/security/jca/ProviderList$2 +instanceKlass jdk/internal/math/FloatingDecimal$ASCIIToBinaryBuffer +instanceKlass jdk/internal/math/FloatingDecimal$PreparedASCIIToBinaryBuffer +instanceKlass jdk/internal/math/FloatingDecimal$ASCIIToBinaryConverter +instanceKlass jdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer +instanceKlass jdk/internal/math/FloatingDecimal$ExceptionalBinaryToASCIIBuffer +instanceKlass jdk/internal/math/FloatingDecimal$BinaryToASCIIConverter +instanceKlass jdk/internal/math/FloatingDecimal +instanceKlass java/security/Provider$EngineDescription +instanceKlass java/security/Provider$ServiceKey +instanceKlass sun/security/jca/ProviderConfig +instanceKlass sun/security/jca/ProviderList +instanceKlass sun/security/jca/Providers +instanceKlass sun/security/jca/GetInstance +instanceKlass java/security/MessageDigestSpi +instanceKlass java/io/ObjectStreamClass$5 +instanceKlass java/io/ObjectStreamClass$4 +instanceKlass java/util/TimSort +instanceKlass java/io/ObjectStreamClass$3 +instanceKlass java/io/ObjectStreamClass$MemberSignature +instanceKlass java/io/ObjectStreamClass$1 +instanceKlass java/lang/Long$LongCache +instanceKlass java/io/ObjectStreamClass$FieldReflector +instanceKlass java/io/ObjectStreamClass$FieldReflectorKey +instanceKlass java/util/stream/ReduceOps$AccumulatingSink +instanceKlass java/util/stream/TerminalSink +instanceKlass java/util/stream/ReduceOps$Box +instanceKlass java/util/stream/ReduceOps$ReduceOp +instanceKlass java/util/stream/TerminalOp +instanceKlass java/util/stream/ReduceOps +instanceKlass java/util/function/BiConsumer +instanceKlass java/util/stream/Collectors$CollectorImpl +instanceKlass java/util/stream/Collector +instanceKlass java/util/stream/Collectors +instanceKlass org/gradle/api/internal/tasks/testing/TestClassRunInfo +instanceKlass java/io/ObjectOutput +instanceKlass jdk/internal/reflect/ClassDefiner$1 +instanceKlass jdk/internal/reflect/ClassDefiner +instanceKlass jdk/internal/reflect/MethodAccessorGenerator$1 +instanceKlass jdk/internal/reflect/Label$PatchInfo +instanceKlass jdk/internal/reflect/Label +instanceKlass jdk/internal/reflect/UTF8 +instanceKlass jdk/internal/reflect/ClassFileAssembler +instanceKlass jdk/internal/reflect/ByteVectorImpl +instanceKlass jdk/internal/reflect/ByteVector +instanceKlass jdk/internal/reflect/ByteVectorFactory +instanceKlass jdk/internal/reflect/AccessorGenerator +instanceKlass jdk/internal/reflect/ClassFileConstants +instanceKlass org/gradle/api/internal/tasks/testing/TestResultProcessor +instanceKlass org/gradle/api/internal/tasks/testing/TestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/WorkerTestClassProcessorFactory +instanceKlass java/io/ObjectStreamClass$2 +instanceKlass java/io/Externalizable +instanceKlass java/io/ClassCache +instanceKlass java/io/ObjectStreamClass$Caches +instanceKlass jdk/internal/event/Event +instanceKlass sun/reflect/misc/ReflectUtil +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestWorker +instanceKlass org/gradle/internal/concurrent/Stoppable +instanceKlass org/gradle/api/internal/tasks/testing/worker/RemoteTestClassProcessor +instanceKlass java/io/ObjectStreamClass +instanceKlass java/io/Bits +instanceKlass sun/util/logging/PlatformLogger +instanceKlass sun/util/logging/PlatformLogger$ConfigurableBridge$LoggerConfiguration +instanceKlass jdk/internal/logger/BootstrapLogger$RedirectedLoggers +instanceKlass jdk/internal/access/JavaObjectInputFilterAccess +instanceKlass java/io/ObjectInputFilter$Config$BuiltinFilterFactory +instanceKlass java/util/function/BinaryOperator +instanceKlass java/io/ObjectInputFilter +instanceKlass jdk/internal/logger/LazyLoggers$LazyLoggerAccessor +instanceKlass jdk/internal/logger/LazyLoggers$LoggerAccessor +instanceKlass jdk/internal/logger/AbstractLoggerWrapper +instanceKlass java/util/ServiceLoader$ProviderImpl +instanceKlass java/util/ServiceLoader$Provider +instanceKlass java/util/ServiceLoader$1 +instanceKlass sun/util/logging/internal/LoggingProviderImpl$LogManagerAccess +instanceKlass java/util/concurrent/CopyOnWriteArrayList$COWIterator +instanceKlass java/util/zip/ZipFile$ZipEntryIterator +instanceKlass java/util/LinkedList$Node +instanceKlass java/io/Reader +instanceKlass java/util/TreeMap$PrivateEntryIterator +instanceKlass java/util/TreeMap$Entry +instanceKlass java/util/ServiceLoader$3 +instanceKlass java/util/ServiceLoader$2 +instanceKlass java/util/ServiceLoader$LazyClassPathLookupIterator +instanceKlass java/util/Spliterators$1Adapter +instanceKlass java/util/ServiceLoader$ModuleServicesLookupIterator +instanceKlass java/util/ServiceLoader +instanceKlass jdk/internal/logger/BootstrapLogger$DetectBackend$1 +instanceKlass jdk/internal/logger/BootstrapLogger$DetectBackend +instanceKlass jdk/internal/logger/BootstrapLogger +instanceKlass sun/util/logging/PlatformLogger$ConfigurableBridge +instanceKlass sun/util/logging/PlatformLogger$Bridge +instanceKlass java/lang/System$Logger +instanceKlass jdk/internal/logger/DefaultLoggerFinder$1 +instanceKlass java/lang/System$LoggerFinder +instanceKlass jdk/internal/logger/LazyLoggers$LazyLoggerFactories +instanceKlass jdk/internal/logger/LazyLoggers$1 +instanceKlass jdk/internal/logger/LazyLoggers +instanceKlass java/util/concurrent/atomic/AtomicBoolean +instanceKlass java/io/ObjectInputFilter$Config +instanceKlass java/io/ObjectInputStream$ValidationList +instanceKlass java/io/ObjectInputStream$HandleTable$HandleList +instanceKlass java/io/ObjectInputStream$HandleTable +instanceKlass jdk/internal/access/JavaObjectInputStreamReadString +instanceKlass jdk/internal/access/JavaObjectInputStreamAccess +instanceKlass org/gradle/internal/remote/internal/inet/MultiChoiceAddress +instanceKlass org/gradle/internal/remote/internal/inet/InetEndpoint +instanceKlass java/net/InetAddress$PlatformNameService +instanceKlass java/net/InetAddress$NameService +instanceKlass java/net/Inet6AddressImpl +instanceKlass java/net/InetAddressImpl +instanceKlass java/net/InetAddressImplFactory +instanceKlass java/util/concurrent/ConcurrentSkipListMap$Node +instanceKlass java/util/concurrent/ConcurrentSkipListMap$Index +instanceKlass java/util/concurrent/ConcurrentNavigableMap +instanceKlass java/util/NavigableMap +instanceKlass java/util/SortedMap +instanceKlass java/util/NavigableSet +instanceKlass java/util/SortedSet +instanceKlass java/net/InetAddress$InetAddressHolder +instanceKlass java/net/InetAddress$1 +instanceKlass jdk/internal/access/JavaNetInetAddressAccess +instanceKlass java/net/InetAddress +instanceKlass java/util/UUID +instanceKlass org/gradle/internal/remote/internal/inet/MultiChoiceAddressSerializer +instanceKlass org/gradle/internal/serialize/AbstractDecoder +instanceKlass org/gradle/internal/logging/events/operations/LogEventBuildOperationProgressDetails +instanceKlass org/gradle/internal/operations/logging/LogEventBuildOperationProgressDetails +instanceKlass org/gradle/internal/logging/slf4j/BuildOperationAwareLogger +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$2 +instanceKlass org/gradle/internal/dispatch/ReflectionDispatch +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$1 +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$LazyListener +instanceKlass org/gradle/internal/logging/events/OutputEventListener$1 +instanceKlass java/lang/reflect/Proxy$ProxyBuilder$1 +instanceKlass jdk/internal/org/objectweb/asm/Edge +instanceKlass java/lang/reflect/ProxyGenerator$PrimitiveTypeInfo +instanceKlass java/util/StringJoiner +instanceKlass java/lang/reflect/ProxyGenerator$ProxyMethod +instanceKlass java/lang/WeakPairMap$Pair$Lookup +instanceKlass java/lang/WeakPairMap$Pair +instanceKlass java/lang/WeakPairMap +instanceKlass java/lang/Module$ReflectionData +instanceKlass jdk/internal/module/Checks +instanceKlass java/lang/module/ModuleDescriptor$Builder +instanceKlass java/util/LinkedHashMap$LinkedHashIterator +instanceKlass java/lang/PublicMethods +instanceKlass java/util/Collections$1 +instanceKlass java/lang/reflect/Proxy$ProxyBuilder +instanceKlass java/lang/reflect/Proxy +instanceKlass org/gradle/internal/dispatch/ProxyDispatchAdapter$DispatchingInvocationHandler +instanceKlass java/lang/reflect/InvocationHandler +instanceKlass org/gradle/internal/dispatch/ProxyDispatchAdapter +instanceKlass org/gradle/internal/logging/events/operations/ProgressStartBuildOperationProgressDetails +instanceKlass org/gradle/internal/operations/logging/ProgressStartBuildOperationProgressDetails +instanceKlass org/gradle/internal/logging/sink/OutputEventTransformer +instanceKlass org/gradle/internal/exceptions/NonGradleCauseExceptionsHolder +instanceKlass org/gradle/internal/exceptions/MultiCauseException +instanceKlass org/gradle/internal/exceptions/ResolutionProvider +instanceKlass org/gradle/internal/event/AbstractBroadcastDispatch +instanceKlass org/gradle/internal/event/ListenerBroadcast +instanceKlass org/gradle/internal/dispatch/Dispatch +instanceKlass org/gradle/internal/logging/console/ColorMap +instanceKlass org/gradle/internal/nativeintegration/console/ConsoleMetaData +instanceKlass org/gradle/internal/logging/format/LogHeaderFormatter +instanceKlass org/gradle/internal/Factory +instanceKlass org/gradle/api/logging/StandardOutputListener +instanceKlass org/gradle/internal/logging/text/StyledTextOutput +instanceKlass org/gradle/internal/logging/config/LoggingSystem$Snapshot +instanceKlass org/gradle/internal/logging/events/InteractiveEvent +instanceKlass org/gradle/internal/logging/events/OutputEvent +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer +instanceKlass org/gradle/internal/logging/config/LoggingRouter +instanceKlass org/gradle/internal/logging/LoggingOutputInternal +instanceKlass org/gradle/api/logging/LoggingOutput +instanceKlass org/gradle/internal/logging/config/LoggingSystem +instanceKlass org/gradle/internal/logging/console/UserInputReceiver$Normalizer +instanceKlass org/gradle/internal/logging/console/DefaultUserInputReceiver +instanceKlass org/gradle/internal/logging/slf4j/OutputEventListenerBackedLoggerContext$NoOpLogger +instanceKlass org/gradle/api/logging/Logger +instanceKlass java/lang/invoke/VarForm +instanceKlass java/lang/invoke/VarHandleGuards +instanceKlass jdk/internal/util/Preconditions$1 +instanceKlass java/lang/invoke/VarHandle$1 +instanceKlass java/lang/ClassValue$Version +instanceKlass java/lang/ClassValue$Identity +instanceKlass java/lang/ClassValue +instanceKlass java/lang/invoke/VarHandles +instanceKlass java/util/concurrent/atomic/AtomicReference +instanceKlass org/gradle/internal/time/TimeSource$1 +instanceKlass org/gradle/internal/time/TimeSource +instanceKlass org/gradle/internal/time/MonotonicClock +instanceKlass org/gradle/internal/time/CountdownTimer +instanceKlass org/gradle/internal/time/Timer +instanceKlass org/gradle/internal/time/Clock +instanceKlass org/gradle/internal/time/Time +instanceKlass org/gradle/internal/logging/console/GlobalUserInputReceiver +instanceKlass org/gradle/internal/logging/slf4j/OutputEventListenerBackedLoggerContext +instanceKlass org/slf4j/impl/StaticLoggerBinder +instanceKlass org/slf4j/spi/LoggerFactoryBinder +instanceKlass java/net/URLClassLoader$3$1 +instanceKlass java/net/URLClassLoader$3 +instanceKlass jdk/internal/loader/URLClassPath$1 +instanceKlass java/lang/CompoundEnumeration +instanceKlass jdk/internal/loader/BuiltinClassLoader$1 +instanceKlass java/util/Collections$EmptyEnumeration +instanceKlass java/util/Collections$EmptyIterator +instanceKlass jdk/internal/jimage/ImageLocation +instanceKlass jdk/internal/jimage/decompressor/Decompressor +instanceKlass jdk/internal/jimage/ImageStringsReader +instanceKlass jdk/internal/jimage/ImageStrings +instanceKlass jdk/internal/jimage/ImageHeader +instanceKlass jdk/internal/jimage/NativeImageBuffer$1 +instanceKlass jdk/internal/jimage/NativeImageBuffer +instanceKlass jdk/internal/jimage/BasicImageReader$1 +instanceKlass jdk/internal/jimage/BasicImageReader +instanceKlass jdk/internal/jimage/ImageReader +instanceKlass jdk/internal/jimage/ImageReaderFactory$1 +instanceKlass java/nio/file/Paths +instanceKlass jdk/internal/jimage/ImageReaderFactory +instanceKlass jdk/internal/module/SystemModuleFinders$SystemImage +instanceKlass jdk/internal/module/SystemModuleFinders$SystemModuleReader +instanceKlass java/lang/module/ModuleReader +instanceKlass jdk/internal/loader/BuiltinClassLoader$5 +instanceKlass jdk/internal/loader/BuiltinClassLoader$2 +instanceKlass jdk/internal/module/Resources +instanceKlass org/slf4j/helpers/Util +instanceKlass org/slf4j/helpers/NOPLoggerFactory +instanceKlass java/util/concurrent/LinkedBlockingQueue$Node +instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject +instanceKlass java/util/concurrent/locks/Condition +instanceKlass java/util/concurrent/BlockingQueue +instanceKlass org/slf4j/Logger +instanceKlass org/slf4j/helpers/SubstituteLoggerFactory +instanceKlass org/slf4j/ILoggerFactory +instanceKlass org/slf4j/event/LoggingEvent +instanceKlass org/slf4j/LoggerFactory +instanceKlass java/io/ObjectStreamConstants +instanceKlass java/io/ObjectInput +instanceKlass org/gradle/process/internal/worker/messaging/WorkerConfigSerializer +instanceKlass org/gradle/internal/serialize/Serializer +instanceKlass org/gradle/process/internal/health/memory/JvmMemoryStatusListener +instanceKlass org/gradle/internal/service/ServiceRegistrationProvider +instanceKlass org/gradle/internal/logging/events/OutputEventListener +instanceKlass org/gradle/process/internal/worker/WorkerProcessContext +instanceKlass org/gradle/api/Action +instanceKlass org/gradle/internal/remote/Address +instanceKlass org/gradle/internal/service/ServiceRegistry +instanceKlass org/gradle/internal/service/ServiceLookup +instanceKlass org/gradle/internal/serialize/Decoder +instanceKlass org/gradle/process/internal/worker/child/SystemApplicationClassLoaderWorker +instanceKlass java/util/concurrent/Callable +instanceKlass java/io/FilePermissionCollection$1 +instanceKlass java/security/Security$2 +instanceKlass jdk/internal/access/JavaSecurityPropertiesAccess +instanceKlass java/util/concurrent/ConcurrentHashMap$MapEntry +instanceKlass java/io/FileInputStream$1 +instanceKlass java/util/Properties$LineReader +instanceKlass java/security/Security$1 +instanceKlass java/security/Security +instanceKlass sun/security/util/SecurityProperties +instanceKlass sun/security/util/FilePermCompat +instanceKlass java/io/FilePermission$1 +instanceKlass jdk/internal/access/JavaIOFilePermissionAccess +instanceKlass sun/net/www/MessageHeader +instanceKlass java/net/URLConnection +instanceKlass java/util/jar/Attributes$Name +instanceKlass java/util/jar/Attributes +instanceKlass sun/security/action/GetIntegerAction +instanceKlass sun/security/util/SignatureFileVerifier +instanceKlass java/net/URLClassLoader$1 +instanceKlass java/util/ComparableTimSort +instanceKlass java/util/Arrays$LegacyMergeSort +instanceKlass worker/org/gradle/internal/util/Trie$Builder +instanceKlass worker/org/gradle/internal/util/Trie +instanceKlass worker/org/gradle/internal/classloader/FilteringClassLoader$TrieSet +instanceKlass java/util/function/BiFunction +instanceKlass jdk/internal/loader/BootLoader$PackageHelper +instanceKlass java/util/stream/Sink$ChainedReference +instanceKlass java/util/stream/StreamSpliterators +instanceKlass java/util/stream/AbstractSpinedBuffer +instanceKlass java/util/stream/Node$Builder +instanceKlass java/util/stream/Sink +instanceKlass java/util/function/Consumer +instanceKlass java/util/stream/Node$OfDouble +instanceKlass java/util/stream/Node$OfLong +instanceKlass java/util/stream/Node$OfInt +instanceKlass java/util/stream/Node$OfPrimitive +instanceKlass java/util/stream/Nodes$EmptyNode +instanceKlass java/util/stream/Node +instanceKlass java/util/stream/Nodes +instanceKlass java/util/function/IntFunction +instanceKlass java/lang/invoke/InvokerBytecodeGenerator$ClassData +instanceKlass jdk/internal/org/objectweb/asm/Frame +instanceKlass java/lang/invoke/LambdaFormBuffer +instanceKlass java/lang/invoke/LambdaFormEditor$TransformKey +instanceKlass java/lang/invoke/LambdaFormEditor +instanceKlass sun/invoke/util/Wrapper$1 +instanceKlass java/lang/invoke/DelegatingMethodHandle$Holder +instanceKlass java/lang/invoke/DirectMethodHandle$2 +instanceKlass java/lang/invoke/ClassSpecializer$Factory +instanceKlass java/lang/invoke/ClassSpecializer$SpeciesData +instanceKlass java/lang/invoke/ClassSpecializer$1 +instanceKlass java/lang/invoke/ClassSpecializer +instanceKlass java/lang/invoke/InnerClassLambdaMetafactory$1 +instanceKlass java/util/Spliterators$ArraySpliterator +instanceKlass java/util/Spliterator$OfDouble +instanceKlass java/util/Spliterator$OfLong +instanceKlass java/util/Spliterator$OfInt +instanceKlass java/util/Spliterator$OfPrimitive +instanceKlass java/util/Spliterators$EmptySpliterator +instanceKlass java/util/Spliterators +instanceKlass java/util/stream/Streams$2 +instanceKlass java/util/stream/Streams +instanceKlass java/util/stream/StreamSpliterators$AbstractWrappingSpliterator +instanceKlass java/util/stream/Streams$ConcatSpliterator +instanceKlass sun/invoke/empty/Empty +instanceKlass sun/invoke/util/VerifyType +instanceKlass java/lang/invoke/MethodHandles$Lookup$ClassDefiner +instanceKlass jdk/internal/org/objectweb/asm/ClassReader +instanceKlass java/lang/invoke/MethodHandles$Lookup$ClassFile +instanceKlass jdk/internal/org/objectweb/asm/Handler +instanceKlass jdk/internal/org/objectweb/asm/AnnotationVisitor +instanceKlass jdk/internal/org/objectweb/asm/Attribute +instanceKlass jdk/internal/org/objectweb/asm/Label +instanceKlass jdk/internal/org/objectweb/asm/MethodVisitor +instanceKlass jdk/internal/org/objectweb/asm/FieldVisitor +instanceKlass java/lang/invoke/LambdaProxyClassArchive +instanceKlass jdk/internal/org/objectweb/asm/ByteVector +instanceKlass jdk/internal/org/objectweb/asm/Symbol +instanceKlass jdk/internal/org/objectweb/asm/SymbolTable +instanceKlass jdk/internal/org/objectweb/asm/ClassVisitor +instanceKlass java/lang/invoke/InfoFromMemberName +instanceKlass java/lang/invoke/MethodHandleInfo +instanceKlass jdk/internal/org/objectweb/asm/ConstantDynamic +instanceKlass sun/invoke/util/BytecodeDescriptor +instanceKlass jdk/internal/org/objectweb/asm/Handle +instanceKlass jdk/internal/org/objectweb/asm/Type +instanceKlass java/lang/invoke/AbstractValidatingLambdaMetafactory +instanceKlass java/lang/invoke/MethodHandleImpl$1 +instanceKlass jdk/internal/access/JavaLangInvokeAccess +instanceKlass java/lang/invoke/Invokers$Holder +instanceKlass java/lang/invoke/BootstrapMethodInvoker +instanceKlass java/lang/invoke/InvokerBytecodeGenerator$2 +instanceKlass java/lang/invoke/InvokerBytecodeGenerator +instanceKlass java/lang/invoke/LambdaForm$Holder +instanceKlass java/lang/invoke/LambdaForm$Name +instanceKlass java/lang/invoke/Invokers +instanceKlass java/lang/invoke/MethodHandleImpl +instanceKlass sun/invoke/util/ValueConversions +instanceKlass java/lang/invoke/DirectMethodHandle$Holder +instanceKlass java/lang/invoke/LambdaForm$NamedFunction +instanceKlass java/lang/invoke/LambdaMetafactory +instanceKlass sun/reflect/annotation/AnnotationParser +instanceKlass java/lang/Class$3 +instanceKlass java/util/EnumMap$1 +instanceKlass java/util/stream/StreamOpFlag$MaskBuilder +instanceKlass java/util/stream/Stream +instanceKlass java/util/stream/BaseStream +instanceKlass java/util/stream/PipelineHelper +instanceKlass java/util/stream/StreamSupport +instanceKlass java/util/Spliterator +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderUtils$Java9PackagesFetcher +instanceKlass sun/invoke/util/Wrapper$Format +instanceKlass java/lang/invoke/MethodTypeForm +instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderUtils$AbstractClassLoaderLookuper +instanceKlass worker/org/gradle/api/internal/jvm/JavaVersionParser +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderUtils$ClassLoaderPackagesFetcher +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderUtils$ClassDefiner +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderUtils +instanceKlass java/util/ArrayList$Itr +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderSpec +instanceKlass java/lang/Void +instanceKlass java/lang/PublicMethods$Key +instanceKlass java/lang/PublicMethods$MethodList +instanceKlass worker/org/gradle/internal/classloader/ClassLoaderHierarchy +instanceKlass worker/org/gradle/process/internal/worker/GradleWorkerMain +instanceKlass sun/security/util/Debug +instanceKlass java/security/SecureClassLoader$DebugHolder +instanceKlass java/security/PermissionCollection +instanceKlass java/security/SecureClassLoader$1 +instanceKlass java/security/SecureClassLoader$CodeSourceKey +instanceKlass java/util/zip/Checksum$1 +instanceKlass java/util/zip/CRC32 +instanceKlass java/util/zip/Checksum +instanceKlass sun/nio/ByteBuffered +instanceKlass java/util/zip/ZipFile$InflaterCleanupAction +instanceKlass java/util/zip/Inflater$InflaterZStreamRef +instanceKlass java/util/zip/Inflater +instanceKlass java/lang/Package$VersionInfo +instanceKlass java/lang/NamedPackage +instanceKlass jdk/internal/loader/Resource +instanceKlass java/util/zip/ZipEntry +instanceKlass jdk/internal/util/jar/JarIndex +instanceKlass java/nio/Bits$1 +instanceKlass jdk/internal/misc/VM$BufferPool +instanceKlass java/nio/Bits +instanceKlass sun/nio/ch/DirectBuffer +instanceKlass jdk/internal/perf/PerfCounter$CoreCounters +instanceKlass jdk/internal/perf/Perf +instanceKlass jdk/internal/perf/Perf$GetPerfAction +instanceKlass jdk/internal/perf/PerfCounter +instanceKlass java/nio/file/attribute/FileTime +instanceKlass java/util/zip/ZipUtils +instanceKlass java/util/zip/ZipFile$Source$End +instanceKlass java/io/RandomAccessFile$2 +instanceKlass jdk/internal/access/JavaIORandomAccessFileAccess +instanceKlass java/io/RandomAccessFile +instanceKlass java/io/DataInput +instanceKlass java/io/DataOutput +instanceKlass sun/nio/fs/WindowsNativeDispatcher$CompletionStatus +instanceKlass sun/nio/fs/WindowsNativeDispatcher$AclInformation +instanceKlass sun/nio/fs/WindowsNativeDispatcher$Account +instanceKlass sun/nio/fs/WindowsNativeDispatcher$DiskFreeSpace +instanceKlass sun/nio/fs/WindowsNativeDispatcher$VolumeInformation +instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstStream +instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstFile +instanceKlass java/util/Enumeration +instanceKlass java/util/concurrent/ConcurrentHashMap$Traverser +instanceKlass java/util/concurrent/ConcurrentHashMap$CollectionView +instanceKlass jdk/internal/loader/NativeLibraries$NativeLibraryImpl +instanceKlass jdk/internal/loader/NativeLibrary +instanceKlass java/util/ArrayDeque$DeqIterator +instanceKlass jdk/internal/loader/NativeLibraries$1 +instanceKlass jdk/internal/loader/NativeLibraries$LibraryPaths +instanceKlass sun/nio/fs/WindowsNativeDispatcher +instanceKlass sun/nio/fs/NativeBuffer$Deallocator +instanceKlass sun/nio/fs/NativeBuffer +instanceKlass java/lang/ThreadLocal$ThreadLocalMap +instanceKlass sun/nio/fs/NativeBuffers +instanceKlass sun/nio/fs/WindowsFileAttributes +instanceKlass java/nio/file/attribute/DosFileAttributes +instanceKlass sun/nio/fs/AbstractBasicFileAttributeView +instanceKlass sun/nio/fs/DynamicFileAttributeView +instanceKlass sun/nio/fs/WindowsFileAttributeViews +instanceKlass sun/nio/fs/Util +instanceKlass java/nio/file/attribute/BasicFileAttributeView +instanceKlass java/nio/file/attribute/FileAttributeView +instanceKlass java/nio/file/attribute/AttributeView +instanceKlass java/nio/file/Files +instanceKlass java/nio/file/CopyOption +instanceKlass java/nio/file/attribute/BasicFileAttributes +instanceKlass sun/nio/fs/WindowsPath +instanceKlass java/nio/file/Path +instanceKlass java/nio/file/Watchable +instanceKlass java/net/URI$Parser +instanceKlass sun/nio/fs/WindowsPathParser$Result +instanceKlass sun/nio/fs/WindowsPathParser +instanceKlass java/util/Collections$UnmodifiableCollection +instanceKlass java/util/Arrays$ArrayItr +instanceKlass java/nio/file/FileSystem +instanceKlass java/nio/file/OpenOption +instanceKlass java/nio/file/spi/FileSystemProvider +instanceKlass sun/nio/fs/DefaultFileSystemProvider +instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder$1 +instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder +instanceKlass java/nio/file/FileSystems +instanceKlass java/util/zip/ZipFile$Source$Key +instanceKlass java/util/zip/ZipFile$Source +instanceKlass java/lang/ref/Cleaner$Cleanable +instanceKlass jdk/internal/ref/CleanerImpl +instanceKlass java/lang/ref/Cleaner$1 +instanceKlass java/lang/ref/Cleaner +instanceKlass jdk/internal/ref/CleanerFactory$1 +instanceKlass java/util/concurrent/ThreadFactory +instanceKlass jdk/internal/ref/CleanerFactory +instanceKlass java/util/zip/ZipCoder +instanceKlass java/util/zip/ZipFile$CleanableResource +instanceKlass java/lang/Runtime$Version +instanceKlass java/util/jar/JavaUtilJarAccessImpl +instanceKlass jdk/internal/access/JavaUtilJarAccess +instanceKlass jdk/internal/loader/FileURLMapper +instanceKlass jdk/internal/loader/URLClassPath$JarLoader$1 +instanceKlass java/util/zip/ZipFile$1 +instanceKlass jdk/internal/access/JavaUtilZipFileAccess +instanceKlass sun/security/action/GetBooleanAction +instanceKlass java/util/zip/ZipFile +instanceKlass java/util/zip/ZipConstants +instanceKlass jdk/internal/loader/URLClassPath$Loader +instanceKlass jdk/internal/loader/URLClassPath$3 +instanceKlass java/security/PrivilegedExceptionAction +instanceKlass sun/net/util/URLUtil +instanceKlass sun/launcher/LauncherHelper +instanceKlass jdk/internal/vm/PostVMInitHook$1 +instanceKlass java/nio/charset/CoderResult +instanceKlass java/lang/Readable +instanceKlass sun/nio/cs/MS949$EncodeHolder +instanceKlass sun/nio/cs/ArrayEncoder +instanceKlass jdk/internal/util/EnvUtils +instanceKlass jdk/internal/vm/PostVMInitHook$2 +instanceKlass sun/util/locale/LocaleUtils +instanceKlass sun/util/locale/BaseLocale +instanceKlass java/util/Locale +instanceKlass jdk/internal/vm/PostVMInitHook +instanceKlass java/lang/reflect/Array +instanceKlass java/lang/invoke/StringConcatFactory$3 +instanceKlass java/lang/invoke/StringConcatFactory$2 +instanceKlass java/lang/invoke/StringConcatFactory$1 +instanceKlass java/lang/invoke/StringConcatFactory +instanceKlass java/lang/ModuleLayer$Controller +instanceKlass java/util/concurrent/CopyOnWriteArrayList +instanceKlass jdk/internal/module/ServicesCatalog$ServiceProvider +instanceKlass jdk/internal/loader/AbstractClassLoaderValue$Memoizer +instanceKlass java/util/ImmutableCollections$ListItr +instanceKlass java/util/ListIterator +instanceKlass java/lang/ModuleLayer +instanceKlass jdk/internal/module/ModuleLoaderMap$Modules +instanceKlass jdk/internal/module/ModuleLoaderMap$Mapper +instanceKlass java/util/function/Function +instanceKlass jdk/internal/module/ModuleLoaderMap +instanceKlass java/util/ImmutableCollections$Set12$1 +instanceKlass java/util/AbstractMap$1$1 +instanceKlass java/lang/module/ResolvedModule +instanceKlass java/lang/module/Configuration +instanceKlass java/util/ImmutableCollections$SetN$SetNIterator +instanceKlass jdk/internal/loader/BuiltinClassLoader$LoadedModule +instanceKlass jdk/internal/loader/AbstractClassLoaderValue +instanceKlass jdk/internal/module/ServicesCatalog +instanceKlass jdk/internal/util/Preconditions +instanceKlass sun/net/util/IPAddressUtil +instanceKlass java/net/URLStreamHandler +instanceKlass java/util/HexFormat +instanceKlass sun/net/www/ParseUtil +instanceKlass java/net/URL$3 +instanceKlass jdk/internal/access/JavaNetURLAccess +instanceKlass java/net/URL$DefaultFactory +instanceKlass java/net/URLStreamHandlerFactory +instanceKlass jdk/internal/loader/URLClassPath +instanceKlass java/security/Principal +instanceKlass java/security/ProtectionDomain$Key +instanceKlass java/security/ProtectionDomain$JavaSecurityAccessImpl +instanceKlass jdk/internal/access/JavaSecurityAccess +instanceKlass java/lang/ClassLoader$ParallelLoaders +instanceKlass java/security/cert/Certificate +instanceKlass jdk/internal/loader/ArchivedClassLoaders +instanceKlass java/util/Deque +instanceKlass java/util/Queue +instanceKlass jdk/internal/loader/ClassLoaderHelper +instanceKlass jdk/internal/loader/NativeLibraries +instanceKlass jdk/internal/loader/BootLoader +instanceKlass java/util/Optional +instanceKlass jdk/internal/module/SystemModuleFinders$SystemModuleFinder +instanceKlass java/lang/module/ModuleFinder +instanceKlass jdk/internal/module/SystemModuleFinders$3 +instanceKlass jdk/internal/module/ModuleHashes$HashSupplier +instanceKlass jdk/internal/module/SystemModuleFinders$2 +instanceKlass java/util/function/Supplier +instanceKlass java/lang/module/ModuleReference +instanceKlass jdk/internal/module/ModuleResolution +instanceKlass java/util/Collections$UnmodifiableMap +instanceKlass jdk/internal/module/ModuleHashes$Builder +instanceKlass jdk/internal/module/ModuleHashes +instanceKlass jdk/internal/module/ModuleTarget +instanceKlass java/lang/Enum +instanceKlass java/lang/module/ModuleDescriptor$Version +instanceKlass java/lang/module/ModuleDescriptor$Provides +instanceKlass java/lang/module/ModuleDescriptor$Opens +instanceKlass java/lang/module/ModuleDescriptor$Exports +instanceKlass java/lang/module/ModuleDescriptor$Requires +instanceKlass jdk/internal/module/Builder +instanceKlass jdk/internal/module/SystemModules$default +instanceKlass jdk/internal/module/SystemModules +instanceKlass jdk/internal/module/SystemModulesMap +instanceKlass java/net/URI$1 +instanceKlass jdk/internal/access/JavaNetUriAccess +instanceKlass java/net/URI +instanceKlass jdk/internal/module/SystemModuleFinders +instanceKlass jdk/internal/module/ArchivedModuleGraph +instanceKlass jdk/internal/module/ArchivedBootLayer +instanceKlass jdk/internal/module/ModuleBootstrap$Counters +instanceKlass jdk/internal/module/ModulePatcher +instanceKlass jdk/internal/util/ArraysSupport +instanceKlass java/io/FileSystem +instanceKlass java/io/DefaultFileSystem +instanceKlass java/io/File +instanceKlass java/lang/module/ModuleDescriptor$1 +instanceKlass jdk/internal/access/JavaLangModuleAccess +instanceKlass sun/invoke/util/VerifyAccess +instanceKlass java/lang/module/ModuleDescriptor +instanceKlass jdk/internal/module/ModuleBootstrap +instanceKlass java/lang/invoke/MethodHandleStatics +instanceKlass java/util/Collections +instanceKlass sun/io/Win32ErrorMode +instanceKlass jdk/internal/misc/OSEnvironment +instanceKlass jdk/internal/misc/Signal$NativeHandler +instanceKlass java/util/Hashtable$Entry +instanceKlass jdk/internal/misc/Signal +instanceKlass java/lang/Terminator$1 +instanceKlass jdk/internal/misc/Signal$Handler +instanceKlass java/lang/Terminator +instanceKlass java/nio/ByteOrder +instanceKlass java/nio/Buffer$1 +instanceKlass jdk/internal/access/JavaNioAccess +instanceKlass jdk/internal/misc/ScopedMemoryAccess +instanceKlass java/nio/charset/CharsetEncoder +instanceKlass sun/security/action/GetPropertyAction +instanceKlass java/io/Writer +instanceKlass java/io/OutputStream +instanceKlass java/io/Flushable +instanceKlass java/io/FileDescriptor$1 +instanceKlass jdk/internal/access/JavaIOFileDescriptorAccess +instanceKlass java/io/FileDescriptor +instanceKlass jdk/internal/util/StaticProperty +instanceKlass java/util/HashMap$HashIterator +instanceKlass java/lang/Integer$IntegerCache +instanceKlass java/lang/CharacterData +instanceKlass java/lang/VersionProps +instanceKlass java/lang/StringConcatHelper +instanceKlass java/lang/StringCoding +instanceKlass java/nio/charset/CodingErrorAction +instanceKlass java/lang/StringUTF16 +instanceKlass sun/nio/cs/DoubleByte +instanceKlass sun/nio/cs/MS949$DecodeHolder +instanceKlass java/nio/charset/CharsetDecoder +instanceKlass sun/nio/cs/ArrayDecoder +instanceKlass sun/nio/cs/DelegatableDecoder +instanceKlass java/lang/reflect/Modifier +instanceKlass java/lang/Class$1 +instanceKlass java/lang/Class$Atomic +instanceKlass java/lang/Class$ReflectionData +instanceKlass java/nio/charset/StandardCharsets +instanceKlass sun/nio/cs/HistoricallyNamedCharset +instanceKlass java/util/Arrays +instanceKlass java/lang/ThreadLocal +instanceKlass java/nio/charset/spi/CharsetProvider +instanceKlass java/nio/charset/Charset +instanceKlass jdk/internal/misc/VM +instanceKlass jdk/internal/util/SystemProps$Raw +instanceKlass jdk/internal/util/SystemProps +instanceKlass java/lang/System$2 +instanceKlass jdk/internal/access/JavaLangAccess +instanceKlass java/lang/ref/Reference$1 +instanceKlass jdk/internal/access/JavaLangRefAccess +instanceKlass java/lang/ref/ReferenceQueue$Lock +instanceKlass java/lang/ref/ReferenceQueue +instanceKlass jdk/internal/reflect/ReflectionFactory +instanceKlass jdk/internal/reflect/ReflectionFactory$GetReflectionFactoryAction +instanceKlass java/security/PrivilegedAction +instanceKlass java/util/concurrent/locks/LockSupport +instanceKlass java/util/concurrent/ConcurrentHashMap$Node +instanceKlass java/util/concurrent/ConcurrentHashMap$CounterCell +instanceKlass java/util/concurrent/locks/ReentrantLock +instanceKlass java/util/concurrent/locks/Lock +instanceKlass java/lang/Runtime +instanceKlass java/util/HashMap$Node +instanceKlass java/util/KeyValueHolder +instanceKlass java/util/Map$Entry +instanceKlass java/util/ImmutableCollections$MapN$MapNIterator +instanceKlass java/lang/Math +instanceKlass jdk/internal/reflect/Reflection +instanceKlass java/lang/invoke/MethodHandles$Lookup +instanceKlass java/lang/StringLatin1 +instanceKlass java/security/Permission +instanceKlass java/security/Guard +instanceKlass java/lang/invoke/MemberName$Factory +instanceKlass java/lang/invoke/MethodHandles +instanceKlass jdk/internal/access/SharedSecrets +instanceKlass java/lang/reflect/ReflectAccess +instanceKlass jdk/internal/access/JavaLangReflectAccess +instanceKlass java/util/ImmutableCollections +instanceKlass java/util/Objects +instanceKlass java/util/Set +instanceKlass jdk/internal/misc/CDS +instanceKlass java/lang/Module$ArchivedData +instanceKlass java/lang/String$CaseInsensitiveComparator +instanceKlass java/util/Comparator +instanceKlass java/io/ObjectStreamField +instanceKlass jdk/internal/vm/vector/VectorSupport$VectorPayload +instanceKlass jdk/internal/vm/vector/VectorSupport +instanceKlass java/lang/reflect/RecordComponent +instanceKlass java/util/Iterator +instanceKlass java/lang/Number +instanceKlass java/lang/Character +instanceKlass java/lang/Boolean +instanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer +instanceKlass java/lang/LiveStackFrame +instanceKlass java/lang/StackFrameInfo +instanceKlass java/lang/StackWalker$StackFrame +instanceKlass java/lang/StackStreamFactory$AbstractStackWalker +instanceKlass java/lang/StackWalker +instanceKlass java/nio/Buffer +instanceKlass java/lang/StackTraceElement +instanceKlass java/util/RandomAccess +instanceKlass java/util/List +instanceKlass java/util/AbstractCollection +instanceKlass java/util/Collection +instanceKlass java/lang/Iterable +instanceKlass java/util/concurrent/ConcurrentMap +instanceKlass java/util/AbstractMap +instanceKlass java/security/CodeSource +instanceKlass jdk/internal/loader/ClassLoaders +instanceKlass java/util/jar/Manifest +instanceKlass java/net/URL +instanceKlass java/io/InputStream +instanceKlass java/io/Closeable +instanceKlass java/lang/AutoCloseable +instanceKlass jdk/internal/module/Modules +instanceKlass jdk/internal/misc/Unsafe +instanceKlass jdk/internal/misc/UnsafeConstants +instanceKlass java/lang/AbstractStringBuilder +instanceKlass java/lang/Appendable +instanceKlass java/lang/AssertionStatusDirectives +instanceKlass java/lang/invoke/MethodHandleNatives$CallSiteContext +instanceKlass jdk/internal/invoke/NativeEntryPoint +instanceKlass java/lang/invoke/CallSite +instanceKlass java/lang/invoke/MethodType +instanceKlass java/lang/invoke/TypeDescriptor$OfMethod +instanceKlass java/lang/invoke/LambdaForm +instanceKlass java/lang/invoke/MethodHandleNatives +instanceKlass java/lang/invoke/ResolvedMethodName +instanceKlass java/lang/invoke/MemberName +instanceKlass java/lang/invoke/VarHandle +instanceKlass java/lang/invoke/MethodHandle +instanceKlass jdk/internal/reflect/CallerSensitive +instanceKlass java/lang/annotation/Annotation +instanceKlass jdk/internal/reflect/FieldAccessor +instanceKlass jdk/internal/reflect/ConstantPool +instanceKlass jdk/internal/reflect/ConstructorAccessor +instanceKlass jdk/internal/reflect/MethodAccessor +instanceKlass jdk/internal/reflect/MagicAccessorImpl +instanceKlass java/lang/reflect/Parameter +instanceKlass java/lang/reflect/Member +instanceKlass java/lang/reflect/AccessibleObject +instanceKlass java/lang/Module +instanceKlass java/util/Map +instanceKlass java/util/Dictionary +instanceKlass java/lang/ThreadGroup +instanceKlass java/lang/Thread$UncaughtExceptionHandler +instanceKlass java/lang/Thread +instanceKlass java/lang/Runnable +instanceKlass java/lang/ref/Reference +instanceKlass java/lang/Record +instanceKlass java/security/AccessController +instanceKlass java/security/AccessControlContext +instanceKlass java/security/ProtectionDomain +instanceKlass java/lang/SecurityManager +instanceKlass java/lang/Throwable +instanceKlass java/lang/System +instanceKlass java/lang/ClassLoader +instanceKlass java/lang/Cloneable +instanceKlass java/lang/Class +instanceKlass java/lang/invoke/TypeDescriptor$OfField +instanceKlass java/lang/invoke/TypeDescriptor +instanceKlass java/lang/reflect/Type +instanceKlass java/lang/reflect/GenericDeclaration +instanceKlass java/lang/reflect/AnnotatedElement +instanceKlass java/lang/String +instanceKlass java/lang/constant/ConstantDesc +instanceKlass java/lang/constant/Constable +instanceKlass java/lang/CharSequence +instanceKlass java/lang/Comparable +instanceKlass java/io/Serializable +ciInstanceKlass java/lang/Object 1 1 92 100 1 10 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 8 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 3 8 1 100 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 7 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/Class 1 1 1611 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 7 1 10 10 12 1 1 8 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 10 12 1 1 10 7 12 1 1 1 18 12 1 1 11 7 12 1 1 1 8 1 8 1 8 1 10 7 12 1 1 1 11 12 1 1 7 1 8 1 10 12 1 11 100 12 1 1 1 10 12 1 1 11 8 1 18 8 1 10 12 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 18 12 1 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 1 10 7 1 100 1 10 12 1 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 7 1 10 12 1 7 1 100 1 10 10 12 1 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 1 10 12 1 1 10 7 1 10 12 1 10 12 1 10 12 1 1 10 9 12 1 10 12 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 12 1 1 1 10 7 12 1 1 10 12 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 7 1 10 10 10 12 1 1 10 12 1 1 10 12 10 12 1 1 100 1 8 1 10 10 12 1 1 10 12 1 100 1 11 12 1 10 100 12 1 1 10 12 1 10 12 1 10 100 12 1 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 8 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 100 1 9 12 1 10 12 1 9 12 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 10 12 11 100 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 10 12 1 1 100 1 10 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 11 7 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 1 10 12 1 9 12 1 1 100 1 10 9 12 1 1 10 12 100 1 10 12 1 9 12 1 10 100 12 1 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 10 12 10 12 1 1 100 1 10 8 1 10 12 1 11 11 12 1 1 11 7 12 1 1 11 12 1 8 1 10 12 1 10 12 1 1 9 12 1 9 12 1 1 10 7 12 1 1 9 12 1 10 12 1 1 10 10 12 1 10 7 12 1 1 1 10 7 12 1 1 10 7 12 1 1 9 12 1 1 10 12 1 9 12 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 10 12 1 10 12 1 1 9 12 1 100 1 10 10 12 1 1 7 1 10 12 1 1 100 11 100 1 9 12 1 1 9 12 1 100 1 10 12 1 9 12 1 1 9 12 1 10 12 1 10 12 1 1 9 12 1 7 1 10 10 12 1 1 10 10 12 1 1 10 12 10 10 12 1 9 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 8 10 7 8 1 18 8 1 8 1 10 12 1 9 12 1 9 12 1 1 10 12 1 7 1 7 1 10 12 1 9 12 1 1 7 1 10 10 12 1 10 7 1 9 12 1 8 1 10 12 1 7 1 10 12 1 10 12 1 1 9 12 1 100 1 8 1 10 7 1 4 10 10 12 11 7 12 1 1 1 10 12 1 100 1 10 12 1 1 10 8 1 8 1 10 12 1 1 9 7 12 1 1 11 12 7 1 11 7 12 1 1 9 12 1 10 100 12 1 1 1 10 7 12 1 1 10 12 1 1 9 12 1 9 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 12 1 100 1 11 12 1 10 100 12 1 1 1 10 12 1 100 1 11 12 1 10 100 12 1 1 1 10 12 1 10 11 12 1 11 12 1 1 10 12 1 10 12 1 1 9 12 1 1 9 100 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 1 10 12 1 18 12 1 1 11 12 1 1 18 11 12 1 18 12 1 11 12 1 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 8 1 10 12 1 7 1 9 12 1 1 100 1 100 1 100 1 100 1 100 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 15 10 12 16 15 11 12 16 1 16 15 16 15 10 12 16 16 15 10 12 16 15 16 1 15 10 12 16 1 1 1 1 1 1 1 1 100 1 1 100 1 100 1 1 100 1 100 1 1 +staticfield java/lang/Class EMPTY_CLASS_ARRAY [Ljava/lang/Class; 0 [Ljava/lang/Class; +staticfield java/lang/Class serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField; +ciInstanceKlass java/io/Serializable 1 0 7 100 1 100 1 1 1 +instanceKlass jdk/internal/vm/vector/VectorSupport$VectorShuffle +instanceKlass jdk/internal/vm/vector/VectorSupport$VectorMask +instanceKlass jdk/internal/vm/vector/VectorSupport$Vector +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$VectorPayload 0 0 32 10 100 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$VectorShuffle 0 0 28 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$VectorMask 0 0 28 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$Vector 0 0 28 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport 0 0 487 100 1 10 100 12 1 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 11 100 12 1 1 1 11 100 12 1 1 1 11 100 12 1 1 11 100 12 1 1 1 11 100 1 100 1 10 12 1 1 11 100 12 1 1 11 100 12 1 1 100 1 11 100 12 1 1 11 100 12 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 100 12 1 1 1 100 1 10 12 1 1 11 100 12 1 1 100 1 11 100 12 1 1 11 100 12 1 1 11 100 12 1 1 11 100 1 100 1 9 12 1 1 10 100 12 1 1 11 100 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 3 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/RecordComponent 0 0 196 10 100 12 1 1 1 9 100 12 1 1 1 9 12 1 1 9 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 10 100 12 1 1 9 12 1 1 10 100 12 1 1 1 11 100 12 1 1 1 10 9 100 12 1 1 1 10 100 12 1 1 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 10 100 12 1 1 100 1 9 12 1 9 12 1 1 9 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 9 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/util/Iterator 1 1 53 100 1 8 1 10 12 1 1 10 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 11 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/System 1 1 803 10 100 12 1 1 1 9 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 10 7 12 1 1 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 1 10 7 12 1 1 1 18 12 1 1 10 100 12 1 1 1 100 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 11 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 100 1 10 10 12 1 1 8 1 10 12 1 8 1 10 12 1 9 12 1 1 8 1 10 7 12 1 1 1 10 12 1 1 100 1 8 1 10 9 12 1 1 8 1 10 12 1 1 10 100 12 1 1 1 8 1 10 12 1 100 1 10 12 1 8 1 10 12 1 10 12 1 1 100 1 10 12 10 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 100 1 100 1 8 1 10 12 1 10 12 1 1 7 1 10 12 1 100 1 8 1 10 10 12 1 100 1 8 1 10 8 1 10 7 12 1 1 8 1 10 12 100 1 8 1 10 10 12 1 1 10 7 12 1 1 1 100 1 18 12 1 100 1 9 100 12 1 1 1 10 12 1 100 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 7 1 10 12 1 10 12 1 100 1 10 12 1 10 7 12 1 1 1 100 1 8 1 10 9 12 1 9 12 1 10 12 1 10 100 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 8 1 11 12 1 10 12 11 12 1 1 11 7 12 1 1 1 11 7 12 1 1 11 12 1 1 7 1 11 12 1 10 12 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 11 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 8 1 7 1 9 7 12 1 1 1 10 12 1 7 1 9 12 10 9 12 7 1 10 12 8 1 10 12 1 1 8 1 10 7 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 10 7 12 1 1 1 9 12 1 1 100 1 8 1 10 12 1 1 10 7 12 1 1 1 7 1 10 12 1 1 8 1 10 8 1 8 1 8 1 8 1 10 10 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 100 1 8 1 10 10 10 12 1 1 10 12 1 1 8 1 10 12 1 8 1 10 12 1 10 12 1 1 7 1 10 10 12 1 10 12 1 9 12 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 1 1 16 15 10 12 16 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/System in Ljava/io/InputStream; java/io/BufferedInputStream +staticfield java/lang/System out Ljava/io/PrintStream; org/gradle/internal/io/LinePerThreadBufferingOutputStream +staticfield java/lang/System err Ljava/io/PrintStream; org/gradle/internal/io/LinePerThreadBufferingOutputStream +instanceKlass org/gradle/internal/classloader/CachingClassLoader +instanceKlass org/gradle/internal/classloader/MultiParentClassLoader +instanceKlass worker/org/gradle/internal/classloader/FilteringClassLoader$RetrieveSystemPackagesClassLoader +instanceKlass worker/org/gradle/internal/classloader/FilteringClassLoader +instanceKlass jdk/internal/reflect/DelegatingClassLoader +instanceKlass java/security/SecureClassLoader +ciInstanceKlass java/lang/ClassLoader 1 1 1098 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 1 100 1 8 1 10 12 1 10 7 12 1 1 1 10 100 12 1 10 7 1 10 7 1 7 1 7 1 10 12 1 10 12 1 9 12 1 1 10 10 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 7 1 10 12 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 10 12 1 1 9 12 10 12 1 1 7 1 10 8 1 10 12 1 1 10 12 1 10 7 1 7 1 10 12 1 1 10 7 12 1 1 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 10 12 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 100 1 10 12 1 100 1 10 12 1 10 100 12 1 1 1 10 10 12 1 1 10 12 1 1 100 1 8 1 10 8 1 10 12 1 10 12 1 100 1 8 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 7 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 9 12 1 10 12 1 1 8 1 8 1 10 7 12 1 1 100 1 10 10 12 10 12 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 7 1 7 1 10 12 1 1 10 12 1 10 7 1 10 12 1 100 1 18 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 8 1 100 1 10 10 12 1 9 12 1 10 7 12 1 1 10 12 1 100 1 8 1 10 12 1 10 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 1 100 1 100 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 7 1 18 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 18 12 1 11 7 12 1 1 1 7 1 10 12 1 1 10 12 1 10 11 12 1 1 10 18 10 12 1 1 11 7 12 1 18 12 1 11 12 1 1 10 12 10 12 1 1 10 12 1 1 100 1 8 1 10 10 12 1 8 1 8 1 10 100 12 1 1 10 12 1 100 1 10 10 12 1 8 1 8 1 8 1 10 12 1 10 12 1 1 10 12 1 10 100 12 1 1 1 11 100 12 1 1 100 1 10 11 10 12 1 10 12 1 10 12 1 1 9 100 12 1 1 9 12 1 1 9 12 9 12 1 9 12 1 9 12 1 8 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 11 12 1 1 10 100 12 1 1 1 100 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 1 15 10 12 16 1 16 15 10 12 16 1 16 1 15 10 12 16 15 10 12 16 15 10 12 16 1 1 100 1 100 1 1 +staticfield java/lang/ClassLoader nocerts [Ljava/security/cert/Certificate; 0 [Ljava/security/cert/Certificate; +staticfield java/lang/ClassLoader $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/reflect/DelegatingClassLoader 1 1 18 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/net/URLClassLoader +instanceKlass jdk/internal/loader/BuiltinClassLoader +ciInstanceKlass java/security/SecureClassLoader 1 1 102 10 7 12 1 1 1 7 1 10 12 1 9 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 7 1 10 7 1 10 12 1 7 1 10 12 1 11 7 12 1 1 1 7 1 11 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +instanceKlass jdk/internal/loader/ClassLoaders$BootClassLoader +instanceKlass jdk/internal/loader/ClassLoaders$PlatformClassLoader +instanceKlass jdk/internal/loader/ClassLoaders$AppClassLoader +ciInstanceKlass jdk/internal/loader/BuiltinClassLoader 1 1 737 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 7 1 10 12 1 9 12 1 10 12 1 9 12 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 100 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 7 1 10 12 1 10 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 7 1 8 1 8 1 10 9 12 1 1 10 7 12 1 1 11 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 11 7 12 1 1 1 10 7 12 1 1 100 1 10 7 12 1 1 1 10 12 1 100 1 8 1 10 12 1 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 1 11 7 12 1 1 11 12 1 7 1 10 11 12 1 1 11 10 12 1 1 7 1 10 12 1 10 7 12 1 10 12 1 7 1 10 12 1 10 7 12 1 1 1 100 1 10 12 1 1 11 12 1 100 1 100 1 10 12 1 10 12 1 1 100 1 100 1 10 12 1 10 12 1 18 12 1 1 10 12 1 10 12 1 1 18 100 1 10 7 12 1 1 1 7 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 100 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 18 12 1 7 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 10 12 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 11 12 1 7 1 10 12 1 7 1 100 1 10 12 1 10 12 1 11 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 1 10 7 12 1 1 10 12 1 100 1 8 1 8 1 10 10 12 1 8 1 8 1 10 7 12 1 1 1 11 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 10 7 12 1 1 1 8 1 10 12 1 7 1 10 12 1 1 10 12 1 7 1 10 11 12 1 1 10 12 10 12 1 10 12 1 100 1 10 12 1 10 12 1 10 10 12 1 10 7 12 1 1 8 1 10 7 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 16 15 10 12 16 15 10 12 16 1 1 1 100 1 1 1 1 1 100 1 100 1 1 +staticfield jdk/internal/loader/BuiltinClassLoader packageToModule Ljava/util/Map; java/util/concurrent/ConcurrentHashMap +staticfield jdk/internal/loader/BuiltinClassLoader $assertionsDisabled Z 1 +ciInstanceKlass java/security/AccessController 1 1 295 10 100 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 100 1 100 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 9 100 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 10 100 1 10 11 7 12 1 1 1 10 7 12 1 1 11 7 1 100 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 1 8 1 10 100 12 1 1 1 8 1 100 1 10 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 8 1 10 100 12 1 1 8 1 8 1 10 12 1 8 1 10 12 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 3 1 1 1 +staticfield java/security/AccessController $assertionsDisabled Z 1 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor5 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor4 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor3 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor2 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor1 +instanceKlass jdk/internal/reflect/BootstrapConstructorAccessorImpl +instanceKlass jdk/internal/reflect/SerializationConstructorAccessorImpl +instanceKlass jdk/internal/reflect/DelegatingConstructorAccessorImpl +instanceKlass jdk/internal/reflect/NativeConstructorAccessorImpl +ciInstanceKlass jdk/internal/reflect/ConstructorAccessorImpl 1 1 27 10 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 +instanceKlass jdk/internal/reflect/FieldAccessorImpl +instanceKlass jdk/internal/reflect/ConstructorAccessorImpl +instanceKlass jdk/internal/reflect/MethodAccessorImpl +ciInstanceKlass jdk/internal/reflect/MagicAccessorImpl 1 1 16 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/DelegatingMethodAccessorImpl +instanceKlass jdk/internal/reflect/NativeMethodAccessorImpl +ciInstanceKlass jdk/internal/reflect/MethodAccessorImpl 1 1 25 10 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 +ciInstanceKlass java/lang/Module 1 1 959 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 7 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 8 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 9 12 1 1 11 12 1 9 7 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 100 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 10 12 1 9 12 1 1 11 7 12 1 1 10 12 1 1 9 12 1 9 12 1 10 12 1 10 12 1 100 1 8 1 10 10 12 1 1 10 12 1 8 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 18 12 1 1 10 12 1 1 11 12 1 9 12 1 11 12 10 100 12 1 1 100 1 8 1 10 7 1 11 12 1 1 10 12 1 10 12 1 10 12 1 1 11 12 1 1 11 7 12 1 1 11 12 1 1 9 12 1 11 12 1 10 12 1 1 10 12 1 1 9 12 1 10 12 10 7 12 1 1 10 7 12 1 1 10 7 1 18 12 1 1 11 100 12 1 1 1 18 12 1 11 12 1 1 10 100 12 1 1 1 11 12 1 1 10 7 12 1 1 4 7 1 11 12 1 7 1 7 1 10 10 7 12 1 1 1 10 11 7 12 1 8 1 10 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 7 1 10 12 1 10 11 12 1 1 10 12 10 12 1 1 9 12 1 100 1 10 10 12 1 1 11 100 1 10 12 1 1 11 12 1 10 10 12 1 11 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 1 10 10 12 1 1 10 12 1 18 12 1 11 12 1 18 12 1 10 12 1 10 12 1 10 12 7 1 10 12 1 10 12 1 10 12 1 9 12 1 7 1 10 10 10 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 18 12 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 1 10 12 1 1 10 100 12 1 1 100 1 10 12 1 1 100 1 8 1 100 1 10 100 1 100 1 3 10 12 1 100 1 10 12 1 10 12 1 1 10 12 1 1 100 1 10 12 1 10 12 1 1 100 1 100 1 10 12 8 1 10 12 1 1 10 12 1 1 10 100 12 1 1 10 12 1 1 10 12 1 10 12 10 12 1 1 100 1 10 10 12 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 1 10 100 12 1 1 8 1 10 12 1 8 1 10 12 1 10 12 10 12 1 8 1 10 10 100 12 1 1 7 1 10 10 12 1 10 7 12 1 1 9 12 1 9 12 1 9 12 1 9 12 1 10 12 11 12 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 15 10 12 16 16 15 10 12 16 16 15 10 16 1 15 10 12 16 1 15 10 12 16 1 16 15 10 12 16 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Module ALL_UNNAMED_MODULE Ljava/lang/Module; java/lang/Module +staticfield java/lang/Module ALL_UNNAMED_MODULE_SET Ljava/util/Set; java/util/ImmutableCollections$Set12 +staticfield java/lang/Module EVERYONE_MODULE Ljava/lang/Module; java/lang/Module +staticfield java/lang/Module EVERYONE_SET Ljava/util/Set; java/util/ImmutableCollections$Set12 +staticfield java/lang/Module $assertionsDisabled Z 1 +ciInstanceKlass java/util/ArrayList 1 1 492 10 7 12 1 1 1 7 1 9 7 12 1 1 1 9 12 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 11 7 12 1 1 1 9 12 1 1 10 12 1 1 7 10 7 12 1 1 1 9 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 100 1 10 12 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 10 12 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 100 1 10 11 12 1 1 11 7 12 1 1 1 11 12 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 10 10 12 1 1 10 12 1 8 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 11 12 1 100 1 10 100 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 100 1 8 1 10 100 1 10 12 1 7 1 10 12 1 10 12 1 1 7 1 10 12 1 10 12 1 1 11 7 12 1 1 7 1 10 12 1 10 12 1 1 11 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 10 12 1 1 100 1 100 1 100 1 1 1 1 5 0 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 +staticfield java/util/ArrayList EMPTY_ELEMENTDATA [Ljava/lang/Object; 0 [Ljava/lang/Object; +staticfield java/util/ArrayList DEFAULTCAPACITY_EMPTY_ELEMENTDATA [Ljava/lang/Object; 0 [Ljava/lang/Object; +ciInstanceKlass java/util/concurrent/ConcurrentHashMap 1 1 1210 7 1 7 1 3 10 12 1 1 3 100 1 10 7 12 1 1 1 100 1 10 100 12 1 1 1 100 1 11 12 1 1 11 12 1 11 12 1 1 9 12 1 1 9 12 1 1 9 12 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 4 10 12 1 9 12 1 10 12 1 1 100 1 10 5 0 10 12 1 10 12 1 1 5 0 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 9 12 1 9 12 1 1 10 12 1 1 9 12 1 10 12 1 1 9 12 1 1 10 12 1 1 100 1 10 100 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 7 1 100 1 8 1 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 10 12 1 1 11 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 7 1 11 12 1 11 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 9 10 12 1 1 9 12 1 10 12 1 1 5 0 9 12 1 1 7 1 10 12 1 9 12 1 1 7 1 10 12 1 9 12 1 7 1 10 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 11 100 1 10 12 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 8 1 10 12 1 8 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 10 12 1 9 12 1 9 10 12 1 9 12 1 1 11 100 12 1 1 1 11 7 12 1 1 1 100 1 10 12 11 100 12 1 1 10 11 7 12 1 10 12 1 100 1 10 12 1 7 1 10 10 9 7 12 1 1 1 10 12 3 10 100 12 1 1 9 12 1 10 12 1 1 9 12 1 1 9 12 1 10 12 1 1 10 100 12 1 1 9 12 1 9 7 12 1 1 10 12 1 1 10 12 1 3 9 12 1 9 12 1 10 12 1 1 7 1 9 3 9 12 1 100 1 10 12 1 9 12 1 10 12 1 9 12 1 10 12 1 9 12 1 10 100 12 1 1 1 100 10 12 1 100 1 5 0 10 100 12 1 1 100 1 10 12 1 1 10 12 1 10 12 1 100 1 10 12 1 10 100 1 100 1 10 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 1 100 1 10 12 1 10 10 12 1 100 1 10 12 1 10 10 12 1 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 10 100 1 10 10 100 1 10 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 10 100 1 10 10 100 1 10 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 10 12 1 10 7 12 1 1 1 10 12 1 7 1 7 1 10 12 1 9 12 1 1 9 12 1 1 10 12 1 1 8 10 12 1 1 8 8 8 8 7 10 12 1 1 10 12 1 100 1 8 1 10 7 1 100 1 100 1 1 1 5 0 1 1 3 1 3 1 1 1 1 3 1 3 1 3 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/util/concurrent/ConcurrentHashMap NCPU I 4 +staticfield java/util/concurrent/ConcurrentHashMap serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField; +staticfield java/util/concurrent/ConcurrentHashMap U Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield java/util/concurrent/ConcurrentHashMap SIZECTL J 20 +staticfield java/util/concurrent/ConcurrentHashMap TRANSFERINDEX J 32 +staticfield java/util/concurrent/ConcurrentHashMap BASECOUNT J 24 +staticfield java/util/concurrent/ConcurrentHashMap CELLSBUSY J 36 +staticfield java/util/concurrent/ConcurrentHashMap CELLVALUE J 144 +staticfield java/util/concurrent/ConcurrentHashMap ABASE I 16 +staticfield java/util/concurrent/ConcurrentHashMap ASHIFT I 2 +ciInstanceKlass java/lang/String 1 1 1396 10 7 12 1 1 1 8 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 10 7 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 12 1 1 10 12 9 7 12 1 1 3 10 7 12 1 1 1 7 1 11 12 1 1 11 12 1 11 12 1 1 10 7 12 1 1 1 10 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 11 12 1 1 10 12 1 1 10 12 10 12 1 1 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 12 1 1 100 1 100 1 10 12 1 1 10 12 1 1 10 12 1 100 1 100 1 100 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 7 1 11 10 12 1 10 12 11 12 1 11 12 1 10 12 1 1 10 12 1 1 10 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 10 12 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 3 3 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 10 12 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 10 100 1 10 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 100 1 10 10 12 1 100 1 10 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 10 12 1 1 10 100 1 10 10 12 1 10 12 1 1 10 12 1 1 10 100 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 11 7 1 11 12 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 10 12 1 9 12 1 1 11 7 12 1 1 1 10 10 12 1 10 12 1 1 10 10 12 1 10 12 1 10 12 1 1 9 12 1 10 12 1 1 10 10 12 1 1 10 12 10 10 12 1 10 12 10 10 12 10 10 12 1 10 12 1 10 12 10 10 12 10 12 1 10 12 10 12 10 10 12 1 10 12 1 1 10 12 1 10 10 12 1 10 7 12 1 1 1 10 12 1 1 10 10 7 12 1 1 1 11 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 100 12 1 1 10 12 1 100 1 100 1 8 1 10 10 10 12 1 8 1 10 12 1 3 3 7 1 10 10 12 1 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 7 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 11 7 12 1 1 1 11 7 12 1 1 11 12 1 1 10 12 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 10 12 1 10 10 12 10 12 1 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 12 1 1 10 10 12 1 8 1 10 12 1 1 18 12 1 1 11 100 12 1 1 1 7 1 3 18 12 1 18 12 1 8 1 10 100 12 1 1 1 11 12 1 1 10 12 10 10 12 1 10 11 12 1 1 10 12 1 1 11 12 1 18 3 11 10 12 1 11 11 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 11 100 12 1 7 1 100 1 10 12 1 7 1 10 10 7 12 1 1 1 100 1 10 7 1 10 10 12 1 10 10 12 1 8 1 10 10 12 1 8 1 8 1 10 12 1 10 12 1 10 10 12 10 100 12 1 1 10 100 12 1 1 10 100 12 1 1 8 1 10 12 1 10 12 1 1 10 10 12 8 1 8 1 10 8 1 8 1 8 1 8 1 10 12 1 10 12 1 8 1 10 100 12 1 1 1 10 12 10 12 1 1 10 12 10 10 12 10 12 7 1 9 12 1 1 7 1 10 100 1 100 1 100 1 100 1 1 1 1 1 1 5 0 1 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 12 16 15 10 12 15 10 12 15 10 12 1 1 1 1 100 1 100 1 1 1 +staticfield java/lang/String COMPACT_STRINGS Z 1 +staticfield java/lang/String serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField; +staticfield java/lang/String CASE_INSENSITIVE_ORDER Ljava/util/Comparator; java/lang/String$CaseInsensitiveComparator +ciInstanceKlass java/security/ProtectionDomain 1 1 324 10 7 12 1 1 1 9 7 12 1 1 1 7 1 10 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 7 1 9 12 1 9 12 1 1 7 1 9 12 1 1 9 12 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 9 12 1 9 100 12 1 1 10 12 1 1 10 100 1 10 12 1 1 8 1 100 1 8 1 10 12 1 10 10 100 12 1 1 1 10 12 1 1 8 1 11 8 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 8 1 8 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 10 100 12 1 1 1 10 100 1 10 12 1 10 12 1 1 11 100 12 1 1 11 12 1 100 1 11 100 12 1 1 1 10 12 1 10 11 12 1 1 11 12 1 1 10 12 1 10 7 12 1 1 10 100 12 1 1 11 12 1 10 12 8 1 8 1 10 7 12 1 1 1 7 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 +staticfield java/security/ProtectionDomain filePermCompatInPD Z 0 +ciInstanceKlass java/security/CodeSource 1 1 395 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 100 12 1 1 10 100 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 100 1 10 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 100 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 8 1 8 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 1 8 1 10 12 1 8 1 8 1 8 1 10 100 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 100 1 10 12 1 10 12 10 12 1 1 10 100 12 1 1 10 12 1 100 1 10 12 10 8 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 100 1 100 1 8 1 8 1 10 10 12 1 1 10 100 12 1 1 1 100 1 10 12 10 12 1 1 11 100 12 1 1 10 10 12 1 11 10 12 1 8 1 100 1 10 12 1 10 12 1 1 10 12 1 11 12 1 1 11 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StringBuilder 1 1 409 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 7 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 100 1 100 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 10 12 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 100 1 100 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/misc/VM 1 1 314 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 12 1 1 9 12 1 1 9 12 1 3 10 7 12 1 1 1 9 12 1 1 100 1 8 1 10 11 7 12 1 1 1 7 1 10 100 12 1 1 1 8 1 8 1 10 12 1 1 8 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 5 0 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 9 12 1 100 1 10 12 1 10 7 12 1 1 9 12 1 9 12 1 9 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 100 12 1 1 1 5 0 10 1 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 +staticfield jdk/internal/misc/VM lock Ljava/lang/Object; java/lang/Object +ciInstanceKlass jdk/internal/loader/ClassLoaders 1 1 183 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 7 1 11 100 12 1 1 1 100 1 11 12 1 1 11 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 100 1 100 1 10 7 12 1 1 1 9 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 1 7 1 8 1 10 7 12 1 1 1 10 12 1 1 7 1 10 12 1 10 12 1 10 12 1 8 1 10 7 12 1 1 8 1 8 1 10 12 1 7 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/loader/ClassLoaders JLA Ljdk/internal/access/JavaLangAccess; java/lang/System$2 +staticfield jdk/internal/loader/ClassLoaders BOOT_LOADER Ljdk/internal/loader/ClassLoaders$BootClassLoader; jdk/internal/loader/ClassLoaders$BootClassLoader +staticfield jdk/internal/loader/ClassLoaders PLATFORM_LOADER Ljdk/internal/loader/ClassLoaders$PlatformClassLoader; jdk/internal/loader/ClassLoaders$PlatformClassLoader +staticfield jdk/internal/loader/ClassLoaders APP_LOADER Ljdk/internal/loader/ClassLoaders$AppClassLoader; jdk/internal/loader/ClassLoaders$AppClassLoader +ciInstanceKlass jdk/internal/misc/Unsafe 1 1 1285 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 10 10 12 1 1 10 12 1 1 5 0 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 5 0 5 0 5 0 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 100 1 8 1 10 100 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 7 12 1 1 9 12 1 100 1 10 10 12 1 1 8 1 10 8 1 8 1 10 12 1 1 9 7 12 1 1 1 9 100 1 9 7 1 9 100 1 9 9 100 1 9 100 1 9 100 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 5 0 5 0 9 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 8 1 3 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 10 100 1 10 9 12 1 5 0 10 12 1 1 5 0 10 12 1 5 0 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 5 0 5 0 5 0 10 12 1 1 10 12 1 10 12 1 10 12 10 100 12 1 1 8 1 100 1 11 12 1 1 8 1 11 12 1 1 10 100 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 1 10 12 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 10 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/misc/Unsafe theUnsafe Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield jdk/internal/misc/Unsafe ARRAY_BOOLEAN_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_BYTE_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_SHORT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_CHAR_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_INT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_LONG_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_FLOAT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_DOUBLE_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_OBJECT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_BOOLEAN_INDEX_SCALE I 1 +staticfield jdk/internal/misc/Unsafe ARRAY_BYTE_INDEX_SCALE I 1 +staticfield jdk/internal/misc/Unsafe ARRAY_SHORT_INDEX_SCALE I 2 +staticfield jdk/internal/misc/Unsafe ARRAY_CHAR_INDEX_SCALE I 2 +staticfield jdk/internal/misc/Unsafe ARRAY_INT_INDEX_SCALE I 4 +staticfield jdk/internal/misc/Unsafe ARRAY_LONG_INDEX_SCALE I 8 +staticfield jdk/internal/misc/Unsafe ARRAY_FLOAT_INDEX_SCALE I 4 +staticfield jdk/internal/misc/Unsafe ARRAY_DOUBLE_INDEX_SCALE I 8 +staticfield jdk/internal/misc/Unsafe ARRAY_OBJECT_INDEX_SCALE I 4 +staticfield jdk/internal/misc/Unsafe ADDRESS_SIZE I 8 +ciInstanceKlass java/lang/ThreadGroup 1 1 293 10 7 12 1 1 1 9 7 12 1 1 1 8 1 9 12 1 1 7 1 9 12 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 9 12 1 10 100 12 1 1 1 9 12 1 9 12 1 1 10 7 12 1 1 1 100 10 12 1 1 10 7 12 1 1 1 10 100 12 1 9 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 100 1 10 10 12 1 10 12 1 10 12 1 7 10 12 1 9 12 1 1 10 12 1 1 8 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 100 1 100 1 9 12 1 100 1 10 8 1 10 12 1 1 10 12 1 1 8 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 100 1 8 1 10 8 1 10 12 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/security/Provider +ciInstanceKlass java/util/Properties 1 1 651 10 7 12 1 1 1 100 1 10 7 12 1 1 7 1 10 12 1 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 8 1 10 7 12 1 1 1 7 1 10 12 1 10 12 1 1 8 1 10 12 1 7 1 10 12 10 12 1 1 9 12 1 1 10 12 1 1 7 1 10 12 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 100 1 3 10 10 100 12 1 1 1 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 1 8 1 10 100 12 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 12 1 10 12 1 1 100 1 9 100 12 1 1 1 10 12 1 10 12 1 1 100 1 10 10 10 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 7 1 11 12 1 11 12 1 10 12 1 1 8 1 10 12 1 10 12 1 100 1 10 10 12 1 1 10 100 12 1 1 9 100 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 100 1 10 8 1 8 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 1 10 12 1 1 7 1 10 10 12 1 11 7 12 1 1 10 7 12 1 1 1 8 1 10 100 12 1 1 11 8 1 10 100 1 11 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 1 7 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 100 1 10 11 100 12 1 1 4 11 10 12 1 1 10 100 12 1 1 11 12 1 10 12 1 1 10 100 12 1 1 10 12 1 100 1 8 1 10 12 1 10 10 100 12 1 1 1 100 1 6 0 10 12 1 1 11 100 12 1 1 1 10 12 1 10 12 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 100 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 +staticfield java/util/Properties UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +instanceKlass java/util/Hashtable +ciInstanceKlass java/util/Dictionary 1 1 36 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/util/Properties +ciInstanceKlass java/util/Hashtable 1 1 512 100 1 10 7 12 1 1 1 9 7 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 8 1 10 12 1 9 12 1 1 7 1 9 12 1 1 4 10 7 12 1 1 1 9 12 1 4 10 12 1 11 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 1 100 1 10 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 10 12 1 3 9 12 1 9 12 1 3 10 12 1 10 12 1 10 12 1 1 11 12 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 1 100 1 11 12 1 11 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 9 12 9 12 1 1 10 100 1 100 1 10 12 1 10 8 1 10 10 12 1 8 1 10 8 1 10 100 12 1 1 1 7 1 10 12 1 10 12 1 100 1 10 12 1 10 12 1 1 100 1 10 100 1 10 10 12 1 1 11 12 1 1 11 12 1 100 1 10 10 10 100 12 1 1 11 100 12 1 1 1 100 1 10 11 100 12 1 1 11 100 12 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 8 10 100 12 1 1 100 1 8 1 10 4 10 12 4 10 12 1 8 1 10 12 10 100 12 1 1 1 100 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 100 1 100 1 1 1 1 1 1 5 0 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass org/gradle/internal/io/StreamByteBuffer$StreamByteBufferInputStream +instanceKlass sun/nio/ch/ChannelInputStream +instanceKlass com/esotericsoftware/kryo/io/Input +instanceKlass org/gradle/internal/serialize/kryo/KryoBackedDecoder$1 +instanceKlass org/gradle/internal/remote/internal/inet/SocketConnection$SocketInputStream +instanceKlass java/io/ObjectInputStream$PeekInputStream +instanceKlass java/io/ObjectInputStream$BlockDataInputStream +instanceKlass org/gradle/internal/serialize/AbstractDecoder$DecoderStream +instanceKlass java/io/ObjectInputStream +instanceKlass worker/org/gradle/internal/stream/EncodedStream$EncodedInput +instanceKlass java/util/zip/ZipFile$ZipFileInputStream +instanceKlass java/io/FilterInputStream +instanceKlass java/io/FileInputStream +instanceKlass java/io/ByteArrayInputStream +ciInstanceKlass java/io/InputStream 1 1 184 100 1 10 7 12 1 1 1 100 1 10 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 100 1 3 10 12 1 1 100 1 8 1 10 12 1 10 7 12 1 1 1 3 100 1 8 1 10 10 7 12 1 1 1 7 1 10 11 7 12 1 1 1 10 12 1 1 11 12 1 1 11 7 12 1 1 1 11 12 1 1 7 1 10 7 12 1 1 1 5 0 10 12 1 10 12 1 1 100 1 10 8 1 10 8 1 8 1 10 12 1 1 10 100 12 1 1 1 100 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/io/ByteArrayInputStream 1 1 96 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 10 100 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/util/concurrent/ForkJoinWorkerThread +instanceKlass java/util/logging/LogManager$Cleaner +instanceKlass jdk/internal/misc/InnocuousThread +instanceKlass java/lang/ref/Finalizer$FinalizerThread +instanceKlass java/lang/ref/Reference$ReferenceHandler +ciInstanceKlass java/lang/Thread 1 1 610 9 7 12 1 1 1 9 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 100 1 8 1 10 12 1 1 3 8 1 100 1 5 0 10 12 1 1 10 7 12 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 100 1 8 1 10 9 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 10 7 12 1 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 1 10 100 12 1 1 1 9 12 1 10 12 1 1 9 12 1 100 1 10 7 1 10 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 9 12 1 100 1 10 10 12 1 1 10 12 1 10 12 1 100 1 11 7 12 1 1 9 100 12 1 1 1 10 12 1 10 12 1 10 12 9 12 1 1 10 9 12 1 10 12 1 100 1 10 10 12 1 1 9 12 1 10 12 1 11 100 12 1 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 100 1 10 10 12 1 10 12 1 10 12 1 9 100 12 1 1 1 10 12 1 1 10 12 1 100 1 8 1 10 10 12 1 10 12 8 1 10 12 1 8 1 10 8 1 8 1 10 100 12 1 1 10 100 12 1 1 1 100 1 8 1 10 9 12 1 9 12 1 1 10 12 1 1 10 10 12 1 1 9 12 1 10 12 1 1 100 1 10 12 11 100 12 1 1 1 9 100 12 1 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 11 100 12 1 1 1 100 1 10 12 1 10 12 1 1 11 12 1 10 12 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 1 8 1 9 12 1 10 12 1 1 11 100 12 1 1 1 10 100 12 1 1 1 11 12 1 10 12 1 7 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 1 +staticfield java/lang/Thread EMPTY_STACK_TRACE [Ljava/lang/StackTraceElement; 0 [Ljava/lang/StackTraceElement; +ciMethod java/lang/System arraycopy (Ljava/lang/Object;ILjava/lang/Object;II)V 512 0 256 0 -1 +ciInstanceKlass java/lang/StringLatin1 1 1 380 7 1 10 100 12 1 1 1 100 1 10 12 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 10 12 1 10 12 1 1 10 9 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 100 1 10 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 100 1 100 1 8 1 10 12 1 8 1 10 12 100 1 10 10 10 7 12 1 1 1 8 1 8 1 8 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 10 12 1 10 12 10 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +staticfield java/lang/StringLatin1 $assertionsDisabled Z 1 +ciInstanceKlass java/lang/Math 1 1 395 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 7 1 6 0 6 0 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 100 1 3 3 3 10 7 12 1 1 1 100 1 5 0 5 0 5 0 5 0 5 0 9 100 12 1 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 8 1 10 12 1 1 10 12 1 1 100 1 5 0 5 0 100 1 3 5 0 3 5 0 10 12 1 10 12 1 8 1 10 12 1 8 1 9 12 1 1 9 12 1 10 12 1 1 6 0 10 12 1 9 12 1 1 100 1 10 10 12 1 100 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 6 0 10 12 1 1 10 12 1 1 10 12 10 12 1 4 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 5 0 6 0 4 6 0 4 6 0 4 10 12 1 1 9 12 1 1 10 12 1 9 12 1 10 7 12 1 1 1 4 6 0 1 1 6 0 1 6 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Math negativeZeroFloatBits J -2147483648 +staticfield java/lang/Math negativeZeroDoubleBits J -9223372036854775808 +staticfield java/lang/Math $assertionsDisabled Z 1 +ciInstanceKlass java/util/Arrays 1 1 988 10 7 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 100 1 10 12 1 9 100 12 1 1 1 10 7 12 1 1 100 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 100 1 10 12 1 10 12 1 1 7 1 9 7 12 1 1 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 7 1 11 12 1 1 10 12 1 10 7 12 1 1 1 10 12 10 12 1 10 12 1 10 12 10 12 1 11 100 12 1 1 1 10 7 12 1 1 1 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 10 100 12 1 1 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 8 1 7 1 10 12 10 12 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 100 1 10 12 1 9 100 1 100 1 10 12 1 9 100 1 100 1 10 12 1 9 100 1 100 1 10 12 1 9 100 1 100 1 10 12 1 9 100 1 100 1 10 12 1 9 100 1 10 12 1 100 1 10 12 1 10 12 1 9 12 1 100 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 8 1 8 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 3 10 100 1 10 10 12 1 1 11 100 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 11 12 1 8 1 10 11 12 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 1 1 18 12 1 1 11 12 1 1 11 100 12 1 1 1 18 12 1 11 100 12 1 1 1 18 12 1 11 100 12 1 1 1 18 12 1 100 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 10 12 10 12 1 10 12 10 12 1 10 12 1 10 12 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 15 10 12 15 10 12 15 10 12 1 1 100 1 100 1 1 1 1 100 1 1 1 1 1 1 100 1 1 100 1 1 100 1 1 1 100 1 100 1 1 +staticfield java/util/Arrays $assertionsDisabled Z 1 +ciMethod java/lang/StringLatin1 inflate ([BI[BII)V 0 0 16 0 -1 +ciMethod java/lang/StringLatin1 indexOf ([BI[BII)I 200 32968 1336 0 -1 +ciMethod java/lang/StringLatin1 indexOf ([BII)I 514 0 5433 0 448 +ciMethod java/lang/StringLatin1 indexOf ([B[B)I 408 0 5192 0 -1 +ciMethod java/lang/StringLatin1 indexOfChar ([BIII)I 200 10448 1139 0 -1 +ciMethod java/lang/StringLatin1 charAt ([BI)C 760 0 575901 0 128 +ciMethod java/lang/StringLatin1 lastIndexOf ([BII)I 206 30944 752 0 416 +ciMethod java/lang/StringLatin1 newString ([BII)Ljava/lang/String; 432 0 5380 0 1152 +ciMethod java/lang/StringLatin1 canEncode (I)Z 512 0 78767 0 96 +ciInstanceKlass java/lang/StringUTF16 1 1 598 100 1 7 1 10 100 12 1 1 1 100 1 10 7 1 3 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 100 1 8 1 10 12 1 9 12 1 1 9 12 1 10 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 100 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 3 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 10 12 10 12 10 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 100 1 8 1 8 1 10 12 1 1 100 1 10 10 100 12 1 1 1 10 100 12 1 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 10 12 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 5 0 5 0 10 12 1 10 12 10 12 10 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 +staticfield java/lang/StringUTF16 HI_BYTE_SHIFT I 0 +staticfield java/lang/StringUTF16 LO_BYTE_SHIFT I 8 +staticfield java/lang/StringUTF16 $assertionsDisabled Z 1 +ciMethod java/lang/StringUTF16 compress ([BII)[B 274 0 137 0 -1 +ciMethod java/lang/StringUTF16 indexOf ([B[B)I 0 0 1 0 -1 +ciMethod java/lang/StringUTF16 indexOf ([BII)I 0 0 166 0 0 +ciMethod java/lang/StringUTF16 indexOf ([BI[BII)I 0 0 1 0 -1 +ciMethod java/lang/StringUTF16 indexOfChar ([BIII)I 330 0 165 0 -1 +ciMethod java/lang/StringUTF16 indexOfLatin1 ([BI[BII)I 0 0 1 0 -1 +ciMethod java/lang/StringUTF16 indexOfLatin1 ([B[B)I 0 0 1 0 -1 +ciMethod java/lang/StringUTF16 checkIndex (I[B)V 2 0 60 0 -1 +ciMethod java/lang/StringUTF16 getChar ([BI)C 1024 0 27303 0 -1 +ciMethod java/lang/StringUTF16 newBytesFor (I)[B 2 0 13 0 -1 +ciMethod java/lang/StringUTF16 charAt ([BI)C 2 0 5 0 0 +ciMethod java/lang/StringUTF16 lastIndexOf ([BII)I 0 0 1 0 -1 +ciMethod java/lang/StringUTF16 newString ([BII)Ljava/lang/String; 0 0 137 0 0 +ciMethod java/lang/StringUTF16 indexOfSupplementary ([BIII)I 0 0 1 0 -1 +instanceKlass java/lang/Exception +instanceKlass java/lang/Error +ciInstanceKlass java/lang/Throwable 1 1 393 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 100 1 100 1 10 8 1 10 12 1 1 8 1 10 100 12 1 1 10 10 12 1 100 1 8 1 10 10 12 1 1 10 7 12 1 1 10 12 1 8 1 9 100 12 1 1 1 10 12 1 1 100 1 10 12 10 12 1 100 1 10 10 7 12 1 1 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 8 1 8 1 9 12 1 1 10 100 12 1 1 100 1 10 11 12 1 8 1 8 1 10 7 12 1 1 8 1 10 12 1 8 1 100 1 10 12 1 9 12 1 1 10 12 1 10 100 12 1 9 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 1 8 1 10 12 1 1 8 1 10 10 9 100 12 1 1 1 8 1 10 12 1 1 10 100 1 8 1 10 11 12 1 1 8 1 9 12 1 10 100 12 1 1 11 9 12 1 1 11 12 1 1 100 10 12 1 10 12 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Throwable UNASSIGNED_STACK [Ljava/lang/StackTraceElement; 0 [Ljava/lang/StackTraceElement; +staticfield java/lang/Throwable SUPPRESSED_SENTINEL Ljava/util/List; java/util/Collections$EmptyList +staticfield java/lang/Throwable EMPTY_THROWABLE_ARRAY [Ljava/lang/Throwable; 0 [Ljava/lang/Throwable; +staticfield java/lang/Throwable $assertionsDisabled Z 1 +instanceKlass java/text/ParseException +instanceKlass java/util/concurrent/TimeoutException +instanceKlass ch/qos/logback/core/boolex/EvaluationException +instanceKlass ch/qos/logback/core/util/DynamicClassLoadingException +instanceKlass ch/qos/logback/core/util/IncompatibleClassException +instanceKlass ch/qos/logback/core/joran/spi/JoranException +instanceKlass java/util/concurrent/ExecutionException +instanceKlass java/net/URISyntaxException +instanceKlass java/security/PrivilegedActionException +instanceKlass sun/security/pkcs11/wrapper/PKCS11Exception +instanceKlass java/security/GeneralSecurityException +instanceKlass java/lang/CloneNotSupportedException +instanceKlass java/lang/InterruptedException +instanceKlass java/io/IOException +instanceKlass java/lang/ReflectiveOperationException +instanceKlass java/lang/RuntimeException +ciInstanceKlass java/lang/Exception 1 1 40 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/InstantiationException +instanceKlass java/lang/reflect/InvocationTargetException +instanceKlass java/lang/NoSuchFieldException +instanceKlass java/lang/NoSuchMethodException +instanceKlass java/lang/IllegalAccessException +instanceKlass java/lang/ClassNotFoundException +ciInstanceKlass java/lang/ReflectiveOperationException 1 1 34 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass org/testcontainers/dockerclient/InvalidConfigurationException +instanceKlass org/rnorth/ducttape/TimeoutException +instanceKlass ch/qos/logback/core/LogbackException +instanceKlass com/github/dockerjava/api/exception/DockerClientException +instanceKlass org/testcontainers/containers/ContainerFetchException +instanceKlass org/testcontainers/containers/ContainerLaunchException +instanceKlass com/github/dockerjava/api/exception/DockerException +instanceKlass org/junit/internal/AssumptionViolatedException +instanceKlass org/opentest4j/IncompleteExecutionException +instanceKlass org/junit/platform/commons/JUnitException +instanceKlass com/esotericsoftware/kryo/KryoException +instanceKlass java/security/ProviderException +instanceKlass org/gradle/internal/remote/internal/MessageIOException +instanceKlass java/util/MissingResourceException +instanceKlass org/gradle/internal/remote/internal/ConnectException +instanceKlass org/gradle/api/UncheckedIOException +instanceKlass org/gradle/internal/nativeintegration/NativeIntegrationException +instanceKlass net/rubygrapefruit/platform/NativeException +instanceKlass java/util/NoSuchElementException +instanceKlass org/gradle/internal/reflect/NoSuchMethodException +instanceKlass java/lang/TypeNotPresentException +instanceKlass org/gradle/internal/service/ServiceLookupException +instanceKlass java/lang/IndexOutOfBoundsException +instanceKlass java/lang/reflect/UndeclaredThrowableException +instanceKlass org/gradle/internal/operations/BuildOperationInvocationException +instanceKlass org/gradle/internal/UncheckedException +instanceKlass java/lang/UnsupportedOperationException +instanceKlass java/lang/SecurityException +instanceKlass java/lang/IllegalStateException +instanceKlass org/gradle/api/GradleException +instanceKlass java/lang/IllegalArgumentException +instanceKlass java/lang/ArithmeticException +instanceKlass java/lang/NullPointerException +instanceKlass java/lang/IllegalMonitorStateException +instanceKlass java/lang/ArrayStoreException +instanceKlass java/lang/ClassCastException +ciInstanceKlass java/lang/RuntimeException 1 1 40 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/security/InvalidParameterException +instanceKlass org/gradle/internal/service/UnknownServiceException +instanceKlass java/lang/NumberFormatException +ciInstanceKlass java/lang/IllegalArgumentException 1 1 35 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/util/ServiceConfigurationError +instanceKlass java/lang/AssertionError +instanceKlass java/lang/VirtualMachineError +instanceKlass java/lang/LinkageError +instanceKlass java/lang/ThreadDeath +ciInstanceKlass java/lang/Error 1 1 40 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/StackOverflowError +instanceKlass java/lang/OutOfMemoryError +instanceKlass java/lang/InternalError +ciInstanceKlass java/lang/VirtualMachineError 1 1 34 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StackOverflowError 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/ExceptionInInitializerError +instanceKlass java/lang/ClassFormatError +instanceKlass java/lang/IncompatibleClassChangeError +instanceKlass java/lang/BootstrapMethodError +instanceKlass java/lang/NoClassDefFoundError +ciInstanceKlass java/lang/LinkageError 1 1 31 10 7 12 1 1 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ArrayStoreException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ThreadDeath 0 0 21 10 100 12 1 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StackTraceElement 0 0 224 10 100 12 1 1 1 10 100 12 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 8 1 10 100 12 1 1 1 100 1 9 12 1 8 1 9 12 1 9 12 1 9 12 1 1 8 1 10 12 1 1 10 12 1 100 1 10 10 12 1 1 8 1 10 12 1 1 10 12 1 8 1 8 1 8 1 10 12 1 8 1 8 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 100 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 1 10 100 12 1 1 10 100 12 1 1 10 10 12 1 1 10 12 1 10 12 1 1 100 1 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 +instanceKlass org/testcontainers/shaded/com/google/common/collect/ImmutableCollection +instanceKlass java/util/IdentityHashMap$Values +instanceKlass java/util/HashMap$Values +instanceKlass java/util/LinkedHashMap$LinkedValues +instanceKlass java/util/AbstractQueue +instanceKlass java/util/ArrayDeque +instanceKlass java/util/AbstractSet +instanceKlass java/util/ImmutableCollections$AbstractImmutableCollection +instanceKlass java/util/AbstractList +ciInstanceKlass java/util/AbstractCollection 1 1 160 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 1 11 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 7 1 10 100 12 1 1 1 10 100 12 1 1 1 100 1 10 11 12 1 11 7 1 10 12 1 10 12 1 10 100 12 1 1 1 11 8 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/Boolean 1 1 151 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 8 1 10 7 12 1 1 9 12 1 1 9 12 1 8 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 100 1 100 1 10 12 1 1 9 100 12 1 1 9 12 10 100 12 1 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 +staticfield java/lang/Boolean TRUE Ljava/lang/Boolean; java/lang/Boolean +staticfield java/lang/Boolean FALSE Ljava/lang/Boolean; java/lang/Boolean +staticfield java/lang/Boolean TYPE Ljava/lang/Class; java/lang/Class +instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer +ciInstanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer 1 1 32 10 7 12 1 1 1 9 7 12 1 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/LiveStackFrameInfo +ciInstanceKlass java/lang/StackFrameInfo 0 0 132 10 100 12 1 1 1 9 100 12 1 1 1 9 100 1 9 12 1 1 11 100 12 1 1 1 9 12 1 1 11 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 11 12 1 11 12 1 1 11 12 1 10 12 1 1 9 12 1 1 10 12 1 1 10 100 12 1 1 10 12 1 1 11 12 1 1 10 12 1 9 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 +ciInstanceKlass java/lang/LiveStackFrameInfo 0 0 97 10 100 12 1 1 1 9 100 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 1 100 1 10 12 1 1 10 12 1 8 1 10 12 1 1 8 1 8 1 8 1 10 100 1 10 12 1 100 1 10 12 1 100 1 100 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/lang/Character 1 1 576 7 1 100 1 100 1 9 12 1 1 8 1 9 12 1 1 100 1 9 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 10 12 1 1 3 3 3 3 3 10 12 1 1 10 12 1 3 11 7 12 1 1 1 11 12 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 3 10 12 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 10 10 12 1 10 10 12 1 10 12 1 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 10 12 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 1 10 10 12 1 10 5 0 10 12 1 10 12 1 10 10 12 1 10 10 12 1 1 10 10 12 1 10 10 12 1 9 12 1 1 100 1 10 10 12 1 10 12 1 1 3 10 100 12 1 1 1 10 12 1 10 100 12 1 1 100 1 10 10 12 1 1 10 12 1 1 10 12 1 1 8 1 10 12 1 9 100 12 1 1 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 10 10 12 1 1 10 10 12 1 1 100 1 8 1 10 12 1 1 10 7 12 1 1 1 8 1 10 12 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 3 1 3 1 3 1 3 1 1 1 1 1 3 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 3 1 1 3 1 1 1 1 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 +staticfield java/lang/Character TYPE Ljava/lang/Class; java/lang/Class +staticfield java/lang/Character $assertionsDisabled Z 1 +ciMethod java/lang/Character digit (CI)I 634 0 20508 0 -1 +ciInstanceKlass java/lang/Float 1 1 223 7 1 100 1 10 100 12 1 1 1 10 100 12 1 1 1 4 100 1 10 12 1 1 10 12 1 1 8 1 8 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 4 4 4 10 7 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 3 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 1 4 1 1 1 4 1 1 3 1 3 1 3 1 3 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Float TYPE Ljava/lang/Class; java/lang/Class +instanceKlass java/math/BigDecimal +instanceKlass java/math/BigInteger +instanceKlass java/util/concurrent/atomic/Striped64 +instanceKlass java/util/concurrent/atomic/AtomicLong +instanceKlass java/util/concurrent/atomic/AtomicInteger +instanceKlass java/lang/Long +instanceKlass java/lang/Integer +instanceKlass java/lang/Short +instanceKlass java/lang/Byte +instanceKlass java/lang/Double +instanceKlass java/lang/Float +ciInstanceKlass java/lang/Number 1 1 37 10 7 12 1 1 1 10 100 12 1 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/Double 1 1 285 7 1 100 1 10 7 12 1 1 1 10 12 1 1 10 12 1 100 1 10 12 1 1 10 100 12 1 1 1 6 0 8 1 10 12 1 1 8 1 10 12 1 1 8 1 6 0 10 12 1 1 100 1 5 0 5 0 8 1 8 1 10 100 12 1 1 1 10 100 12 1 1 1 8 1 10 12 1 1 8 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 6 0 6 0 6 0 10 7 12 1 1 9 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 5 0 10 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 1 6 0 1 1 1 6 0 1 1 3 1 3 1 3 1 3 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Double TYPE Ljava/lang/Class; java/lang/Class +ciInstanceKlass java/lang/Byte 1 1 215 7 1 100 1 10 100 12 1 1 1 9 12 1 1 8 1 9 12 1 1 100 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 1 100 1 100 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 8 1 8 1 10 7 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 5 0 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 1 1 3 1 3 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Byte TYPE Ljava/lang/Class; java/lang/Class +ciInstanceKlass java/lang/Short 1 1 224 7 1 100 1 100 1 10 100 12 1 1 1 10 12 1 1 100 1 100 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 8 1 9 12 1 1 100 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 10 12 1 1 10 8 1 8 1 10 100 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 3 3 5 0 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 1 1 3 1 3 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Short TYPE Ljava/lang/Class; java/lang/Class +ciInstanceKlass java/lang/Integer 1 1 445 7 1 100 1 7 1 7 1 10 12 1 1 9 12 1 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 9 12 1 1 9 12 1 100 1 8 1 10 12 1 100 1 10 12 1 8 1 10 12 1 1 10 12 1 8 1 10 12 1 8 1 10 12 1 1 3 10 12 1 1 3 10 12 1 1 10 12 1 1 10 7 12 1 1 1 11 7 1 100 1 10 11 10 12 1 1 8 1 10 12 1 1 8 1 100 1 10 12 1 1 10 12 1 1 5 0 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 7 1 9 12 1 1 9 12 1 1 10 12 1 10 7 1 9 12 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 100 1 100 1 10 12 1 1 10 12 1 1 8 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 5 0 3 3 3 3 10 12 1 3 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 3 3 3 3 3 3 9 12 1 1 100 1 100 1 100 1 1 1 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Integer TYPE Ljava/lang/Class; java/lang/Class +staticfield java/lang/Integer digits [C 36 +staticfield java/lang/Integer DigitTens [B 100 +staticfield java/lang/Integer DigitOnes [B 100 +staticfield java/lang/Integer sizeTable [I 10 +ciMethod java/lang/Integer parseInt (Ljava/lang/CharSequence;III)I 12 14 11 0 0 +ciInstanceKlass java/lang/Long 1 1 506 7 1 100 1 7 1 100 1 10 12 1 1 9 12 1 1 9 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 10 12 10 12 1 10 12 1 10 12 1 5 0 5 0 100 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 5 0 5 0 9 12 1 1 9 12 1 5 0 100 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 10 12 1 1 5 0 10 12 1 1 5 0 10 12 1 1 10 12 1 1 10 100 12 1 1 1 11 100 1 100 1 10 11 10 12 1 1 8 1 10 12 1 1 8 1 100 1 10 12 1 1 10 12 1 8 1 8 1 11 12 1 1 10 12 1 10 12 1 10 12 1 5 0 5 0 9 7 12 1 1 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 1 10 7 1 9 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 1 10 12 1 1 5 0 10 12 1 10 12 1 5 0 5 0 5 0 10 12 1 1 5 0 5 0 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 5 0 1 1 1 1 3 1 3 1 5 0 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Long TYPE Ljava/lang/Class; java/lang/Class +instanceKlass java/lang/ref/PhantomReference +instanceKlass java/lang/ref/FinalReference +instanceKlass java/lang/ref/WeakReference +instanceKlass java/lang/ref/SoftReference +ciInstanceKlass java/lang/ref/Reference 1 1 195 9 7 12 1 1 1 9 7 12 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 7 1 10 12 1 10 7 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 10 12 1 1 10 12 1 10 12 1 9 12 1 100 1 100 1 10 12 1 9 12 1 9 12 1 100 1 10 10 12 1 10 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 7 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 7 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/ref/Reference processPendingLock Ljava/lang/Object; java/lang/Object +staticfield java/lang/ref/Reference $assertionsDisabled Z 1 +instanceKlass sun/util/locale/provider/LocaleResources$ResourceReference +instanceKlass sun/util/resources/Bundles$BundleReference +instanceKlass sun/util/locale/LocaleObjectCache$CacheEntry +instanceKlass java/io/ClassCache$CacheRef +instanceKlass java/lang/invoke/LambdaFormEditor$Transform +ciInstanceKlass java/lang/ref/SoftReference 1 1 47 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 +instanceKlass java/util/logging/LogManager$LoggerWeakRef +instanceKlass java/util/logging/Level$KnownLevel +instanceKlass java/lang/WeakPairMap$WeakRefPeer +instanceKlass java/lang/ClassValue$Entry +instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry +instanceKlass java/lang/ThreadLocal$ThreadLocalMap$Entry +instanceKlass java/util/WeakHashMap$Entry +ciInstanceKlass java/lang/ref/WeakReference 1 1 31 10 7 12 1 1 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/ref/Finalizer +ciInstanceKlass java/lang/ref/FinalReference 1 1 47 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 100 1 8 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ref/Finalizer 1 1 152 9 7 12 1 1 1 10 100 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 10 12 1 10 12 1 1 9 12 1 1 100 1 10 12 1 100 1 11 100 12 1 1 100 1 10 12 1 100 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 100 1 10 10 12 1 10 7 12 1 1 1 7 1 10 7 1 10 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/ref/Finalizer lock Ljava/lang/Object; java/lang/Object +staticfield java/lang/ref/Finalizer $assertionsDisabled Z 1 +instanceKlass jdk/internal/ref/PhantomCleanable +instanceKlass jdk/internal/ref/Cleaner +ciInstanceKlass java/lang/ref/PhantomReference 1 1 39 10 100 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/reflect/Executable +instanceKlass java/lang/reflect/Field +ciInstanceKlass java/lang/reflect/AccessibleObject 1 1 398 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 1 100 1 10 7 12 1 1 1 11 12 1 100 1 10 12 1 7 1 100 1 10 12 1 10 12 1 1 7 1 10 100 12 1 1 1 10 12 1 1 100 1 10 12 1 1 100 1 10 10 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 100 1 10 12 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 10 11 100 1 100 1 8 1 10 10 12 1 10 12 1 1 8 1 10 12 1 8 1 10 12 1 1 10 100 1 8 1 10 11 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 1 100 1 10 12 1 7 1 10 12 1 10 12 1 1 10 100 1 10 12 1 10 12 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 10 100 12 1 1 8 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 9 12 1 100 1 10 7 1 10 10 7 12 1 1 1 7 1 10 10 7 12 1 1 1 7 1 9 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/reflect/AccessibleObject reflectionFactory Ljdk/internal/reflect/ReflectionFactory; jdk/internal/reflect/ReflectionFactory +instanceKlass java/lang/reflect/Constructor +instanceKlass java/lang/reflect/Method +ciInstanceKlass java/lang/reflect/Executable 1 1 548 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 8 1 10 10 12 1 1 10 12 1 1 10 100 12 1 1 1 18 12 1 1 11 100 12 1 1 1 8 1 8 1 8 1 10 100 12 1 1 1 11 12 1 1 100 1 8 1 8 1 10 12 1 100 1 8 1 10 12 1 8 1 11 100 12 1 1 1 100 1 10 12 1 1 11 12 1 8 1 18 8 1 10 12 1 10 12 1 1 18 8 1 10 12 1 100 1 10 12 1 10 12 1 11 100 12 1 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 1 10 10 12 1 100 1 10 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 8 1 10 12 1 10 12 1 3 100 1 8 1 10 12 1 10 12 1 10 10 12 1 10 12 1 1 8 1 8 1 8 1 9 12 1 10 12 1 100 1 8 1 9 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 1 100 1 10 12 1 10 12 1 1 100 1 10 100 12 1 1 1 7 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 10 7 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 10 12 1 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 9 12 1 10 10 10 10 100 12 1 1 1 10 12 1 9 12 1 10 12 1 1 9 12 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 15 10 100 12 1 1 1 16 15 16 1 16 1 15 10 12 16 1 100 1 1 100 1 100 1 1 +ciInstanceKlass java/lang/reflect/Constructor 1 1 429 10 100 12 1 1 1 10 100 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 100 1 8 1 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 7 1 100 1 8 1 10 10 12 1 10 12 1 10 12 1 1 10 12 1 1 100 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 8 1 10 10 12 1 100 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 8 1 10 12 1 1 11 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 100 12 1 1 10 12 1 10 12 1 10 12 1 100 1 8 1 10 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 1 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/lang/reflect/Method 1 1 446 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 9 12 1 1 8 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 10 12 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 7 1 10 7 12 1 1 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 10 8 1 10 12 1 10 12 1 7 1 8 1 8 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 11 100 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 10 7 12 1 1 1 7 1 100 1 100 1 10 12 1 10 12 1 1 10 12 1 100 1 8 1 10 12 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/Field 1 1 437 9 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 9 12 1 1 9 12 1 10 12 1 10 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 7 1 10 100 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 1 8 1 10 12 10 12 1 8 1 8 1 10 11 100 1 9 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 10 12 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 11 7 1 10 12 1 7 1 10 100 12 1 1 1 10 7 12 1 1 1 9 12 1 10 7 12 1 1 1 11 7 12 1 1 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/lang/reflect/Parameter 0 0 226 10 100 12 1 1 1 9 100 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 10 10 12 1 1 11 100 12 1 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 8 1 8 1 10 100 12 1 1 1 10 12 1 10 12 10 12 1 8 1 10 12 1 9 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 10 100 12 1 1 100 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 100 1 10 11 12 1 1 11 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass java/lang/StringBuffer 1 1 470 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 10 100 1 10 10 100 12 1 1 1 10 10 12 1 10 8 10 100 12 1 1 1 8 10 12 1 8 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 7 1 10 12 100 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 7 1 10 12 1 9 7 12 1 1 1 9 7 1 9 12 1 1 100 1 100 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/StringBuffer serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField; +ciInstanceKlass java/lang/CharSequence 1 1 130 11 100 12 1 1 1 18 12 1 1 100 1 10 100 12 1 1 1 18 10 100 12 1 1 1 10 100 12 1 1 1 100 1 11 12 1 1 10 100 12 1 1 1 11 12 1 1 100 1 10 12 1 1 10 100 12 1 1 1 100 1 10 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 1 15 11 12 16 15 11 12 1 1 100 1 100 1 1 100 1 1 100 1 100 1 1 +ciMethod java/lang/CharSequence length ()I 0 0 1 0 -1 +ciMethod java/lang/CharSequence charAt (I)C 0 0 1 0 -1 +instanceKlass java/lang/StringBuilder +instanceKlass java/lang/StringBuffer +ciInstanceKlass java/lang/AbstractStringBuilder 1 1 547 7 1 7 1 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 3 3 10 12 1 10 12 1 1 11 7 1 100 1 100 1 10 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 10 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 8 1 10 10 12 1 1 100 1 10 12 10 12 1 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 10 12 1 1 10 12 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 1 18 12 1 1 100 1 10 100 12 1 1 1 18 10 12 1 1 10 12 1 10 12 1 1 11 12 1 10 12 1 10 12 1 10 10 12 1 10 8 1 8 1 8 1 10 10 100 1 10 12 1 100 1 10 100 1 10 100 1 1 1 3 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 15 10 100 12 1 1 1 16 1 15 10 12 16 15 10 12 1 1 1 1 100 1 100 1 1 +staticfield java/lang/AbstractStringBuilder EMPTYVALUE [B 0 +ciMethod java/lang/AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 298 0 11469 0 1216 +ciMethod java/lang/AbstractStringBuilder (I)V 286 0 11312 0 576 +ciMethod java/lang/AbstractStringBuilder inflate ()V 0 0 12 0 0 +ciMethod java/lang/AbstractStringBuilder isLatin1 ()Z 866 0 38007 0 0 +ciMethod java/lang/AbstractStringBuilder getCoder ()B 512 0 11483 0 0 +ciMethod java/lang/AbstractStringBuilder newCapacity (I)I 26 0 5173 0 192 +ciMethod java/lang/AbstractStringBuilder ensureCapacityInternal (I)V 514 0 5668 0 384 +ciMethod java/lang/AbstractStringBuilder appendNull ()Ljava/lang/AbstractStringBuilder; 0 0 1 0 -1 +ciMethod java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;)V 512 0 11469 0 0 +ciMethod java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;II)V 510 0 11469 0 0 +ciInstanceKlass java/lang/SecurityManager 0 0 576 10 100 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 10 12 1 1 10 100 12 1 1 1 10 100 1 10 100 1 10 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 100 1 8 1 10 9 12 1 1 9 12 1 8 1 9 12 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 10 12 1 1 100 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 10 100 12 1 1 1 10 12 1 1 8 1 100 1 8 1 10 8 1 8 1 8 1 8 1 8 1 10 100 12 1 1 8 1 100 1 8 1 8 1 10 8 1 10 12 1 100 1 8 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 10 100 12 1 1 11 100 12 1 1 1 18 12 1 1 11 100 12 1 1 1 18 12 1 1 11 12 1 1 18 18 11 12 1 18 12 1 11 12 1 1 9 12 1 1 9 12 1 9 12 1 9 12 1 100 1 10 100 12 1 1 10 12 1 10 12 1 18 12 1 18 10 100 12 1 1 1 18 12 1 10 12 1 18 18 8 1 10 12 1 9 12 1 1 11 100 12 1 1 1 8 1 100 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 1 8 1 100 1 10 9 12 1 8 1 10 12 1 8 1 100 1 10 10 100 12 1 1 10 100 1 9 100 12 1 1 1 11 12 1 1 10 12 1 11 12 1 10 12 1 100 1 10 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 100 12 1 1 1 16 1 16 15 10 12 16 1 15 10 12 16 15 11 100 1 16 1 16 1 15 10 12 16 15 10 12 16 15 10 12 1 16 1 15 11 12 1 15 10 12 16 15 10 16 1 1 1 1 100 1 100 1 1 +ciInstanceKlass java/security/AccessControlContext 1 1 373 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 8 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 100 1 10 12 1 11 100 12 1 1 1 11 12 1 11 12 1 11 12 1 1 7 1 11 12 1 1 10 12 1 10 100 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 11 100 12 1 1 1 10 7 1 100 1 8 1 10 12 1 10 12 1 1 7 1 10 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 10 7 12 1 1 1 9 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 7 1 10 10 12 1 1 10 100 12 1 1 1 10 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 8 1 10 12 1 8 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 8 1 8 1 100 1 10 12 1 10 12 1 1 7 1 10 12 1 8 1 10 12 1 10 12 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 10 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 +ciInstanceKlass java/net/URL 1 1 743 10 7 12 1 1 1 10 12 1 10 7 12 1 1 9 12 1 1 9 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 8 1 10 12 1 1 100 1 10 10 12 1 1 8 1 10 12 1 1 9 12 1 100 1 8 1 10 12 1 10 12 1 8 1 9 12 1 10 12 1 1 9 12 1 10 12 1 10 12 1 9 12 1 9 12 1 8 1 9 12 1 10 12 1 1 8 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 8 1 10 12 1 7 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 8 1 9 12 1 8 1 10 12 1 10 7 12 1 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 1 100 1 8 1 10 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 10 10 7 12 1 1 1 10 12 1 9 100 12 1 1 1 10 100 12 1 1 1 9 12 1 1 10 12 1 10 100 12 1 1 1 100 1 100 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 10 10 12 1 100 1 10 12 1 10 12 1 1 8 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 100 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 9 12 1 1 9 12 1 1 100 1 8 1 10 10 12 1 9 12 1 1 10 7 12 1 1 8 1 10 7 12 1 1 8 1 10 12 1 1 10 12 1 8 1 8 1 10 7 12 1 1 1 100 1 10 100 12 1 1 1 10 12 1 10 12 1 100 1 10 9 12 1 1 10 7 12 1 1 8 1 10 12 1 1 100 1 10 10 100 12 1 1 1 8 9 100 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 11 7 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 1 8 10 100 12 1 1 100 1 10 8 8 10 12 1 8 8 8 100 1 10 12 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 10 12 1 1 10 12 1 1 10 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 10 12 1 100 1 8 1 10 10 10 12 1 1 10 12 1 10 12 1 1 8 1 7 1 10 10 10 7 1 10 12 1 9 7 12 1 1 1 9 12 1 1 7 1 10 10 7 12 1 1 1 100 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/net/URL defaultFactory Ljava/net/URLStreamHandlerFactory; java/net/URL$DefaultFactory +staticfield java/net/URL streamHandlerLock Ljava/lang/Object; java/lang/Object +staticfield java/net/URL serialPersistentFields [Ljava/io/ObjectStreamField; 7 [Ljava/io/ObjectStreamField; +ciMethod java/net/URL set (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 534 0 6525 0 -1 +ciMethod java/net/URL isBuiltinStreamHandler (Ljava/lang/String;)Z 510 0 6853 0 -1 +ciMethod java/net/URL isBuiltinStreamHandler (Ljava/net/URLStreamHandler;)Z 512 0 6853 0 -1 +ciMethod java/net/URL getHost ()Ljava/lang/String; 264 0 132 0 0 +ciMethod java/net/URL getPort ()I 256 0 128 0 0 +ciMethod java/net/URL getProtocol ()Ljava/lang/String; 256 0 128 0 0 +ciMethod java/net/URL getAuthority ()Ljava/lang/String; 256 0 128 0 0 +ciMethod java/net/URL getRef ()Ljava/lang/String; 256 0 128 0 0 +ciMethod java/net/URL getQuery ()Ljava/lang/String; 256 0 128 0 0 +ciMethod java/net/URL getPath ()Ljava/lang/String; 256 0 128 0 0 +ciMethod java/net/URL getUserInfo ()Ljava/lang/String; 264 0 132 0 0 +ciInstanceKlass java/util/jar/Manifest 1 1 336 10 7 12 1 1 1 7 1 10 9 7 12 1 1 1 7 1 10 9 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 7 1 11 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 11 100 1 10 12 1 10 12 1 1 11 12 1 1 10 12 1 11 12 1 1 11 100 12 1 1 1 11 100 12 1 1 11 12 1 1 100 1 10 12 1 8 1 11 12 1 100 1 10 12 1 1 11 12 1 10 12 1 10 12 1 10 100 12 1 1 1 8 1 10 12 1 1 10 9 100 12 1 1 1 10 12 1 1 10 100 12 1 10 12 1 10 12 1 9 100 12 1 1 1 8 1 10 12 1 8 1 8 1 7 1 10 12 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 1 8 1 10 10 12 1 1 8 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 11 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 11 10 12 1 11 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/util/Objects 1 1 151 10 7 12 1 1 1 100 1 8 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 1 100 1 10 10 12 1 8 1 10 7 12 1 1 1 8 1 100 1 11 12 1 1 8 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/util/Collections$SingletonMap +instanceKlass org/springframework/util/ConcurrentReferenceHashMap +instanceKlass java/util/TreeMap +instanceKlass java/util/concurrent/ConcurrentSkipListMap +instanceKlass java/util/EnumMap +instanceKlass java/util/IdentityHashMap +instanceKlass java/util/WeakHashMap +instanceKlass java/util/Collections$EmptyMap +instanceKlass sun/util/PreHashedMap +instanceKlass java/util/HashMap +instanceKlass java/util/ImmutableCollections$AbstractImmutableMap +instanceKlass java/util/concurrent/ConcurrentHashMap +ciInstanceKlass java/util/AbstractMap 1 1 192 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 10 11 12 1 1 11 7 12 1 1 1 11 12 1 1 7 1 11 12 1 10 12 1 1 11 12 1 100 1 10 11 12 1 11 7 1 10 12 1 1 11 12 1 9 12 1 1 7 1 10 12 1 9 12 1 1 100 1 10 11 11 12 1 1 11 12 1 100 1 100 1 11 12 1 8 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 1 1 1 1 +instanceKlass org/testcontainers/shaded/com/google/common/collect/Lists$Partition +instanceKlass org/testcontainers/shaded/com/google/common/collect/Lists$TransformingRandomAccessList +instanceKlass sun/security/jca/ProviderList$3 +instanceKlass java/util/AbstractSequentialList +instanceKlass java/util/Collections$SingletonList +instanceKlass java/util/Vector +instanceKlass java/util/ArrayList$SubList +instanceKlass java/util/Arrays$ArrayList +instanceKlass java/util/Collections$EmptyList +instanceKlass java/util/ArrayList +ciInstanceKlass java/util/AbstractList 1 1 218 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 1 11 7 12 1 1 1 11 12 1 1 11 12 1 10 7 12 1 1 1 10 12 1 11 12 1 11 12 1 11 12 1 10 12 1 1 10 12 1 1 11 100 12 1 1 1 11 7 1 11 7 1 10 12 1 7 1 10 12 1 10 12 1 1 100 1 100 1 10 12 1 100 1 10 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 8 1 100 1 8 1 8 1 8 1 10 7 1 11 10 10 12 1 11 12 1 10 12 1 1 8 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 +ciInstanceKlass sun/net/util/IPAddressUtil 1 1 607 10 100 12 1 1 1 7 1 10 7 12 1 1 1 10 12 1 1 5 0 10 12 1 1 5 0 10 12 1 1 9 12 1 1 10 12 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 3 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 100 1 10 100 12 1 1 1 10 12 1 9 12 1 1 18 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 18 12 1 1 10 100 12 1 1 1 100 1 11 12 1 8 1 10 10 12 1 11 12 1 1 100 1 10 12 1 1 10 100 12 1 1 1 8 1 8 1 8 1 10 12 1 8 1 8 1 8 1 10 12 1 5 0 5 0 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 5 0 5 0 8 1 8 1 5 0 8 1 5 0 8 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 5 0 5 0 10 12 1 9 12 1 1 10 12 1 10 7 1 10 12 1 10 12 1 1 10 100 12 1 1 1 10 12 1 5 0 9 12 1 1 10 12 1 1 5 0 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 100 1 8 1 10 12 1 10 12 1 9 12 1 10 10 12 1 1 10 100 12 1 1 1 18 11 100 12 1 1 1 18 12 1 1 11 12 1 1 11 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 10 3 3 3 3 3 3 3 3 3 8 1 8 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 1 1 3 1 3 1 3 1 1 1 1 5 0 1 5 0 1 5 0 1 5 0 1 5 0 1 1 1 1 5 0 1 1 1 5 0 1 1 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 1 15 10 12 16 16 1 15 10 12 16 15 10 12 1 16 1 16 15 10 12 16 1 1 100 1 100 1 1 +staticfield sun/net/util/IPAddressUtil cache Ljava/util/concurrent/ConcurrentHashMap; java/util/concurrent/ConcurrentHashMap +staticfield sun/net/util/IPAddressUtil OTHERS [C 17 +staticfield sun/net/util/IPAddressUtil SUPPORTED_RADIXES [I 3 +staticfield sun/net/util/IPAddressUtil ALLOW_AMBIGUOUS_IPADDRESS_LITERALS_SP_VALUE Z 0 +staticfield sun/net/util/IPAddressUtil $assertionsDisabled Z 1 +ciMethod java/util/Objects requireNonNull (Ljava/lang/Object;)Ljava/lang/Object; 586 0 24360 0 -1 +ciInstanceKlass java/lang/AssertionStatusDirectives 0 0 24 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/invoke/MethodHandleNatives$CallSiteContext 1 1 49 10 7 12 1 1 1 7 1 10 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass jdk/internal/invoke/NativeEntryPoint 0 0 92 10 100 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 100 1 9 12 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 1 100 1 8 1 10 12 1 11 100 12 1 1 1 10 12 1 1 10 12 1 11 100 12 1 1 11 12 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/invoke/VolatileCallSite +instanceKlass java/lang/invoke/MutableCallSite +instanceKlass java/lang/invoke/ConstantCallSite +ciInstanceKlass java/lang/invoke/CallSite 1 1 302 10 7 12 1 1 1 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 100 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 10 12 1 1 100 1 100 1 10 10 100 12 1 1 1 10 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 100 12 1 1 10 12 1 1 9 12 1 9 100 12 1 1 1 8 1 10 7 12 1 1 1 10 12 1 1 100 1 10 12 1 1 9 12 1 8 1 100 1 10 12 1 10 12 1 100 1 8 1 10 10 12 1 10 12 1 1 100 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 8 10 12 1 1 9 12 1 1 100 1 10 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 100 1 8 1 10 10 12 10 12 1 1 100 1 100 1 100 1 8 1 10 12 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/CallSite $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/VolatileCallSite 0 0 37 10 100 12 1 1 1 10 12 1 10 100 12 1 1 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/invoke/MethodType 1 1 771 7 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 9 7 12 1 1 8 1 10 100 12 1 1 1 9 7 1 9 7 1 10 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 100 1 10 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 9 12 1 11 12 1 1 7 7 1 10 7 12 1 1 1 10 12 1 9 12 1 1 10 7 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 9 12 1 1 10 12 1 1 100 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 8 1 10 12 1 1 9 12 1 1 100 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 10 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 12 10 12 1 10 12 1 100 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 10 11 12 1 1 11 12 1 10 100 12 1 1 1 9 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 9 12 1 1 7 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 8 1 10 7 12 1 1 1 11 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 100 1 10 12 1 1 11 100 12 1 1 1 18 12 1 1 11 12 1 1 18 12 1 11 12 1 100 1 11 100 12 1 1 10 12 1 100 1 10 12 1 10 100 12 1 1 10 12 1 1 9 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 9 12 1 10 100 12 1 1 10 12 1 100 10 12 1 1 10 12 1 10 7 1 7 1 9 12 1 1 100 1 100 1 100 1 1 1 5 0 1 1 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 12 16 16 15 10 12 16 1 1 1 1 100 1 1 100 1 1 100 1 100 1 1 +staticfield java/lang/invoke/MethodType internTable Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet; java/lang/invoke/MethodType$ConcurrentWeakInternSet +staticfield java/lang/invoke/MethodType NO_PTYPES [Ljava/lang/Class; 0 [Ljava/lang/Class; +staticfield java/lang/invoke/MethodType objectOnlyTypes [Ljava/lang/invoke/MethodType; 20 [Ljava/lang/invoke/MethodType; +staticfield java/lang/invoke/MethodType METHOD_HANDLE_ARRAY [Ljava/lang/Class; 1 [Ljava/lang/Class; +staticfield java/lang/invoke/MethodType serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField; +staticfield java/lang/invoke/MethodType $assertionsDisabled Z 1 +ciInstanceKlass java/lang/BootstrapMethodError 0 0 45 10 100 12 1 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +instanceKlass jdk/net/UnixDomainPrincipal +ciInstanceKlass java/lang/Record 0 0 22 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ClassNotFoundException 1 1 96 7 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 10 7 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 7 1 10 12 1 9 12 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/ClassNotFoundException serialPersistentFields [Ljava/io/ObjectStreamField; 1 [Ljava/io/ObjectStreamField; +ciInstanceKlass jdk/internal/loader/ClassLoaders$AppClassLoader 1 1 119 8 1 10 7 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 7 1 8 1 10 12 10 7 12 1 1 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +ciInstanceKlass jdk/internal/loader/ClassLoaders$PlatformClassLoader 1 1 42 8 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 +ciInstanceKlass java/lang/ArithmeticException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/NullPointerException 1 1 52 10 100 12 1 1 1 10 12 1 9 100 12 1 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 1 1 5 0 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 +ciInstanceKlass java/lang/IllegalMonitorStateException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/OutOfMemoryError 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/InternalError 0 0 34 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ClassCastException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/NoClassDefFoundError 0 0 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +instanceKlass java/nio/IntBuffer +instanceKlass java/nio/LongBuffer +instanceKlass java/nio/CharBuffer +instanceKlass java/nio/ByteBuffer +ciInstanceKlass java/nio/Buffer 1 1 224 100 1 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 8 1 9 12 1 1 100 1 8 1 10 12 1 8 1 8 1 9 12 10 12 1 8 1 8 1 8 1 10 12 1 8 1 8 1 8 1 100 1 10 100 1 10 100 1 10 100 1 10 10 100 12 1 1 1 10 11 100 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 7 1 10 10 7 12 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/nio/Buffer UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield java/nio/Buffer SCOPED_MEMORY_ACCESS Ljdk/internal/misc/ScopedMemoryAccess; jdk/internal/misc/ScopedMemoryAccess +staticfield java/nio/Buffer $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/util/ArraysSupport 1 1 271 7 1 100 1 8 1 10 12 1 1 10 12 1 1 10 100 12 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 100 12 1 1 1 9 12 1 10 12 9 12 1 10 12 1 1 10 12 9 12 1 9 12 1 10 12 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 10 12 1 1 10 100 12 1 1 1 9 12 1 9 12 1 10 12 1 1 10 12 1 9 12 1 10 12 1 10 100 12 1 1 1 9 12 1 9 12 1 10 12 1 10 12 1 10 7 12 1 1 1 3 10 12 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 8 1 10 12 1 1 10 10 12 1 1 10 12 1 1 9 12 1 10 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/util/ArraysSupport U Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield jdk/internal/util/ArraysSupport BIG_ENDIAN Z 0 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_BOOLEAN_INDEX_SCALE I 0 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_BYTE_INDEX_SCALE I 0 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_CHAR_INDEX_SCALE I 1 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_SHORT_INDEX_SCALE I 1 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_INT_INDEX_SCALE I 2 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_LONG_INDEX_SCALE I 3 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_FLOAT_INDEX_SCALE I 2 +staticfield jdk/internal/util/ArraysSupport LOG2_ARRAY_DOUBLE_INDEX_SCALE I 3 +staticfield jdk/internal/util/ArraysSupport LOG2_BYTE_BIT_SIZE I 3 +ciMethod jdk/internal/util/ArraysSupport newLength (III)I 512 0 5466 0 -1 +ciInstanceKlass jdk/internal/misc/UnsafeConstants 1 1 34 10 100 12 1 1 1 9 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/misc/UnsafeConstants ADDRESS_SIZE0 I 8 +staticfield jdk/internal/misc/UnsafeConstants PAGE_SIZE I 4096 +staticfield jdk/internal/misc/UnsafeConstants BIG_ENDIAN Z 0 +staticfield jdk/internal/misc/UnsafeConstants UNALIGNED_ACCESS Z 1 +staticfield jdk/internal/misc/UnsafeConstants DATA_CACHE_LINE_FLUSH_SIZE I 0 +instanceKlass java/lang/invoke/DelegatingMethodHandle +instanceKlass java/lang/invoke/BoundMethodHandle +instanceKlass java/lang/invoke/DirectMethodHandle +ciInstanceKlass java/lang/invoke/MethodHandle 1 1 644 100 1 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 7 1 7 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 9 12 1 1 10 12 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 8 1 10 12 1 1 8 1 10 12 1 8 1 10 100 12 1 1 1 9 12 1 1 100 1 10 9 100 12 1 1 1 9 100 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 11 12 1 10 12 1 10 12 1 1 10 100 12 1 1 1 100 1 11 12 1 10 100 1 11 12 1 100 1 10 12 1 11 12 1 9 100 12 1 1 1 11 12 1 1 11 100 12 1 1 1 10 12 1 1 9 12 1 11 12 1 9 12 1 9 12 1 9 12 1 11 12 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 8 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 10 10 7 12 1 1 10 12 1 1 100 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 10 100 12 1 1 1 10 12 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 8 1 9 12 1 9 12 1 1 9 12 1 1 10 12 1 7 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 11 7 12 1 1 9 12 1 10 12 1 1 10 12 1 9 12 1 10 12 1 8 10 12 1 1 8 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 100 1 1 1 1 +staticfield java/lang/invoke/MethodHandle FORM_OFFSET J 20 +staticfield java/lang/invoke/MethodHandle UPDATE_OFFSET J 13 +staticfield java/lang/invoke/MethodHandle $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/reflect/CallerSensitive 0 0 17 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/reflect/NativeConstructorAccessorImpl 1 1 126 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 7 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 10 12 1 1 8 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 +staticfield jdk/internal/reflect/NativeConstructorAccessorImpl U Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield jdk/internal/reflect/NativeConstructorAccessorImpl GENERATED_OFFSET J 16 +instanceKlass java/lang/invoke/DirectMethodHandle$Special +instanceKlass java/lang/invoke/DirectMethodHandle$Interface +instanceKlass java/lang/invoke/DirectMethodHandle$Accessor +instanceKlass java/lang/invoke/DirectMethodHandle$Constructor +ciInstanceKlass java/lang/invoke/DirectMethodHandle 1 1 940 7 1 7 1 100 1 7 1 7 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 7 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 9 12 1 1 100 1 10 9 12 1 1 9 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 7 1 10 12 1 7 1 10 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 100 1 10 12 1 10 12 1 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 8 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 9 7 12 1 1 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 9 7 12 1 1 1 8 1 9 12 1 9 12 1 8 1 9 12 1 9 12 1 8 1 9 12 1 9 12 1 8 1 10 12 1 10 12 1 1 9 12 1 1 7 1 10 12 1 1 100 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 7 1 9 12 9 12 1 10 7 12 1 1 1 10 12 1 7 1 7 1 7 1 9 12 1 1 10 7 12 1 10 12 1 1 10 12 1 100 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 10 12 1 8 1 9 12 1 9 12 1 10 12 1 9 12 1 1 10 100 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 9 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 8 1 9 12 1 1 9 12 1 1 10 12 1 10 12 1 1 9 7 1 10 12 1 9 12 1 1 10 12 10 12 1 10 12 1 10 12 1 10 8 1 8 1 8 1 8 1 10 12 1 1 9 12 1 1 10 12 1 10 100 12 1 1 1 8 9 12 1 1 10 12 1 1 8 1 8 8 9 12 1 8 1 8 8 8 8 8 1 8 10 12 1 10 12 1 8 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 7 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 3 1 3 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/DirectMethodHandle IMPL_NAMES Ljava/lang/invoke/MemberName$Factory; java/lang/invoke/MemberName$Factory +staticfield java/lang/invoke/DirectMethodHandle FT_UNCHECKED_REF I 8 +staticfield java/lang/invoke/DirectMethodHandle ACCESSOR_FORMS [Ljava/lang/invoke/LambdaForm; 132 [Ljava/lang/invoke/LambdaForm; +staticfield java/lang/invoke/DirectMethodHandle ALL_WRAPPERS [Lsun/invoke/util/Wrapper; 10 [Lsun/invoke/util/Wrapper; +staticfield java/lang/invoke/DirectMethodHandle NFS [Ljava/lang/invoke/LambdaForm$NamedFunction; 12 [Ljava/lang/invoke/LambdaForm$NamedFunction; +staticfield java/lang/invoke/DirectMethodHandle OBJ_OBJ_TYPE Ljava/lang/invoke/MethodType; java/lang/invoke/MethodType +staticfield java/lang/invoke/DirectMethodHandle LONG_OBJ_TYPE Ljava/lang/invoke/MethodType; java/lang/invoke/MethodType +staticfield java/lang/invoke/DirectMethodHandle $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/LambdaForm 1 1 1052 100 1 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 9 12 1 1 10 12 1 1 100 1 10 9 12 1 10 12 1 1 9 12 1 10 7 12 1 1 1 9 12 1 9 12 1 9 12 1 1 9 12 1 10 12 1 1 7 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 9 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 7 1 10 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 1 7 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 9 12 1 1 10 12 1 9 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 9 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 8 1 8 1 9 12 1 9 12 1 9 12 1 1 10 12 1 1 10 12 1 9 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 9 12 1 7 1 10 12 1 1 9 12 1 10 12 1 10 12 1 1 10 12 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 1 7 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 8 1 10 12 1 1 8 1 8 1 8 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 9 12 1 1 8 1 10 100 12 1 1 1 10 7 12 1 1 10 12 10 10 12 1 1 9 12 1 8 10 12 1 1 100 1 10 12 1 1 10 12 1 9 7 12 1 1 9 12 1 1 8 1 10 100 12 1 1 10 12 1 1 100 1 100 1 10 10 12 1 1 10 12 1 1 8 1 8 1 100 1 8 1 10 12 10 12 1 10 12 1 10 12 1 1 8 1 8 1 9 100 12 1 1 1 10 12 1 10 12 1 1 8 1 8 1 8 1 100 1 8 1 100 1 8 1 100 1 8 1 10 12 1 8 1 9 10 7 12 1 1 1 10 12 1 9 12 1 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 100 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 8 1 8 1 100 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 8 1 8 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 12 1 1 8 1 10 12 1 1 9 12 1 1 10 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 7 1 10 7 12 1 1 1 9 12 1 10 12 1 10 12 1 8 1 10 12 1 9 12 1 1 7 1 10 7 12 1 1 1 8 1 100 1 10 12 1 9 12 1 9 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 9 7 12 1 1 10 12 1 1 10 12 1 10 12 1 9 12 10 12 1 10 10 12 1 9 9 12 1 7 9 12 1 1 10 12 1 1 9 12 1 10 12 1 10 7 1 9 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/LambdaForm COMPILE_THRESHOLD I 0 +staticfield java/lang/invoke/LambdaForm INTERNED_ARGUMENTS [[Ljava/lang/invoke/LambdaForm$Name; 5 [[Ljava/lang/invoke/LambdaForm$Name; +staticfield java/lang/invoke/LambdaForm IMPL_NAMES Ljava/lang/invoke/MemberName$Factory; java/lang/invoke/MemberName$Factory +staticfield java/lang/invoke/LambdaForm LF_identity [Ljava/lang/invoke/LambdaForm; 6 [Ljava/lang/invoke/LambdaForm; +staticfield java/lang/invoke/LambdaForm LF_zero [Ljava/lang/invoke/LambdaForm; 6 [Ljava/lang/invoke/LambdaForm; +staticfield java/lang/invoke/LambdaForm NF_identity [Ljava/lang/invoke/LambdaForm$NamedFunction; 6 [Ljava/lang/invoke/LambdaForm$NamedFunction; +staticfield java/lang/invoke/LambdaForm NF_zero [Ljava/lang/invoke/LambdaForm$NamedFunction; 6 [Ljava/lang/invoke/LambdaForm$NamedFunction; +staticfield java/lang/invoke/LambdaForm createFormsLock Ljava/lang/Object; java/lang/Object +staticfield java/lang/invoke/LambdaForm DEBUG_NAME_COUNTERS Ljava/util/HashMap; null +staticfield java/lang/invoke/LambdaForm DEBUG_NAMES Ljava/util/HashMap; null +staticfield java/lang/invoke/LambdaForm TRACE_INTERPRETER Z 0 +staticfield java/lang/invoke/LambdaForm $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/MethodHandleNatives 1 1 684 100 1 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 100 1 10 10 12 1 1 10 12 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 1 7 1 10 7 12 1 1 1 10 100 12 1 1 1 7 1 10 10 12 1 1 8 1 10 12 1 8 1 10 12 1 1 8 1 10 12 1 1 9 100 12 1 1 1 8 1 10 100 12 1 1 1 100 1 10 12 100 1 100 1 8 1 7 1 10 10 12 1 7 1 9 7 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 8 1 100 1 10 12 1 8 1 10 12 1 1 10 12 1 10 100 12 1 1 1 100 1 8 1 10 100 12 1 1 1 7 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 7 1 10 12 1 100 1 100 1 10 12 1 10 12 1 8 1 8 1 10 10 12 1 1 10 12 1 1 8 1 10 100 12 1 1 1 8 1 8 1 10 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 7 1 9 12 1 1 10 7 12 1 1 1 10 10 12 1 9 12 1 10 12 1 1 9 12 1 9 12 1 10 12 1 1 10 12 1 10 12 1 1 7 1 7 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 100 1 8 1 10 9 7 12 1 1 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 10 12 1 1 100 1 100 1 10 10 100 1 100 1 10 100 1 10 10 12 1 1 10 100 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 8 1 100 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 11 7 12 1 1 1 10 12 1 10 12 1 10 10 12 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 1 1 +staticfield java/lang/invoke/MethodHandleNatives JLA Ljdk/internal/access/JavaLangAccess; java/lang/System$2 +staticfield java/lang/invoke/MethodHandleNatives $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/reflect/ConstantPool 1 1 142 10 100 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 8 11 7 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/UnsafeQualifiedStaticFieldAccessorImpl +ciInstanceKlass jdk/internal/reflect/UnsafeStaticFieldAccessorImpl 1 1 47 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 8 11 7 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/UnsafeFieldAccessorImpl +ciInstanceKlass jdk/internal/reflect/FieldAccessorImpl 1 1 59 10 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/UnsafeStaticFieldAccessorImpl +ciInstanceKlass jdk/internal/reflect/UnsafeFieldAccessorImpl 1 1 254 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 1 10 12 1 1 100 1 10 10 12 1 1 10 12 1 1 8 1 10 10 12 1 100 1 8 1 10 12 1 8 1 10 12 1 8 1 10 12 1 100 1 10 12 1 1 10 8 1 10 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 8 1 10 100 12 1 1 1 8 1 8 1 8 1 10 12 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/reflect/UnsafeFieldAccessorImpl unsafe Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +ciInstanceKlass java/lang/invoke/ConstantCallSite 1 1 65 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 100 1 10 12 9 12 1 1 100 1 10 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/ConstantCallSite UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +ciInstanceKlass java/lang/invoke/MutableCallSite 0 0 63 10 100 12 1 1 1 10 12 1 9 100 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +instanceKlass java/lang/invoke/VarHandleBooleans$FieldInstanceReadOnly +instanceKlass java/lang/invoke/VarHandleInts$FieldStaticReadOnly +instanceKlass java/lang/invoke/VarHandleLongs$FieldInstanceReadOnly +instanceKlass java/lang/invoke/VarHandleByteArrayAsLongs$ByteArrayViewVarHandle +instanceKlass java/lang/invoke/VarHandleByteArrayAsInts$ByteArrayViewVarHandle +instanceKlass java/lang/invoke/VarHandleInts$FieldInstanceReadOnly +instanceKlass java/lang/invoke/VarHandleReferences$FieldInstanceReadOnly +ciInstanceKlass java/lang/invoke/VarHandle 1 1 390 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 9 12 1 1 100 1 10 8 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 10 12 1 9 12 1 1 10 7 12 1 1 10 12 1 9 7 12 1 1 1 9 12 1 1 10 12 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 9 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 9 12 1 1 10 9 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 100 12 1 1 1 9 12 1 1 10 12 1 1 9 12 1 10 12 1 10 12 1 10 100 12 1 1 100 1 10 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 7 1 10 10 7 12 1 1 1 9 12 1 1 8 10 12 1 1 7 1 10 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 100 1 1 1 +staticfield java/lang/invoke/VarHandle AIOOBE_SUPPLIER Ljava/util/function/BiFunction; jdk/internal/util/Preconditions$1 +staticfield java/lang/invoke/VarHandle VFORM_OFFSET J 16 +staticfield java/lang/invoke/VarHandle $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/MemberName 1 1 757 7 1 7 1 100 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 9 100 12 1 1 10 12 1 100 1 100 1 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 8 1 10 100 12 1 1 1 7 1 10 10 12 1 1 100 1 100 1 10 12 1 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 8 1 8 1 8 1 10 100 12 1 1 1 10 12 1 9 12 1 1 3 10 12 1 10 12 1 10 12 1 10 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 7 1 8 10 12 1 1 10 12 1 1 8 1 9 100 1 8 9 100 1 10 12 1 1 10 12 1 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 10 12 1 8 1 10 12 1 10 12 1 8 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 8 1 8 1 100 1 10 12 1 10 100 12 1 1 1 100 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 3 10 12 1 3 10 12 1 3 3 3 3 3 3 3 100 1 10 12 1 10 7 12 1 1 1 10 12 1 3 9 12 1 10 12 1 1 3 10 12 1 10 10 7 12 1 1 1 10 12 1 1 10 7 1 10 10 12 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 100 1 10 10 10 12 100 1 10 10 10 12 1 1 10 12 1 1 10 10 12 1 8 10 100 1 10 12 1 10 100 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 100 1 10 12 1 1 100 1 8 1 10 7 1 10 12 1 10 12 10 12 1 1 10 12 1 10 12 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 8 1 10 10 12 1 10 12 1 8 1 8 1 10 10 12 1 8 1 10 100 12 1 1 1 8 1 10 12 1 10 12 1 1 10 12 1 8 1 8 1 8 1 8 1 100 1 10 8 1 8 1 8 1 8 1 10 12 1 100 1 100 1 100 1 10 100 1 10 100 1 10 100 12 1 1 1 9 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 1 3 1 3 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/MemberName $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/ResolvedMethodName 1 1 16 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StackWalker 0 0 235 9 100 12 1 1 1 10 100 12 1 1 1 100 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 11 12 1 1 100 1 8 1 10 10 100 12 1 1 9 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 18 12 1 1 100 1 8 1 10 10 12 1 1 10 100 12 1 1 1 9 100 12 1 1 11 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 16 1 1 1 1 1 1 1 100 1 100 1 1 +ciInstanceKlass java/lang/StackStreamFactory$AbstractStackWalker 1 0 306 100 1 100 1 3 10 100 12 1 1 1 10 100 12 1 1 10 100 12 1 1 1 9 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 9 12 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 9 100 12 1 1 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 8 1 10 12 9 100 12 1 1 1 10 100 12 1 1 9 12 1 8 1 5 0 8 1 8 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 9 12 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/module/Modules 1 1 504 10 100 12 1 1 1 9 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 11 12 1 11 12 1 11 12 1 11 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 18 12 1 1 10 100 12 1 1 1 100 1 10 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 11 12 1 9 12 1 1 11 100 12 1 1 1 10 12 1 1 10 10 12 1 10 9 12 1 1 10 7 12 1 1 10 12 1 1 10 100 12 1 1 100 1 11 100 12 1 1 1 10 100 12 1 1 1 11 100 12 1 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 11 12 1 1 18 12 1 1 11 100 12 1 1 10 100 12 1 1 1 11 100 12 1 1 1 100 1 11 12 1 1 11 100 12 1 1 1 11 12 1 1 10 12 1 1 10 100 12 1 1 18 12 1 1 11 12 1 1 18 12 1 1 11 12 1 1 10 12 1 18 18 10 12 1 1 9 12 1 1 11 100 12 1 1 1 100 1 10 11 12 1 11 12 1 1 11 12 1 1 10 100 1 10 12 1 1 10 100 12 1 1 10 12 1 1 11 12 10 12 1 1 100 1 10 18 12 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 18 12 1 11 11 12 10 12 1 10 10 100 1 18 12 1 10 10 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 12 1 16 16 15 10 12 1 16 1 16 1 15 10 12 1 16 1 16 1 15 10 12 16 1 15 10 16 1 15 10 12 16 1 15 10 12 16 15 10 12 16 15 10 12 1 1 1 100 1 100 1 1 +staticfield jdk/internal/module/Modules JLA Ljdk/internal/access/JavaLangAccess; java/lang/System$2 +staticfield jdk/internal/module/Modules JLMA Ljdk/internal/access/JavaLangModuleAccess; java/lang/module/ModuleDescriptor$1 +staticfield jdk/internal/module/Modules $assertionsDisabled Z 1 +instanceKlass java/net/Inet6Address +instanceKlass java/net/Inet4Address +ciInstanceKlass java/net/InetAddress 1 1 684 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 7 1 10 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 8 1 9 12 1 1 11 7 12 1 1 10 12 1 10 12 1 1 9 12 1 9 12 1 1 10 12 1 11 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 100 1 100 1 7 1 10 8 1 10 7 12 1 1 1 10 12 1 1 8 1 10 12 8 1 10 7 12 1 1 1 100 1 10 7 1 10 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 7 1 10 7 12 1 1 1 10 8 1 10 10 12 1 1 10 12 1 11 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 8 1 8 1 8 1 7 1 3 10 12 1 10 12 1 1 9 12 1 1 11 100 12 1 1 1 11 100 12 1 1 11 12 1 1 100 1 9 12 1 1 11 12 1 9 12 1 1 9 12 1 11 100 12 1 1 11 12 1 1 100 1 11 12 100 1 10 12 1 11 12 1 1 11 12 1 10 100 12 1 1 11 12 1 8 1 10 12 1 1 10 12 1 1 9 12 1 1 9 100 1 9 9 12 1 1 11 12 1 10 8 1 10 12 1 10 11 12 1 8 1 10 12 1 8 1 10 7 12 1 1 1 10 12 1 100 1 9 12 1 1 8 1 8 1 10 100 12 1 1 100 1 8 1 100 1 8 1 100 1 100 1 8 1 10 10 12 1 1 10 12 1 1 8 1 10 10 100 12 1 1 1 8 10 100 12 1 1 8 1 10 12 1 8 1 100 1 8 1 10 12 1 10 10 12 1 9 12 1 1 9 12 1 10 7 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 10 12 1 10 12 1 8 1 8 1 9 12 1 1 8 1 8 1 8 1 8 1 10 7 12 1 1 7 1 10 10 7 12 1 1 1 10 12 1 7 1 10 7 1 10 10 7 12 1 1 1 10 12 1 1 10 12 1 1 8 10 12 1 1 7 1 10 12 1 9 12 1 1 9 12 1 1 100 1 1 1 3 1 3 1 3 1 1 1 5 0 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/net/InetAddress preferIPv6Address I 0 +staticfield java/net/InetAddress cache Ljava/util/concurrent/ConcurrentMap; java/util/concurrent/ConcurrentHashMap +staticfield java/net/InetAddress expirySet Ljava/util/NavigableSet; java/util/concurrent/ConcurrentSkipListSet +staticfield java/net/InetAddress impl Ljava/net/InetAddressImpl; java/net/Inet6AddressImpl +staticfield java/net/InetAddress UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield java/net/InetAddress FIELDS_OFFSET J 12 +staticfield java/net/InetAddress serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField; +instanceKlass sun/net/www/protocol/jrt/Handler +instanceKlass sun/net/www/protocol/jar/Handler +instanceKlass sun/net/www/protocol/file/Handler +ciInstanceKlass java/net/URLStreamHandler 1 1 279 10 7 12 1 1 1 100 1 7 1 10 8 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 100 1 8 1 10 10 7 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 8 1 10 100 12 1 1 1 8 1 8 1 8 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 8 1 10 12 1 10 12 8 1 10 12 1 8 1 10 12 1 8 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 100 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 12 1 10 12 1 10 10 12 1 8 1 100 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 1 8 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciMethod java/net/URLStreamHandler parseURL (Ljava/net/URL;Ljava/lang/String;II)V 512 0 6400 0 -1 +ciMethod java/net/URLStreamHandler setURL (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 534 0 6525 0 3040 +ciInstanceKlass sun/net/www/protocol/file/Handler 1 1 161 10 7 12 1 1 1 10 7 12 1 1 1 8 1 9 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 100 1 10 12 1 8 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 100 1 8 1 10 12 1 10 7 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 +ciMethod sun/net/util/IPAddressUtil isIPv6LiteralAddress (Ljava/lang/String;)Z 0 0 1 0 0 +ciMethod sun/net/util/IPAddressUtil checkHostString (Ljava/lang/String;)Ljava/lang/String; 512 0 6405 0 -1 +ciMethod sun/net/util/IPAddressUtil textToNumericFormatV6 (Ljava/lang/String;)[B 0 0 1 0 -1 +ciMethod java/lang/IllegalArgumentException (Ljava/lang/String;)V 0 0 1 0 -1 +ciMethod java/util/Arrays copyOfRange ([BII)[B 512 0 6459 0 768 +ciMethod java/util/Arrays copyOf ([BI)[B 30 0 7551 0 704 +ciMethod java/lang/Math min (II)I 514 0 22360 0 -1 +ciMethod jdk/internal/misc/VM isSystemDomainLoader (Ljava/lang/ClassLoader;)Z 28 0 529 0 -1 +ciMethod java/lang/StringBuilder ()V 152 0 17964 0 0 +ciMethod java/lang/StringBuilder toString ()Ljava/lang/String; 286 0 20035 0 0 +ciMethod java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 298 0 43053 0 0 +ciMethod java/lang/String isEmpty ()Z 512 0 35561 0 96 +ciMethod java/lang/String charAt (I)C 636 0 581697 0 160 +ciMethod java/lang/String length ()I 512 0 243878 0 96 +ciMethod java/lang/String ([BB)V 512 0 12242 0 288 +ciMethod java/lang/String indexOf (I)I 512 0 44576 0 416 +ciMethod java/lang/String indexOf (Ljava/lang/String;)I 144 0 5192 0 544 +ciMethod java/lang/String indexOf ([BBILjava/lang/String;I)I 516 0 5379 0 832 +ciMethod java/lang/String indexOf (Ljava/lang/String;I)I 514 0 5379 0 864 +ciMethod java/lang/String indexOf (II)I 514 0 38572 0 480 +ciMethod java/lang/String coder ()B 552 0 310948 0 64 +ciMethod java/lang/String isLatin1 ()Z 1024 0 678075 0 96 +ciMethod java/lang/String checkBoundsBeginEnd (III)V 516 0 5423 0 160 +ciMethod java/lang/String getBytes ([BIIBI)V 512 0 6415 0 640 +ciMethod java/lang/String startsWith (Ljava/lang/String;I)Z 512 3366 3447 0 704 +ciMethod java/lang/String startsWith (Ljava/lang/String;)Z 512 0 28937 0 0 +ciMethod java/lang/String lastIndexOf (II)I 514 0 21024 0 0 +ciMethod java/lang/String lastIndexOf (I)I 516 0 19754 0 480 +ciMethod java/lang/String substring (II)Ljava/lang/String; 270 0 5739 0 1312 +ciMethod java/lang/String substring (I)Ljava/lang/String; 0 0 1176 0 0 +ciMethod java/lang/String endsWith (Ljava/lang/String;)Z 564 0 13366 0 0 +ciMethod java/lang/Class getClassLoader ()Ljava/lang/ClassLoader; 502 0 7827 0 -1 +ciMethod java/lang/Class getName ()Ljava/lang/String; 516 0 17005 0 -1 +ciMethod java/lang/Object getClass ()Ljava/lang/Class; 512 0 256 0 -1 +ciMethod java/lang/Object ()V 1024 0 138901 0 64 +ciInstanceKlass java/lang/NumberFormatException 0 0 75 10 100 12 1 1 1 10 12 1 100 1 100 1 10 8 1 10 12 1 1 8 1 8 1 8 1 10 12 1 10 12 1 1 10 8 1 8 1 11 100 12 1 1 1 10 12 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 +instanceKlass java/security/AccessControlException +ciInstanceKlass java/lang/SecurityException 1 1 35 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/ArrayIndexOutOfBoundsException +ciInstanceKlass java/lang/IndexOutOfBoundsException 1 0 49 10 100 12 1 1 1 10 12 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/net/www/protocol/jrt/Handler 1 1 28 10 7 12 1 1 1 100 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +ciMethodData java/lang/Object ()V 2 138901 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 4 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String isLatin1 ()Z 2 678075 orig 80 1 0 0 0 1 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x30007 0x0 0x58 0xa56bc 0x80000006000a0007 0x14c 0x38 0xa5572 0xe0003 0xa5572 0x18 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String coder ()B 2 310962 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0x30007 0x0 0x38 0x4bd9e 0xa0003 0x4bd9e 0x18 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String length ()I 2 243920 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 16 0x60005 0x3b7d1 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String charAt (I)C 2 581717 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 25 0x10005 0x8df18 0x0 0x0 0x0 0x0 0x0 0x40007 0x2 0x30 0x8df16 0xc0002 0x8df16 0x150002 0x2 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringLatin1 charAt ([BI)C 2 575901 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x10007 0x0 0x40 0x8c821 0x70007 0x8c821 0x30 0x0 0xf0002 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringUTF16 charAt ([BI)C 1 5 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0x20002 0x4 0x70002 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringLatin1 canEncode (I)Z 2 78767 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 11 0x8000000600040007 0x1 0x38 0x132af 0x80003 0x132af 0x18 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder ensureCapacityInternal (I)V 2 5668 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 23 0xe0007 0x1502 0x68 0x21 0x180005 0x21 0x0 0x0 0x0 0x0 0x0 0x200002 0x21 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0xc 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder newCapacity (I)I 2 5173 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x1d0002 0x1428 0x260007 0x1428 0x30 0x0 0x2f0002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/util/Arrays copyOf ([BI)[B 2 7551 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0xb0002 0x1d70 0xe0002 0x1d70 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0xffffffffffffffff 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder isLatin1 ()Z 2 38032 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x30007 0x0 0x58 0x92df 0x80000006000a0007 0x15 0x38 0x92cb 0xe0003 0x92cb 0x18 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder inflate ()V 1 12 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 24 0x10005 0xc 0x0 0x0 0x0 0x0 0x0 0x40007 0xa 0x20 0x2 0xd0002 0xa 0x1c0002 0xa 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xc oops 0 methods 0 +ciMethodData java/lang/String isEmpty ()Z 2 35570 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0x50007 0x6c38 0x38 0x1dba 0x90003 0x1dba 0x18 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String indexOf (I)I 2 44582 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 17 0x30005 0xad26 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String indexOf (II)I 2 38578 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 29 0x10005 0x95b1 0x0 0x0 0x0 0x0 0x0 0x40007 0x40 0x48 0x9571 0xd0002 0x9571 0x100003 0x9571 0x28 0x190002 0x40 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringLatin1 indexOf ([BII)I 2 5433 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 30 0x10002 0x1438 0x40007 0x1438 0x20 0x0 0xd0007 0x1438 0x38 0x0 0x120003 0x0 0x38 0x170007 0x139c 0x20 0x9c 0x200002 0x139c 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringUTF16 indexOf ([BII)I 1 166 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 30 0x60007 0xa6 0x38 0x0 0xb0003 0x0 0x38 0x100007 0xa5 0x20 0x1 0x180007 0x0 0x30 0xa5 0x1f0002 0xa5 0x270002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String ([BB)V 2 12242 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 11 0x10002 0x2ed2 0x0 0x0 0x0 0x0 0x9 0x3 0xc 0x0 0x0 oops 0 methods 0 +ciMethodData java/util/Arrays copyOfRange ([BII)[B 2 6459 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 51 0x50007 0x183b 0x120 0x0 0x100002 0x0 0x140005 0x0 0x0 0x0 0x0 0x0 0x0 0x1a0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x210005 0x0 0x0 0x0 0x0 0x0 0x0 0x240002 0x0 0x370002 0x183b 0x3a0002 0x183b 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0xffffffffffffffff 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringBuilder ()V 2 18028 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 7 0x30002 0x4620 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder (I)V 2 11312 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 21 0x10002 0x2ba1 0x70007 0x0 0x38 0x2ba1 0x160003 0x2ba1 0x28 0x1b0002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 2 43176 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 9 0x20002 0xa813 0x0 0x0 0x0 0x9 0x2 0xe 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 2 11469 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 42 0x10007 0x2c38 0x58 0x0 0x50005 0x0 0x0 0x0 0x0 0x0 0x0 0xa0005 0x2c38 0x0 0x0 0x0 0x0 0x0 0x150005 0x2c38 0x0 0x0 0x0 0x0 0x0 0x1e0005 0x2c38 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0xe 0x0 oops 0 methods 0 +ciMethodData java/lang/StringBuilder toString ()Ljava/lang/String; 2 20066 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 27 0x10005 0x4dd3 0x0 0x0 0x0 0x0 0x0 0x8000000600040007 0x5 0x48 0x4dcf 0x100002 0x4dcf 0x130003 0x4dcf 0x28 0x1f0002 0x5 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/StringLatin1 newString ([BII)Ljava/lang/String; 2 5380 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 19 0x10007 0x142b 0x20 0x1 0x100002 0x142b 0x140002 0x142b 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringUTF16 newString ([BII)Ljava/lang/String; 1 137 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 31 0x10007 0x89 0x20 0x0 0xb0007 0x0 0x60 0x89 0x110002 0x89 0x160007 0x7 0x30 0x82 0x1f0002 0x82 0x320002 0x7 0x360002 0x7 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0xffffffffffffffff 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String startsWith (Ljava/lang/String;I)Z 2 18684 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 83 0x10007 0x20 0xb0 0xc57 0x60005 0xc57 0x0 0x0 0x0 0x0 0x0 0xa0005 0xc57 0x0 0x0 0x0 0x0 0x0 0xe0007 0xc52 0x20 0x5 0x270005 0xc52 0x0 0x0 0x0 0x0 0x0 0x2f0005 0xc52 0x0 0x0 0x0 0x0 0x0 0x320007 0x0 0xb0 0xc52 0x370007 0x0 0x38 0xc52 0x3b0003 0xc52 0x18 0x470007 0x438 0x40 0x4a83 0x590007 0x4269 0xffffffffffffffe0 0x81a 0x5e0003 0x438 0x88 0x630007 0x0 0x20 0x0 0x6c0007 0x0 0x50 0x0 0x740002 0x0 0x830007 0x0 0xffffffffffffffd0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/StringLatin1 lastIndexOf ([BII)I 2 48428 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 30 0x10002 0x289 0x40007 0x289 0x20 0x0 0xe0002 0x289 0x130007 0x8e 0x58 0x82b7 0x1b0007 0x80bc 0x20 0x1fb 0x230003 0x80bc 0xffffffffffffffc0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;)V 2 11469 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 25 0x50005 0x2bcd 0x0 0x0 0x0 0x0 0x0 0x80005 0x2bcd 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0xc 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;II)V 2 11469 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 45 0x10005 0x2bce 0x0 0x0 0x0 0x0 0x0 0x50005 0x2bce 0x0 0x0 0x0 0x0 0x0 0x8000000600080007 0x2bc9 0x58 0x7 0xc0005 0x7 0x0 0x0 0x0 0x0 0x0 0x1e0005 0x2bd0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x5 0xc 0x0 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/AbstractStringBuilder getCoder ()B 2 11483 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0x30007 0x0 0x38 0x2bdb 0xa0003 0x2bdb 0x18 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String getBytes ([BIIBI)V 2 6415 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 32 0x10005 0x180f 0x0 0x0 0x0 0x0 0x0 0x60007 0x1 0x48 0x180e 0x1b0002 0x180e 0x1e0003 0x180e 0x28 0x2a0002 0x1 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x6 0x0 0xffffffffffffffff 0x0 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String startsWith (Ljava/lang/String;)Z 2 28957 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 17 0x30005 0x701d 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String substring (II)Ljava/lang/String; 2 5739 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 46 0x10005 0x15e4 0x0 0x0 0x0 0x0 0x0 0x80002 0x15e4 0xc0007 0xb04 0x40 0xae0 0x110007 0x8fb 0x20 0x1e5 0x1c0005 0x13ff 0x0 0x0 0x0 0x0 0x0 0x1f0007 0x84 0x48 0x137b 0x290002 0x137b 0x2c0003 0x137b 0x28 0x360002 0x84 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String substring (I)Ljava/lang/String; 2 1176 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 24 0x30005 0x498 0x0 0x0 0x0 0x0 0x0 0x60005 0x498 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String checkBoundsBeginEnd (III)V 2 5423 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 76 0x10007 0x0 0x60 0x142d 0x60007 0x0 0x40 0x142d 0xb0007 0x142d 0x1c8 0x0 0x160002 0x0 0x1c0005 0x0 0x0 0x0 0x0 0x0 0x0 0x200005 0x0 0x0 0x0 0x0 0x0 0x0 0x260005 0x0 0x0 0x0 0x0 0x0 0x0 0x2a0005 0x0 0x0 0x0 0x0 0x0 0x0 0x300005 0x0 0x0 0x0 0x0 0x0 0x0 0x340005 0x0 0x0 0x0 0x0 0x0 0x0 0x370005 0x0 0x0 0x0 0x0 0x0 0x0 0x3a0002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String lastIndexOf (II)I 2 21030 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 29 0x10005 0x5125 0x0 0x0 0x0 0x0 0x0 0x40007 0x0 0x48 0x5125 0xd0002 0x5125 0x100003 0x5125 0x28 0x190002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String lastIndexOf (I)I 2 19760 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 24 0x30005 0x4c2e 0x0 0x0 0x0 0x0 0x0 0x80005 0x4c2e 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethod java/lang/SecurityException (Ljava/lang/String;)V 2 0 1 0 -1 +ciMethodData java/net/URL isBuiltinStreamHandler (Ljava/net/URLStreamHandler;)Z 2 6853 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 51 0x10005 0x19c5 0x0 0x0 0x0 0x0 0x0 0x70005 0x19c5 0x0 0x0 0x0 0x0 0x0 0xa0005 0x19c5 0x0 0x0 0x0 0x0 0x0 0xd0007 0x19c5 0x88 0x0 0x110005 0x0 0x0 0x0 0x0 0x0 0x0 0x140002 0x0 0x170007 0x0 0x38 0x0 0x1b0003 0x19c5 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/net/URL isBuiltinStreamHandler (Ljava/lang/String;)Z 2 6853 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 17 0x40005 0x19c6 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String indexOf (Ljava/lang/String;I)I 2 5379 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 27 0x50005 0x1402 0x0 0x0 0x0 0x0 0x0 0x90005 0x1402 0x0 0x0 0x0 0x0 0x0 0xe0002 0x1402 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String indexOf ([BBILjava/lang/String;I)I 2 5379 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 71 0x70005 0x1401 0x0 0x0 0x0 0x0 0x0 0xd0005 0x1401 0x0 0x0 0x0 0x0 0x0 0x150007 0x1401 0x58 0x0 0x1a0007 0x0 0x38 0x0 0x1e0003 0x0 0x18 0x250007 0x1401 0x20 0x0 0x2d0007 0x1401 0x20 0x0 0x360007 0x13f4 0x20 0xd 0x3e0007 0x0 0x78 0x13f4 0x420007 0x0 0x48 0x13f4 0x4d0002 0x13f4 0x500003 0x13f4 0x28 0x5b0002 0x0 0x600007 0x0 0x20 0x0 0x6d0002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x5 0x0 0x0 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String endsWith (Ljava/lang/String;)Z 2 13378 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 31 0x30005 0x3328 0x0 0x0 0x0 0x0 0x0 0x70005 0x3328 0x0 0x0 0x0 0x0 0x0 0xb0005 0x3328 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/net/URLStreamHandler setURL (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 2 6525 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 61 0x50007 0x1872 0x30 0x0 0xe0002 0x0 0x130007 0x0 0xb8 0x1872 0x180005 0x1872 0x0 0x0 0x0 0x0 0x0 0x1b0007 0x0 0x60 0x1872 0x1f0002 0x1872 0x260007 0x1872 0x30 0x0 0x2f0002 0x0 0x350005 0x1872 0x0 0x0 0x0 0x0 0x0 0x450005 0x1872 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0xa 0x0 0xfe 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/net/URL set (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V 2 6525 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 60 0x170007 0x0 0x38 0x1872 0x1c0003 0x1872 0x108 0x230002 0x0 0x280005 0x0 0x0 0x0 0x0 0x0 0x0 0x2d0005 0x0 0x0 0x0 0x0 0x0 0x0 0x320005 0x0 0x0 0x0 0x0 0x0 0x0 0x350005 0x0 0x0 0x0 0x0 0x0 0x0 0x660003 0x1872 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x9 0xfe 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/String indexOf (Ljava/lang/String;)I 2 5192 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 52 0x10005 0x1400 0x0 0x0 0x0 0x0 0x0 0x70005 0x1400 0x0 0x0 0x0 0x0 0x0 0xa0007 0x0 0xb0 0x1400 0xe0005 0x1400 0x0 0x0 0x0 0x0 0x0 0x110007 0x0 0x48 0x1400 0x1c0002 0x1400 0x1f0003 0x1400 0x28 0x2a0002 0x0 0x2f0007 0x0 0x20 0x0 0x3c0002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/net/URLStreamHandler parseURL (Ljava/net/URL;Ljava/lang/String;II)V 2 6400 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 977 0x10005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x70005 0x17ff 0x0 0x0 0x0 0x0 0x0 0xd0005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x130005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x190005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x1f0005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x250005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x2b0005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x390007 0x0 0x160 0x17ff 0x3f0005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x470007 0x17ff 0x38 0x0 0x4b0003 0x0 0x18 0x540007 0x17ff 0xd0 0x0 0x5b0007 0x0 0xb0 0x0 0x650005 0x0 0x0 0x0 0x0 0x0 0x0 0x6e0007 0x0 0x20 0x0 0x790005 0x0 0x0 0x0 0x0 0x0 0x0 0x850007 0xbea 0x198 0xc15 0x8a0005 0xc15 0x0 0x0 0x0 0x0 0x0 0x8f0007 0xbf2 0x140 0x23 0x960005 0x23 0x0 0x0 0x0 0x0 0x0 0x9b0007 0x23 0xe8 0x0 0xa20005 0x0 0x0 0x0 0x0 0x0 0x0 0xa70007 0x0 0x90 0x0 0xae0005 0x0 0x0 0x0 0x0 0x0 0x0 0xb30007 0x0 0x38 0x0 0xb70003 0x0 0x18 0xbf0007 0x0 0xbb0 0x17ff 0xc70007 0xbea 0xb90 0xc15 0xcc0005 0xc15 0x0 0x0 0x0 0x0 0x0 0xd10007 0xbf2 0xb38 0x23 0xd80005 0x23 0x0 0x0 0x0 0x0 0x0 0xdd0007 0x23 0xae0 0x0 0xe70005 0x0 0x0 0x0 0x0 0x0 0x0 0xee0007 0x0 0x40 0x0 0xf50007 0x0 0x98 0x0 0xfc0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1030007 0x0 0x40 0x0 0x10a0007 0x0 0x20 0x0 0x1150005 0x0 0x0 0x0 0x0 0x0 0x0 0x1210005 0x0 0x0 0x0 0x0 0x0 0x0 0x1290007 0x0 0x118 0x0 0x1320005 0x0 0x0 0x0 0x0 0x0 0x0 0x1350007 0x0 0x38 0x0 0x13e0003 0x0 0xa0 0x1460005 0x0 0x0 0x0 0x0 0x0 0x0 0x1510005 0x0 0x0 0x0 0x0 0x0 0x0 0x1560003 0x0 0x18 0x15e0007 0x0 0x6e8 0x0 0x1630005 0x0 0x0 0x0 0x0 0x0 0x0 0x1660007 0x0 0x548 0x0 0x16c0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1710007 0x0 0x4f0 0x0 0x1780005 0x0 0x0 0x0 0x0 0x0 0x0 0x17f0007 0x0 0x3d0 0x0 0x18d0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1970005 0x0 0x0 0x0 0x0 0x0 0x0 0x19a0002 0x0 0x19d0007 0x0 0xe8 0x0 0x1a80002 0x0 0x1ad0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1b20005 0x0 0x0 0x0 0x0 0x0 0x0 0x1b50005 0x0 0x0 0x0 0x0 0x0 0x0 0x1b80002 0x0 0x1c10005 0x0 0x0 0x0 0x0 0x0 0x0 0x1c80007 0x0 0x1f8 0x0 0x1d10005 0x0 0x0 0x0 0x0 0x0 0x0 0x1d60007 0x0 0xd8 0x0 0x1de0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1e50007 0x0 0x148 0x0 0x1f00005 0x0 0x0 0x0 0x0 0x0 0x0 0x1f50002 0x0 0x1fa0003 0x0 0xe0 0x2050002 0x0 0x20a0005 0x0 0x0 0x0 0x0 0x0 0x0 0x20f0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2120005 0x0 0x0 0x0 0x0 0x0 0x0 0x2150002 0x0 0x2190003 0x0 0x228 0x2240002 0x0 0x2290005 0x0 0x0 0x0 0x0 0x0 0x0 0x22e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2310005 0x0 0x0 0x0 0x0 0x0 0x0 0x2340002 0x0 0x23c0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2460007 0x0 0x110 0x0 0x24b0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2520007 0x0 0x68 0x0 0x25d0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2620002 0x0 0x26c0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2710003 0x0 0x18 0x27b0007 0x0 0xe8 0x0 0x2860002 0x0 0x28b0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2900005 0x0 0x0 0x0 0x0 0x0 0x0 0x2930005 0x0 0x0 0x0 0x0 0x0 0x0 0x2960002 0x0 0x29f0007 0x0 0x78 0x0 0x2a40005 0x0 0x0 0x0 0x0 0x0 0x0 0x2a70007 0x0 0x20 0x0 0x2b00007 0x17dc 0x20 0x23 0x2ba0007 0x0 0x470 0x17ff 0x2bf0005 0x17ff 0x0 0x0 0x0 0x0 0x0 0x2c40007 0x17dc 0x70 0x23 0x2cb0005 0x23 0x0 0x0 0x0 0x0 0x0 0x2d00003 0x23 0x548 0x2d50007 0x0 0x268 0x17dc 0x2da0005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x2dd0007 0x0 0x210 0x17dc 0x2e70005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x2f30007 0x17dc 0x40 0x0 0x2f80007 0x0 0x20 0x0 0x3030002 0x17dc 0x30d0005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x3100005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x3150005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x31c0005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x31f0005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x3220005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x3270003 0x17dc 0x2e0 0x32e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x3350007 0x0 0xf0 0x0 0x33c0002 0x0 0x3410005 0x0 0x0 0x0 0x0 0x0 0x0 0x3460005 0x0 0x0 0x0 0x0 0x0 0x0 0x3490005 0x0 0x0 0x0 0x0 0x0 0x0 0x34c0003 0x0 0x18 0x3530003 0x0 0x1a0 0x3580007 0x0 0x188 0x0 0x35d0007 0x0 0x168 0x0 0x3640005 0x0 0x0 0x0 0x0 0x0 0x0 0x36b0007 0x0 0x20 0x0 0x3750002 0x0 0x37d0005 0x0 0x0 0x0 0x0 0x0 0x0 0x3800005 0x0 0x0 0x0 0x0 0x0 0x0 0x3850005 0x0 0x0 0x0 0x0 0x0 0x0 0x3880005 0x0 0x0 0x0 0x0 0x0 0x0 0x38f0007 0x17ff 0x20 0x0 0x3980007 0x23 0x720 0x17dc 0x39f0005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x3a50007 0x17dc 0x160 0x0 0x3ac0002 0x0 0x3b40005 0x0 0x0 0x0 0x0 0x0 0x0 0x3b70005 0x0 0x0 0x0 0x0 0x0 0x0 0x3c00005 0x0 0x0 0x0 0x0 0x0 0x0 0x3c30005 0x0 0x0 0x0 0x0 0x0 0x0 0x3c60005 0x0 0x0 0x0 0x0 0x0 0x0 0x3cb0003 0x0 0xfffffffffffffe80 0x3d70005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x3dd0007 0x17dc 0x248 0x0 0x3e20007 0x0 0x210 0x0 0x3ed0005 0x0 0x0 0x0 0x0 0x0 0x0 0x3f30007 0x0 0x1b8 0x0 0x3fc0005 0x0 0x0 0x0 0x0 0x0 0x0 0x3ff0007 0x0 0x160 0x0 0x4060002 0x0 0x40e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x4110005 0x0 0x0 0x0 0x0 0x0 0x0 0x41a0005 0x0 0x0 0x0 0x0 0x0 0x0 0x41d0005 0x0 0x0 0x0 0x0 0x0 0x0 0x4200005 0x0 0x0 0x0 0x0 0x0 0x0 0x4280003 0x0 0xfffffffffffffdb0 0x4310003 0x0 0xfffffffffffffd98 0x4380005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x43b0007 0x17dc 0x100 0x0 0x4420005 0x0 0x0 0x0 0x0 0x0 0x0 0x44f0005 0x0 0x0 0x0 0x0 0x0 0x0 0x4550007 0x0 0x70 0x0 0x45f0005 0x0 0x0 0x0 0x0 0x0 0x0 0x4640003 0x0 0xfffffffffffffee0 0x46b0005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x46e0007 0x17dc 0xb0 0x0 0x4730005 0x0 0x0 0x0 0x0 0x0 0x0 0x4770007 0x0 0x58 0x0 0x47d0005 0x0 0x0 0x0 0x0 0x0 0x0 0x4860005 0x17dc 0x0 0x0 0x0 0x0 0x0 0x4890007 0xbf2 0x90 0xbea 0x4910005 0xbea 0x0 0x0 0x0 0x0 0x0 0x4960005 0xbea 0x0 0x0 0x0 0x0 0x0 0x4ad0005 0x0 0x0 0x156eaeb1da0 0x17e4 0x156eaeb1e50 0x1b 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x5 0x0 0x0 0x0 0x0 0x0 oops 2 955 sun/net/www/protocol/file/Handler 957 sun/net/www/protocol/jrt/Handler methods 0 +ciMethodData sun/net/util/IPAddressUtil isIPv6LiteralAddress (Ljava/lang/String;)Z 1 0 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x10002 0x0 0x40007 0x0 0x38 0x0 0x80003 0x0 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xffffffffffffffff oops 0 methods 0 +ciMethodData sun/net/util/IPAddressUtil textToNumericFormatV6 (Ljava/lang/String;)[B 1 0 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 179 0x10005 0x0 0x0 0x0 0x0 0x0 0x0 0x50007 0x0 0x20 0x0 0xb0005 0x0 0x0 0x0 0x0 0x0 0x0 0x1e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x290007 0x0 0x20 0x0 0x310007 0x0 0x20 0x0 0x470007 0x0 0x40 0x0 0x540007 0x0 0x20 0x0 0x660007 0x0 0x2e0 0x0 0x750002 0x0 0x7d0007 0x0 0x58 0x0 0x910007 0x0 0x20 0x0 0x980003 0x0 0xffffffffffffff90 0x9e0007 0x0 0xd0 0x0 0xa60007 0x0 0x58 0x0 0xab0007 0x0 0x20 0x0 0xb30003 0x0 0xffffffffffffff18 0xba0007 0x0 0x20 0x0 0xc50007 0x0 0x20 0x0 0xf00003 0x0 0xfffffffffffffec0 0xf60007 0x0 0x188 0x0 0xff0007 0x0 0x168 0x0 0x1070005 0x0 0x0 0x0 0x0 0x0 0x0 0x1180005 0x0 0x0 0x0 0x0 0x0 0x0 0x11f0007 0x0 0x38 0x0 0x1280003 0x0 0xffffffffffffffa8 0x12e0007 0x0 0x20 0x0 0x1350002 0x0 0x13c0007 0x0 0x20 0x0 0x1470007 0x0 0x38 0x0 0x15a0003 0x0 0xffffffffffffffe0 0x15f0003 0x0 0x18 0x1650007 0x0 0x40 0x0 0x16e0007 0x0 0x20 0x0 0x1960007 0x0 0x78 0x0 0x1a30007 0x0 0x20 0x0 0x1af0007 0x0 0x38 0x0 0x1d20003 0x0 0xffffffffffffffe0 0x1dd0007 0x0 0x20 0x0 0x1e40002 0x0 0x1eb0007 0x0 0x20 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/Integer parseInt (Ljava/lang/CharSequence;III)I 1 13 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 86 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 185 0x10002 0x5 0x60007 0x0 0x98 0x5 0xb0007 0x0 0x78 0x5 0x100005 0x0 0x0 0x156e515e3b0 0x5 0x0 0x0 0x150007 0x5 0x30 0x0 0x1c0002 0x0 0x220007 0x5 0x120 0x0 0x2d0002 0x0 0x320005 0x0 0x0 0x0 0x0 0x0 0x0 0x360005 0x0 0x0 0x0 0x0 0x0 0x0 0x3b0005 0x0 0x0 0x0 0x0 0x0 0x0 0x3e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x410002 0x0 0x480007 0x5 0x120 0x0 0x530002 0x0 0x580005 0x0 0x0 0x0 0x0 0x0 0x0 0x5c0005 0x0 0x0 0x0 0x0 0x0 0x0 0x610005 0x0 0x0 0x0 0x0 0x0 0x0 0x640005 0x0 0x0 0x0 0x0 0x0 0x0 0x670002 0x0 0x780007 0x0 0x248 0x5 0x7e0005 0x0 0x0 0x156e515e3b0 0x5 0x0 0x0 0x890007 0x5 0xb8 0x0 0x900007 0x0 0x38 0x0 0x9a0003 0x0 0x48 0xa10007 0x0 0x30 0x0 0xa90002 0x0 0xb30007 0x0 0x30 0x0 0xbb0002 0x0 0xcb0007 0x5 0x100 0x6 0xd10005 0x0 0x0 0x156e515e3b0 0x6 0x0 0x0 0xd70002 0x6 0xde0007 0x0 0x40 0x6 0xe50007 0x6 0x30 0x0 0xed0002 0x0 0xfe0007 0x6 0x30 0x0 0x1060002 0x0 0x1140003 0x6 0xffffffffffffff18 0x1190007 0x5 0x38 0x0 0x11e0003 0x0 0x18 0x1280002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x4 0x0 0x0 0x0 0x0 oops 3 13 java/lang/String 102 java/lang/String 136 java/lang/String methods 0 +compile java/net/URLStreamHandler parseURL (Ljava/net/URL;Ljava/lang/String;II)V -1 4 inline 158 0 -1 java/net/URLStreamHandler parseURL (Ljava/net/URL;Ljava/lang/String;II)V 1 1 java/net/URL getProtocol ()Ljava/lang/String; 1 7 java/net/URL getAuthority ()Ljava/lang/String; 1 13 java/net/URL getUserInfo ()Ljava/lang/String; 1 19 java/net/URL getHost ()Ljava/lang/String; 1 25 java/net/URL getPort ()I 1 31 java/net/URL getPath ()Ljava/lang/String; 1 37 java/net/URL getQuery ()Ljava/lang/String; 1 43 java/net/URL getRef ()Ljava/lang/String; 1 63 java/lang/String indexOf (I)I 2 3 java/lang/String indexOf (II)I 3 1 java/lang/String isLatin1 ()Z 3 13 java/lang/StringLatin1 indexOf ([BII)I 4 1 java/lang/StringLatin1 canEncode (I)Z 1 138 java/lang/String charAt (I)C 2 1 java/lang/String isLatin1 ()Z 2 12 java/lang/StringLatin1 charAt ([BI)C 1 150 java/lang/String charAt (I)C 2 1 java/lang/String isLatin1 ()Z 2 12 java/lang/StringLatin1 charAt ([BI)C 1 204 java/lang/String charAt (I)C 2 1 java/lang/String isLatin1 ()Z 2 12 java/lang/StringLatin1 charAt ([BI)C 1 216 java/lang/String charAt (I)C 2 1 java/lang/String isLatin1 ()Z 2 12 java/lang/StringLatin1 charAt ([BI)C 1 703 java/lang/String charAt (I)C 2 1 java/lang/String isLatin1 ()Z 2 12 java/lang/StringLatin1 charAt ([BI)C 1 730 java/lang/String isEmpty ()Z 1 743 java/lang/String lastIndexOf (I)I 2 3 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 8 java/lang/String lastIndexOf (II)I 3 1 java/lang/String isLatin1 ()Z 3 13 java/lang/StringLatin1 lastIndexOf ([BII)I 4 1 java/lang/StringLatin1 canEncode (I)Z 1 771 java/lang/StringBuilder ()V 2 3 java/lang/AbstractStringBuilder (I)V 3 1 java/lang/Object ()V 1 781 java/lang/String substring (II)Ljava/lang/String; 2 1 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 8 java/lang/String checkBoundsBeginEnd (III)V 2 28 java/lang/String isLatin1 ()Z 2 41 java/lang/StringLatin1 newString ([BII)Ljava/lang/String; 3 16 java/util/Arrays copyOfRange ([BII)[B 3 20 java/lang/String ([BB)V 4 1 java/lang/Object ()V 1 784 java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 2 2 java/lang/AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 3 10 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 21 java/lang/AbstractStringBuilder ensureCapacityInternal (I)V 3 30 java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;)V 4 5 java/lang/String length ()I 5 6 java/lang/String coder ()B 4 8 java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;II)V 5 1 java/lang/AbstractStringBuilder getCoder ()B 5 5 java/lang/String coder ()B 5 30 java/lang/String getBytes ([BIIBI)V 6 1 java/lang/String coder ()B 1 789 java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 2 2 java/lang/AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 3 10 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 21 java/lang/AbstractStringBuilder ensureCapacityInternal (I)V 3 30 java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;)V 4 5 java/lang/String length ()I 5 6 java/lang/String coder ()B 4 8 java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;II)V 5 1 java/lang/AbstractStringBuilder getCoder ()B 5 5 java/lang/String coder ()B 5 30 java/lang/String getBytes ([BIIBI)V 6 1 java/lang/String coder ()B 1 796 java/lang/String substring (II)Ljava/lang/String; 2 1 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 8 java/lang/String checkBoundsBeginEnd (III)V 2 28 java/lang/String isLatin1 ()Z 2 41 java/lang/StringLatin1 newString ([BII)Ljava/lang/String; 3 16 java/util/Arrays copyOfRange ([BII)[B 3 20 java/lang/String ([BB)V 4 1 java/lang/Object ()V 1 799 java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; 2 2 java/lang/AbstractStringBuilder append (Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; 3 10 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 21 java/lang/AbstractStringBuilder ensureCapacityInternal (I)V 3 30 java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;)V 4 5 java/lang/String length ()I 5 6 java/lang/String coder ()B 4 8 java/lang/AbstractStringBuilder putStringAt (ILjava/lang/String;II)V 5 1 java/lang/AbstractStringBuilder getCoder ()B 5 5 java/lang/String coder ()B 5 30 java/lang/String getBytes ([BIIBI)V 6 1 java/lang/String coder ()B 1 802 java/lang/StringBuilder toString ()Ljava/lang/String; 2 1 java/lang/AbstractStringBuilder isLatin1 ()Z 2 16 java/lang/StringLatin1 newString ([BII)Ljava/lang/String; 3 16 java/util/Arrays copyOfRange ([BII)[B 3 20 java/lang/String ([BB)V 4 1 java/lang/Object ()V 1 927 java/lang/String indexOf (Ljava/lang/String;)I 2 1 java/lang/String coder ()B 2 7 java/lang/String coder ()B 2 14 java/lang/String isLatin1 ()Z 1 983 java/lang/String indexOf (Ljava/lang/String;I)I 2 5 java/lang/String coder ()B 2 9 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 14 java/lang/String indexOf ([BBILjava/lang/String;I)I 3 7 java/lang/String coder ()B 3 13 java/lang/String length ()I 4 6 java/lang/String coder ()B 1 1080 java/lang/String endsWith (Ljava/lang/String;)Z 2 3 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 7 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 11 java/lang/String startsWith (Ljava/lang/String;I)Z 3 6 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 10 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 39 java/lang/String coder ()B 3 47 java/lang/String coder ()B 1 1131 java/lang/String startsWith (Ljava/lang/String;)Z 2 3 java/lang/String startsWith (Ljava/lang/String;I)Z 3 6 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 10 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 39 java/lang/String coder ()B 3 47 java/lang/String coder ()B 1 1158 java/lang/String endsWith (Ljava/lang/String;)Z 2 3 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 7 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 11 java/lang/String startsWith (Ljava/lang/String;I)Z 3 6 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 10 java/lang/String length ()I 4 6 java/lang/String coder ()B 3 39 java/lang/String coder ()B 3 47 java/lang/String coder ()B 1 1169 java/lang/String length ()I 2 6 java/lang/String coder ()B 1 1174 java/lang/String substring (II)Ljava/lang/String; 2 1 java/lang/String length ()I 3 6 java/lang/String coder ()B 2 8 java/lang/String checkBoundsBeginEnd (III)V 2 28 java/lang/String isLatin1 ()Z 2 41 java/lang/StringLatin1 newString ([BII)Ljava/lang/String; 3 16 java/util/Arrays copyOfRange ([BII)[B 3 20 java/lang/String ([BB)V 4 1 java/lang/Object ()V diff --git a/replay_pid33544.log b/replay_pid33544.log new file mode 100644 index 0000000..4968bf6 --- /dev/null +++ b/replay_pid33544.log @@ -0,0 +1,9957 @@ +JvmtiExport can_access_local_variables 0 +JvmtiExport can_hotswap_or_post_breakpoint 0 +JvmtiExport can_post_on_exceptions 0 +# 411 ciObject found +ciInstanceKlass java/lang/Cloneable 1 0 7 100 1 100 1 1 1 +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestOutputStore$Region +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestOutputStore$TestCaseRegion +instanceKlass org/codehaus/groovy/runtime/EncodingGroovyMethods$1 +instanceKlass org/gradle/api/internal/tasks/testing/operations/TestListenerBuildOperationAdapter$OutputProgress +instanceKlass org/gradle/api/internal/tasks/testing/operations/ExecuteTestBuildOperationType$Output +instanceKlass org/gradle/api/internal/tasks/testing/logging/JavaClassNameFormatter +instanceKlass org/gradle/internal/remote/internal/hub/DefaultMethodArgsSerializer$ArraySerializer +instanceKlass org/gradle/internal/remote/internal/hub/DefaultMethodArgsSerializer$EmptyArraySerializer +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer$MethodDetails +instanceKlass org/gradle/internal/remote/internal/hub/queue/MultiEndPointQueue$1 +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$ConnectionReceive +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$ConnectionDispatch +instanceKlass org/gradle/internal/remote/internal/hub/ConnectionState +instanceKlass org/gradle/internal/serialize/kryo/TypeSafeSerializer$2 +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer$MethodInvocationWriter +instanceKlass org/gradle/internal/remote/internal/hub/InterHubMessageSerializer$MessageWriter +instanceKlass org/gradle/internal/serialize/kryo/TypeSafeSerializer$1 +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer$MethodInvocationReader +instanceKlass org/gradle/internal/remote/internal/hub/InterHubMessageSerializer$MessageReader +instanceKlass org/gradle/internal/remote/internal/hub/MethodInvocationSerializer +instanceKlass org/gradle/internal/serialize/kryo/TypeSafeSerializer +instanceKlass org/gradle/internal/remote/internal/hub/InterHubMessageSerializer +instanceKlass org/gradle/internal/remote/internal/hub/JavaSerializationBackedMethodArgsSerializer +instanceKlass org/gradle/internal/remote/internal/hub/DefaultMethodArgsSerializer +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$ChannelDispatch +instanceKlass org/gradle/api/internal/tasks/testing/worker/ForkingTestClassProcessor$1 +instanceKlass org/gradle/api/tasks/testing/TestFailureDetails +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestFailureSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestOutputEventSerializer +instanceKlass org/gradle/api/internal/tasks/testing/DefaultTestOutputEvent +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$TestCompleteEventSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$NullableSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$TestStartEventSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestMethodDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestClassDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$WorkerTestSuiteDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestSuiteDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultParameterizedTestDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultNestedTestSuiteDescriptorSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$IdSerializer +instanceKlass org/gradle/internal/id/CompositeIdGenerator$CompositeId +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer$DefaultTestClassRunInfoSerializer +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestEventSerializer +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$Handler +instanceKlass org/gradle/internal/remote/internal/hub/queue/EndPointQueue +instanceKlass org/gradle/internal/remote/internal/hub/protocol/ChannelIdentifier +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection$DispatchWrapper +instanceKlass org/gradle/process/internal/worker/WorkerLoggingSerializer +instanceKlass org/gradle/process/internal/worker/DefaultWorkerLoggingProtocol +instanceKlass org/gradle/process/internal/worker/child/WorkerLoggingProtocol +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection$2 +instanceKlass org/gradle/internal/remote/internal/hub/ConnectionSet +instanceKlass org/gradle/internal/remote/internal/hub/protocol/Routable +instanceKlass org/gradle/internal/remote/internal/hub/queue/MultiEndPointQueue +instanceKlass org/gradle/internal/remote/internal/hub/queue/QueueInitializer +instanceKlass org/gradle/internal/remote/internal/hub/protocol/InterHubMessage +instanceKlass org/gradle/internal/remote/internal/hub/queue/MultiChannelQueue +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub$Discard +instanceKlass org/gradle/internal/remote/internal/hub/StreamFailureHandler +instanceKlass org/gradle/internal/dispatch/BoundedDispatch +instanceKlass org/gradle/internal/dispatch/StreamCompletion +instanceKlass org/gradle/internal/remote/internal/hub/RejectedMessageListener +instanceKlass org/gradle/internal/remote/internal/hub/MessageHub +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection$1 +instanceKlass org/gradle/internal/remote/internal/hub/MethodArgsSerializer +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedObjectConnection +instanceKlass org/gradle/util/internal/DisconnectableInputStream$1 +instanceKlass org/gradle/util/internal/DisconnectableInputStream$ThreadExecuter +instanceKlass org/gradle/process/internal/health/memory/MemoryAmount +instanceKlass org/gradle/process/internal/worker/DefaultWorkerProcessBuilder$MemoryRequestingWorkerProcess +instanceKlass org/gradle/process/internal/worker/DefaultWorkerProcess$1 +instanceKlass org/gradle/process/internal/util/LongCommandLineDetectionUtil +instanceKlass org/gradle/process/internal/streams/ForwardStdinStreamsHandler +instanceKlass java/util/concurrent/ArrayBlockingQueue$Itrs +instanceKlass org/gradle/process/internal/worker/WorkerProcessContext +instanceKlass org/gradle/process/internal/worker/messaging/WorkerConfigSerializer +instanceKlass org/gradle/process/internal/worker/messaging/WorkerConfig +instanceKlass org/gradle/internal/process/ArgWriter$4 +instanceKlass org/gradle/internal/process/ArgWriter$2 +instanceKlass org/gradle/internal/process/ArgWriter +instanceKlass org/gradle/internal/process/ArgCollector +instanceKlass org/gradle/process/internal/worker/GradleWorkerMain +instanceKlass org/objectweb/asm/commons/Remapper +instanceKlass org/gradle/process/internal/worker/child/WorkerProcessClassPathProvider$CacheInitializer +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedServer$ConnectEventAction +instanceKlass org/gradle/internal/remote/ObjectConnection +instanceKlass org/gradle/internal/remote/ObjectConnectionBuilder +instanceKlass org/gradle/process/internal/worker/DefaultWorkerProcessBuilder$WorkerJvmMemoryStatus +instanceKlass org/gradle/process/internal/worker/child/WorkerJvmMemoryInfoProtocol +instanceKlass org/gradle/process/internal/worker/DefaultWorkerProcess +instanceKlass org/gradle/process/internal/worker/WorkerProcess +instanceKlass org/gradle/process/internal/worker/DefaultWorkerProcessBuilder +instanceKlass org/gradle/api/internal/tasks/testing/worker/TestWorker +instanceKlass org/gradle/api/internal/tasks/testing/worker/RemoteTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/worker/ForkingTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/processors/RestartEveryNTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/processors/TestMainAction$1 +instanceKlass org/gradle/api/internal/tasks/testing/DefaultTestClassRunInfo +instanceKlass org/gradle/api/tasks/testing/TestFailure +instanceKlass org/gradle/internal/operations/CurrentBuildOperationPreservingRunnable +instanceKlass org/gradle/internal/dispatch/AsyncDispatch$1 +instanceKlass org/gradle/internal/concurrent/InterruptibleRunnable +instanceKlass org/gradle/internal/dispatch/FailureHandlingDispatch +instanceKlass org/gradle/internal/dispatch/AsyncDispatch +instanceKlass org/gradle/internal/dispatch/ExceptionTrackingFailureHandler +instanceKlass org/gradle/internal/dispatch/DispatchFailureHandler +instanceKlass org/gradle/internal/actor/internal/DefaultActorFactory$NonBlockingActor +instanceKlass org/gradle/internal/classpath/intercept/DefaultCallSiteDecorator$2 +instanceKlass org/gradle/internal/classpath/DefaultInstrumentedGroovyCallsTracker$EntryPointCallSiteImpl +instanceKlass org/gradle/internal/classpath/InstrumentedGroovyCallsTracker$EntryPointCallSite +instanceKlass org/gradle/internal/classpath/DefaultInstrumentedGroovyCallsTracker +instanceKlass org/gradle/internal/classpath/PerThreadInstrumentedGroovyCallsTracker +instanceKlass org/gradle/internal/classpath/InstrumentedGroovyCallsTracker +instanceKlass org/gradle/internal/classpath/InstrumentedGroovyCallsHelper +instanceKlass org/gradle/internal/classpath/InstrumentedGroovyCallsHelper$ThrowingCallable +instanceKlass org/gradle/api/internal/tasks/testing/operations/TestListenerBuildOperationAdapter$InProgressExecuteTestBuildOperation +instanceKlass org/gradle/api/internal/tasks/testing/operations/TestListenerBuildOperationAdapter$Details +instanceKlass org/gradle/api/internal/tasks/testing/DecoratingTestDescriptor +instanceKlass org/gradle/api/internal/tasks/testing/results/TestState +instanceKlass org/gradle/api/internal/tasks/testing/AbstractTestDescriptor +instanceKlass org/gradle/api/internal/tasks/testing/results/AttachParentTestResultProcessor +instanceKlass org/gradle/api/internal/tasks/testing/processors/TestMainAction +instanceKlass org/gradle/api/internal/tasks/testing/detection/DefaultTestClassScanner +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$NoWildcardMatcher +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$FullQualifiedClassNameSelector +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$LastElementMatcher +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$ClassNameSelector +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher$TestPattern +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestSelectionMatcher +instanceKlass org/gradle/api/internal/tasks/testing/processors/MaxNParallelTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/processors/RunPreviousFailedFirstTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/processors/PatternMatchTestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/detection/DefaultTestExecuter$2 +instanceKlass org/gradle/api/internal/tasks/testing/detection/DefaultTestExecuter$1 +instanceKlass org/gradle/api/internal/tasks/testing/worker/ForkedTestClasspath +instanceKlass org/gradle/api/internal/tasks/testing/detection/ForkedTestClasspathFactory$AdditionalClasspath +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformSpec +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestClassProcessorFactory +instanceKlass org/gradle/api/internal/tasks/testing/results/StateTrackingTestResultProcessor +instanceKlass org/gradle/api/internal/tasks/testing/TestCompleteEvent +instanceKlass org/gradle/api/internal/tasks/testing/TestStartEvent +instanceKlass org/gradle/api/internal/tasks/testing/TestDescriptorInternal +instanceKlass org/gradle/api/internal/tasks/testing/detection/ForkedTestClasspathFactory$ClassLoadingClassDetector +instanceKlass org/gradle/api/internal/tasks/testing/detection/ForkedTestClasspathFactory$ClassDetector +instanceKlass org/gradle/api/internal/tasks/testing/detection/ForkedTestClasspathFactory$ClassDetectorFactory +instanceKlass org/gradle/api/internal/tasks/testing/detection/ForkedTestClasspathFactory +instanceKlass org/gradle/internal/actor/Actor +instanceKlass org/gradle/internal/concurrent/ThreadSafe +instanceKlass org/gradle/internal/actor/internal/DefaultActorFactory +instanceKlass org/gradle/api/internal/tasks/testing/TestClassProcessor +instanceKlass org/gradle/api/internal/tasks/testing/detection/DefaultTestExecuter +instanceKlass org/gradle/api/internal/tasks/testing/logging/TestWorkerProgressListener +instanceKlass org/gradle/api/internal/tasks/testing/results/TestListenerAdapter +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestReportDataCollector +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestOutputStore$Writer +instanceKlass org/gradle/api/internal/file/delete/DefaultDeleteSpec +instanceKlass org/gradle/api/tasks/testing/AbstractTestTask$1 +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestMethodResult +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestClassResult +instanceKlass org/gradle/api/tasks/testing/Test$5 +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestResultSerializer +instanceKlass org/gradle/jvm/toolchain/internal/JavaExecutableUtils +instanceKlass org/gradle/api/internal/tasks/testing/logging/AbstractTestLogger +instanceKlass org/gradle/api/internal/tasks/testing/logging/ShortExceptionFormatter +instanceKlass org/gradle/api/tasks/testing/AbstractTestTask$2 +instanceKlass org/gradle/internal/Factory +instanceKlass org/codehaus/groovy/runtime/callsite/BooleanReturningMethodInvoker +instanceKlass org/gradle/internal/snapshot/DirectorySnapshot$1 +instanceKlass org/gradle/api/internal/changedetection/state/DefaultZipEntryContext$ZipEntryRelativePath +instanceKlass org/gradle/api/internal/artifacts/DefaultExcludeRule +instanceKlass jdk/internal/ValueBased +instanceKlass org/gradle/internal/execution/history/changes/InputFileChanges$1 +instanceKlass com/sun/tools/javac/code/DeferredLintHandler$LintLogger +instanceKlass com/sun/tools/javac/comp/Infer$4 +instanceKlass com/sun/tools/javac/code/TypeAnnotationPosition$TypePathEntry +instanceKlass com/sun/tools/javac/parser/UnicodeReader$1 +instanceKlass org/gradle/cache/internal/btree/FileBackedBlockStore$1 +instanceKlass org/apache/commons/compress/utils/TimeUtils +instanceKlass org/apache/commons/compress/archivers/zip/ZipFile$NameAndComment +instanceKlass jdk/internal/misc/ScopedMemoryAccess$Scope$Handle +instanceKlass org/apache/commons/compress/archivers/zip/ZipFile$2 +instanceKlass org/apache/commons/compress/archivers/zip/UnparseableExtraFieldData +instanceKlass org/apache/commons/compress/archivers/zip/ExtraFieldUtils$UnparseableExtraField +instanceKlass org/apache/commons/compress/archivers/zip/ResourceAlignmentExtraField +instanceKlass org/apache/commons/compress/archivers/zip/PKWareExtraHeader +instanceKlass org/apache/commons/compress/archivers/zip/Zip64ExtendedInformationExtraField +instanceKlass org/apache/commons/compress/archivers/zip/JarMarker +instanceKlass org/apache/commons/compress/archivers/zip/X7875_NewUnix +instanceKlass org/apache/commons/compress/archivers/zip/AsiExtraField +instanceKlass org/apache/commons/compress/archivers/zip/UnixStat +instanceKlass org/apache/commons/compress/archivers/zip/ExtraFieldUtils +instanceKlass org/apache/commons/compress/archivers/zip/X000A_NTFS +instanceKlass org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestamp +instanceKlass org/apache/commons/compress/archivers/zip/AbstractUnicodeExtraField +instanceKlass org/apache/commons/compress/archivers/zip/ZipUtil +instanceKlass org/apache/commons/compress/archivers/zip/ZipShort +instanceKlass org/apache/commons/compress/archivers/zip/GeneralPurposeBit +instanceKlass org/apache/commons/compress/archivers/zip/NioZipEncoding +instanceKlass org/apache/commons/compress/archivers/zip/CharsetAccessor +instanceKlass org/apache/commons/compress/archivers/zip/ZipEncoding +instanceKlass org/apache/commons/compress/archivers/zip/ZipEncodingHelper +instanceKlass org/apache/commons/compress/utils/MultiReadOnlySeekableByteChannel +instanceKlass org/apache/commons/compress/utils/IOUtils +instanceKlass org/apache/commons/io/Charsets +instanceKlass java/util/function/IntUnaryOperator +instanceKlass org/apache/commons/io/build/AbstractSupplier +instanceKlass org/apache/commons/io/function/IOSupplier +instanceKlass org/apache/commons/compress/archivers/zip/ExtraFieldParsingBehavior +instanceKlass org/apache/commons/compress/archivers/zip/UnparseableExtraFieldBehavior +instanceKlass org/apache/commons/compress/utils/ByteUtils +instanceKlass org/apache/commons/compress/archivers/zip/ZipLong +instanceKlass org/apache/commons/compress/archivers/zip/ZipExtraField +instanceKlass org/apache/commons/compress/archivers/EntryStreamOffsets +instanceKlass org/apache/commons/compress/archivers/ArchiveEntry +instanceKlass org/apache/commons/compress/compressors/bzip2/BZip2Constants +instanceKlass org/apache/commons/compress/utils/InputStreamStatistics +instanceKlass org/apache/commons/compress/archivers/zip/ZipFile +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/deps/DependentsSet$1 +instanceKlass org/gradle/api/internal/file/archive/AbstractArchiveFileTree +instanceKlass org/gradle/api/internal/file/DefaultFileOperations$1 +instanceKlass org/gradle/internal/execution/history/changes/ClasspathCompareStrategy$ChangeState +instanceKlass org/gradle/internal/execution/history/changes/ClasspathCompareStrategy$TrackingVisitor +instanceKlass org/objectweb/asm/TypePath +instanceKlass org/gradle/api/internal/changedetection/state/AbiExtractingClasspathResourceHasher$ZipEntryContent +instanceKlass org/gradle/api/internal/file/archive/impl/AbstractZipEntry$1 +instanceKlass org/gradle/api/internal/changedetection/state/DefaultZipEntryContext +instanceKlass org/gradle/api/internal/file/archive/ZipEntry$IoFunction +instanceKlass org/gradle/api/internal/file/archive/impl/AbstractZipEntry +instanceKlass org/gradle/api/internal/file/archive/impl/FileZipInput +instanceKlass org/gradle/internal/hash/HashCode$1 +instanceKlass com/google/common/collect/MapMakerInternalMap$WeakKeyStrongValueEntry$Helper +instanceKlass com/google/common/collect/Ordering$ArbitraryOrderingHolder +instanceKlass com/google/common/primitives/Booleans +instanceKlass com/google/common/collect/ComparisonChain +instanceKlass org/gradle/internal/tools/api/impl/Member +instanceKlass org/gradle/internal/io/IoFunction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/DefaultConflictResolverDetails +instanceKlass org/gradle/api/internal/tasks/TaskExecuterResult$1 +instanceKlass org/gradle/api/internal/file/AbstractUserClassFilePermissions +instanceKlass org/gradle/api/file/UserClassFilePermissions +instanceKlass org/apache/commons/io/IOUtils +instanceKlass org/gradle/api/internal/file/copy/ChainingTransformer +instanceKlass org/gradle/api/internal/file/copy/FilterChain +instanceKlass org/gradle/api/internal/file/AbstractFilePermissions +instanceKlass org/gradle/api/internal/file/copy/CopyFileVisitorImpl +instanceKlass org/gradle/api/internal/file/copy/CopySpecActionImpl +instanceKlass org/gradle/api/internal/file/copy/FileCopyAction$FileCopyDetailsInternalAction +instanceKlass org/gradle/api/internal/file/copy/CopySpecBackedCopyActionProcessingStream +instanceKlass org/gradle/api/internal/file/copy/FileCopyDetailsInternal +instanceKlass org/gradle/api/internal/file/copy/NormalizingCopyActionDecorator +instanceKlass org/gradle/api/internal/file/copy/DuplicateHandlingCopyActionDecorator +instanceKlass org/gradle/api/internal/file/CopyActionProcessingStreamAction +instanceKlass org/gradle/api/internal/file/copy/FileCopyAction +instanceKlass org/gradle/api/internal/file/copy/CopyActionProcessingStream +instanceKlass org/gradle/internal/execution/history/changes/ExecutionStateChanges$2 +instanceKlass org/gradle/internal/execution/history/changes/IncrementalInputProperties$1 +instanceKlass org/gradle/api/internal/file/collections/DirectoryTrees +instanceKlass java/io/ObjectStreamClass$ExceptionInfo +instanceKlass com/google/common/collect/ImmutableList$SerializedForm +instanceKlass org/gradle/api/internal/tasks/execution/statistics/TaskExecutionStatisticsEventAdapter$1 +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskBuildOperationResult +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskBuildOperationType$Result +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteActionsTaskExecuter$1 +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteActionsTaskExecuter$2 +instanceKlass org/gradle/internal/execution/history/impl/FileSystemSnapshotSerializer$1$1 +instanceKlass org/gradle/internal/execution/history/impl/DefaultOutputFilesRepository$1 +instanceKlass org/gradle/internal/snapshot/impl/GradleSerializedValueSnapshot +instanceKlass org/gradle/internal/fingerprint/CurrentFileCollectionFingerprint$ArchivedFileCollectionFingerprintFactory +instanceKlass com/google/common/collect/Maps$13 +instanceKlass com/google/common/collect/Maps$9 +instanceKlass org/gradle/internal/execution/steps/StoreExecutionStateStep$DefaultAfterExecutionState +instanceKlass org/gradle/internal/execution/steps/CaptureOutputsAfterExecutionStep$Operation$Result$1 +instanceKlass org/gradle/internal/execution/steps/CaptureOutputsAfterExecutionStep$Operation$Result +instanceKlass org/gradle/internal/execution/steps/CaptureOutputsAfterExecutionStep$Operation$Details$1 +instanceKlass org/gradle/internal/execution/steps/CaptureOutputsAfterExecutionStep$Operation$Details +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$Operation$Result$1 +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$Operation$Result +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$ExecutionResultImpl +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$3 +instanceKlass org/gradle/api/internal/tasks/execution/TaskExecution$2 +instanceKlass org/gradle/api/internal/tasks/compile/CompileJavaBuildOperationReportingCompiler$Result +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/constants/ConstantToDependentsMappingMerger +instanceKlass it/unimi/dsi/fastutil/ints/IntOpenHashSet$SetIterator +instanceKlass it/unimi/dsi/fastutil/ints/IntIterators$EmptyIterator +instanceKlass it/unimi/dsi/fastutil/ints/IntList +instanceKlass it/unimi/dsi/fastutil/ints/IntListIterator +instanceKlass it/unimi/dsi/fastutil/ints/IntIterators +instanceKlass org/objectweb/asm/signature/SignatureReader +instanceKlass org/gradle/api/internal/initialization/transform/utils/ClassAnalysisUtils +instanceKlass org/gradle/api/internal/tasks/compile/incremental/asm/ClassRelevancyFilter +instanceKlass org/objectweb/asm/signature/SignatureVisitor +instanceKlass org/gradle/api/internal/tasks/compile/incremental/deps/ClassAnalysis +instanceKlass org/gradle/api/internal/tasks/compile/incremental/classpath/DefaultClassSetAnalyzer$EntryVisitor +instanceKlass org/gradle/api/internal/tasks/compile/incremental/deps/ClassDependentsAccumulator +instanceKlass org/gradle/api/internal/tasks/compile/incremental/RecompilationNotNecessary +instanceKlass org/gradle/internal/execution/history/OutputsCleaner$1 +instanceKlass org/gradle/language/base/internal/tasks/StaleOutputCleaner +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/IncrementalCompilationResult +instanceKlass java/text/FieldPosition$Delegate +instanceKlass org/gradle/api/problems/internal/DefaultFileLocation +instanceKlass org/gradle/api/problems/internal/FileLocation +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$ExecutorState$HealthState +instanceKlass java/time/Instant$1 +instanceKlass java/time/Clock +instanceKlass java/time/InstantSource +instanceKlass com/sun/tools/javac/comp/DeferredAttr$DeferredAttrNode +instanceKlass com/sun/tools/javac/comp/DeferredAttr$DeferredType$SpeculativeCache$Entry +instanceKlass java/nio/file/Path$1 +instanceKlass com/sun/tools/javac/comp/LambdaToMethod$KlassInfo +instanceKlass com/sun/tools/javac/comp/LambdaToMethod$1 +instanceKlass com/sun/tools/javac/comp/LambdaToMethod$LambdaAnalyzerPreprocessor$Frame +instanceKlass com/sun/tools/javac/comp/LambdaToMethod$LambdaAnalyzerPreprocessor$SyntheticMethodNameCounter +instanceKlass com/sun/tools/javac/comp/LambdaToMethod$LambdaAnalyzerPreprocessor$TranslationContext +instanceKlass com/sun/tools/javac/comp/ArgumentAttr$2 +instanceKlass com/sun/tools/javac/comp/Attr$TargetInfo +instanceKlass com/sun/tools/javac/code/Types$DescriptorCache$Entry +instanceKlass com/sun/tools/javac/code/Types$DescriptorCache$FunctionDescriptor +instanceKlass com/sun/tools/javac/util/Constants$1 +instanceKlass com/sun/tools/javac/code/Kinds$1 +instanceKlass com/sun/tools/javac/code/Kinds +instanceKlass com/sun/tools/javac/code/Types$MethodFilter +instanceKlass com/sun/tools/javac/code/Types$CandidatesCache$Entry +instanceKlass com/sun/tools/javac/code/Types$DescriptorFilter +instanceKlass com/sun/tools/javac/comp/Resolve$MostSpecificCheck +instanceKlass com/sun/tools/javac/jvm/PoolConstant$Dynamic$BsmKey +instanceKlass com/sun/tools/javac/comp/ArgumentAttr$LocalCacheContext +instanceKlass com/sun/tools/javac/jvm/ClassWriter$StackMapTableFrame +instanceKlass com/sun/tools/javac/jvm/Code$StackMapFrame +instanceKlass com/sun/tools/javac/jvm/Code$Chain +instanceKlass com/sun/tools/javac/comp/Flow$1 +instanceKlass com/sun/tools/javac/comp/Operators$1 +instanceKlass com/sun/tools/javac/comp/DeferredAttr$5 +instanceKlass com/sun/tools/javac/comp/DeferredAttr$DeferredType$SpeculativeCache +instanceKlass com/sun/tools/javac/comp/ArgumentAttr$UniquePos +instanceKlass com/sun/tools/javac/jvm/PoolConstant$LoadableConstant$BasicConstant +instanceKlass com/sun/tools/javac/jvm/ClassWriter$1 +instanceKlass com/sun/tools/javac/jvm/PoolWriter$1 +instanceKlass com/sun/tools/javac/jvm/PoolConstant$NameAndType +instanceKlass java/util/function/ToIntBiFunction +instanceKlass com/sun/tools/javac/jvm/Code$LocalVar$Range +instanceKlass com/sun/tools/javac/jvm/Items +instanceKlass com/sun/tools/javac/jvm/Code$LocalVar +instanceKlass com/sun/tools/javac/jvm/Code$State +instanceKlass com/sun/tools/javac/jvm/Gen$GenContext +instanceKlass com/sun/tools/javac/jvm/Gen$4 +instanceKlass org/gradle/util/internal/RelativePathUtil +instanceKlass com/sun/tools/javac/comp/Lower$2 +instanceKlass com/sun/tools/javac/comp/TransPatterns$BindingContext +instanceKlass com/sun/tools/javac/util/Constants +instanceKlass org/gradle/internal/compiler/java/listeners/constants/ConstantsVisitorContext +instanceKlass com/sun/tools/javac/tree/TreeInfo$1 +instanceKlass com/sun/tools/javac/util/Bits$1 +instanceKlass com/sun/tools/javac/util/Bits +instanceKlass com/sun/tools/javac/comp/Flow$BaseAnalyzer$PendingExit +instanceKlass com/sun/tools/javac/comp/Resolve$18 +instanceKlass java/util/EnumMap$EntryIterator$Entry +instanceKlass java/util/EnumMap$EnumMapIterator +instanceKlass com/sun/tools/javac/comp/Infer$BoundFilter +instanceKlass com/sun/tools/javac/util/GraphUtils$Tarjan +instanceKlass com/sun/tools/javac/util/GraphUtils +instanceKlass com/sun/tools/javac/util/GraphUtils$AbstractNode +instanceKlass com/sun/tools/javac/util/GraphUtils$DottableNode +instanceKlass com/sun/tools/javac/util/GraphUtils$Node +instanceKlass com/sun/tools/javac/comp/Infer$GraphSolver$InferenceGraph +instanceKlass com/sun/tools/javac/code/Types$ClosureHolder +instanceKlass com/sun/tools/javac/comp/Infer$IncorporationBinaryOp +instanceKlass com/sun/tools/javac/comp/Infer$GraphSolver +instanceKlass com/sun/tools/javac/comp/Infer$LeafSolver +instanceKlass com/sun/tools/javac/comp/Infer$FreeTypeListener +instanceKlass com/sun/tools/javac/comp/Infer$IncorporationAction +instanceKlass com/sun/tools/javac/comp/Resolve$MethodCheckContext +instanceKlass com/sun/tools/javac/comp/Check$ClashFilter +instanceKlass com/sun/tools/javac/code/Symbol$1 +instanceKlass com/sun/tools/javac/comp/Check$DefaultMethodClashFilter +instanceKlass com/sun/tools/javac/main/JavaCompiler$2 +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$ServiceIterator +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$ImplicitCompleter +instanceKlass com/sun/tools/javac/util/JCDiagnostic$SourcePosition +instanceKlass org/gradle/api/problems/internal/DefaultGeneralData$DefaultGeneralDataBuilder +instanceKlass org/gradle/api/problems/internal/DefaultGeneralData +instanceKlass com/sun/tools/javac/util/AbstractDiagnosticFormatter$2 +instanceKlass com/sun/tools/javac/util/RichDiagnosticFormatter$ClassNameSimplifier +instanceKlass org/gradle/api/internal/tasks/compile/DiagnosticToProblemListener$1 +instanceKlass com/sun/tools/javac/util/Log$1 +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$2 +instanceKlass com/sun/tools/javac/tree/Pretty$1 +instanceKlass com/sun/tools/javac/parser/LazyDocCommentTable$Entry +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler$DeferredCompleter +instanceKlass com/sun/tools/javac/comp/Annotate$Queues +instanceKlass com/sun/tools/javac/comp/Annotate$AnnotationContext +instanceKlass java/util/IdentityHashMap$EntryIterator$Entry +instanceKlass com/sun/tools/javac/model/JavacElements$1 +instanceKlass org/gradle/api/internal/tasks/compile/processing/TimeTrackingProcessor$5 +instanceKlass javax/annotation/processing/SupportedOptions +instanceKlass org/gradle/api/internal/tasks/compile/processing/TimeTrackingProcessor$1 +instanceKlass com/sun/tools/javac/util/MatchingUtils +instanceKlass javax/annotation/processing/SupportedAnnotationTypes +instanceKlass org/gradle/api/internal/tasks/compile/processing/TimeTrackingProcessor$2 +instanceKlass org/gradle/api/internal/tasks/compile/processing/TimeTrackingProcessor$3 +instanceKlass java/util/Vector$1 +instanceKlass com/sun/tools/javac/api/JavacScope +instanceKlass java/text/BreakIterator +instanceKlass com/sun/source/util/DocTreePath +instanceKlass java/util/regex/Pattern$1 +instanceKlass javax/lang/model/type/TypeVisitor +instanceKlass org/gradle/api/internal/tasks/compile/processing/IncrementalProcessingEnvironment +instanceKlass org/gradle/api/internal/tasks/compile/processing/IncrementalFiler +instanceKlass org/gradle/api/internal/tasks/compile/processing/TimeTrackingProcessor$4 +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$ProcessorState +instanceKlass com/sun/tools/javac/processing/JavacRoundEnvironment +instanceKlass javax/lang/model/util/AbstractElementVisitor6 +instanceKlass javax/lang/model/element/ElementVisitor +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$Round +instanceKlass com/sun/tools/javac/code/Type$5 +instanceKlass com/sun/tools/javac/code/TypeMetadata$Annotations +instanceKlass com/sun/tools/javac/code/TypeAnnotations$TypeAnnotationPositions$1 +instanceKlass com/sun/tools/javac/code/TypeAnnotations$1 +instanceKlass com/sun/tools/javac/code/Types$TypePair +instanceKlass com/sun/tools/javac/code/Types$UniqueType +instanceKlass com/sun/tools/javac/resources/CompilerProperties$Warnings +instanceKlass com/sun/tools/javac/util/JCDiagnostic$1 +instanceKlass com/sun/tools/javac/code/Flags +instanceKlass com/sun/tools/javac/comp/Resolve$MethodResolutionContext$Candidate +instanceKlass com/sun/tools/javac/code/Types$ImplementationCache$Entry +instanceKlass com/sun/tools/javac/comp/Resolve$LookupFilter +instanceKlass com/sun/tools/javac/comp/Resolve$5 +instanceKlass com/sun/tools/javac/comp/Resolve$MethodResolutionContext +instanceKlass com/sun/tools/javac/code/Scope$ImportScope$1 +instanceKlass com/sun/tools/javac/code/Types$25 +instanceKlass com/sun/tools/javac/comp/TypeEnter$1 +instanceKlass com/sun/tools/javac/jvm/ClassReader$ParameterAnnotations +instanceKlass com/sun/tools/javac/util/Iterators$2 +instanceKlass com/sun/tools/javac/tree/TreeMaker$2 +instanceKlass com/sun/tools/javac/code/TypeTag$1 +instanceKlass com/sun/tools/javac/jvm/ClassReader$TypeAnnotationProxy +instanceKlass com/sun/tools/javac/code/TypeAnnotationPosition +instanceKlass com/sun/tools/javac/jvm/ClassReader$28 +instanceKlass com/sun/tools/javac/comp/TypeEnter$BasicConstructorHelper +instanceKlass com/sun/tools/javac/code/SymbolMetadata +instanceKlass com/sun/tools/javac/jvm/Code$1 +instanceKlass com/sun/tools/javac/jvm/ClassReader$CompleterDeproxy +instanceKlass com/sun/tools/javac/jvm/ClassReader$AnnotationDeproxy +instanceKlass com/sun/tools/javac/jvm/ClassReader$ProxyVisitor +instanceKlass com/sun/tools/javac/comp/MatchBindingsComputer$1 +instanceKlass com/sun/tools/javac/comp/Attr$13 +instanceKlass com/sun/tools/javac/code/Scope$FilterImportScope$SymbolImporter +instanceKlass com/sun/tools/javac/code/Scope$ImportFilter +instanceKlass com/sun/tools/javac/api/ClientCodeWrapper$WrappedFileObject +instanceKlass com/sun/tools/javac/code/ClassFinder$2 +instanceKlass com/sun/tools/javac/code/Scope$ScopeImpl$2 +instanceKlass com/sun/tools/javac/comp/Check$5 +instanceKlass com/sun/tools/javac/comp/AttrContext +instanceKlass com/sun/tools/javac/code/Scope$ScopeImpl$1 +instanceKlass com/sun/tools/javac/code/ClassFinder$1 +instanceKlass java/util/ImmutableCollections$Access$1 +instanceKlass jdk/internal/access/JavaUtilCollectionAccess +instanceKlass java/util/ImmutableCollections$Access +instanceKlass com/sun/tools/javac/file/JavacFileManager$ArchiveContainer +instanceKlass com/sun/tools/javac/file/JavacFileManager$PathAndContainer +instanceKlass javax/lang/model/element/ModuleElement$OpensDirective +instanceKlass com/sun/tools/javac/jvm/ClassReader$InterimUsesDirective +instanceKlass com/sun/tools/javac/jvm/ClassReader$UsesProvidesCompleter +instanceKlass com/sun/tools/javac/jvm/ClassReader$InterimProvidesDirective +instanceKlass javax/lang/model/element/ModuleElement$ExportsDirective +instanceKlass com/sun/tools/javac/util/Name$NameMapper +instanceKlass com/sun/tools/javac/jvm/ClassReader$SourceFileObject +instanceKlass com/sun/tools/javac/jvm/PoolReader$ImmutablePoolHelper +instanceKlass com/sun/tools/javac/jvm/PoolReader +instanceKlass com/sun/tools/javac/util/ArrayUtils +instanceKlass com/sun/tools/javac/comp/Modules$3 +instanceKlass com/sun/tools/javac/code/ModuleFinder$1 +instanceKlass com/sun/tools/javac/file/JavacFileManager$DirectoryContainer +instanceKlass com/sun/tools/javac/tree/JCTree$1 +instanceKlass com/sun/tools/javac/parser/JavacParser$LambdaClassifier +instanceKlass com/sun/tools/javac/parser/JavadocTokenizer$OffsetMap +instanceKlass com/sun/tools/javac/util/Position$LineMapImpl +instanceKlass com/sun/tools/javac/util/Position$LineMap +instanceKlass com/sun/tools/javac/util/Position +instanceKlass com/sun/tools/javac/tree/TreeInfo$2 +instanceKlass com/sun/tools/javac/tree/TreeInfo +instanceKlass com/sun/tools/javac/parser/JavacParser$1 +instanceKlass com/sun/tools/javac/resources/CompilerProperties$Errors +instanceKlass com/sun/tools/javac/util/IntHashTable +instanceKlass com/sun/tools/javac/parser/LazyDocCommentTable +instanceKlass com/sun/tools/javac/parser/JavacParser$ErrorRecoveryAction +instanceKlass com/sun/tools/javac/parser/JavacParser$AbstractEndPosTable +instanceKlass com/sun/tools/javac/tree/EndPosTable +instanceKlass com/sun/tools/javac/parser/JavacParser +instanceKlass com/sun/tools/javac/parser/Scanner +instanceKlass com/sun/source/tree/LineMap +instanceKlass com/sun/tools/javac/file/BaseFileManager$ContentCacheEntry +instanceKlass com/sun/tools/javac/util/DiagnosticSource +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment$DiscoveredProcessors +instanceKlass com/sun/tools/javac/util/Iterators$CompoundIterator +instanceKlass com/sun/tools/javac/util/Iterators$1 +instanceKlass com/sun/tools/javac/util/Iterators +instanceKlass com/sun/source/util/TaskEvent +instanceKlass com/sun/tools/javac/file/JavacFileManager$3 +instanceKlass javax/tools/StandardLocation$2 +instanceKlass com/sun/tools/javac/model/JavacTypes +instanceKlass com/sun/tools/javac/processing/JavacMessager +instanceKlass com/sun/tools/javac/processing/JavacFiler +instanceKlass javax/annotation/processing/RoundEnvironment +instanceKlass javax/annotation/processing/Filer +instanceKlass javax/annotation/processing/Messager +instanceKlass com/sun/tools/javac/processing/JavacProcessingEnvironment +instanceKlass com/sun/tools/javac/code/Source$1 +instanceKlass com/sun/tools/javac/util/Pair +instanceKlass com/sun/tools/javac/api/ClientCodeWrapper$WrappedTaskListener +instanceKlass org/gradle/internal/compiler/java/listeners/constants/ConstantsCollector +instanceKlass com/sun/tools/javac/platform/PlatformDescription +instanceKlass com/sun/tools/javac/util/ForwardingDiagnosticFormatter$ForwardingConfiguration +instanceKlass com/sun/tools/javac/code/Types$DefaultSymbolVisitor +instanceKlass com/sun/tools/javac/util/ForwardingDiagnosticFormatter +instanceKlass com/sun/tools/javac/code/ModuleFinder$ModuleNameFromSourceReader +instanceKlass com/sun/tools/javac/comp/Modules$PackageNameFinder +instanceKlass com/sun/tools/javac/api/MultiTaskListener +instanceKlass com/sun/tools/javac/parser/UnicodeReader +instanceKlass com/sun/tools/javac/parser/ScannerFactory +instanceKlass com/sun/tools/javac/parser/Tokens$Token +instanceKlass com/sun/tools/javac/parser/Tokens +instanceKlass com/sun/tools/javac/parser/ReferenceParser +instanceKlass com/sun/source/tree/Scope +instanceKlass com/sun/source/doctree/DocTreeVisitor +instanceKlass com/sun/tools/javac/tree/DocCommentTable +instanceKlass com/sun/source/util/DocSourcePositions +instanceKlass com/sun/source/util/SourcePositions +instanceKlass com/sun/source/doctree/UnknownInlineTagTree +instanceKlass com/sun/source/doctree/StartElementTree +instanceKlass com/sun/source/doctree/UnknownBlockTagTree +instanceKlass com/sun/source/doctree/SystemPropertyTree +instanceKlass com/sun/source/doctree/AttributeTree +instanceKlass com/sun/source/doctree/CommentTree +instanceKlass com/sun/source/doctree/DocRootTree +instanceKlass com/sun/source/doctree/AuthorTree +instanceKlass com/sun/source/doctree/DeprecatedTree +instanceKlass com/sun/source/doctree/SerialDataTree +instanceKlass com/sun/source/doctree/IndexTree +instanceKlass com/sun/source/doctree/InheritDocTree +instanceKlass com/sun/source/doctree/ParamTree +instanceKlass com/sun/source/doctree/SeeTree +instanceKlass com/sun/source/doctree/HiddenTree +instanceKlass com/sun/source/doctree/SerialFieldTree +instanceKlass com/sun/source/doctree/ReferenceTree +instanceKlass com/sun/source/doctree/LinkTree +instanceKlass com/sun/source/doctree/SummaryTree +instanceKlass com/sun/source/doctree/SerialTree +instanceKlass com/sun/source/doctree/ProvidesTree +instanceKlass com/sun/source/doctree/DocTypeTree +instanceKlass com/sun/source/doctree/EndElementTree +instanceKlass com/sun/source/doctree/SinceTree +instanceKlass com/sun/source/doctree/EntityTree +instanceKlass com/sun/source/doctree/LiteralTree +instanceKlass com/sun/source/doctree/ErroneousTree +instanceKlass com/sun/source/doctree/IdentifierTree +instanceKlass com/sun/source/doctree/ThrowsTree +instanceKlass com/sun/source/doctree/ValueTree +instanceKlass com/sun/source/doctree/UsesTree +instanceKlass com/sun/source/doctree/VersionTree +instanceKlass com/sun/source/doctree/TextTree +instanceKlass com/sun/source/doctree/ReturnTree +instanceKlass com/sun/source/doctree/InlineTagTree +instanceKlass com/sun/source/doctree/BlockTagTree +instanceKlass com/sun/source/doctree/DocCommentTree +instanceKlass com/sun/source/doctree/DocTree +instanceKlass com/sun/tools/javac/parser/Tokens$Comment +instanceKlass com/sun/tools/javac/tree/DocTreeMaker +instanceKlass com/sun/source/util/DocTreeFactory +instanceKlass com/sun/tools/javac/parser/Lexer +instanceKlass com/sun/tools/javac/parser/ParserFactory +instanceKlass com/sun/tools/javac/main/DelegatingJavaFileManager +instanceKlass javax/lang/model/element/RecordComponentElement +instanceKlass com/sun/tools/javac/jvm/ClassReader$AttributeReader +instanceKlass com/sun/tools/javac/code/Preview$1 +instanceKlass com/sun/tools/javac/comp/Analyzer$2 +instanceKlass com/sun/tools/javac/comp/Analyzer$1 +instanceKlass com/sun/tools/javac/comp/Analyzer$StatementAnalyzer +instanceKlass com/sun/tools/javac/comp/Analyzer$DeferredAnalysisHelper +instanceKlass com/sun/tools/javac/comp/Analyzer +instanceKlass com/sun/tools/javac/code/Symtab$2 +instanceKlass com/sun/tools/javac/code/Symtab$1 +instanceKlass com/sun/tools/javac/jvm/JNIWriter +instanceKlass com/sun/tools/javac/jvm/Code +instanceKlass com/sun/tools/javac/jvm/PoolWriter$WriteablePoolHelper +instanceKlass com/sun/tools/javac/code/Types$SignatureGenerator +instanceKlass com/sun/tools/javac/jvm/PoolWriter +instanceKlass com/sun/tools/javac/comp/ConstFold +instanceKlass com/sun/tools/javac/comp/Operators$OperatorHelper +instanceKlass com/sun/tools/javac/comp/Operators +instanceKlass com/sun/tools/javac/jvm/PoolConstant$Dynamic +instanceKlass com/sun/tools/javac/jvm/StringConcat +instanceKlass com/sun/tools/javac/jvm/Gen$GenFinalizer +instanceKlass com/sun/tools/javac/jvm/Items$Item +instanceKlass com/sun/tools/javac/jvm/ClassWriter$AttributeWriter +instanceKlass com/sun/tools/javac/jvm/ClassFile +instanceKlass com/sun/tools/javac/code/ModuleFinder$ModuleLocationIterator +instanceKlass com/sun/tools/javac/code/ModuleFinder +instanceKlass com/sun/tools/javac/comp/Flow +instanceKlass com/sun/tools/javac/comp/Infer$GraphStrategy +instanceKlass com/sun/tools/javac/comp/InferenceContext +instanceKlass javax/lang/model/element/TypeParameterElement +instanceKlass com/sun/tools/javac/comp/Infer$AbstractIncorporationEngine +instanceKlass com/sun/tools/javac/code/Type$UndetVar$UndetVarListener +instanceKlass com/sun/tools/javac/comp/Infer +instanceKlass com/sun/tools/javac/util/MandatoryWarningHandler +instanceKlass com/sun/tools/javac/code/Preview +instanceKlass com/sun/tools/javac/util/Dependencies +instanceKlass com/sun/tools/javac/comp/TypeEnvs +instanceKlass com/sun/tools/javac/code/Lint$AugmentVisitor +instanceKlass com/sun/tools/javac/code/TypeAnnotations +instanceKlass com/sun/tools/javac/code/DeferredLintHandler$1 +instanceKlass com/sun/tools/javac/code/DeferredLintHandler +instanceKlass com/sun/tools/javac/comp/TypeEnter$DefaultConstructorHelper +instanceKlass com/sun/tools/javac/util/GraphUtils$DependencyKind +instanceKlass com/sun/tools/javac/comp/TypeEnter$Phase +instanceKlass com/sun/tools/javac/comp/TypeEnter +instanceKlass com/sun/tools/javac/code/Types$CandidatesCache +instanceKlass com/sun/tools/javac/code/Types$ImplementationCache +instanceKlass com/sun/tools/javac/code/Types$3 +instanceKlass com/sun/tools/javac/code/Types$DescriptorCache +instanceKlass com/sun/tools/javac/code/Types +instanceKlass com/sun/tools/javac/tree/TreeMaker$AnnotationBuilder +instanceKlass com/sun/tools/javac/tree/TreeMaker +instanceKlass com/sun/tools/javac/tree/JCTree$Factory +instanceKlass com/sun/tools/javac/comp/DeferredAttr$4 +instanceKlass com/sun/tools/javac/tree/TreeCopier +instanceKlass com/sun/tools/javac/comp/DeferredAttr$DeferredAttrContext +instanceKlass com/sun/tools/javac/comp/DeferredAttr$DeferredStuckPolicy +instanceKlass com/sun/tools/javac/comp/AttrRecover +instanceKlass com/sun/tools/javac/comp/Resolve$ReferenceLookupResult +instanceKlass com/sun/tools/javac/api/Formattable$LocalizedString +instanceKlass com/sun/tools/javac/comp/Resolve$9 +instanceKlass com/sun/tools/javac/comp/Resolve$8 +instanceKlass com/sun/tools/javac/comp/Resolve$7 +instanceKlass com/sun/tools/javac/comp/Resolve$6 +instanceKlass com/sun/tools/javac/comp/Env +instanceKlass com/sun/tools/javac/comp/Resolve$AbstractMethodCheck +instanceKlass com/sun/tools/javac/comp/Resolve$2 +instanceKlass com/sun/tools/javac/comp/Resolve$LookupHelper +instanceKlass com/sun/tools/javac/code/Scope$ScopeListener +instanceKlass com/sun/tools/javac/comp/Resolve$ReferenceChooser +instanceKlass com/sun/tools/javac/comp/Resolve$LogResolveHelper +instanceKlass com/sun/tools/javac/comp/Resolve$RecoveryLoadClass +instanceKlass com/sun/tools/javac/comp/Resolve +instanceKlass com/sun/tools/javac/comp/Check$1 +instanceKlass com/sun/tools/javac/util/Warner +instanceKlass com/sun/tools/javac/comp/Check +instanceKlass com/sun/tools/javac/comp/Modules$1 +instanceKlass com/sun/tools/javac/resources/CompilerProperties$Fragments +instanceKlass com/sun/tools/javac/code/Directive +instanceKlass javax/lang/model/element/ModuleElement$RequiresDirective +instanceKlass javax/lang/model/element/ModuleElement$Directive +instanceKlass com/sun/tools/javac/code/Scope$ScopeListenerList +instanceKlass com/sun/tools/javac/code/Scope$Entry +instanceKlass com/sun/tools/javac/comp/Annotate$AnnotationTypeMetadata +instanceKlass com/sun/tools/javac/api/Formattable +instanceKlass com/sun/tools/javac/code/Kinds$KindSelector +instanceKlass com/sun/tools/javac/code/MissingInfoHandler +instanceKlass com/sun/tools/javac/code/TypeMetadata +instanceKlass javax/lang/model/type/NullType +instanceKlass com/sun/tools/javac/code/Symtab +instanceKlass com/sun/tools/javac/comp/MatchBindingsComputer$MatchBindings +instanceKlass com/sun/source/util/SimpleTreeVisitor +instanceKlass javax/lang/model/type/UnionType +instanceKlass javax/lang/model/type/IntersectionType +instanceKlass com/sun/tools/javac/comp/Check$NestedCheckContext +instanceKlass com/sun/tools/javac/comp/Resolve$MethodCheck +instanceKlass com/sun/tools/javac/comp/Attr$ResultInfo +instanceKlass com/sun/tools/javac/code/Types$DefaultTypeVisitor +instanceKlass com/sun/source/tree/WildcardTree +instanceKlass com/sun/source/tree/UnionTypeTree +instanceKlass com/sun/source/tree/UnaryTree +instanceKlass com/sun/source/tree/BinaryTree +instanceKlass com/sun/source/tree/TypeCastTree +instanceKlass com/sun/source/tree/CatchTree +instanceKlass com/sun/source/tree/IfTree +instanceKlass com/sun/source/tree/AssertTree +instanceKlass com/sun/source/tree/NewClassTree +instanceKlass com/sun/source/tree/BreakTree +instanceKlass com/sun/source/tree/ReturnTree +instanceKlass com/sun/source/tree/ThrowTree +instanceKlass com/sun/source/tree/ContinueTree +instanceKlass com/sun/source/tree/ImportTree +instanceKlass com/sun/source/tree/TryTree +instanceKlass com/sun/source/tree/SynchronizedTree +instanceKlass com/sun/source/tree/CaseTree +instanceKlass com/sun/source/tree/BlockTree +instanceKlass com/sun/source/tree/ArrayTypeTree +instanceKlass com/sun/source/tree/WhileLoopTree +instanceKlass com/sun/source/tree/ForLoopTree +instanceKlass com/sun/source/tree/SwitchTree +instanceKlass com/sun/source/tree/ModuleTree +instanceKlass com/sun/source/tree/IntersectionTypeTree +instanceKlass com/sun/source/tree/ParenthesizedPatternTree +instanceKlass com/sun/source/tree/DefaultCaseLabelTree +instanceKlass com/sun/source/tree/BindingPatternTree +instanceKlass com/sun/source/tree/SwitchExpressionTree +instanceKlass com/sun/source/tree/MemberReferenceTree +instanceKlass com/sun/source/tree/AssignmentTree +instanceKlass com/sun/source/tree/CompoundAssignmentTree +instanceKlass com/sun/source/tree/ArrayAccessTree +instanceKlass com/sun/source/tree/GuardedPatternTree +instanceKlass com/sun/source/tree/PatternTree +instanceKlass com/sun/source/tree/InstanceOfTree +instanceKlass com/sun/source/tree/PrimitiveTypeTree +instanceKlass com/sun/source/tree/ParenthesizedTree +instanceKlass com/sun/source/tree/ConditionalExpressionTree +instanceKlass com/sun/source/tree/MethodInvocationTree +instanceKlass com/sun/source/tree/LambdaExpressionTree +instanceKlass com/sun/source/tree/LabeledStatementTree +instanceKlass com/sun/source/tree/EnhancedForLoopTree +instanceKlass com/sun/source/tree/ExpressionStatementTree +instanceKlass com/sun/source/tree/VariableTree +instanceKlass com/sun/source/tree/PackageTree +instanceKlass com/sun/source/tree/EmptyStatementTree +instanceKlass com/sun/source/tree/MethodTree +instanceKlass com/sun/source/tree/DoWhileLoopTree +instanceKlass com/sun/source/tree/ProvidesTree +instanceKlass com/sun/source/tree/RequiresTree +instanceKlass com/sun/source/tree/ErroneousTree +instanceKlass com/sun/source/tree/UsesTree +instanceKlass com/sun/source/tree/YieldTree +instanceKlass com/sun/source/tree/OpensTree +instanceKlass com/sun/source/tree/ExportsTree +instanceKlass com/sun/source/tree/DirectiveTree +instanceKlass com/sun/source/tree/TypeParameterTree +instanceKlass com/sun/source/tree/LiteralTree +instanceKlass com/sun/source/tree/AnnotatedTypeTree +instanceKlass com/sun/source/tree/ModifiersTree +instanceKlass com/sun/source/tree/ParameterizedTypeTree +instanceKlass com/sun/tools/javac/comp/Annotate$2 +instanceKlass com/sun/tools/javac/code/TypeMetadata$Entry +instanceKlass com/sun/tools/javac/comp/Check$CheckContext +instanceKlass com/sun/source/tree/NewArrayTree +instanceKlass com/sun/tools/javac/comp/Annotate +instanceKlass com/sun/tools/javac/util/ByteBuffer +instanceKlass com/sun/tools/javac/comp/Annotate$AnnotationTypeCompleter +instanceKlass javax/lang/model/type/PrimitiveType +instanceKlass com/sun/tools/javac/jvm/ClassReader +instanceKlass com/sun/tools/javac/code/ClassFinder +instanceKlass com/sun/tools/javac/util/Convert +instanceKlass com/sun/tools/javac/util/Name +instanceKlass com/sun/tools/javac/util/Name$Table +instanceKlass com/sun/tools/javac/util/Names +instanceKlass com/sun/tools/javac/code/Symbol$Completer$1 +instanceKlass com/sun/source/tree/ClassTree +instanceKlass com/sun/source/tree/StatementTree +instanceKlass com/sun/source/tree/MemberSelectTree +instanceKlass com/sun/source/tree/IdentifierTree +instanceKlass com/sun/tools/javac/main/JavaCompiler +instanceKlass com/sun/tools/javac/code/Attribute$Visitor +instanceKlass javax/lang/model/element/AnnotationMirror +instanceKlass com/sun/tools/javac/code/Attribute +instanceKlass javax/lang/model/element/AnnotationValue +instanceKlass com/sun/source/tree/AnnotationTree +instanceKlass com/sun/tools/javac/tree/JCTree$Visitor +instanceKlass javax/lang/model/element/TypeElement +instanceKlass javax/lang/model/element/ModuleElement +instanceKlass com/sun/tools/javac/code/Scope +instanceKlass javax/lang/model/element/PackageElement +instanceKlass javax/lang/model/element/QualifiedNameable +instanceKlass javax/lang/model/element/Name +instanceKlass com/sun/tools/javac/model/JavacElements +instanceKlass org/gradle/internal/compiler/java/listeners/classnames/ClassNameCollector +instanceKlass javax/annotation/processing/ProcessingEnvironment +instanceKlass org/gradle/api/internal/tasks/compile/processing/IncrementalProcessingStrategy +instanceKlass org/gradle/api/internal/tasks/compile/processing/DelegatingProcessor +instanceKlass org/gradle/api/internal/tasks/compile/AnnotationProcessingCompileTask$1 +instanceKlass java/net/URLEncoder +instanceKlass java/net/URLDecoder +instanceKlass org/gradle/api/internal/tasks/compile/incremental/processing/AnnotationProcessorResult +instanceKlass javax/annotation/processing/AbstractProcessor +instanceKlass org/gradle/api/internal/tasks/compile/filter/AnnotationProcessorFilter +instanceKlass org/gradle/api/internal/tasks/compile/ResourceCleaningCompilationTask +instanceKlass javax/annotation/processing/Processor +instanceKlass org/gradle/api/internal/tasks/compile/AnnotationProcessingCompileTask +instanceKlass org/gradle/internal/compiler/java/listeners/constants/ConstantDependentsConsumer +instanceKlass org/gradle/internal/compiler/java/IncrementalCompileTask +instanceKlass org/gradle/api/internal/tasks/compile/CompilationClassBackupService +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler$FlipSymbolDescription +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler$3 +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler$2 +instanceKlass com/sun/tools/javac/code/Symbol$Completer +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler$1 +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler$Handler +instanceKlass com/sun/tools/javac/code/DeferredCompletionFailureHandler +instanceKlass com/sun/tools/javac/parser/Parser +instanceKlass com/sun/tools/javac/api/JavacTaskImpl$Filter +instanceKlass com/sun/tools/javac/main/Arguments$ErrorReporter +instanceKlass com/sun/tools/javac/util/StringUtils +instanceKlass com/sun/tools/javac/file/BaseFileManager$3 +instanceKlass com/sun/tools/doclint/DocLint$1 +instanceKlass com/sun/source/tree/CompilationUnitTree +instanceKlass com/sun/source/util/TreePath +instanceKlass javax/lang/model/util/Types +instanceKlass javax/lang/model/util/Elements +instanceKlass com/sun/source/util/Trees +instanceKlass com/sun/source/util/TreeScanner +instanceKlass com/sun/source/tree/TreeVisitor +instanceKlass java/util/ServiceLoader$ProviderSpliterator +instanceKlass com/sun/tools/doclint/DocLint +instanceKlass com/sun/source/util/Plugin +instanceKlass com/sun/tools/javac/util/ListBuffer$1 +instanceKlass com/sun/tools/javac/main/Arguments +instanceKlass com/sun/tools/javac/api/ClientCodeWrapper$WrappedJavaFileManager +instanceKlass com/sun/tools/javac/api/ClientCodeWrapper$Trusted +instanceKlass com/sun/source/util/TaskListener +instanceKlass com/sun/tools/javac/api/ClientCodeWrapper +instanceKlass javax/tools/ForwardingJavaFileManager +instanceKlass com/sun/tools/javac/file/PathFileObject +instanceKlass com/sun/tools/javac/util/JCDiagnostic +instanceKlass javax/lang/model/element/ExecutableElement +instanceKlass javax/lang/model/element/Parameterizable +instanceKlass javax/lang/model/element/VariableElement +instanceKlass javax/lang/model/type/NoType +instanceKlass javax/lang/model/type/ArrayType +instanceKlass javax/lang/model/type/ExecutableType +instanceKlass javax/lang/model/type/WildcardType +instanceKlass javax/lang/model/type/TypeVariable +instanceKlass com/sun/tools/javac/jvm/PoolConstant$LoadableConstant +instanceKlass javax/lang/model/type/ErrorType +instanceKlass javax/lang/model/type/DeclaredType +instanceKlass javax/lang/model/type/ReferenceType +instanceKlass javax/lang/model/type/TypeMirror +instanceKlass com/sun/tools/javac/code/AnnoConstruct +instanceKlass javax/lang/model/element/Element +instanceKlass javax/lang/model/AnnotatedConstruct +instanceKlass com/sun/tools/javac/jvm/PoolConstant +instanceKlass com/sun/tools/javac/util/AbstractDiagnosticFormatter$SimpleConfiguration +instanceKlass com/sun/tools/javac/api/DiagnosticFormatter$Configuration +instanceKlass com/sun/source/tree/ExpressionTree +instanceKlass com/sun/source/tree/CaseLabelTree +instanceKlass com/sun/tools/javac/tree/JCTree +instanceKlass com/sun/source/tree/Tree +instanceKlass com/sun/tools/javac/code/Printer +instanceKlass com/sun/tools/javac/code/Symbol$Visitor +instanceKlass com/sun/tools/javac/code/Type$Visitor +instanceKlass com/sun/tools/javac/util/AbstractDiagnosticFormatter +instanceKlass com/sun/tools/javac/util/Options +instanceKlass java/util/ResourceBundle$3 +instanceKlass java/util/ResourceBundle$CacheKeyReference +instanceKlass com/sun/tools/javac/util/List$3 +instanceKlass com/sun/tools/javac/util/JavacMessages$ResourceBundleHelper +instanceKlass com/sun/tools/javac/util/List$2 +instanceKlass com/sun/tools/javac/util/JavacMessages +instanceKlass com/sun/tools/javac/api/Messages +instanceKlass com/sun/tools/javac/util/JCDiagnostic$DiagnosticInfo +instanceKlass com/sun/tools/javac/util/JCDiagnostic$Factory +instanceKlass java/util/JumboEnumSet$EnumSetIterator +instanceKlass com/sun/tools/javac/file/Locations$ModuleTable +instanceKlass javax/tools/StandardJavaFileManager$PathFactory +instanceKlass com/sun/tools/javac/file/Locations$LocationHandler +instanceKlass com/sun/tools/javac/file/Locations +instanceKlass com/sun/tools/javac/file/BaseFileManager$ByteBufferCache +instanceKlass com/sun/tools/javac/file/JavacFileManager$1 +instanceKlass com/sun/tools/javac/code/Lint +instanceKlass com/sun/tools/javac/util/Assert +instanceKlass com/sun/tools/javac/file/RelativePath +instanceKlass javax/tools/JavaFileObject +instanceKlass javax/tools/FileObject +instanceKlass com/sun/tools/javac/file/JavacFileManager$Container +instanceKlass com/sun/tools/javac/main/OptionHelper +instanceKlass com/sun/tools/javac/file/BaseFileManager +instanceKlass com/sun/tools/javac/file/FSInfo +instanceKlass com/sun/tools/javac/api/DiagnosticFormatter +instanceKlass com/sun/tools/javac/util/Log$DiagnosticHandler +instanceKlass com/sun/tools/javac/util/JCDiagnostic$DiagnosticPosition +instanceKlass com/sun/tools/javac/util/AbstractLog +instanceKlass com/sun/tools/javac/util/Context$Factory +instanceKlass com/sun/tools/javac/util/Context$Key +instanceKlass com/sun/source/util/JavacTask +instanceKlass com/sun/tools/javac/api/JavacTool +instanceKlass javax/tools/StandardJavaFileManager +instanceKlass javax/tools/JavaFileManager +instanceKlass org/gradle/api/internal/tasks/compile/JdkTools$DefaultIncrementalAwareCompiler +instanceKlass org/gradle/api/internal/tasks/compile/IncrementalCompilationAwareJavaCompiler +instanceKlass org/gradle/api/internal/tasks/compile/ContextAwareJavaCompiler +instanceKlass javax/tools/JavaCompiler +instanceKlass javax/tools/OptionChecker +instanceKlass javax/tools/Tool +instanceKlass org/gradle/api/internal/tasks/compile/JdkTools +instanceKlass org/gradle/api/internal/tasks/compile/JavaCompilerArgumentsBuilder +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/constants/ConstantToDependentsMappingBuilder +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/constants/ConstantsAnalysisResult +instanceKlass org/gradle/api/internal/tasks/compile/incremental/processing/AnnotationProcessingResult +instanceKlass org/gradle/api/internal/tasks/compile/processing/AnnotationProcessorDeclaration +instanceKlass org/gradle/api/internal/tasks/compile/NormalizingJavaCompiler +instanceKlass org/gradle/api/internal/tasks/compile/AnnotationProcessorDiscoveringCompiler +instanceKlass org/gradle/api/internal/tasks/compile/ModuleApplicationNameWritingCompiler +instanceKlass javax/tools/Diagnostic +instanceKlass org/gradle/api/internal/tasks/compile/DiagnosticToProblemListener +instanceKlass org/gradle/api/internal/tasks/compile/JavaHomeBasedJavaCompilerFactory +instanceKlass org/gradle/api/tasks/WorkResults +instanceKlass org/gradle/api/internal/tasks/compile/incremental/transaction/CompileTransaction$StashedFile +instanceKlass sun/nio/fs/WindowsFileCopy +instanceKlass org/gradle/api/internal/file/AbstractFileTreeElement +instanceKlass org/gradle/api/internal/file/AttributeBasedFileVisitDetailsFactory +instanceKlass java/nio/file/FileTreeWalker$1 +instanceKlass org/gradle/api/internal/file/collections/PathVisitor +instanceKlass org/gradle/api/file/ReproducibleFileVisitor +instanceKlass org/gradle/api/file/EmptyFileVisitor +instanceKlass java/nio/file/Files$2 +instanceKlass org/gradle/internal/file/impl/DefaultDeleter$FileDeletionResult +instanceKlass org/gradle/api/internal/tasks/compile/incremental/transaction/CompileTransaction +instanceKlass javax/tools/JavaFileManager$Location +instanceKlass org/gradle/internal/execution/history/changes/DefaultFileChange$1 +instanceKlass org/gradle/internal/execution/history/changes/CollectingChangeVisitor +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/SourceFileChangeProcessor +instanceKlass org/gradle/api/internal/tasks/compile/incremental/deps/ClassSetAnalysis$ClassSetDiff +instanceKlass com/google/common/collect/AbstractMapBasedMultimap$AsMap$AsMapIterator +instanceKlass com/google/common/collect/Lists$ReverseList$1 +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/CurrentCompilationAccess$CreateSnapshot +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/DefaultSourceFileClassNameConverter +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/FileNameDerivingClassNameConverter +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/RecompilationSpec +instanceKlass org/gradle/api/internal/tasks/compile/incremental/deps/ClassSetAnalysis +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/PreviousCompilation +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/PreviousCompilationData +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/CompilerApiData +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/constants/ConstantToDependentsMapping +instanceKlass org/gradle/api/internal/tasks/compile/incremental/processing/AnnotationProcessingData +instanceKlass org/gradle/api/internal/tasks/compile/incremental/deps/ClassSetAnalysisData +instanceKlass org/gradle/api/internal/tasks/compile/incremental/deps/IntSetSerializer +instanceKlass org/gradle/api/internal/tasks/compile/incremental/compilerapi/deps/DependentsSet +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/CurrentCompilation +instanceKlass org/gradle/api/internal/tasks/compile/CompileJavaBuildOperationReportingCompiler$1$1 +instanceKlass org/gradle/api/internal/tasks/compile/CompileJavaBuildOperationType$Details +instanceKlass org/gradle/api/internal/tasks/compile/CompileJavaBuildOperationReportingCompiler$1 +instanceKlass org/gradle/api/internal/tasks/compile/CompileJavaBuildOperationReportingCompiler +instanceKlass org/gradle/api/internal/tasks/compile/incremental/IncrementalResultStoringCompiler +instanceKlass org/gradle/api/internal/tasks/compile/incremental/SelectiveCompiler +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/PreviousCompilationAccess +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/CurrentCompilationAccess +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/SourceFileClassNameConverter +instanceKlass org/gradle/api/internal/tasks/compile/incremental/classpath/DefaultClassSetAnalyzer +instanceKlass org/gradle/api/internal/tasks/compile/incremental/analyzer/DefaultClassDependenciesAnalyzer +instanceKlass org/gradle/cache/internal/MinimalPersistentCache +instanceKlass org/gradle/internal/InternalTransformers$ToStringTransformer +instanceKlass org/gradle/internal/InternalTransformers +instanceKlass com/sun/tools/javac/util/Context +instanceKlass javax/tools/JavaCompiler$CompilationTask +instanceKlass javax/tools/DiagnosticListener +instanceKlass org/gradle/internal/exceptions/CompilationFailedIndicator +instanceKlass org/gradle/api/internal/tasks/compile/JdkJavaCompiler +instanceKlass org/gradle/api/internal/tasks/compile/CommandLineJavaCompileSpec +instanceKlass org/gradle/api/internal/tasks/compile/ForkingJavaCompileSpec +instanceKlass org/gradle/api/internal/tasks/compile/AbstractJavaCompileSpecFactory +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskActionBuildOperationType$2 +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskActionBuildOperationType$1 +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskActionBuildOperationType$Result +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskActionBuildOperationType$Details +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskActionBuildOperationType +instanceKlass org/gradle/api/internal/tasks/execution/TaskExecution$3 +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$2 +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$1$1 +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$Operation$Details +instanceKlass org/gradle/internal/execution/steps/ExecuteStep$1 +instanceKlass org/gradle/internal/execution/steps/PreCreateOutputParentsStep$2 +instanceKlass org/gradle/internal/execution/steps/PreCreateOutputParentsStep$1 +instanceKlass org/gradle/internal/vfs/impl/VersionHierarchy$2 +instanceKlass org/gradle/internal/execution/steps/BroadcastChangingOutputsStep$1 +instanceKlass org/gradle/internal/execution/history/changes/IncrementalInputChanges +instanceKlass org/gradle/api/internal/tasks/SnapshotTaskInputsBuildOperationType$Result$InputFilePropertyVisitor +instanceKlass org/gradle/api/internal/tasks/BaseSnapshotInputsBuildOperationResult +instanceKlass org/gradle/api/internal/tasks/SnapshotTaskInputsBuildOperationType$Result +instanceKlass org/gradle/internal/execution/caching/CachingState$Enabled +instanceKlass org/gradle/internal/execution/caching/CachingState$CacheKeyCalculatedState +instanceKlass org/gradle/internal/execution/caching/impl/DefaultBuildCacheKey +instanceKlass org/gradle/caching/internal/BuildCacheKeyInternal +instanceKlass org/gradle/caching/BuildCacheKey +instanceKlass org/gradle/internal/execution/caching/impl/DefaultCachingStateFactory +instanceKlass org/gradle/internal/execution/history/changes/InputChangesInternal +instanceKlass org/gradle/internal/execution/history/changes/ExecutionStateChanges$1 +instanceKlass org/gradle/internal/execution/history/changes/DefaultFileChange +instanceKlass org/gradle/api/tasks/incremental/InputFileDetails +instanceKlass org/gradle/work/FileChange +instanceKlass com/google/common/collect/CollectSpliterators$1 +instanceKlass java/util/LinkedList$LLSpliterator +instanceKlass com/google/common/collect/CollectSpliterators$FlatMapSpliterator$Factory +instanceKlass com/google/common/collect/CollectSpliterators$FlatMapSpliterator +instanceKlass org/gradle/internal/execution/history/changes/FilePathWithType +instanceKlass org/gradle/internal/execution/history/changes/CachingChangeContainer$CachingVisitor +instanceKlass org/gradle/internal/execution/history/changes/DefaultExecutionStateChangeDetector$InputFileChangesWrapper +instanceKlass org/gradle/internal/execution/history/changes/CachingChangeContainer +instanceKlass org/gradle/internal/execution/history/changes/AbstractFingerprintChanges$1 +instanceKlass org/gradle/internal/execution/history/changes/SortedMapDiffUtil +instanceKlass org/gradle/internal/execution/history/changes/OutputFileChanges$1 +instanceKlass org/gradle/internal/execution/history/changes/SummarizingChangeContainer$ChangeDetectingVisitor +instanceKlass org/gradle/internal/execution/history/changes/MessageCollectingChangeVisitor +instanceKlass org/gradle/internal/execution/history/changes/ErrorHandlingChangeContainer +instanceKlass org/gradle/internal/execution/history/changes/SummarizingChangeContainer +instanceKlass org/gradle/internal/execution/history/changes/OutputFileChanges +instanceKlass com/google/common/base/Predicates$CompositionPredicate +instanceKlass org/gradle/internal/execution/history/changes/TrivialChangeDetector +instanceKlass org/gradle/internal/execution/history/changes/AbsolutePathChangeDetector$ItemComparator +instanceKlass org/gradle/internal/execution/history/changes/AbsolutePathChangeDetector +instanceKlass org/gradle/internal/execution/history/changes/AbstractFingerprintCompareStrategy$2 +instanceKlass org/gradle/internal/execution/history/changes/AbstractFingerprintCompareStrategy$1 +instanceKlass org/gradle/internal/execution/history/changes/TrivialChangeDetector$ItemComparator +instanceKlass org/gradle/internal/execution/history/changes/CompareStrategy$ChangeFactory +instanceKlass org/gradle/internal/execution/history/changes/CompareStrategy$ChangeDetector +instanceKlass org/gradle/internal/execution/history/changes/CompareStrategy +instanceKlass org/gradle/internal/execution/history/changes/FingerprintCompareStrategy +instanceKlass org/gradle/internal/execution/history/changes/PropertyDiffListener +instanceKlass org/gradle/internal/execution/history/changes/AbstractFingerprintChanges +instanceKlass org/gradle/internal/execution/history/changes/InputValueChanges +instanceKlass org/gradle/internal/execution/history/changes/PropertyChanges +instanceKlass org/gradle/internal/execution/history/changes/ImplementationChanges +instanceKlass org/gradle/internal/execution/history/changes/DescriptiveChange +instanceKlass org/gradle/internal/execution/history/changes/Change +instanceKlass org/gradle/internal/execution/history/changes/PreviousSuccessChanges +instanceKlass org/gradle/internal/execution/history/changes/DefaultIncrementalInputProperties +instanceKlass org/gradle/internal/execution/steps/ResolveChangesStep$1 +instanceKlass org/gradle/internal/execution/steps/ResolveChangesStep$2 +instanceKlass org/gradle/internal/execution/history/changes/ExecutionStateChanges +instanceKlass org/gradle/internal/execution/steps/ValidateStep$1 +instanceKlass org/gradle/execution/plan/ExecutionNodeAccessHierarchy$FilteredNodeAccess +instanceKlass org/gradle/execution/plan/MissingTaskDependencyDetector$FilteredTree +instanceKlass org/gradle/execution/plan/MissingTaskDependencyDetector$1 +instanceKlass org/gradle/api/internal/tasks/properties/DefaultPropertyValidationContext +instanceKlass org/gradle/internal/execution/steps/AbstractCaptureStateBeforeExecutionStep$Operation$Result$1 +instanceKlass org/gradle/internal/execution/steps/AbstractCaptureStateBeforeExecutionStep$Operation$Result +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ShortCircuitEmptyConfigurationResolver$EmptyLenientConfiguration +instanceKlass io/spring/gradle/dependencymanagement/internal/ExclusionConfiguringAction$Node +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/Os +instanceKlass jdk/internal/access/foreign/MemorySegmentProxy +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelProblem +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelProblemCollectorRequest +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/FilterModelBuildingRequest +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/DefaultTransientConfigurationResults +instanceKlass org/gradle/api/internal/artifacts/DefaultResolvedDependency +instanceKlass org/gradle/api/internal/artifacts/DependencyGraphNodeResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultLenientConfiguration$ResolvedDependencyArtifactsGraph +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/AbstractFailedResolvedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultLenientConfiguration$LenientArtifactCollectingVisitor +instanceKlass org/gradle/internal/featurelifecycle/DefaultDeprecatedUsageProgressDetails +instanceKlass org/gradle/internal/featurelifecycle/DeprecatedUsageProgressDetails +instanceKlass org/gradle/api/problems/internal/DefaultProblemProgressDetails +instanceKlass org/gradle/api/problems/internal/ProblemProgressDetails +instanceKlass org/gradle/api/problems/internal/DefaultProblem +instanceKlass org/gradle/api/problems/internal/DefaultProblemDefinition +instanceKlass org/gradle/api/problems/internal/DefaultPluginIdLocation +instanceKlass org/gradle/api/problems/internal/PluginIdLocation +instanceKlass org/gradle/api/problems/internal/DefaultProblemBuilder$UnsupportedAdditionalDataSpec +instanceKlass org/gradle/internal/deprecation/DeprecatedFeatureUsage$1 +instanceKlass org/gradle/api/problems/internal/DefaultDeprecationData$DefaultDeprecationDataBuilder +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilder +instanceKlass org/gradle/api/problems/internal/DefaultDeprecationData +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilderFactory$1 +instanceKlass org/gradle/api/problems/internal/PropertyTraceData +instanceKlass org/gradle/api/problems/internal/PropertyTraceDataSpec +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilderFactory$2 +instanceKlass org/gradle/api/problems/internal/TypeValidationData +instanceKlass org/gradle/api/problems/internal/TypeValidationDataSpec +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilderFactory$3 +instanceKlass org/gradle/api/problems/internal/DeprecationData +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilderFactory$4 +instanceKlass org/gradle/api/problems/internal/GeneralData +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilderFactory$DataTypeAndProvider +instanceKlass org/gradle/api/problems/internal/AdditionalDataBuilderFactory +instanceKlass org/gradle/internal/featurelifecycle/LoggingDeprecatedFeatureHandler$1$1 +instanceKlass org/gradle/api/problems/internal/DeprecationDataSpec +instanceKlass org/gradle/api/problems/internal/AdditionalData +instanceKlass org/gradle/api/problems/internal/ProblemLocation +instanceKlass org/gradle/api/problems/internal/ProblemDefinition +instanceKlass org/gradle/api/problems/internal/DefaultProblemBuilder +instanceKlass org/gradle/internal/featurelifecycle/LoggingDeprecatedFeatureHandler$1 +instanceKlass org/gradle/internal/problems/DefaultProblemDiagnosticsFactory$DefaultProblemDiagnostics +instanceKlass org/gradle/internal/problems/failure/StackFramePredicate$1 +instanceKlass org/gradle/internal/problems/failure/DefaultFailure +instanceKlass org/gradle/internal/problems/failure/DefaultFailureFactory$Job$1 +instanceKlass org/gradle/internal/problems/failure/Failure +instanceKlass org/gradle/internal/problems/failure/DefaultFailureFactory$Job +instanceKlass java/lang/StackTraceElement$HashedModules +instanceKlass org/gradle/internal/featurelifecycle/StackTraceSanitizer +instanceKlass org/gradle/internal/featurelifecycle/FeatureUsage +instanceKlass org/gradle/internal/deprecation/DeprecationMessage +instanceKlass io/spring/gradle/dependencymanagement/internal/ExclusionConfiguringAction$DependencyCandidate +instanceKlass org/gradle/api/internal/artifacts/result/AbstractDependencyResult +instanceKlass org/gradle/api/artifacts/result/ResolvedDependencyResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/DetachedResolvedGraphDependency +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/CachingComponentSelectionDescriptorFactory$Key +instanceKlass org/gradle/cache/internal/BinaryStore$ReadAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/simple/DefaultModuleIdSetExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/NormalizingExcludeFactory$FlattenOperationResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ExcludeAllOf +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/CachingExcludeFactory$ExcludePair +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ExcludeEverything +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/simple/DefaultModuleIdExclude +instanceKlass org/apache/ivy/plugins/matcher/PatternMatcher +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/PatternMatchers +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/selectors/SelectorStateResolverResults$Registration +instanceKlass com/google/common/primitives/Longs$AsciiDigits +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/UnversionedModuleComponentSelector +instanceKlass org/gradle/api/internal/artifacts/dsl/ComponentSelectorParsers$ProjectConverter +instanceKlass org/gradle/api/internal/artifacts/dsl/ComponentSelectorParsers$StringConverter +instanceKlass org/gradle/api/internal/artifacts/dsl/ComponentSelectorParsers +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultDependencyResolveDetails +instanceKlass org/gradle/api/artifacts/DependencyResolveDetails +instanceKlass org/gradle/api/internal/artifacts/DefaultModuleVersionSelector +instanceKlass org/gradle/api/artifacts/DependencyArtifactSelector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultArtifactSelectionDetails +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/ArtifactSelectionDetailsInternal +instanceKlass org/gradle/api/artifacts/ArtifactSelectionDetails +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultDependencySubstitution +instanceKlass org/gradle/api/internal/artifacts/result/DefaultResolutionResult +instanceKlass io/spring/gradle/dependencymanagement/internal/pom/Pom +instanceKlass io/spring/gradle/dependencymanagement/internal/Exclusion +instanceKlass io/spring/gradle/dependencymanagement/internal/pom/Dependency +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/ActivationOS +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$NotifierKeyComputer +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/RegexBasedInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/ActivationFile +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Notifier +instanceKlass org/gradle/internal/component/external/model/AbstractMutableModuleComponentResolveMetadata$DependencyConstraintImpl +instanceKlass org/gradle/internal/component/external/model/ComponentVariant$DependencyConstraint +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/SimpleRecursionInterceptor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/activation/JdkVersionProfileActivator$RangeValue +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelProblemUtils +instanceKlass org/gradle/internal/classpath/declarations/FileInterceptorsDeclaration +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Relocation +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Site +instanceKlass io/spring/gradle/dependencymanagement/internal/maven/EffectiveModelBuilder$InMemoryModelCache$Key +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelCacheTag$2 +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelCacheTag$1 +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelCacheTag +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuildingEventCatapult$1 +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuildingEventCatapult +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Extension +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/util/StringUtils +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/MailingList +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/reflection/MethodMap +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/reflection/ClassMap$CacheMiss +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/reflection/ClassMap +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/reflection/ReflectionValueExtractor$Tokenizer +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/reflection/ReflectionValueExtractor +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/util/ValueSourceUtils +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/DistributionManagement +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/StringSearchModelInterpolator$InterpolateObjectAction$CacheField +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/CiManagement +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/IssueManagement +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Prerequisites +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Organization +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Parent +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/StringSearchModelInterpolator$InterpolateObjectAction$CacheItem +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/StringSearchModelInterpolator$InterpolateObjectAction +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/StringSearchModelInterpolator$1 +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/PrefixAwareRecursionInterceptor +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/StringSearchInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/Interpolator +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/BasicInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/UrlNormalizingPostProcessor +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/InterpolationPostProcessor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/ProblemDetectingValueSource +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/PrefixedValueSourceWrapper +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/FeedbackEnabledValueSource +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/AbstractDelegatingValueSource +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/QueryEnabledValueSource +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/AbstractValueSource +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$ExtensionKeyComputer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$ResourceKeyComputer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$SourceDominant +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$DependencyKeyComputer +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/XMLWriter +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/Xpp3Dom +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/Xpp3DomBuilder +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx$Xpp3DomBuilderInputLocationBuilder +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/ActivationProperty +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Activation +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Reporting +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/RepositoryPolicy +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx$1 +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/Xpp3DomBuilder$InputLocationBuilder +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx$ContentTransformer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3ReaderEx +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelData +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/StringUtils +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Exclusion +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Dependency +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/DependencyManagement +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Scm +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/License +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/pull/EntityReplacementMap +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/pull/MXParser +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3Reader$1 +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/pull/XmlPullParser +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3Reader$ContentTransformer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/xpp3/MavenXpp3Reader +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/ReaderFactory +instanceKlass org/gradle/internal/classpath/declarations/FileInputStreamInterceptorsDeclaration +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/DefaultProfileActivationContext +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelProblem +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelProblemCollector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelBuildingResult +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/StringSearchModelInterpolator$InnerInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/InputLocation +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/InputSource +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/DefaultReportingConverter +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/DefaultReportConfigurationExpander +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/DefaultPluginConfigurationExpander +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/management/DefaultPluginManagementInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelBuilderFactory$StubLifecycleBindingsInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/management/DefaultDependencyManagementInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/composition/DefaultDependencyManagementImporter +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/superpom/DefaultSuperPomProvider +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/ProfileActivationFilePathInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/activation/FileProfileActivator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/activation/PropertyProfileActivator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/activation/JdkVersionProfileActivator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/activation/ProfileActivator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/DefaultProfileSelector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/DefaultProfileInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/inheritance/DefaultInheritanceAssembler +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/StringVisitorModelInterpolator$InnerInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/RecursionInterceptor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/DefaultUrlNormalizer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/DefaultModelUrlNormalizer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/DefaultPathTranslator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/DefaultModelPathTranslator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/PatternSet +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/Contributor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/ModelBase +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/PluginContainer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$KeyComputer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/ConfigurationContainer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$Remapping +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/normalization/DefaultModelNormalizer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/DefaultModelVersionProcessor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/RepositoryBase +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/InputLocationTracker +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/validation/DefaultModelValidator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/DefaultModelReader +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/locator/DefaultModelLocator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelProcessor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/artifact/versioning/ArtifactVersion +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuildingEvent +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/ValueSource +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelProblemCollectorExt +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/ProfileActivationContext +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelProblemCollector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuildingResult +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelBuilder +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuilder +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/normalization/ModelNormalizer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/UrlNormalizer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/ProfileInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelProcessor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/locator/ModelLocator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/PathTranslator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/io/ModelReader +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/profile/ProfileSelector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/LifecycleBindingsInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/composition/DependencyManagementImporter +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/superpom/SuperPomProvider +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/ModelPathTranslator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/management/DependencyManagementInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/inheritance/InheritanceAssembler +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/path/ModelUrlNormalizer +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/PluginConfigurationExpander +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/ModelVersionProcessor +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/management/PluginManagementInjector +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/ReportingConverter +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/plugin/ReportConfigurationExpander +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelBuilderFactory +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/building/FileSource +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelSource2 +instanceKlass org/gradle/internal/configuration/inputs/AccessTrackingProperties$TrackingEntry +instanceKlass org/gradle/internal/configuration/inputs/AccessTrackingProperties$2 +instanceKlass com/google/common/collect/ForwardingObject +instanceKlass org/gradle/internal/classpath/Instrumented$1 +instanceKlass org/gradle/internal/configuration/inputs/AccessTrackingSet$Listener +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/DefaultModelBuildingRequest +instanceKlass io/spring/gradle/dependencymanagement/internal/maven/EffectiveModelBuilder$InMemoryModelCache +instanceKlass io/spring/gradle/dependencymanagement/internal/maven/EffectiveModelBuilder$ModelInput +instanceKlass io/spring/gradle/dependencymanagement/internal/properties/CompositePropertySource +instanceKlass org/gradle/internal/resolve/resolver/DefaultVariantArtifactResolver$SingleArtifactVariantIdentifier +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ArtifactCollectingVisitor +instanceKlass org/gradle/internal/component/external/descriptor/DefaultExclude +instanceKlass org/gradle/internal/component/model/Exclude +instanceKlass io/spring/gradle/dependencymanagement/internal/properties/ProjectPropertySource +instanceKlass io/spring/gradle/dependencymanagement/internal/Versions +instanceKlass org/gradle/internal/snapshot/impl/SerializedLambdaQueries +instanceKlass org/gradle/internal/execution/steps/AbstractCaptureStateBeforeExecutionStep$ImplementationsBuilder +instanceKlass org/gradle/internal/execution/steps/AbstractCaptureStateBeforeExecutionStep$Operation$Details$1 +instanceKlass org/gradle/internal/execution/steps/AbstractCaptureStateBeforeExecutionStep$Operation$Details +instanceKlass org/gradle/internal/snapshot/AbstractInvalidateChildHandler +instanceKlass org/gradle/internal/snapshot/AbstractIncompleteFileSystemNode$1 +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$VfsChangeLoggingNodeDiffListener +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherRegistry$3 +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherRegistry$1 +instanceKlass net/rubygrapefruit/platform/internal/jni/AbstractFileEventFunctions$ChangeEvent +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherProbeRegistry$1 +instanceKlass org/gradle/internal/file/FileHierarchySet$PrefixFileSet$2 +instanceKlass org/gradle/api/tasks/util/internal/CachingPatternSpecFactory$CachingSpec$1 +instanceKlass org/gradle/api/file/RelativePath +instanceKlass org/gradle/internal/fingerprint/impl/PatternSetSnapshottingFilter$PathBackedFileTreeElement +instanceKlass org/gradle/internal/snapshot/SnapshottingFilter$DirectoryWalkerPredicate +instanceKlass org/gradle/internal/fingerprint/impl/PatternSetSnapshottingFilter +instanceKlass org/gradle/api/internal/file/FileCollectionBackedFileTree$2 +instanceKlass org/gradle/api/internal/file/FileCollectionBackedFileTree$1 +instanceKlass org/gradle/internal/execution/steps/AbstractSkipEmptyWorkStep$1 +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$3$1 +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$3 +instanceKlass org/gradle/internal/execution/history/impl/AbstractInputExecutionState +instanceKlass org/gradle/internal/execution/history/impl/FileSystemSnapshotSerializer$2 +instanceKlass java/util/stream/ReduceOps$5ReducingSink +instanceKlass org/gradle/internal/execution/history/impl/FileSystemSnapshotSerializer$SnapshotStack +instanceKlass org/gradle/internal/fingerprint/FileCollectionFingerprint$1 +instanceKlass org/gradle/internal/execution/history/impl/SerializableFileCollectionFingerprint +instanceKlass org/gradle/internal/execution/history/impl/FingerprintMapSerializer$1 +instanceKlass java/io/SerialCallbackContext +instanceKlass java/io/ObjectStreamClass$ClassDataSlot +instanceKlass java/io/ObjectStreamClass$5 +instanceKlass java/io/ObjectStreamClass$4 +instanceKlass java/io/ObjectStreamClass$3 +instanceKlass java/io/ObjectStreamClass$MemberSignature +instanceKlass java/io/ObjectStreamClass$1 +instanceKlass java/io/ObjectStreamClass$FieldReflector +instanceKlass java/io/ObjectStreamClass$FieldReflectorKey +instanceKlass java/io/ObjectStreamClass$2 +instanceKlass java/io/ClassCache +instanceKlass java/io/ObjectStreamClass$Caches +instanceKlass java/io/ObjectStreamClass +instanceKlass java/io/Bits +instanceKlass java/io/ObjectOutputStream$ReplaceTable +instanceKlass java/io/ObjectOutputStream$HandleTable +instanceKlass com/google/common/collect/Streams +instanceKlass org/gradle/internal/execution/steps/HandleStaleOutputsStep$1 +instanceKlass org/gradle/internal/execution/workspace/MutableWorkspaceProvider$WorkspaceAction +instanceKlass org/gradle/api/internal/tasks/execution/TaskExecution$4 +instanceKlass org/gradle/api/internal/tasks/execution/TaskExecution$1 +instanceKlass org/gradle/api/internal/tasks/properties/PropertyValidationContext +instanceKlass org/gradle/api/internal/tasks/SnapshotTaskInputsBuildOperationType$Details +instanceKlass org/gradle/api/internal/tasks/execution/TaskExecution +instanceKlass org/gradle/internal/execution/MutableUnitOfWork +instanceKlass org/gradle/api/internal/changedetection/changes/DefaultTaskExecutionMode +instanceKlass org/gradle/api/internal/changedetection/TaskExecutionMode +instanceKlass org/gradle/internal/build/event/types/AbstractProgressEvent +instanceKlass org/gradle/internal/build/event/types/DefaultTaskDescriptor +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskWithExtraInfoDescriptor +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskDescriptor +instanceKlass org/gradle/api/internal/tasks/execution/EventFiringTaskExecuter$1 +instanceKlass org/gradle/api/internal/tasks/execution/EventFiringTaskExecuter +instanceKlass org/gradle/api/internal/tasks/execution/CatchExceptionTaskExecuter +instanceKlass org/gradle/api/internal/tasks/execution/SkipOnlyIfTaskExecuter +instanceKlass org/gradle/api/internal/tasks/execution/SkipTaskWithNoActionsExecuter +instanceKlass org/gradle/api/internal/tasks/execution/ResolveTaskExecutionModeExecuter +instanceKlass org/gradle/api/internal/tasks/execution/FinalizePropertiesTaskExecuter +instanceKlass org/gradle/api/internal/tasks/TaskExecuterResult +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteActionsTaskExecuter +instanceKlass org/gradle/normalization/internal/InputNormalizationHandlerInternal$CachedState +instanceKlass org/gradle/normalization/internal/DefaultInputNormalizationHandler +instanceKlass org/gradle/api/internal/changedetection/state/IgnoringResourceEntryFilter +instanceKlass org/gradle/api/internal/changedetection/state/IgnoringResourceFilter +instanceKlass org/gradle/normalization/internal/DefaultRuntimeClasspathNormalization$RuntimeMetaInfNormalization +instanceKlass org/gradle/normalization/internal/DefaultRuntimeClasspathNormalization$DefaultPropertiesFileFilter +instanceKlass org/gradle/normalization/PropertiesFileNormalization +instanceKlass org/gradle/normalization/internal/DefaultRuntimeClasspathNormalization$EvaluatableFilter +instanceKlass org/gradle/normalization/internal/RuntimeClasspathNormalizationInternal$CachedState +instanceKlass org/gradle/normalization/MetaInfNormalization +instanceKlass org/gradle/normalization/internal/DefaultRuntimeClasspathNormalization +instanceKlass org/gradle/api/internal/changedetection/changes/DefaultTaskExecutionModeResolver +instanceKlass org/gradle/api/internal/tasks/execution/DefaultTaskCacheabilityResolver +instanceKlass org/gradle/internal/file/DefaultReservedFileSystemLocationRegistry +instanceKlass org/gradle/internal/execution/workspace/MutableWorkspaceProvider +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyManagementServices$DependencyResolutionScopeServices$1 +instanceKlass org/gradle/internal/snapshot/impl/ImplementationSnapshotSerializer +instanceKlass org/gradle/internal/execution/history/impl/FileSystemSnapshotSerializer +instanceKlass org/gradle/internal/execution/history/impl/FileCollectionFingerprintSerializer +instanceKlass org/gradle/internal/execution/history/PreviousExecutionState +instanceKlass org/gradle/internal/execution/history/impl/DefaultExecutionHistoryStore +instanceKlass org/gradle/api/internal/changedetection/state/DefaultExecutionHistoryCacheAccess +instanceKlass org/gradle/api/internal/tasks/TaskExecutionContext$ValidationAction +instanceKlass org/gradle/api/internal/tasks/execution/DefaultTaskExecutionContext +instanceKlass org/gradle/execution/plan/ValuedVfsHierarchy$1 +instanceKlass org/gradle/execution/plan/ValuedVfsHierarchy$2 +instanceKlass org/gradle/execution/plan/ExecutionNodeAccessHierarchy$DefaultNodeAccess +instanceKlass org/gradle/execution/plan/ExecutionNodeAccessHierarchy$NodeAccess +instanceKlass org/gradle/internal/reflect/validation/TypeValidationProblemRenderer +instanceKlass org/gradle/api/problems/internal/Problem +instanceKlass org/gradle/api/internal/tasks/properties/InputPropertySpec +instanceKlass org/gradle/api/internal/tasks/properties/DefaultTaskProperties$ResolvingValue +instanceKlass org/gradle/api/internal/tasks/properties/CacheableOutputFilePropertySpec +instanceKlass org/gradle/internal/MutableBoolean +instanceKlass org/gradle/api/internal/tasks/properties/ValidationActions$7 +instanceKlass org/gradle/api/internal/tasks/properties/AbstractValidatingProperty +instanceKlass org/gradle/api/internal/tasks/properties/ValidatingProperty +instanceKlass org/gradle/api/internal/tasks/properties/LifecycleAwareValue +instanceKlass org/gradle/api/internal/tasks/properties/AbstractPropertySpec +instanceKlass org/gradle/api/internal/tasks/properties/InputFilePropertySpec +instanceKlass org/gradle/api/internal/tasks/properties/CompositePropertyVisitor +instanceKlass org/gradle/api/internal/tasks/properties/DefaultTaskProperties$GetDestroyablesVisitor +instanceKlass org/gradle/api/internal/tasks/properties/DefaultTaskProperties$GetLocalStateVisitor +instanceKlass org/gradle/api/internal/tasks/properties/OutputUnpacker$UnpackedOutputConsumer$1 +instanceKlass org/gradle/api/internal/tasks/properties/OutputUnpacker +instanceKlass org/gradle/api/internal/tasks/properties/OutputFilesCollector +instanceKlass org/gradle/api/internal/tasks/properties/ValidationAction +instanceKlass org/gradle/api/internal/tasks/properties/DefaultTaskProperties$ValidationVisitor +instanceKlass org/gradle/api/internal/tasks/properties/GetServiceReferencesVisitor +instanceKlass org/gradle/api/internal/tasks/properties/GetInputFilesVisitor +instanceKlass org/gradle/api/internal/tasks/properties/GetInputPropertiesVisitor +instanceKlass org/gradle/api/internal/tasks/properties/DefaultTaskProperties +instanceKlass org/gradle/api/internal/tasks/properties/TaskProperties +instanceKlass org/gradle/execution/plan/ResolveMutationsNode$ResolveTaskMutationsDetails +instanceKlass org/gradle/api/internal/tasks/execution/ResolveTaskMutationsBuildOperationType$Details +instanceKlass org/gradle/execution/plan/ResolveMutationsNode$1 +instanceKlass org/gradle/execution/plan/MissingTaskDependencyDetector +instanceKlass org/gradle/api/execution/TaskActionListener +instanceKlass org/gradle/api/internal/tasks/TaskExecuter +instanceKlass org/gradle/api/internal/changedetection/TaskExecutionModeResolver +instanceKlass org/gradle/internal/file/ReservedFileSystemLocationRegistry +instanceKlass org/gradle/api/internal/tasks/execution/TaskCacheabilityResolver +instanceKlass org/gradle/execution/ProjectExecutionServices +instanceKlass org/gradle/execution/ProjectExecutionServiceRegistry$DefaultNodeExecutionContext +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$WorkItem +instanceKlass org/gradle/execution/plan/WorkSource$Selection +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$ExecutorState$WorkerState +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$ExecutorWorker +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$PlanDetails +instanceKlass org/gradle/execution/taskgraph/DefaultTaskExecutionGraph$InvokeNodeExecutorsAction +instanceKlass org/gradle/execution/taskgraph/DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction +instanceKlass org/gradle/execution/RunRootBuildWorkBuildOperationType$Details +instanceKlass org/gradle/execution/BuildOperationFiringBuildWorkerExecutor$ExecuteTasks +instanceKlass org/gradle/composite/internal/DefaultBuildController$BuildOpRunnable +instanceKlass org/gradle/internal/buildtree/BuildOperationFiringBuildTreeWorkExecutor$2 +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1$1 +instanceKlass org/gradle/internal/taskgraph/CalculateTreeTaskGraphBuildOperationType$Result +instanceKlass org/gradle/execution/taskgraph/NotifyTaskGraphWhenReadyBuildOperationType$1 +instanceKlass org/gradle/execution/taskgraph/NotifyTaskGraphWhenReadyBuildOperationType$Result +instanceKlass org/gradle/execution/taskgraph/NotifyTaskGraphWhenReadyBuildOperationType +instanceKlass org/gradle/api/specs/internal/ClosureSpec +instanceKlass org/gradle/api/internal/tasks/properties/OutputFilePropertySpec +instanceKlass org/gradle/api/internal/tasks/properties/FilePropertySpec +instanceKlass org/codehaus/groovy/runtime/typehandling/ShortTypeHandling +instanceKlass org/codehaus/groovy/runtime/metaclass/DefaultMetaClassInfo$ConstantMetaClassVersioning +instanceKlass org/codehaus/groovy/runtime/metaclass/DefaultMetaClassInfo +instanceKlass org/codehaus/groovy/runtime/BytecodeInterface8 +instanceKlass org/gradle/api/tasks/testing/TestOutputEvent +instanceKlass IJTestEventLogger$2 +instanceKlass org/gradle/api/tasks/testing/TestResult +instanceKlass IJTestEventLogger$1 +instanceKlass org/gradle/internal/logging/events/StyledTextOutputEvent$Span +instanceKlass org/gradle/internal/logging/events/operations/StyledTextBuildOperationProgressDetails$Span +instanceKlass org/gradle/internal/operations/logging/StyledTextBuildOperationProgressDetails$Span +instanceKlass groovy/xml/markupsupport/SingleQuoteFilter +instanceKlass groovy/xml/markupsupport/StandardXmlAttributeFilter +instanceKlass groovy/xml/markupsupport/StandardXmlFilter +instanceKlass groovy/xml/MarkupBuilder$DefaultXmlEscapingFunction +instanceKlass groovy/namespace/QName +instanceKlass groovy/xml/MarkupBuilderHelper +instanceKlass groovy/util/IndentPrinter +instanceKlass org/codehaus/groovy/reflection/CachedClass$CachedMethodComparatorByName +instanceKlass IJTestEventLogger +instanceKlass org/gradle/api/internal/AbstractTask$ClosureTaskAction +instanceKlass org/gradle/api/internal/AbstractTask$15 +instanceKlass org/gradle/api/file/ExpandDetails +instanceKlass jdk/internal/vm/annotation/ForceInline +instanceKlass org/gradle/api/internal/tasks/compile/MinimalJavaCompileOptions +instanceKlass org/gradle/execution/taskgraph/DefaultTaskExecutionGraph$NotifyTaskGraphWhenReadyDetails +instanceKlass org/gradle/execution/taskgraph/NotifyTaskGraphWhenReadyBuildOperationType$Details +instanceKlass org/gradle/execution/taskgraph/DefaultTaskExecutionGraph$NotifyTaskGraphWhenReady +instanceKlass org/gradle/execution/plan/DefaultFinalizedExecutionPlan$ExecutionQueue +instanceKlass org/gradle/execution/plan/DefaultFinalizedExecutionPlan$1 +instanceKlass org/gradle/execution/plan/DefaultFinalizedExecutionPlan +instanceKlass org/gradle/internal/build/BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph$CalculateTaskGraphResult +instanceKlass org/gradle/internal/taskgraph/CalculateTaskGraphBuildOperationType$Result +instanceKlass org/gradle/execution/plan/ToPlannedTaskConverter$PlannedTaskIdentity +instanceKlass org/gradle/initialization/DefaultPlannedTask +instanceKlass org/gradle/internal/taskgraph/CalculateTaskGraphBuildOperationType$PlannedTask +instanceKlass org/gradle/internal/build/PlannedNodeGraph +instanceKlass org/gradle/internal/build/PlannedNodeGraph$IdentityProvider +instanceKlass org/gradle/internal/build/PlannedNodeGraph$DependencyTraverser +instanceKlass org/gradle/internal/build/PlannedNodeGraph$Collector +instanceKlass org/gradle/execution/plan/ScheduledWork +instanceKlass java/util/IdentityHashMap$IdentityHashMapIterator +instanceKlass org/gradle/execution/plan/DetermineExecutionPlanAction$TaskClassifier +instanceKlass org/gradle/execution/plan/DetermineExecutionPlanAction$NodeInVisitingSegment +instanceKlass org/gradle/execution/plan/DetermineExecutionPlanAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ShortCircuitEmptyConfigurationResolver$EmptyResults +instanceKlass org/gradle/api/internal/file/collections/FileTreeAdapter$1 +instanceKlass org/gradle/api/internal/tasks/compile/CompilationSourceDirs$SourceRoots +instanceKlass org/gradle/api/internal/tasks/compile/CompilationSourceDirs +instanceKlass org/gradle/api/internal/file/copy/DelegatingCopySpecInternal +instanceKlass org/gradle/api/internal/provider/AbstractCollectionProperty$Configurer +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultArtifactCollection$ArtifactCollectionResolvedArtifactsFactory +instanceKlass org/springframework/boot/loader/tools/DefaultLibraryCoordinates +instanceKlass org/springframework/boot/loader/tools/LibraryCoordinates +instanceKlass java/util/TreeMap$TreeMapSpliterator +instanceKlass org/gradle/api/internal/file/copy/MatchingCopyAction +instanceKlass org/gradle/api/internal/file/copy/CopySpecWrapper +instanceKlass org/springframework/boot/gradle/tasks/bundling/LayeredSpec$DependenciesSpec$IntoLayerSpecFactory +instanceKlass org/springframework/boot/gradle/tasks/bundling/LayeredSpec$ApplicationSpec$IntoLayerSpecFactory +instanceKlass org/springframework/boot/loader/tools/layer/ContentSelector +instanceKlass org/springframework/boot/gradle/tasks/bundling/LayeredSpec$IntoLayerSpec +instanceKlass org/springframework/boot/gradle/tasks/bundling/LayeredSpec$IntoLayersSpec +instanceKlass org/springframework/boot/loader/tools/Layers +instanceKlass org/springframework/boot/gradle/tasks/bundling/BootJar$ZipCompressionResolver +instanceKlass org/springframework/boot/gradle/tasks/bundling/BootJar$LibrarySpec +instanceKlass org/springframework/boot/gradle/tasks/bundling/BootArchiveSupport +instanceKlass org/springframework/boot/gradle/tasks/bundling/LaunchScriptConfiguration +instanceKlass org/springframework/boot/gradle/tasks/bundling/LayeredSpec +instanceKlass org/springframework/boot/gradle/tasks/bundling/ResolvedDependencies +instanceKlass org/gradle/jvm/tasks/Jar$ExcludeManifestAction +instanceKlass org/gradle/api/file/FileVisitDetails +instanceKlass org/gradle/api/internal/file/collections/GeneratedSingletonFileTree +instanceKlass org/gradle/api/internal/file/collections/GeneratedFiles +instanceKlass org/gradle/api/internal/file/collections/MinimalFileTree$MinimalFileTreeStructureVisitor +instanceKlass org/gradle/api/java/archives/internal/DefaultAttributes +instanceKlass org/gradle/api/java/archives/Attributes +instanceKlass org/gradle/api/java/archives/internal/DefaultManifest +instanceKlass org/gradle/api/internal/lambdas/SerializableLambdas$SerializableBiFunction +instanceKlass org/gradle/api/internal/tasks/DefaultTaskInputPropertyRegistration +instanceKlass org/gradle/api/internal/tasks/TaskInputPropertyRegistration +instanceKlass org/gradle/api/internal/tasks/AbstractTaskFilePropertyRegistration +instanceKlass org/gradle/internal/properties/StaticValue +instanceKlass org/gradle/api/internal/file/copy/DefaultCopySpec$DefaultCopySpecAddress +instanceKlass org/gradle/api/internal/file/copy/DefaultCopySpec$DefaultCopySpecResolver +instanceKlass org/gradle/api/internal/file/copy/PathNotationConverter +instanceKlass org/gradle/api/file/FileCopyDetails +instanceKlass org/gradle/api/internal/file/copy/CopySpecInternal$CopySpecListener +instanceKlass org/gradle/api/internal/file/copy/CopySpecInternal$CopySpecVisitor +instanceKlass org/gradle/api/internal/file/copy/DefaultCopySpec +instanceKlass org/gradle/api/file/ConfigurableFilePermissions +instanceKlass org/gradle/api/file/FilePermissions +instanceKlass org/gradle/api/internal/file/copy/CopySpecInternal$CopySpecAddress +instanceKlass org/gradle/api/internal/file/copy/CopySpecResolver +instanceKlass org/gradle/api/internal/file/copy/CopyActionExecuter +instanceKlass org/gradle/api/java/archives/internal/ManifestInternal +instanceKlass org/gradle/api/internal/file/copy/ZipCompressor +instanceKlass org/gradle/api/internal/file/archive/compression/ArchiveOutputStreamFactory +instanceKlass org/gradle/execution/plan/edges/DependencyPredecessorsOnlyNodeSet +instanceKlass org/gradle/execution/plan/edges/DependencySuccessorsOnlyNodeSet +instanceKlass org/gradle/api/internal/AbstractTask$12 +instanceKlass org/gradle/api/internal/provider/ValueSupplier$TaskProducer +instanceKlass org/gradle/jvm/toolchain/internal/DefaultToolchainJavaCompiler +instanceKlass org/gradle/api/internal/tasks/compile/JavaCompileExecutableUtils +instanceKlass org/gradle/api/internal/AbstractTask$TaskActionWrapper +instanceKlass org/gradle/api/internal/AbstractTask$13 +instanceKlass org/springframework/boot/gradle/plugin/JavaPluginAction$AdditionalMetadataLocationsConfigurer +instanceKlass org/gradle/api/internal/file/collections/ReproducibleDirectoryWalker +instanceKlass org/gradle/internal/nativeintegration/services/FileSystems +instanceKlass org/gradle/api/internal/file/collections/DefaultDirectoryWalker +instanceKlass org/gradle/api/internal/file/collections/DirectoryWalker +instanceKlass org/gradle/api/internal/tasks/compile/CompilerForkUtils +instanceKlass org/gradle/api/internal/tasks/compile/CleaningJavaCompiler +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/AbstractRecompilationSpecProvider +instanceKlass org/gradle/api/internal/tasks/compile/DefaultJvmLanguageCompileSpec +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultDependencySubstitutionApplicator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/CachingDependencySubstitutionApplicator +instanceKlass org/gradle/api/internal/WithEstimatedSize$Estimates +instanceKlass org/gradle/internal/Actions$FilteredAction +instanceKlass org/gradle/api/internal/provider/AbstractCollectionProperty$FixedSupplier +instanceKlass org/gradle/jvm/toolchain/internal/operations/JavaToolchainUsageProgressDetails$JavaToolchain +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJavaToolchainUsageProgressDetails +instanceKlass org/gradle/jvm/toolchain/internal/operations/JavaToolchainUsageProgressDetails +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainInput +instanceKlass java/util/stream/ReduceOps$2ReducingSink +instanceKlass org/gradle/internal/jvm/inspection/JvmInstallationMetadataComparator +instanceKlass org/apache/commons/io/file/Counters$LongCounter +instanceKlass org/apache/commons/io/file/Counters$AbstractPathCounters +instanceKlass org/apache/commons/io/file/Counters$Counter +instanceKlass org/apache/commons/io/file/Counters$PathCounters +instanceKlass org/apache/commons/io/file/Counters +instanceKlass org/apache/commons/io/file/DeleteOption +instanceKlass org/apache/commons/io/file/PathUtils +instanceKlass org/apache/commons/io/function/IOBaseStreamAdapter +instanceKlass org/apache/commons/io/function/IOBiFunction +instanceKlass org/apache/commons/io/function/IOSpliterator +instanceKlass org/apache/commons/io/function/IOIterator +instanceKlass org/apache/commons/io/function/IOStream +instanceKlass org/apache/commons/io/function/IOBaseStream +instanceKlass org/apache/commons/io/function/IOStreams +instanceKlass org/apache/commons/io/function/IOConsumer +instanceKlass org/gradle/process/internal/DefaultExecHandle$ExecResultImpl +instanceKlass org/gradle/internal/operations/CurrentBuildOperationRef$Callable +instanceKlass org/gradle/process/internal/health/memory/JvmMemoryStatusSnapshot +instanceKlass org/gradle/workers/internal/WorkerDaemonExpiration$SimpleMemoryExpirationSelector +instanceKlass org/gradle/process/internal/health/memory/OsMemoryStatusAspect$Unavailable +instanceKlass org/gradle/process/internal/streams/ExecOutputHandleRunner +instanceKlass java/lang/ProcessImpl$2 +instanceKlass java/lang/ProcessHandleImpl +instanceKlass net/rubygrapefruit/platform/internal/jni/WindowsHandleFunctions +instanceKlass org/gradle/process/internal/ProcessBuilderFactory +instanceKlass org/gradle/process/internal/DefaultExecHandle$CompositeStreamsHandler +instanceKlass org/gradle/process/internal/ExecHandleRunner +instanceKlass org/gradle/process/internal/ExecHandleShutdownHookAction +instanceKlass net/rubygrapefruit/platform/internal/DefaultProcessLauncher +instanceKlass net/rubygrapefruit/platform/internal/WindowsProcessLauncher +instanceKlass net/rubygrapefruit/platform/internal/WrapperProcessLauncher +instanceKlass org/gradle/process/internal/DefaultExecHandle +instanceKlass org/gradle/process/internal/ProcessSettings +instanceKlass org/gradle/process/internal/streams/OutputStreamsForwarder +instanceKlass org/gradle/process/internal/ProcessArgumentsSpec +instanceKlass org/gradle/process/internal/streams/SafeStreams +instanceKlass org/gradle/process/internal/ProcessStreamsSpec +instanceKlass org/gradle/process/internal/streams/EmptyStdInStreamsHandler +instanceKlass org/gradle/process/internal/ExecHandle +instanceKlass org/gradle/process/internal/StreamsHandler +instanceKlass org/gradle/process/internal/ProcessArgumentsSpec$HasExecutable +instanceKlass org/gradle/internal/ErroringAction +instanceKlass org/gradle/internal/jvm/inspection/MetadataProbe +instanceKlass org/gradle/internal/jvm/inspection/JvmToolchainMetadata +instanceKlass net/rubygrapefruit/platform/internal/jni/WindowsRegistryFunctions +instanceKlass org/gradle/jvm/toolchain/internal/FileBasedInstallationFactory +instanceKlass org/gradle/api/internal/provider/sources/EnvironmentVariableValueSource$Parameters$Inject +instanceKlass org/gradle/api/internal/provider/sources/EnvironmentVariableValueSource$Parameters_Decorated +instanceKlass org/gradle/api/internal/provider/sources/EnvironmentVariableValueSource$Parameters +instanceKlass org/gradle/api/internal/provider/sources/EnvironmentVariableValueSource +instanceKlass java/util/concurrent/ForkJoinPool$DefaultCommonPoolForkJoinWorkerThreadFactory$1 +instanceKlass java/util/concurrent/ForkJoinTask$Aux +instanceKlass org/gradle/internal/jvm/inspection/DefaultJavaInstallationRegistry$ToolchainDetectionBuildOperation +instanceKlass org/gradle/jvm/toolchain/internal/JvmInstallationMetadataMatcher +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainQueryService$ToolchainLookupKey +instanceKlass org/gradle/jvm/toolchain/internal/DefaultToolchainSpec$Key +instanceKlass org/gradle/api/internal/tasks/testing/TestExecutableUtils +instanceKlass org/gradle/api/SupportsKotlinAssignmentOverloading +instanceKlass org/gradle/internal/properties/bean/DefaultPropertyWalker$ImplementationPropertyValue +instanceKlass org/gradle/internal/snapshot/impl/ImplementationValue +instanceKlass org/gradle/internal/scripts/ScriptOriginUtil +instanceKlass org/gradle/internal/properties/annotations/NestedValidationUtil +instanceKlass com/google/common/collect/AbstractMapBasedMultimap$Itr +instanceKlass com/google/common/collect/Iterators$ConcatenatedIterator +instanceKlass org/gradle/internal/reflect/validation/TypeAwareProblemBuilder +instanceKlass org/gradle/internal/reflect/validation/TypeValidationContext$1 +instanceKlass org/gradle/api/internal/tasks/TaskPropertyUtils +instanceKlass org/gradle/api/internal/tasks/DefaultTaskInputs$1 +instanceKlass org/gradle/api/internal/project/ProjectOrderingUtil +instanceKlass org/gradle/execution/plan/ResolveMutationsNode$2 +instanceKlass org/gradle/api/internal/tasks/execution/ResolveTaskMutationsBuildOperationType$Result +instanceKlass org/gradle/execution/plan/NodeSets +instanceKlass org/gradle/execution/plan/MutationInfo +instanceKlass org/gradle/execution/plan/edges/DependentNodesSet$1 +instanceKlass org/gradle/execution/plan/edges/DependentNodesSet +instanceKlass org/gradle/execution/plan/edges/DependencyNodesSet$1 +instanceKlass org/gradle/execution/plan/edges/DependencyNodesSet +instanceKlass org/gradle/execution/plan/TaskNodeFactory$DefaultTypeOriginInspectorFactory$ProjectScopedTypeOriginInspector +instanceKlass org/gradle/execution/plan/NodeGroup +instanceKlass org/gradle/execution/plan/NodeComparator +instanceKlass org/gradle/cli/CommandLineParser$OptionString +instanceKlass org/gradle/cli/CommandLineParser$OptionParserState +instanceKlass org/gradle/cli/ParsedCommandLineOption +instanceKlass org/gradle/cli/ParsedCommandLine +instanceKlass org/gradle/cli/CommandLineOption +instanceKlass org/gradle/internal/Pair +instanceKlass org/gradle/api/internal/tasks/options/InstanceOptionDescriptor +instanceKlass org/gradle/api/internal/tasks/options/OptionValueNotationParserFactory$NoDescriptionValuesJustReturningParser +instanceKlass org/gradle/api/internal/tasks/options/MethodOptionElement$PropertyValueSetter +instanceKlass org/gradle/api/internal/tasks/options/MethodSignature +instanceKlass org/gradle/api/internal/tasks/options/OptionReader$OptionElementAndSignature +instanceKlass org/gradle/api/internal/tasks/options/MethodOptionElement$MethodPropertySetter +instanceKlass org/gradle/api/internal/tasks/options/PropertySetter +instanceKlass org/gradle/api/internal/tasks/options/MethodOptionElement +instanceKlass org/gradle/api/internal/tasks/TaskOptionsGenerator$TaskOptions +instanceKlass org/gradle/api/internal/tasks/options/AbstractOptionElement +instanceKlass org/gradle/api/internal/tasks/options/OptionDescriptor +instanceKlass org/gradle/api/internal/tasks/options/OptionElement +instanceKlass org/gradle/api/internal/tasks/TaskOptionsGenerator +instanceKlass org/gradle/cli/CommandLineParser$ParserState +instanceKlass org/gradle/cli/CommandLineParser +instanceKlass org/gradle/api/internal/tasks/testing/junitplatform/JUnitPlatformTestFramework +instanceKlass org/gradle/api/internal/AbstractTask$21 +instanceKlass org/gradle/api/internal/tasks/testing/detection/JarFilePackageListener +instanceKlass org/gradle/api/internal/tasks/testing/detection/ClassFileExtractionManager +instanceKlass org/gradle/api/internal/tasks/testing/TestClassRunInfo +instanceKlass org/gradle/api/internal/tasks/testing/detection/AbstractTestFrameworkDetector +instanceKlass org/gradle/api/internal/file/temp/DefaultTemporaryFileProvider$1 +instanceKlass org/gradle/api/internal/tasks/testing/TestFrameworkDistributionModule +instanceKlass org/gradle/api/internal/tasks/testing/detection/TestFrameworkDetector +instanceKlass org/gradle/api/internal/tasks/testing/WorkerTestClassProcessorFactory +instanceKlass org/gradle/api/internal/tasks/testing/junit/JUnitTestFramework +instanceKlass org/gradle/jvm/toolchain/internal/DefaultToolchainJavaLauncher +instanceKlass org/gradle/api/tasks/testing/Test$4 +instanceKlass org/gradle/api/tasks/testing/Test$3 +instanceKlass org/gradle/api/tasks/testing/Test$2 +instanceKlass org/gradle/process/internal/JvmOptions +instanceKlass org/gradle/process/internal/DefaultProcessForkOptions +instanceKlass org/gradle/process/internal/DefaultJavaDebugOptions +instanceKlass org/gradle/api/tasks/testing/Test$1 +instanceKlass org/gradle/api/internal/tasks/testing/filter/TestFilterSpec +instanceKlass org/gradle/api/internal/file/DefaultProjectLayout$2 +instanceKlass org/gradle/api/reporting/internal/TaskGeneratedReport$1 +instanceKlass org/gradle/api/reporting/internal/SimpleReport +instanceKlass org/gradle/api/reporting/internal/DefaultReportContainer$1 +instanceKlass org/gradle/api/reporting/Report$1 +instanceKlass org/gradle/api/tasks/testing/JUnitXmlReport +instanceKlass org/gradle/api/internal/tasks/testing/logging/DefaultTestLogging +instanceKlass org/gradle/api/internal/tasks/testing/logging/DefaultTestLoggingContainer +instanceKlass org/gradle/api/tasks/options/Option +instanceKlass org/gradle/process/CommandLineArgumentProvider +instanceKlass org/gradle/jvm/toolchain/JavaLauncher +instanceKlass org/gradle/api/tasks/testing/AbstractTestTask$BroadcastSubscriptions +instanceKlass org/gradle/api/internal/tasks/testing/filter/DefaultTestFilter +instanceKlass org/gradle/api/internal/tasks/testing/logging/TestCountLogger +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestOutputStore +instanceKlass org/gradle/api/tasks/testing/logging/TestLoggingContainer +instanceKlass org/gradle/api/tasks/testing/logging/TestLogging +instanceKlass org/gradle/api/tasks/testing/TestTaskReports +instanceKlass org/gradle/api/internal/tasks/testing/JvmTestExecutionSpec +instanceKlass org/gradle/api/tasks/testing/TestFrameworkOptions +instanceKlass org/gradle/api/internal/tasks/testing/TestExecutionSpec +instanceKlass org/gradle/api/internal/tasks/testing/TestExecuter +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$TaskCreatingProvider$1 +instanceKlass org/gradle/execution/TaskNameResolver$1 +instanceKlass org/gradle/execution/selection/DefaultBuildTaskSelector$ProjectResolutionResult +instanceKlass org/gradle/internal/build/DefaultBuildLifecycleController$DefaultWorkGraphBuilder +instanceKlass org/gradle/internal/build/BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph$1 +instanceKlass org/gradle/internal/taskgraph/CalculateTaskGraphBuildOperationType$Details +instanceKlass org/gradle/internal/build/BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph +instanceKlass org/gradle/internal/build/DefaultBuildLifecycleController$DefaultBuildWorkPlan +instanceKlass org/gradle/execution/plan/OrdinalNodeAccess +instanceKlass org/gradle/execution/plan/QueryableExecutionPlan$ScheduledNodes +instanceKlass org/gradle/execution/plan/DefaultExecutionPlan +instanceKlass org/gradle/internal/build/DefaultBuildWorkGraphController$DefaultBuildWorkGraph +instanceKlass org/gradle/composite/internal/DefaultBuildController +instanceKlass org/gradle/internal/build/BuildLifecycleController$WorkGraphBuilder +instanceKlass org/gradle/composite/internal/TaskIdentifier +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraphBuilder +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1$2 +instanceKlass org/gradle/internal/taskgraph/CalculateTreeTaskGraphBuildOperationType$Details +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph$1 +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkGraph$Builder +instanceKlass org/gradle/api/internal/file/DefaultFilePropertyFactory$ToFileTransformer +instanceKlass org/gradle/initialization/ProjectsEvaluatedNotifier$NotifyProjectsEvaluatedListeners$1 +instanceKlass org/gradle/initialization/NotifyProjectsEvaluatedBuildOperationType$Details +instanceKlass org/gradle/initialization/ProjectsEvaluatedNotifier$NotifyProjectsEvaluatedListeners +instanceKlass org/gradle/initialization/ProjectsEvaluatedNotifier$1 +instanceKlass org/gradle/initialization/NotifyProjectsEvaluatedBuildOperationType$Result +instanceKlass org/gradle/initialization/ProjectsEvaluatedNotifier +instanceKlass org/gradle/configuration/project/ConfigureProjectBuildOperationType$1 +instanceKlass org/gradle/configuration/project/ConfigureProjectBuildOperationType$Result +instanceKlass org/gradle/configuration/project/ConfigureProjectBuildOperationType +instanceKlass org/gradle/configuration/project/NotifyProjectAfterEvaluatedBuildOperationType$1 +instanceKlass org/gradle/configuration/project/NotifyProjectAfterEvaluatedBuildOperationType$Result +instanceKlass org/gradle/configuration/project/NotifyProjectAfterEvaluatedBuildOperationType +instanceKlass org/gradle/configuration/internal/ExecuteListenerBuildOperationType$1 +instanceKlass org/gradle/configuration/internal/ExecuteListenerBuildOperationType$Result +instanceKlass org/gradle/configuration/internal/ExecuteListenerBuildOperationType +instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$ExecuteListenerDetails +instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$Operation +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$NotifyAfterEvaluate$1 +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$NotifyProjectAfterEvaluatedDetails +instanceKlass org/gradle/configuration/project/NotifyProjectAfterEvaluatedBuildOperationType$Details +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$NotifyAfterEvaluate +instanceKlass org/gradle/configuration/project/DefaultProjectConfigurationActionContainer +instanceKlass org/gradle/model/internal/inspect/ExtractedRuleSource +instanceKlass org/gradle/model/internal/core/ModelView +instanceKlass org/gradle/model/internal/core/NodePredicate +instanceKlass sun/reflect/generics/tree/LongSignature +instanceKlass org/gradle/internal/typeconversion/MapKey +instanceKlass org/gradle/api/artifacts/repositories/ExclusiveContentRepository +instanceKlass sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl +instanceKlass org/gradle/api/plugins/FeatureSpec +instanceKlass org/gradle/api/plugins/JavaResolutionConsistency +instanceKlass org/xml/sax/Attributes +instanceKlass org/apache/tools/ant/BuildLogger +instanceKlass org/apache/tools/ant/BuildListener +instanceKlass org/xml/sax/Locator +instanceKlass sun/reflect/generics/tree/BooleanSignature +instanceKlass io/spring/gradle/dependencymanagement/internal/pom/PomReference +instanceKlass io/spring/gradle/dependencymanagement/internal/properties/MapPropertySource +instanceKlass io/spring/gradle/dependencymanagement/internal/pom/Coordinates +instanceKlass io/spring/gradle/dependencymanagement/internal/dsl/StandardMavenBomHandler +instanceKlass io/spring/gradle/dependencymanagement/dsl/MavenBomHandler +instanceKlass io/spring/gradle/dependencymanagement/internal/dsl/StandardDependencyManagementHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultDependencySubstitutions$AbstractDependencySubstitutionAction +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagementConfigurationContainer$ConfigurationConfigurer +instanceKlass io/spring/gradle/dependencymanagement/internal/ExclusionConfiguringAction +instanceKlass io/spring/gradle/dependencymanagement/internal/VersionConfiguringAction$StandardLocalProjects +instanceKlass io/spring/gradle/dependencymanagement/internal/VersionConfiguringAction$CachingLocalProjects +instanceKlass io/spring/gradle/dependencymanagement/internal/VersionConfiguringAction$LocalProjects +instanceKlass io/spring/gradle/dependencymanagement/internal/VersionConfiguringAction +instanceKlass org/gradle/api/internal/project/taskfactory/StandardTaskAction +instanceKlass org/gradle/api/internal/project/taskfactory/DefaultTaskClassInfoStore$IncrementalTaskActionFactory +instanceKlass org/gradle/api/internal/project/taskfactory/DefaultTaskClassInfoStore$StandardTaskActionFactory +instanceKlass org/gradle/api/internal/project/taskfactory/TaskClassInfo +instanceKlass org/gradle/internal/cc/impl/AbstractTaskProjectAccessChecker +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheServices$TaskExecutionAccessCheckerProvider$workGraphLoadingStateFrom$1 +instanceKlass org/gradle/internal/execution/DefaultWorkExecutionTracker$OperationListener +instanceKlass org/gradle/internal/execution/DefaultWorkExecutionTracker +instanceKlass org/gradle/internal/cc/impl/BuildTreeConfigurationCache +instanceKlass org/gradle/api/internal/tasks/DefaultTaskRequiredServices +instanceKlass org/gradle/api/internal/tasks/DefaultTaskLocalState +instanceKlass org/gradle/api/internal/tasks/DefaultTaskDestroyables +instanceKlass org/gradle/api/internal/tasks/TaskDestroyablesInternal +instanceKlass org/gradle/api/internal/tasks/properties/OutputUnpacker$UnpackedOutputConsumer +instanceKlass org/gradle/api/tasks/TaskOutputFilePropertyBuilder +instanceKlass org/gradle/api/internal/tasks/DefaultTaskOutputs +instanceKlass org/gradle/api/internal/TaskOutputsEnterpriseInternal +instanceKlass org/gradle/api/internal/tasks/TaskInputsDeprecationSupport +instanceKlass org/gradle/api/internal/FilePropertyContainer +instanceKlass org/gradle/api/tasks/TaskInputPropertyBuilder +instanceKlass org/gradle/api/internal/tasks/TaskInputFilePropertyRegistration +instanceKlass org/gradle/api/internal/tasks/TaskInputFilePropertyBuilderInternal +instanceKlass org/gradle/api/internal/tasks/TaskFilePropertyBuilderInternal +instanceKlass org/gradle/api/internal/tasks/TaskPropertyRegistration +instanceKlass org/gradle/api/tasks/TaskInputFilePropertyBuilder +instanceKlass org/gradle/api/tasks/TaskFilePropertyBuilder +instanceKlass org/gradle/api/tasks/TaskPropertyBuilder +instanceKlass org/gradle/api/internal/tasks/DefaultTaskInputs +instanceKlass org/gradle/internal/logging/slf4j/DefaultContextAwareTaskLogger +instanceKlass org/gradle/api/internal/tasks/execution/SelfDescribingSpec +instanceKlass org/gradle/api/internal/AbstractTask$10 +instanceKlass org/gradle/api/tasks/TaskAction +instanceKlass org/gradle/api/internal/tasks/TaskMutator +instanceKlass org/gradle/internal/snapshot/impl/ImplementationSnapshot +instanceKlass org/gradle/api/internal/tasks/properties/ServiceReferenceSpec +instanceKlass org/gradle/api/internal/tasks/properties/PropertySpec +instanceKlass org/gradle/api/specs/CompositeSpec +instanceKlass org/gradle/api/internal/tasks/TaskStateInternal +instanceKlass io/spring/gradle/dependencymanagement/internal/report/DependencyManagementReportRenderer +instanceKlass org/gradle/api/internal/AbstractTask$TaskInfo +instanceKlass org/gradle/api/internal/project/taskfactory/TaskFactory$1 +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$RealizeDetails +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$2 +instanceKlass io/spring/gradle/dependencymanagement/internal/ExclusionResolver +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagementApplier +instanceKlass io/spring/gradle/dependencymanagement/internal/ImplicitDependencyManagementCollector +instanceKlass io/spring/gradle/dependencymanagement/dsl/ImportsHandler +instanceKlass io/spring/gradle/dependencymanagement/dsl/GeneratedPomCustomizationHandler +instanceKlass io/spring/gradle/dependencymanagement/dsl/DependenciesHandler +instanceKlass io/spring/gradle/dependencymanagement/internal/StandardPomDependencyManagementConfigurer +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagementSettings$PomCustomizationSettings +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagementSettings +instanceKlass io/spring/gradle/dependencymanagement/internal/Exclusions +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagement +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagementContainer +instanceKlass io/spring/gradle/dependencymanagement/internal/maven/ConfigurationModelResolver +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuildingRequest +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelCache +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelSource +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/building/Source +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/validation/ModelValidator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/interpolation/ModelInterpolator +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/resolution/ModelResolver +instanceKlass io/spring/gradle/dependencymanagement/internal/maven/EffectiveModelBuilder +instanceKlass io/spring/gradle/dependencymanagement/internal/properties/PropertySource +instanceKlass io/spring/gradle/dependencymanagement/internal/maven/MavenPomResolver +instanceKlass io/spring/gradle/dependencymanagement/internal/DependencyManagementConfigurationContainer +instanceKlass io/spring/gradle/dependencymanagement/internal/pom/PomResolver +instanceKlass io/spring/gradle/dependencymanagement/internal/bridge/InternalComponents +instanceKlass io/spring/gradle/dependencymanagement/dsl/DependencyManagementExtension +instanceKlass io/spring/gradle/dependencymanagement/dsl/DependencyManagementHandler +instanceKlass io/spring/gradle/dependencymanagement/dsl/DependencyManagementConfigurer +instanceKlass org/gradle/api/publish/maven/plugins/MavenPublishPlugin +instanceKlass org/gradle/api/publish/PublishingExtension +instanceKlass io/spring/gradle/dependencymanagement/maven/PomDependencyManagementConfigurer +instanceKlass com/google/common/base/Throwables +instanceKlass org/gradle/api/plugins/ApplicationPlugin +instanceKlass io/spring/gradle/dependencymanagement/DependencyManagementPlugin +instanceKlass org/gradle/api/plugins/WarPlugin +instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction +instanceKlass org/springframework/boot/gradle/tasks/bundling/BootArchive +instanceKlass org/springframework/boot/gradle/plugin/NativeImagePluginAction +instanceKlass org/springframework/boot/gradle/plugin/KotlinPluginAction +instanceKlass org/springframework/boot/gradle/plugin/ApplicationPluginAction +instanceKlass org/springframework/boot/gradle/plugin/WarPluginAction +instanceKlass org/springframework/boot/gradle/plugin/JavaPluginAction +instanceKlass org/gradle/api/internal/artifacts/dsl/DefaultArtifactHandler$DynamicMethods +instanceKlass org/gradle/api/internal/artifacts/dsl/DefaultArtifactHandler +instanceKlass org/springframework/boot/gradle/plugin/SinglePublishedArtifact +instanceKlass org/springframework/boot/gradle/dsl/SpringBootExtension +instanceKlass org/springframework/boot/gradle/util/VersionExtractor +instanceKlass org/springframework/boot/gradle/plugin/DependencyManagementPluginAction +instanceKlass org/springframework/boot/gradle/plugin/PluginApplicationAction +instanceKlass org/springframework/boot/gradle/plugin/SpringBootPlugin +instanceKlass org/gradle/internal/classloader/JarCompat +instanceKlass org/gradle/internal/classloader/TransformErrorHandler +instanceKlass org/gradle/internal/classloader/TransformReplacer$Loader +instanceKlass org/gradle/internal/classloader/TransformReplacer +instanceKlass org/gradle/internal/fingerprint/impl/IgnoredPathFileSystemLocationFingerprint$1 +instanceKlass org/gradle/internal/fingerprint/impl/IgnoredPathFileSystemLocationFingerprint +instanceKlass org/gradle/api/internal/provider/ChangingValueHandler +instanceKlass org/gradle/api/attributes/TestSuiteTargetName$Impl +instanceKlass org/gradle/api/attributes/TestSuiteTargetName +instanceKlass org/gradle/api/attributes/TestSuiteName$Impl +instanceKlass org/gradle/api/attributes/TestSuiteName +instanceKlass org/gradle/api/testing/toolchains/internal/FrameworkCachingJvmTestToolchain +instanceKlass org/gradle/api/testing/toolchains/internal/JvmTestToolchainParameters$None +instanceKlass org/gradle/api/testing/toolchains/internal/LegacyJUnit4TestToolchain +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyCollector +instanceKlass org/gradle/api/plugins/jvm/JvmComponentDependencies_Decorated +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmTestSuiteTarget +instanceKlass org/gradle/api/plugins/jvm/JvmComponentDependencies +instanceKlass org/gradle/api/artifacts/dsl/GradleDependencies +instanceKlass org/gradle/api/plugins/jvm/TestFixturesDependencyModifiers +instanceKlass org/gradle/api/plugins/jvm/PlatformDependencyModifiers +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmTestSuite$ToolchainFactory +instanceKlass org/gradle/api/testing/toolchains/internal/JUnitJupiterToolchainParameters +instanceKlass org/gradle/api/testing/toolchains/internal/KotlinTestToolchainParameters +instanceKlass org/gradle/api/internal/tasks/testing/TestFramework +instanceKlass org/gradle/api/testing/toolchains/internal/JvmTestToolchain +instanceKlass org/gradle/api/testing/toolchains/internal/TestNGToolchainParameters +instanceKlass org/gradle/api/testing/toolchains/internal/JUnit4ToolchainParameters +instanceKlass org/gradle/api/testing/toolchains/internal/SpockToolchainParameters +instanceKlass org/gradle/api/testing/toolchains/internal/JUnitPlatformToolchainParameters +instanceKlass org/gradle/api/testing/toolchains/internal/JvmTestToolchainParameters +instanceKlass org/gradle/api/publish/internal/component/ConfigurationVariantMapping +instanceKlass org/gradle/api/internal/ReflectiveNamedDomainObjectFactory +instanceKlass org/gradle/api/internal/provider/Collectors$ElementsFromCollectionProvider +instanceKlass org/gradle/api/internal/provider/AbstractCollectionProperty$CollectingSupplier +instanceKlass org/gradle/api/internal/file/AbstractFileCollection$FileCollectionElementsFactory +instanceKlass org/gradle/api/attributes/VerificationType$Impl +instanceKlass org/gradle/api/attributes/VerificationType +instanceKlass org/gradle/api/internal/provider/ValueSupplier$FixedSideEffect +instanceKlass org/gradle/api/internal/artifacts/publish/AbstractPublishArtifact +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultVariant +instanceKlass org/gradle/api/internal/artifacts/ConfigurationVariantInternal +instanceKlass org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact +instanceKlass org/gradle/api/internal/artifacts/PublishArtifactInternal +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmFeature +instanceKlass org/gradle/api/plugins/internal/JvmPluginsHelper +instanceKlass org/gradle/api/tasks/compile/AbstractOptions +instanceKlass org/gradle/api/internal/tasks/compile/incremental/recomp/RecompilationSpecProvider +instanceKlass org/gradle/api/internal/tasks/compile/JavaCompileSpec +instanceKlass org/gradle/api/internal/tasks/compile/JvmLanguageCompileSpec +instanceKlass org/gradle/language/base/internal/compile/CompileSpec +instanceKlass org/gradle/internal/extensibility/ConventionAwareHelper$MappedPropertyImpl +instanceKlass org/gradle/api/internal/ConventionMapping$MappedProperty +instanceKlass org/gradle/api/attributes/java/TargetJvmEnvironment$Impl +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmEcosystemAttributesDetails +instanceKlass org/gradle/api/plugins/jvm/internal/JvmEcosystemAttributesDetails +instanceKlass org/gradle/api/internal/tasks/DefaultSourceSetOutput$DirectoryContribution +instanceKlass org/gradle/api/internal/lambdas/SerializableLambdas$SerializableSpec +instanceKlass org/gradle/api/internal/file/DefaultSourceDirectorySet$SourceDirectories +instanceKlass org/gradle/internal/typeconversion/CharSequenceNotationParser +instanceKlass org/gradle/model/internal/core/UnmanagedStruct +instanceKlass org/gradle/api/internal/file/collections/DirectoryFileTree +instanceKlass org/gradle/api/internal/file/collections/LocalFileTree +instanceKlass org/gradle/api/internal/file/collections/RandomAccessFileCollection +instanceKlass org/gradle/api/internal/file/collections/PatternFilterableFileTree +instanceKlass org/gradle/api/internal/jvm/ClassDirectoryBinaryNamingScheme +instanceKlass org/gradle/api/file/FileTreeElement +instanceKlass org/gradle/api/tasks/SourceSetOutput +instanceKlass org/gradle/api/internal/tasks/DefaultSourceSet +instanceKlass org/gradle/internal/reflect/MethodSet$1 +instanceKlass org/gradle/api/internal/component/SoftwareComponentContainerInternal +instanceKlass org/gradle/api/internal/component/UsageContext +instanceKlass org/gradle/api/component/SoftwareComponentVariant +instanceKlass org/gradle/api/publish/internal/component/DefaultAdhocSoftwareComponent +instanceKlass org/gradle/api/internal/component/SoftwareComponentInternal +instanceKlass org/gradle/api/component/AdhocComponentWithVariants +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmTestSuite +instanceKlass org/gradle/testing/base/internal/DefaultTestingExtension +instanceKlass org/gradle/testing/base/plugins/TestSuiteBasePlugin +instanceKlass org/gradle/api/attributes/TestSuiteType +instanceKlass org/gradle/api/plugins/jvm/JvmTestSuiteTarget +instanceKlass org/gradle/testing/base/TestSuiteTarget +instanceKlass org/gradle/testing/base/TestingExtension +instanceKlass org/gradle/api/plugins/JvmTestSuitePlugin +instanceKlass org/gradle/api/plugins/JavaPluginConvention +instanceKlass org/gradle/internal/jvm/DefaultModularitySpec +instanceKlass org/gradle/api/jvm/ModularitySpec +instanceKlass org/gradle/api/java/archives/Manifest +instanceKlass org/gradle/language/java/internal/JavaLanguageServices$JavaProjectScopeServices$1 +instanceKlass org/gradle/api/internal/tasks/compile/daemon/CompilerWorkerExecutor +instanceKlass org/gradle/language/base/internal/compile/Compiler +instanceKlass org/gradle/api/internal/tasks/compile/DefaultJavaCompilerFactory +instanceKlass org/gradle/api/internal/tasks/compile/processing/AnnotationProcessorDeclarationSerializer +instanceKlass org/gradle/api/internal/tasks/compile/processing/AnnotationProcessorDetector$ProcessorServiceLocator +instanceKlass org/gradle/process/internal/worker/child/DefaultWorkerDirectoryProvider +instanceKlass org/gradle/workers/internal/WorkerDaemonClientCancellationHandler$KillWorkers +instanceKlass org/gradle/workers/internal/WorkerDaemonExpiration +instanceKlass org/gradle/workers/internal/WorkerDaemonClientsManager$LogLevelChangeEventListener +instanceKlass org/gradle/workers/internal/WorkerDaemonClientsManager$StopSessionScopedWorkers +instanceKlass org/gradle/workers/internal/WorkerDaemonStarter +instanceKlass org/gradle/workers/internal/WorkerDaemonClient +instanceKlass org/gradle/process/internal/health/memory/MemoryHolder +instanceKlass org/gradle/workers/internal/DefaultActionExecutionSpecFactory +instanceKlass org/gradle/internal/snapshot/impl/ArrayOfPrimitiveValueSnapshot +instanceKlass org/gradle/internal/snapshot/impl/AbstractListSnapshot +instanceKlass org/gradle/internal/snapshot/impl/EnumValueSnapshot +instanceKlass org/gradle/internal/snapshot/impl/JavaSerializedValueSnapshot +instanceKlass org/gradle/internal/snapshot/impl/AbstractMapSnapshot +instanceKlass org/gradle/workers/internal/IsolatableSerializerRegistry$IsolatableSerializer +instanceKlass org/gradle/process/internal/worker/child/ApplicationClassesInSystemClassLoaderWorkerImplementationFactory +instanceKlass org/gradle/process/internal/worker/MultiRequestWorkerProcessBuilder +instanceKlass org/gradle/process/internal/worker/SingleRequestWorkerProcessBuilder +instanceKlass org/gradle/process/internal/worker/WorkerProcessBuilder +instanceKlass org/gradle/process/internal/worker/WorkerProcessSettings +instanceKlass org/gradle/process/internal/worker/DefaultWorkerProcessFactory +instanceKlass org/gradle/process/internal/health/memory/DefaultMemoryManager$MemoryCheck +instanceKlass org/gradle/process/internal/health/memory/DefaultMemoryManager$OsMemoryListener +instanceKlass org/gradle/process/internal/health/memory/DefaultAvailableOsMemoryStatusAspect +instanceKlass org/gradle/process/internal/health/memory/OsMemoryStatusAspect$Available +instanceKlass org/gradle/process/internal/health/memory/OsMemoryStatusSnapshot +instanceKlass net/rubygrapefruit/platform/internal/jni/WindowsMemoryFunctions +instanceKlass net/rubygrapefruit/platform/internal/DefaultWindowsMemoryInfo +instanceKlass net/rubygrapefruit/platform/memory/WindowsMemoryInfo +instanceKlass net/rubygrapefruit/platform/memory/MemoryInfo +instanceKlass net/rubygrapefruit/platform/internal/DefaultWindowsMemory +instanceKlass org/gradle/process/internal/health/memory/JvmMemoryStatusListener +instanceKlass org/gradle/process/internal/health/memory/OsMemoryStatusAspect +instanceKlass org/gradle/process/internal/health/memory/DefaultMemoryManager +instanceKlass org/gradle/process/internal/health/memory/JvmMemoryStatus +instanceKlass org/gradle/process/internal/health/memory/DefaultJvmMemoryInfo +instanceKlass org/gradle/process/internal/health/memory/OsMemoryStatus +instanceKlass org/gradle/process/internal/health/memory/WindowsOsMemoryInfo +instanceKlass org/gradle/process/internal/health/memory/MBeanAttributeProvider +instanceKlass org/gradle/process/internal/health/memory/DefaultOsMemoryInfo +instanceKlass org/gradle/internal/jvm/inspection/DefaultJvmVersionDetector +instanceKlass org/gradle/internal/remote/internal/hub/MessageHubBackedServer +instanceKlass org/gradle/jvm/toolchain/JavadocTool +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchain +instanceKlass org/gradle/jvm/toolchain/JavaInstallationMetadata +instanceKlass org/gradle/internal/jvm/inspection/JvmVendor$1 +instanceKlass org/gradle/internal/jvm/inspection/JvmVendor +instanceKlass org/gradle/jvm/toolchain/JvmVendorSpec +instanceKlass org/gradle/jvm/toolchain/JvmImplementation +instanceKlass org/gradle/jvm/toolchain/internal/DefaultToolchainSpec +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainQueryService$1 +instanceKlass net/rubygrapefruit/platform/internal/MutableSystemInfo +instanceKlass net/rubygrapefruit/platform/internal/DefaultSystemInfo +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJavaToolchainRepositoryHandler$RepositoryNamer +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainRepositoryInternal +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJavaToolchainRepositoryHandler +instanceKlass org/gradle/jvm/toolchain/internal/RealizedJavaToolchainRepository +instanceKlass org/gradle/jvm/toolchain/JavaToolchainRepository +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainRepositoryHandlerInternal +instanceKlass org/gradle/jvm/toolchain/JavaToolchainRepositoryHandler +instanceKlass org/gradle/internal/jvm/inspection/DefaultJavaInstallationRegistry$Installations +instanceKlass org/gradle/api/internal/provider/DefaultValueSourceProviderFactory$DefaultObtainedValue +instanceKlass org/gradle/api/internal/provider/sources/GradlePropertyValueSource$Parameters$Inject +instanceKlass org/gradle/jvm/toolchain/internal/AutoInstalledInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/CurrentInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/LocationListInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/EnvironmentVariableListInstallationSupplier +instanceKlass org/gradle/internal/jvm/inspection/DefaultJavaInstallationRegistry +instanceKlass org/gradle/internal/jvm/inspection/JavaInstallationCapability$1 +instanceKlass org/gradle/internal/RenderingUtils +instanceKlass org/gradle/jvm/toolchain/internal/install/DefaultJdkCacheDirectory$UnpackedRoot +instanceKlass org/gradle/jvm/toolchain/internal/install/DefaultJdkCacheDirectory +instanceKlass net/rubygrapefruit/platform/internal/DefaultWindowsRegistry +instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityPropertyManager +instanceKlass com/sun/org/apache/xerces/internal/utils/XMLSecurityManager +instanceKlass javax/xml/parsers/FactoryFinder$1 +instanceKlass javax/xml/parsers/FactoryFinder +instanceKlass javax/xml/parsers/DocumentBuilderFactory +instanceKlass jdk/xml/internal/XMLSecurityManager +instanceKlass jdk/xml/internal/JdkXmlFeatures +instanceKlass javax/xml/xpath/XPathFactoryFinder$2 +instanceKlass javax/xml/xpath/XPathFactoryFinder +instanceKlass jdk/xml/internal/SecuritySupport +instanceKlass javax/xml/xpath/XPathFactory +instanceKlass org/gradle/internal/xml/XmlFactories +instanceKlass org/gradle/api/internal/provider/ValueSourceProviderFactory$ValueListener$ObtainedValue +instanceKlass org/gradle/api/internal/provider/DefaultValueSourceProviderFactory$LazilyObtainedValue +instanceKlass org/gradle/api/internal/provider/DefaultValueSourceProviderFactory$DefaultValueSourceSpec +instanceKlass org/gradle/api/internal/provider/sources/GradlePropertyValueSource$Parameters_Decorated +instanceKlass org/gradle/api/internal/provider/sources/GradlePropertyValueSource$Parameters +instanceKlass org/gradle/api/internal/provider/sources/AbstractPropertyValueSource$Parameters +instanceKlass org/gradle/api/internal/provider/sources/AbstractPropertyValueSource +instanceKlass org/gradle/api/plugins/JvmToolchainsPlugin +instanceKlass org/gradle/api/reporting/ReportSpec +instanceKlass org/gradle/api/reporting/ReportingExtension +instanceKlass org/gradle/api/plugins/ReportingBasePlugin +instanceKlass org/gradle/api/internal/artifacts/type/DefaultArtifactTypeContainer$DefaultArtifactTypeDefinition +instanceKlass org/gradle/internal/service/scopes/DefaultProjectFinder +instanceKlass org/gradle/api/internal/tasks/DefaultSourceSetContainer$1 +instanceKlass org/gradle/api/plugins/JvmEcosystemPlugin +instanceKlass org/gradle/api/internal/ExecuteDomainObjectCollectionCallbackBuildOperationType$1 +instanceKlass org/gradle/api/internal/ExecuteDomainObjectCollectionCallbackBuildOperationType$Result +instanceKlass org/gradle/api/internal/ExecuteDomainObjectCollectionCallbackBuildOperationType +instanceKlass org/gradle/api/internal/DefaultCollectionCallbackActionDecorator$OperationDetails +instanceKlass org/gradle/api/internal/DefaultCollectionCallbackActionDecorator$Operation +instanceKlass org/gradle/api/internal/plugins/DslObject +instanceKlass org/gradle/api/internal/plugins/BuildConfigurationRule +instanceKlass org/gradle/api/internal/file/DefaultFilePropertyFactory$PathToDirectoryTransformer +instanceKlass org/gradle/api/plugins/internal/DefaultBasePluginExtension +instanceKlass org/gradle/language/base/internal/plugins/CleanRule +instanceKlass org/gradle/language/base/plugins/LifecycleBasePlugin +instanceKlass org/gradle/api/internal/plugins/DefaultArtifactPublicationSet +instanceKlass org/gradle/api/plugins/BasePluginConvention +instanceKlass org/gradle/api/plugins/BasePlugin +instanceKlass org/gradle/api/plugins/internal/JavaConfigurationVariantMapping +instanceKlass org/gradle/api/plugins/BasePluginExtension +instanceKlass org/gradle/api/internal/tasks/compile/HasCompileOptions +instanceKlass org/gradle/api/file/SourceDirectorySet +instanceKlass org/gradle/api/plugins/internal/DefaultJavaPluginExtension +instanceKlass org/gradle/api/plugins/JavaPluginExtension +instanceKlass org/gradle/api/plugins/JavaBasePlugin$BackwardCompatibilityOutputDirectoryConvention +instanceKlass org/gradle/api/plugins/JavaBasePlugin +instanceKlass org/gradle/api/plugins/JavaPlatformPlugin +instanceKlass org/gradle/api/internal/plugins/PluginManagerInternal$PluginWithId +instanceKlass org/gradle/api/publish/plugins/PublishingPlugin +instanceKlass org/gradle/api/plugins/jvm/JvmTestSuite +instanceKlass org/gradle/testing/base/TestSuite +instanceKlass org/gradle/api/publish/maven/MavenPublication +instanceKlass org/gradle/api/publish/ivy/IvyPublication +instanceKlass org/gradle/api/publish/Publication +instanceKlass org/gradle/api/tasks/SourceSet +instanceKlass org/gradle/jvm/component/internal/JvmSoftwareComponentInternal +instanceKlass org/gradle/api/plugins/jvm/internal/JvmFeatureInternal +instanceKlass org/gradle/internal/classpath/DefaultClassPath$Builder +instanceKlass org/gradle/internal/classpath/TransformedClassPath$Builder +instanceKlass org/gradle/internal/classpath/TransformedClassPath$1 +instanceKlass java/util/stream/SortedOps +instanceKlass org/gradle/api/internal/initialization/transform/utils/InstrumentationClasspathMerger$ClassPathTransformedArtifact +instanceKlass org/gradle/internal/Deferrable$2 +instanceKlass org/gradle/api/internal/tasks/properties/InputParameterUtils +instanceKlass org/gradle/api/internal/initialization/transform/BaseInstrumentingArtifactTransform$Parameters$Inject +instanceKlass org/gradle/internal/snapshot/RootTrackingFileSystemSnapshotHierarchyVisitor +instanceKlass org/gradle/internal/properties/bean/DefaultPropertyWalker$CachedPropertyValue +instanceKlass org/gradle/api/internal/initialization/transform/MergeInstrumentationAnalysisTransform$Parameters$Inject +instanceKlass org/gradle/api/internal/file/collections/DefaultConfigurableFileCollection$Configurer +instanceKlass org/gradle/internal/snapshot/impl/AbstractSetSnapshot +instanceKlass org/gradle/api/internal/file/collections/DefaultConfigurableFileCollection$ResolvedItemsCollector +instanceKlass org/gradle/api/internal/file/collections/ListBackedFileSet +instanceKlass org/gradle/api/internal/artifacts/PreResolvedResolvableArtifact +instanceKlass org/gradle/internal/Factories$1 +instanceKlass org/gradle/internal/execution/steps/IdentityCacheStep$DefaultExecuteDeferredWorkProgressDetails +instanceKlass org/gradle/operations/execution/ExecuteDeferredWorkProgressDetails +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$TransformWorkspaceResult +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$Builder$EntireInputArtifact +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$Builder$TransformWorkspaceOutput +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$Builder$ProducedExecutionOutput +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$Builder$TransformExecutionOutput +instanceKlass java/nio/channels/Channels +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$Builder +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResult$OutputVisitor +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionResultSerializer +instanceKlass org/gradle/internal/execution/steps/IdentityCacheStep$DefaultIdentityCacheResult +instanceKlass org/gradle/internal/execution/steps/ExecuteWorkBuildOperationFiringStep$ExecuteWorkResult +instanceKlass org/gradle/operations/execution/ExecuteWorkBuildOperationType$Result +instanceKlass org/gradle/internal/execution/steps/ExecuteWorkBuildOperationFiringStep$ExecuteWorkDetails +instanceKlass org/gradle/operations/execution/ExecuteWorkBuildOperationType$Details +instanceKlass org/gradle/internal/Deferrable$1 +instanceKlass org/gradle/internal/Deferrable$3 +instanceKlass org/gradle/api/internal/artifacts/transform/AbstractTransformExecution$DefaultIdentifyTransformExecutionProgressDetails +instanceKlass org/gradle/operations/dependencies/transforms/IdentifyTransformExecutionProgressDetails +instanceKlass org/gradle/api/internal/artifacts/transform/TransformWorkspaceIdentity +instanceKlass org/gradle/internal/snapshot/impl/FileSystemSnapshotFilter +instanceKlass org/gradle/internal/snapshot/MetadataSnapshot$1 +instanceKlass org/gradle/internal/execution/UnitOfWork$InputFileValueSupplier +instanceKlass org/gradle/api/internal/artifacts/transform/AbstractTransformExecution$1 +instanceKlass org/gradle/operations/dependencies/transforms/SnapshotTransformInputsBuildOperationType$Details +instanceKlass org/gradle/api/internal/artifacts/transform/AbstractTransformExecution +instanceKlass org/gradle/internal/Deferrable +instanceKlass org/gradle/api/internal/artifacts/transform/TransformStepSubject +instanceKlass org/gradle/api/internal/artifacts/transform/TransformingAsyncArtifactListener$TransformedArtifact +instanceKlass org/gradle/api/internal/artifacts/transform/TransformingAsyncArtifactListener$1 +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/EndCollection +instanceKlass org/gradle/api/internal/artifacts/transform/TransformingAsyncArtifactListener +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactVisitorToResolvedFileVisitorAdapter +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ResolvedFileCollectionVisitor +instanceKlass org/gradle/api/internal/file/collections/DefaultConfigurableFileCollection$2 +instanceKlass org/gradle/api/internal/provider/ValueSupplier$UnknownProducer +instanceKlass org/gradle/api/internal/provider/ValueSupplier$NoProducer +instanceKlass org/gradle/api/internal/file/collections/UnpackingVisitor +instanceKlass org/gradle/api/internal/file/AbstractFileCollection$1 +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$IsolatedParameters +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$FingerprintTransformInputsOperation$Result$1 +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$FingerprintTransformInputsOperation$Result +instanceKlass org/gradle/internal/properties/bean/DefaultPropertyWalker$1 +instanceKlass org/gradle/internal/properties/annotations/TypeMetadataWalker$InstanceMetadataVisitor +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$1 +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$FingerprintTransformInputsOperation$Details$1 +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$FingerprintTransformInputsOperation$Details +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$IsolateTransformParameters$2 +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$InvokeSerializationConstructorAndInitializeFieldsStrategy +instanceKlass sun/reflect/ReflectionFactory$1 +instanceKlass sun/reflect/ReflectionFactory +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$GeneratedClassImpl$SerializationConstructorImpl +instanceKlass org/gradle/api/internal/initialization/transform/InstrumentationAnalysisTransform$Parameters$Inject +instanceKlass org/gradle/internal/snapshot/impl/AbstractManagedValueSnapshot +instanceKlass org/gradle/api/internal/artifacts/transform/AbstractTransformedArtifactSet$CalculateArtifacts +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformUpstreamDependenciesResolver$2 +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformUpstreamDependenciesResolver$1 +instanceKlass org/gradle/api/internal/artifacts/transform/TransformDependencies +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformUpstreamDependenciesResolver +instanceKlass org/gradle/api/internal/artifacts/transform/BoundTransformStep +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$CachedVariant +instanceKlass org/gradle/api/internal/artifacts/transform/TransformChain +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultVariantDefinition +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$ChainNode +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$CachingAttributeMatcher$CacheKey +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$ChainState +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$TransformCache$CacheKey +instanceKlass java/util/stream/DistinctOps +instanceKlass org/gradle/api/internal/initialization/transform/utils/InstrumentationClasspathMerger$OriginalArtifactIdentifier +instanceKlass org/gradle/api/internal/artifacts/result/DefaultResolvedArtifactResult +instanceKlass org/gradle/api/internal/artifacts/DownloadArtifactBuildOperationType$1 +instanceKlass org/gradle/api/internal/artifacts/DownloadArtifactBuildOperationType$Result +instanceKlass org/gradle/api/internal/artifacts/DownloadArtifactBuildOperationType +instanceKlass org/gradle/api/internal/artifacts/DownloadArtifactBuildOperationType$DetailsImpl +instanceKlass org/gradle/api/internal/artifacts/DownloadArtifactBuildOperationType$Details +instanceKlass org/gradle/internal/operations/DefaultBuildOperationQueue$WorkerRunnable +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactBackedResolvedVariant$DownloadArtifactFile +instanceKlass org/gradle/internal/operations/DefaultBuildOperationQueue +instanceKlass org/gradle/internal/operations/DefaultBuildOperationExecutor$QueueWorker +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ParallelResolveArtifactSet$VisitingSet$StartVisitAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSet$Visitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactBackedResolvedVariant$SingleArtifactSet +instanceKlass org/gradle/api/internal/artifacts/dsl/ArtifactFile +instanceKlass org/gradle/internal/component/external/model/UrlBackedArtifactMetadata +instanceKlass org/gradle/internal/component/local/model/OpaqueComponentIdentifier +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/DefaultCapabilitiesConflictHandler$Candidate +instanceKlass org/gradle/internal/component/external/model/GradleDependencyMetadata +instanceKlass org/gradle/internal/component/external/model/LazyVariantBackedConfigurationMetadata$RuleAwareVariant +instanceKlass org/gradle/internal/component/external/model/AbstractVariantBackedConfigurationMetadata +instanceKlass org/gradle/internal/component/external/model/AbstractMutableModuleComponentResolveMetadata$ImmutableVariantImpl +instanceKlass org/gradle/internal/component/external/model/ComponentVariant +instanceKlass org/gradle/internal/component/external/model/AbstractMutableModuleComponentResolveMetadata$DependencyImpl +instanceKlass org/gradle/internal/component/external/model/ComponentVariant$Dependency +instanceKlass org/gradle/internal/component/external/model/AbstractMutableModuleComponentResolveMetadata$FileImpl +instanceKlass org/gradle/internal/component/external/model/ComponentVariant$File +instanceKlass org/gradle/internal/component/external/model/AbstractMutableModuleComponentResolveMetadata$MutableVariantImpl +instanceKlass org/gradle/internal/component/external/model/ExternalModuleDependencyMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/Optimizations +instanceKlass org/gradle/internal/component/model/DefaultCompatibilityCheckResult +instanceKlass org/gradle/api/internal/initialization/transform/utils/InstrumentationClasspathMerger +instanceKlass org/gradle/api/internal/file/FileCollectionExecutionTimeValue +instanceKlass org/gradle/api/internal/initialization/transform/utils/InstrumentationTransformUtils +instanceKlass org/gradle/api/internal/initialization/transform/services/CacheInstrumentationDataBuildService$1 +instanceKlass org/gradle/internal/classpath/types/ExternalPluginsInstrumentationTypeRegistry +instanceKlass org/gradle/api/internal/initialization/transform/utils/DefaultInstrumentationAnalysisSerializer +instanceKlass org/gradle/api/internal/initialization/transform/utils/CachedInstrumentationAnalysisSerializer +instanceKlass org/gradle/api/internal/initialization/transform/services/CacheInstrumentationDataBuildService$ResolutionData +instanceKlass org/gradle/api/internal/initialization/transform/utils/InstrumentationAnalysisSerializer +instanceKlass org/gradle/api/internal/initialization/transform/services/CacheInstrumentationDataBuildService$ResolutionScope +instanceKlass org/gradle/internal/isolated/IsolationScheme$ServicesForIsolatedObject +instanceKlass org/gradle/internal/snapshot/impl/NullValueSnapshot +instanceKlass org/gradle/api/internal/artifacts/result/DefaultResolvedComponentResult +instanceKlass org/gradle/api/internal/artifacts/result/ResolvedComponentResultInternal +instanceKlass org/gradle/api/internal/artifacts/ProjectBackedModule +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/NoRepositoriesResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/CachingDependencyResultFactory +instanceKlass org/gradle/api/artifacts/result/DependencyResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ResolutionResultGraphBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/InMemoryResolutionResultBuilder +instanceKlass org/gradle/api/internal/tasks/DefaultTaskDependency$TaskDependencySet +instanceKlass org/gradle/internal/graph/CachingDirectedGraphWalker$NodeDetails +instanceKlass org/gradle/api/internal/tasks/WorkDependencyResolver$1 +instanceKlass org/gradle/api/internal/tasks/TaskDependencyUtil +instanceKlass org/gradle/api/internal/catalog/parser/StrictVersionParser$RichVersion +instanceKlass org/gradle/api/internal/artifacts/dsl/ParsedModuleStringNotation +instanceKlass org/gradle/api/attributes/plugin/GradlePluginApiVersion$Impl +instanceKlass org/gradle/api/internal/project/DefaultProjectStateRegistry$CalculatedModelValueImpl +instanceKlass org/gradle/api/internal/initialization/transform/BaseInstrumentingArtifactTransform$InterceptorTypeRegistryAndFilter +instanceKlass org/gradle/api/internal/initialization/transform/BaseInstrumentingArtifactTransform$Parameters_Decorated +instanceKlass org/gradle/api/internal/initialization/transform/BaseInstrumentingArtifactTransform$Parameters +instanceKlass org/gradle/api/internal/initialization/transform/BaseInstrumentingArtifactTransform +instanceKlass org/gradle/api/internal/file/collections/DefaultConfigurableFileCollection$UnresolvedItemsCollector +instanceKlass org/gradle/api/internal/file/collections/DefaultConfigurableFileCollection$EmptyCollector +instanceKlass org/gradle/api/internal/file/collections/DefaultConfigurableFileCollection$ValueCollector +instanceKlass org/gradle/api/internal/initialization/transform/MergeInstrumentationAnalysisTransform$Parameters_Decorated +instanceKlass org/gradle/api/internal/initialization/transform/MergeInstrumentationAnalysisTransform$Parameters +instanceKlass org/gradle/api/internal/initialization/transform/MergeInstrumentationAnalysisTransform +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformRegistrationFactory$DefaultTransformRegistration +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform$IsolateTransformParameters +instanceKlass org/gradle/work/InputChanges +instanceKlass org/gradle/internal/instantiation/generator/DependencyInjectingInstantiator$1 +instanceKlass org/gradle/api/internal/tasks/properties/FileParameterUtils +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransform +instanceKlass org/gradle/internal/execution/model/InputNormalizer$1 +instanceKlass org/gradle/internal/properties/PropertyValue$1 +instanceKlass org/gradle/internal/properties/PropertyValue +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformRegistrationFactory$NormalizerCollectingVisitor +instanceKlass org/gradle/api/problems/internal/DefaultProblemGroup +instanceKlass org/gradle/api/problems/internal/GradleCoreProblemGroup$CompilationProblemGroup +instanceKlass org/gradle/api/problems/internal/GradleCoreProblemGroup$ValidationProblemGroup +instanceKlass org/gradle/api/problems/internal/GradleCoreProblemGroup +instanceKlass org/gradle/api/problems/ProblemGroup +instanceKlass org/gradle/api/problems/internal/DefaultProblemId +instanceKlass org/gradle/api/problems/ProblemId +instanceKlass org/gradle/api/problems/internal/InternalProblemBuilder +instanceKlass org/gradle/api/problems/internal/InternalProblemSpec +instanceKlass org/gradle/internal/reflect/ProblemRecordingTypeValidationContext +instanceKlass org/gradle/internal/properties/annotations/DefaultTypeMetadataStore$DefaultTypeMetadata +instanceKlass org/gradle/api/reflect/TypeOf$4 +instanceKlass org/gradle/internal/properties/annotations/DefaultTypeMetadataStore$DefaultPropertyMetadata +instanceKlass org/gradle/api/internal/initialization/transform/InstrumentationArtifactMetadata +instanceKlass org/gradle/api/internal/initialization/transform/services/InjectedInstrumentationServices +instanceKlass com/google/common/collect/SortedIterables +instanceKlass org/gradle/internal/reflect/annotations/impl/DefaultTypeAnnotationMetadata +instanceKlass com/google/common/collect/AbstractMapBasedMultimap$KeySet$1 +instanceKlass org/gradle/internal/reflect/annotations/impl/DefaultPropertyAnnotationMetadata +instanceKlass com/google/common/collect/MultimapBuilder$LinkedHashSetSupplier +instanceKlass com/google/common/collect/MultimapBuilder$ArrayListSupplier +instanceKlass com/google/common/collect/MultimapBuilder$MultimapBuilderWithKeys +instanceKlass com/google/common/collect/MultimapBuilder +instanceKlass org/gradle/internal/reflect/annotations/impl/DefaultTypeAnnotationMetadataStore$PropertyAnnotationMetadataBuilder +instanceKlass org/gradle/api/artifacts/transform/TransformOutputs +instanceKlass org/gradle/internal/reflect/annotations/impl/DefaultTypeAnnotationMetadataStore$TypeAnnotationMetadataVisitor +instanceKlass org/gradle/internal/reflect/validation/ReplayingTypeValidationContext +instanceKlass org/gradle/api/internal/GeneratedSubclasses +instanceKlass org/gradle/api/internal/initialization/transform/InstrumentationAnalysisTransform$Parameters_Decorated +instanceKlass org/gradle/api/internal/initialization/transform/InstrumentationAnalysisTransform$Parameters +instanceKlass org/gradle/api/internal/initialization/transform/InstrumentationAnalysisTransform +instanceKlass org/gradle/api/services/internal/BuildServiceDetails +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$AttachedProperty +instanceKlass org/gradle/api/services/internal/DefaultBuildServicesRegistry$DefaultServiceSpec +instanceKlass org/gradle/internal/reflect/Types$1 +instanceKlass org/gradle/internal/reflect/Types +instanceKlass org/gradle/api/internal/initialization/transform/services/CacheInstrumentationDataBuildService +instanceKlass org/gradle/api/internal/DynamicPropertyNamer +instanceKlass org/gradle/api/services/BuildServiceParameters$None +instanceKlass org/gradle/api/services/BuildService +instanceKlass org/gradle/api/services/internal/DefaultBuildServicesRegistry$DefaultServiceRegistration +instanceKlass org/gradle/api/services/BuildServiceParameters +instanceKlass org/gradle/api/services/BuildServiceRegistration +instanceKlass org/gradle/internal/resources/SharedResource +instanceKlass org/gradle/api/services/BuildServiceSpec +instanceKlass org/gradle/api/services/internal/BuildServiceProvider$Listener +instanceKlass kotlin/annotation/MustBeDocumented +instanceKlass kotlin/collections/AbstractList$Companion +instanceKlass kotlin/collections/AbstractCollection +instanceKlass kotlin/enums/EnumEntriesKt +instanceKlass kotlin/enums/EnumEntries +instanceKlass kotlin/jvm/internal/markers/KMappedMarker +instanceKlass org/gradle/internal/flow/services/BuildFlowScope$State +instanceKlass org/gradle/api/flow/FlowScope$Registration +instanceKlass org/gradle/api/flow/FlowParameters +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyHandler$DirectDependencyAdder +instanceKlass org/gradle/api/artifacts/dsl/ExternalModuleDependencyVariantSpec +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyHandler +instanceKlass org/gradle/api/internal/artifacts/dsl/DependencyHandlerInternal +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyConstraintHandler$DependencyConstraintAdder +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyConstraintHandler$1 +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DynamicAddDependencyMethods +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DynamicAddDependencyMethods$DependencyAdder +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DefaultDependencyConstraintHandler +instanceKlass org/gradle/api/internal/notations/DependencyConstraintProjectNotationConverter +instanceKlass org/gradle/api/internal/notations/DependencyConstraintNotationParser$MinimalExternalDependencyNotationConverter +instanceKlass org/gradle/api/internal/artifacts/dependencies/AbstractDependencyConstraint +instanceKlass org/gradle/api/internal/artifacts/dependencies/DependencyConstraintInternal +instanceKlass org/gradle/api/internal/notations/DependencyConstraintNotationParser +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyConstraintFactory +instanceKlass org/gradle/plugin/management/internal/PluginCoordinates +instanceKlass org/gradle/plugin/use/resolve/internal/ArtifactRepositoriesPluginResolver$ExternalPluginResolution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSetResolver$1$1 +instanceKlass org/gradle/api/internal/artifacts/ResolveArtifactsBuildOperationType$Result +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ParallelResolveArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSetResolver$1$2 +instanceKlass org/gradle/api/internal/artifacts/ResolveArtifactsBuildOperationType$Details +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSetResolver$1 +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DefaultSelectedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/CompositeResolvedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DefaultVisitedArtifactResults$DefaultSelectedArtifactResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSet$1 +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/DefaultCachedArtifact +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/ArtifactAtRepositoryKey +instanceKlass org/gradle/api/internal/artifacts/DefaultResolvedArtifact +instanceKlass org/gradle/api/artifacts/ResolvedArtifact +instanceKlass org/gradle/api/internal/artifacts/DefaultResolvableArtifact +instanceKlass org/gradle/internal/component/model/DefaultAttributeMatcher$CoercingAttributeValuePredicate +instanceKlass org/gradle/api/internal/artifacts/transform/ArtifactVariantSelector$ResolvedArtifactTransformer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DefaultResolvedVariantSet +instanceKlass org/gradle/internal/resolve/result/BuildableArtifactResolveResult +instanceKlass org/gradle/internal/resolve/resolver/DefaultComponentArtifactResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactBackedResolvedVariant +instanceKlass org/gradle/api/artifacts/type/ArtifactTypeDefinition +instanceKlass org/gradle/internal/component/model/DefaultExternalComponentGraphResolveState$ExternalArtifactResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationResolutionBuildOperationResult$LazyDesugaringAttributeContainer +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationResolutionBuildOperationResult +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationDependenciesBuildOperationType$Result +instanceKlass org/gradle/api/internal/artifacts/DefaultResolverResults +instanceKlass org/gradle/api/internal/artifacts/DefaultResolverResults$DefaultLegacyResolverResults +instanceKlass org/gradle/api/internal/artifacts/ResolverResults$LegacyResolverResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultResolvedConfiguration +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactSelectionSpec +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultLenientConfiguration +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/TransientConfigurationResultsLoader +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DefaultVisitedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/transform/AttributeMatchingArtifactVariantSelector +instanceKlass org/gradle/api/internal/artifacts/transform/FilteredResultFactory +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$DefaultConfigurationIdentity +instanceKlass org/gradle/api/internal/artifacts/transform/TransformUpstreamDependencies +instanceKlass org/gradle/api/internal/artifacts/transform/TransformStep +instanceKlass org/gradle/api/internal/artifacts/transform/TransformUpstreamDependenciesResolver +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformUpstreamDependenciesResolverFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/results/DefaultVisitedGraphResults +instanceKlass org/gradle/api/internal/artifacts/result/MinimalResolutionResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ResolvedComponentVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/StreamingResolutionResultBuilder$RootFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/DefaultResolvedGraphResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/DefaultVisitedFileDependencyResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/SelectedArtifactResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DefaultVisitedArtifactResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/DefaultBinaryStore$SimpleBinaryData +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedVariantSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/VariantResolvingArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactsGraphVisitor$ArtifactsForNode +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/VersionConflictResolutionDetails +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionReasons$DefaultComponentSelectionReason +instanceKlass org/gradle/cache/internal/BinaryStore$WriteAction +instanceKlass org/gradle/internal/component/model/GraphVariantSelectionResult +instanceKlass org/gradle/internal/component/model/DefaultMultipleCandidateResult +instanceKlass org/gradle/internal/component/model/AttributeSelectionUtils +instanceKlass org/gradle/api/internal/attributes/DefaultAttributesSchema$ExtraAttributesEntry +instanceKlass org/gradle/internal/component/model/AttributeSelectionSchema$PrecedenceResult +instanceKlass org/gradle/internal/component/model/MultipleCandidateMatcher +instanceKlass org/gradle/internal/component/model/DefaultAttributeMatcher$CachedQuery +instanceKlass org/gradle/internal/component/model/LoggingAttributeMatchingExplanationBuilder +instanceKlass org/gradle/internal/component/model/AttributeMatchingExplanationBuilder +instanceKlass org/gradle/internal/component/model/DefaultExternalComponentGraphResolveState$DefaultConfigurationArtifactResolveState +instanceKlass org/gradle/internal/component/model/ConfigurationGraphResolveState +instanceKlass org/gradle/internal/component/model/DefaultExternalComponentGraphResolveState$ExternalGraphSelectionCandidates +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleComponentGraphSpecificResolveState +instanceKlass org/gradle/internal/resolve/ResolveExceptionAnalyzer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryChainModuleResolution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryChainComponentMetaDataResolver$2 +instanceKlass org/gradle/api/internal/artifacts/DefaultComponentSelection +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/ComponentMetadataAdapter +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/CachedMetadataProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ComponentMetaDataResolveState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultCachePolicy$AbstractResolutionControl +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/dynamicversions/DefaultResolvedModuleVersion +instanceKlass org/gradle/api/internal/artifacts/result/DefaultResolvedVariantResult +instanceKlass org/gradle/api/attributes/DocsType$Impl +instanceKlass org/gradle/api/attributes/Bundling$Impl +instanceKlass org/gradle/internal/component/external/model/DefaultConfigurationMetadata$1 +instanceKlass org/gradle/internal/component/external/model/DefaultConfigurationMetadata$2 +instanceKlass org/gradle/internal/component/external/model/DefaultConfigurationMetadata$Builder +instanceKlass org/gradle/internal/component/external/model/ShadowedImmutableCapability +instanceKlass org/gradle/api/internal/capabilities/ShadowedCapability +instanceKlass org/gradle/internal/component/external/model/AbstractConfigurationMetadata +instanceKlass org/gradle/internal/component/external/model/DefaultModuleComponentArtifactMetadata +instanceKlass org/gradle/internal/component/model/DefaultIvyArtifactName +instanceKlass org/gradle/internal/component/external/model/ivy/IvyModuleResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryChainModuleSource +instanceKlass org/gradle/internal/component/model/ImmutableModuleSources +instanceKlass org/gradle/internal/component/external/model/AbstractModuleComponentResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/DefaultMetadataFileSource +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleDescriptorHashModuleSource +instanceKlass com/google/common/collect/NullnessCasts +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/data/PomDependencyMgt +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/GradlePomModuleDescriptorBuilder +instanceKlass org/gradle/internal/component/model/MutableModuleSources +instanceKlass org/gradle/internal/component/external/model/VariantMetadataRules +instanceKlass org/gradle/internal/component/external/model/maven/MavenModuleResolveMetadata +instanceKlass org/gradle/internal/component/external/model/MutableComponentVariant +instanceKlass org/gradle/internal/component/external/model/AbstractMutableModuleComponentResolveMetadata +instanceKlass org/gradle/internal/component/external/model/ExternalDependencyDescriptor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleMetadataSerializer$Reader +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/StringDeduplicatingDecoder +instanceKlass org/gradle/internal/resource/local/AbstractLocallyAvailableResource +instanceKlass org/gradle/internal/file/PathTraversalChecker +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentIdentifierSerializer$1 +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/DefaultCachedMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/WritableArtifactCacheLockingAccessCoordinator$CacheLockingIndexedCache +instanceKlass org/gradle/cache/internal/CompositeCleanupAction$ScopedCleanupAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleMetadataCacheEntry +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleComponentAtRepositoryKey +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/PotentialConflictFactory$NoConflict +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/PotentialConflictFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/selectors/SelectorStateResolverResults +instanceKlass org/gradle/internal/component/local/model/DefaultProjectComponentSelector +instanceKlass org/gradle/internal/component/local/model/ProjectComponentSelectorInternal +instanceKlass org/gradle/internal/resolve/result/DefaultResourceAwareResolveResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/AbstractVersionSelector +instanceKlass org/gradle/api/internal/artifacts/dependencies/DefaultResolvedVersionConstraint +instanceKlass org/gradle/internal/component/model/DefaultComponentOverrideMetadata +instanceKlass org/gradle/internal/component/model/ComponentOverrideMetadata +instanceKlass org/gradle/internal/resolve/result/BuildableComponentIdResolveResult +instanceKlass org/gradle/internal/resolve/result/ComponentIdResolveResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/SelectorState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ResolveState$SelectorCacheKey +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/LenientPlatformDependencyMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/DependencyGraphSelector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/DependencyState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/strict/StrictVersionConstraints +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/DefaultPendingDependenciesVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/DependencyGraphBuilder$1 +instanceKlass org/gradle/api/internal/artifacts/ComponentVariantNodeIdentifier +instanceKlass org/gradle/api/internal/artifacts/NodeIdentifier +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/selectors/SelectorStateResolver +instanceKlass org/gradle/internal/component/model/ComponentGraphSpecificResolveState$1 +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ComponentState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/DependencyGraphComponent +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ModuleSelectors$SelectorComparator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/VersionParser$DefaultVersion +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ModuleSelectors +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/PendingDependencies +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/selectors/ResolvableSelectorState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ModuleResolveState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/CandidateModule +instanceKlass org/gradle/api/internal/attributes/AttributeValue$1 +instanceKlass org/gradle/internal/component/model/DelegatingDependencyMetadata +instanceKlass org/gradle/internal/component/local/model/DslOriginDependencyMetadata +instanceKlass org/gradle/internal/component/external/model/DefaultModuleComponentSelector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/LocalVariantMetadataBuilder$DependencyState +instanceKlass org/gradle/internal/component/local/model/DefaultLocalComponentGraphResolveState$DefaultLocalVariantArtifactResolveState +instanceKlass org/gradle/internal/component/model/VariantArtifactResolveState +instanceKlass org/gradle/internal/component/model/AbstractComponentGraphResolveState$AbstractVariantGraphResolveState +instanceKlass org/gradle/internal/component/local/model/DefaultLocalVariantGraphResolveMetadata +instanceKlass org/gradle/internal/component/local/model/LocalVariantArtifactGraphResolveMetadata +instanceKlass org/gradle/internal/component/local/model/DefaultLocalVariantGraphResolveMetadata$VariantDependencyMetadata +instanceKlass org/gradle/internal/component/model/DefaultVariantMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultLocalVariantMetadataBuilder$1 +instanceKlass org/gradle/internal/component/external/model/ImmutableCapabilities +instanceKlass org/gradle/api/internal/artifacts/configurations/Configurations +instanceKlass org/gradle/internal/component/model/ComponentConfigurationIdentifier +instanceKlass org/gradle/internal/component/local/model/LocalComponentGraphResolveState$LocalComponentGraphSelectionCandidates +instanceKlass org/gradle/internal/component/model/ComponentArtifactResolveMetadata +instanceKlass org/gradle/internal/component/local/model/LocalVariantGraphResolveState +instanceKlass org/gradle/internal/component/model/GraphSelectionCandidates +instanceKlass org/gradle/internal/component/model/AbstractComponentGraphResolveState +instanceKlass org/gradle/internal/component/model/ComponentArtifactResolveState +instanceKlass org/gradle/internal/component/local/model/LocalComponentGraphResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/LocalVariantMetadataBuilder$DependencyCache +instanceKlass org/gradle/internal/component/local/model/LocalComponentGraphResolveStateFactory$ConfigurationsProviderMetadataFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ReplaceSelectionWithConflictResultAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ResolveOptimizations +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/DeselectVersionAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/PendingDependenciesVisitor +instanceKlass org/gradle/api/internal/artifacts/ResolvedVersionConstraint +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ComponentResolutionState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/StringVersioned +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ResolveState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/selectors/ComponentStateFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/PotentialConflict +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/CapabilitiesConflictHandler$Candidate +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/DefaultCapabilitiesConflictHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/ConflictContainer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ConflictResolverDetails +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/DefaultConflictHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/ResolutionConflictTracker +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/RejectRemainingCandidates +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/LastCandidateCapabilityResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/UserConfiguredCapabilityResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/LatestModuleConflictResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DependencySubstitutionApplicator$SubstitutionResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/NoOpSubstitution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/clientmodule/ClientModuleResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/CompositeDependencyGraphVisitor +instanceKlass org/gradle/internal/component/model/VariantGraphResolveState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/DefaultRootComponentMetadataBuilder$1 +instanceKlass org/gradle/api/internal/artifacts/DefaultModuleVersionIdentifier +instanceKlass org/gradle/api/internal/artifacts/AnonymousModule +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedVariantCache$CacheKey +instanceKlass org/gradle/internal/component/model/VariantResolveMetadata$Identifier +instanceKlass org/gradle/internal/resolve/resolver/ComponentArtifactResolver +instanceKlass org/gradle/internal/resolve/resolver/DefaultVariantArtifactResolver +instanceKlass org/gradle/internal/resolve/resolver/VariantArtifactResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactsGraphVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/CompositeDependencyArtifactsVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ComponentResolversChain$ArtifactResolverChain +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ErrorHandlingArtifactResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ComponentResolversChain$ComponentMetaDataResolverChain +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ComponentResolversChain$DependencyToComponentIdResolverChain +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/VirtualComponentMetadataResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ComponentResolversChain +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ErrorHandlingModuleComponentRepository +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/BaseModuleComponentRepository +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/CachingModuleComponentRepository$ResolveAndCacheRepositoryAccess +instanceKlass org/gradle/internal/resolve/result/BuildableModuleComponentMetaDataResolveResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/CachingModuleComponentRepository$LocateInCacheRepositoryAccess +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/CachingModuleComponentRepository +instanceKlass org/gradle/api/internal/artifacts/dsl/WrappingComponentMetadataContext +instanceKlass org/gradle/api/artifacts/ComponentMetadataContext +instanceKlass org/gradle/api/artifacts/ComponentMetadataDetails +instanceKlass org/gradle/api/internal/artifacts/dsl/DefaultComponentMetadataProcessor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ExternalModuleComponentResolverFactory$DefaultMetadataResolutionContext +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/ExternalResourceResolver$AbstractRepositoryAccess +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleComponentRepositoryAccess +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/VersionLister +instanceKlass org/gradle/api/internal/artifacts/repositories/AbstractArtifactRepository$1 +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/DefaultImmutableMetadataSources +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/RedirectingGradleMetadataModuleMetadataSource +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MavenMetadataArtifactProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/DescriptorParseContext +instanceKlass org/gradle/internal/component/model/ModuleDescriptorArtifactMetadata +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/GradleModuleMetadataCompatibilityConverter +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/DefaultGradleModuleMetadataSource +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultMavenArtifactRepository$MavenSnapshotDecoratingSource +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ExternalModuleComponentResolverFactory$ParentModuleLookupResolver +instanceKlass org/gradle/internal/resolve/result/BuildableArtifactFileResolveResult +instanceKlass org/gradle/internal/resolve/result/BuildableTypedResolveResult +instanceKlass org/gradle/internal/resolve/result/ErroringResolveResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryChainArtifactResolver +instanceKlass org/gradle/internal/resolve/result/BuildableComponentResolveResult +instanceKlass org/gradle/internal/resolve/result/ResourceAwareResolveResult +instanceKlass org/gradle/internal/resolve/result/ComponentResolveResult +instanceKlass org/gradle/internal/resolve/result/ResolveResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryChainComponentMetaDataResolver +instanceKlass org/gradle/internal/component/model/ComponentGraphSpecificResolveState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/DynamicVersionResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryChainDependencyToComponentIdResolver +instanceKlass org/gradle/api/specs/NotSpec +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ComponentSelectionRulesProcessor +instanceKlass org/gradle/api/internal/artifacts/ComponentSelectionInternal +instanceKlass org/gradle/api/artifacts/ComponentSelection +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/MetadataProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/Versioned +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/DefaultVersionedComponentChooser +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/VersionedComponentChooser +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/UserResolverChain +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/ResolutionFailureCollector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/VisitedFileDependencyResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/FileDependencyCollectingGraphVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/VisitedArtifactResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DefaultResolvedArtifactsBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/projectresult/ResolvedLocalComponentsResultGraphVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectorSerializer$OptimizingAttributeContainerSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentResultSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/DependencyResultSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/ResolvedGraphComponent +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/StreamingResolutionResultBuilder +instanceKlass org/gradle/api/internal/artifacts/cache/ArtifactResolutionControl +instanceKlass org/gradle/api/internal/artifacts/cache/ModuleResolutionControl +instanceKlass org/gradle/api/internal/artifacts/cache/DependencyResolutionControl +instanceKlass org/gradle/api/internal/artifacts/cache/ResolutionControl +instanceKlass org/gradle/internal/typeconversion/FlatteningNotationParser +instanceKlass org/gradle/api/internal/artifacts/DependencySubstitutionInternal +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultComponentSelectionRules +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultCachePolicy +instanceKlass org/gradle/api/internal/artifacts/ComponentSelectionRulesInternal +instanceKlass org/gradle/api/artifacts/ComponentSelectionRules +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultResolutionStrategy +instanceKlass org/gradle/api/artifacts/DependencySubstitution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/DefaultComponentSelectionDescriptor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionReasonInternal +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionDescriptorInternal +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionReasons +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultDependencySubstitutions$ProjectPathConverter +instanceKlass org/gradle/api/artifacts/DependencySubstitutions$Substitution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DefaultDependencySubstitutions +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/UpgradeCapabilityResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/CapabilitiesConflictHandler$Resolver +instanceKlass org/gradle/internal/component/external/model/DefaultComponentVariantIdentifier +instanceKlass org/gradle/api/artifacts/ComponentVariantIdentifier +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/CapabilitiesConflictHandler$CandidateDetails +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultCapabilitiesResolution$DefaultCapabilityResolutionDetails +instanceKlass org/gradle/api/artifacts/CapabilityResolutionDetails +instanceKlass org/gradle/internal/component/external/model/DefaultImmutableCapability +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/CapabilitiesConflictHandler$ResolutionDetails +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/ConflictResolutionResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultCapabilitiesResolution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/CapabilitiesResolutionInternal +instanceKlass org/gradle/api/artifacts/CapabilitiesResolution +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/ResolvedConfigurationDependencyGraphVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/ResolvedGraphResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/DefaultResolvedConfigurationBuilder +instanceKlass org/gradle/api/artifacts/ResolvedDependency +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/TransientConfigurationResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/TransientConfigurationResultsBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/CachedStoreFactory$SimpleStore +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/CachedStoreFactory$Stats +instanceKlass org/gradle/cache/internal/Store +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/CachedStoreFactory +instanceKlass org/gradle/cache/internal/BinaryStore$BinaryData +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/DefaultBinaryStore +instanceKlass java/io/DeleteOnExitHook$1 +instanceKlass java/io/DeleteOnExitHook +instanceKlass org/gradle/cache/internal/BinaryStore +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/ResolutionResultsStoreFactory$1 +instanceKlass org/gradle/api/internal/CompositeDomainObjectSet$2 +instanceKlass org/gradle/api/internal/CompositeDomainObjectSet$1 +instanceKlass org/gradle/api/internal/CompositeDomainObjectSet$ItemNotInCompositeSpec +instanceKlass org/gradle/api/internal/CompositeDomainObjectSet$ItemIsUniqueInCompositeSpec +instanceKlass org/gradle/api/internal/CompositeDomainObjectSet$DomainObjectCompositeCollection +instanceKlass org/gradle/api/internal/artifacts/repositories/descriptor/UrlRepositoryDescriptor$Builder +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationResolutionBuildOperationDetails$RepositoryImpl +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationDependenciesBuildOperationType$Repository +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationResolutionBuildOperationDetails +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolveConfigurationDependenciesBuildOperationType$Details +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$1 +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ResolvedArtifactCollectingVisitor +instanceKlass org/gradle/internal/model/CalculatedValueContainer$GlobalContext +instanceKlass org/gradle/internal/model/CalculatedValueContainer$CalculationState +instanceKlass org/gradle/internal/model/CalculatedValueContainerFactory$SupplierBackedCalculator +instanceKlass org/gradle/internal/model/CalculatedValueContainer +instanceKlass org/gradle/api/internal/tasks/WorkNodeAction +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultArtifactCollection$ArtifactSetResult +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$DefaultResolutionHost +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolutionResultProvider$1 +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$ResolverResultsResolutionResultProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedFileVisitor +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultArtifactCollection +instanceKlass org/gradle/api/internal/artifacts/configurations/ArtifactCollectionInternal +instanceKlass org/gradle/api/internal/artifacts/resolver/DefaultResolutionOutputs$DefaultArtifactView +instanceKlass org/gradle/api/internal/artifacts/resolver/DefaultResolutionOutputs$DefaultArtifactViewConfiguration +instanceKlass org/gradle/api/internal/artifacts/resolver/DefaultResolutionOutputs +instanceKlass org/gradle/api/artifacts/ArtifactView$ViewConfiguration +instanceKlass org/gradle/api/internal/initialization/RootScriptDomainObjectContext$CalculatedModelValueImpl +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfigurationPublications$ConfigurationVariantFactory +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$AllArtifactsProvider +instanceKlass org/gradle/api/internal/artifacts/configurations/PublishArtifactSetProvider +instanceKlass org/gradle/api/internal/artifacts/DefaultPublishArtifactSet$ArtifactsFileCollection +instanceKlass org/gradle/api/internal/tasks/AbstractTaskDependency$1 +instanceKlass org/gradle/api/internal/tasks/AbstractTaskDependency +instanceKlass org/gradle/api/internal/tasks/TaskDependencyContainerInternal +instanceKlass org/gradle/api/internal/tasks/DefaultTaskDependency$VisitBehavior +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencySet$MutationValidationAction +instanceKlass org/gradle/api/artifacts/result/ResolutionResult +instanceKlass org/gradle/api/artifacts/ArtifactCollection +instanceKlass org/gradle/api/internal/artifacts/resolver/ResolutionOutputsInternal +instanceKlass org/gradle/api/internal/artifacts/resolver/ResolutionOutputs +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$ConfigurationResolutionAccess +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$ConfigurationDescription +instanceKlass org/gradle/api/internal/file/collections/FileSystemMirroringFileTree +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfigurationPublications +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfiguration$ConfigurationResolvableDependencies +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolvableDependenciesInternal +instanceKlass org/gradle/api/internal/attributes/FreezableAttributeContainer +instanceKlass org/gradle/internal/component/model/LocalComponentDependencyMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/SelectedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ResolverResults +instanceKlass org/gradle/api/internal/artifacts/ResolveContext$FailureResolutions +instanceKlass org/gradle/operations/dependencies/configurations/ConfigurationIdentity +instanceKlass org/gradle/api/artifacts/DependencyConstraintSet +instanceKlass org/gradle/api/artifacts/ResolvableDependencies +instanceKlass org/gradle/api/artifacts/ArtifactView +instanceKlass org/gradle/api/artifacts/ConfigurationPublications +instanceKlass org/gradle/api/artifacts/PublishArtifactSet +instanceKlass org/gradle/api/artifacts/DependencySet +instanceKlass org/gradle/api/internal/artifacts/resolver/ResolutionAccess +instanceKlass org/gradle/api/artifacts/DependencyResolutionListener +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationRolesForMigration +instanceKlass org/gradle/internal/service/scopes/DetachedDependencyMetadataProvider +instanceKlass org/gradle/api/internal/artifacts/configurations/DetachedConfigurationsProvider +instanceKlass org/gradle/internal/locking/NoOpDependencyLockingProvider +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/ModuleFactoryHelper +instanceKlass org/gradle/api/internal/artifacts/ImmutableVersionConstraint +instanceKlass org/gradle/api/internal/artifacts/DefaultModuleIdentifier +instanceKlass org/gradle/api/artifacts/ExcludeRule +instanceKlass org/gradle/api/internal/artifacts/CachingDependencyResolveContext +instanceKlass org/gradle/api/internal/artifacts/dependencies/ModuleDependencyCapabilitiesInternal +instanceKlass org/gradle/api/artifacts/ModuleDependencyCapabilitiesHandler +instanceKlass org/gradle/api/internal/artifacts/dependencies/DefaultDependencyArtifact +instanceKlass org/gradle/api/internal/artifacts/DefaultExcludeRuleContainer +instanceKlass org/gradle/api/artifacts/ExcludeRuleContainer +instanceKlass org/gradle/api/internal/artifacts/dependencies/AbstractVersionConstraint +instanceKlass org/gradle/api/internal/artifacts/VersionConstraintInternal +instanceKlass org/gradle/api/artifacts/MutableVersionConstraint +instanceKlass org/gradle/api/artifacts/ClientModule +instanceKlass org/gradle/api/internal/notations/ClientModuleNotationParserFactory +instanceKlass org/gradle/internal/typeconversion/TypeFilteringNotationConverter +instanceKlass org/gradle/api/internal/file/collections/MinimalFileSet +instanceKlass org/gradle/api/internal/notations/DependencyClassPathNotationConverter +instanceKlass org/gradle/api/internal/notations/DependencyProjectNotationConverter +instanceKlass org/gradle/api/internal/notations/DependencyFilesNotationConverter +instanceKlass org/gradle/api/internal/artifacts/dependencies/MinimalExternalModuleDependencyInternal +instanceKlass org/gradle/api/artifacts/MinimalExternalModuleDependency +instanceKlass org/gradle/api/internal/notations/DependencyNotationParser$MinimalExternalDependencyNotationConverter +instanceKlass org/gradle/api/internal/artifacts/dependencies/AbstractDependency +instanceKlass org/gradle/api/internal/artifacts/ResolvableDependency +instanceKlass org/gradle/api/internal/notations/DependencyNotationParser +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyFactory +instanceKlass org/gradle/api/internal/notations/ProjectDependencyFactory +instanceKlass org/gradle/plugin/use/resolve/internal/PluginResolutionResult$NotFound +instanceKlass org/gradle/plugin/use/internal/DefaultPluginRequestApplicator$ApplyAction +instanceKlass org/gradle/plugin/use/resolve/internal/SimplePluginResolution +instanceKlass org/gradle/plugin/use/resolve/internal/PluginResolutionResult +instanceKlass org/gradle/api/plugins/JavaPlugin +instanceKlass org/gradle/api/internal/artifacts/dsl/ModuleVersionSelectorParsers$StringConverter +instanceKlass org/gradle/api/internal/artifacts/dsl/ModuleVersionSelectorParsers +instanceKlass org/gradle/plugin/management/internal/DefaultPluginResolveDetails +instanceKlass org/gradle/plugin/management/PluginResolveDetails +instanceKlass org/gradle/plugin/use/resolve/internal/AlreadyOnClasspathPluginResolver +instanceKlass org/gradle/plugin/use/resolve/internal/ArtifactRepositoriesPluginResolver +instanceKlass org/gradle/plugin/use/resolve/internal/CorePluginResolver +instanceKlass org/gradle/plugin/use/resolve/internal/PluginResolution +instanceKlass org/gradle/plugin/use/resolve/internal/NoopPluginResolver +instanceKlass org/gradle/plugin/use/resolve/internal/CompositePluginResolver +instanceKlass org/gradle/plugin/use/internal/DefaultPluginRequestApplicator$CollectingPluginRequestResolutionVisitor +instanceKlass org/gradle/api/internal/DefaultNamedDomainObjectCollection$ObjectBackedElementInfo +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultRepositoryContentDescriptor +instanceKlass org/gradle/api/artifacts/repositories/MavenRepositoryContentDescriptor +instanceKlass org/gradle/api/internal/artifacts/repositories/ArtifactResolutionDetails +instanceKlass org/gradle/internal/resolve/caching/ImplicitInputsCapturingInstantiator +instanceKlass org/gradle/api/internal/artifacts/repositories/AuthenticationSupporter +instanceKlass org/gradle/api/artifacts/repositories/PasswordCredentials +instanceKlass org/gradle/api/credentials/PasswordCredentials +instanceKlass org/gradle/api/credentials/Credentials +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultMavenArtifactRepository$MavenMetadataSources +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultUrlArtifactRepository +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/DefaultMavenPomMetadataSource$MavenMetadataValidator +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/AbstractRepositoryMetadataSource +instanceKlass org/gradle/api/internal/artifacts/repositories/maven/MavenMetadataLoader +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/ExternalResourceResolver +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/ExternalResourceArtifactResolver +instanceKlass org/gradle/api/artifacts/repositories/MavenArtifactRepository$MetadataSources +instanceKlass org/gradle/api/internal/artifacts/repositories/descriptor/RepositoryDescriptor +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/ImmutableMetadataSources +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MetadataSource +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ConfiguredModuleComponentRepository +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MetadataArtifactProvider +instanceKlass org/gradle/api/artifacts/repositories/RepositoryResourceAccessor +instanceKlass org/gradle/api/internal/artifacts/repositories/RepositoryContentDescriptorInternal +instanceKlass org/gradle/api/internal/DefaultPolymorphicDomainObjectContainer$2 +instanceKlass org/gradle/api/internal/DefaultPolymorphicNamedEntityInstantiator +instanceKlass org/gradle/api/internal/PolymorphicNamedEntityInstantiator +instanceKlass org/gradle/api/internal/artifacts/repositories/AbstractArtifactRepository +instanceKlass org/gradle/api/internal/artifacts/repositories/ContentFilteringRepository +instanceKlass org/gradle/api/internal/artifacts/repositories/ArtifactRepositoryInternal +instanceKlass org/gradle/internal/artifacts/repositories/AuthenticationSupportedInternal +instanceKlass org/gradle/api/internal/artifacts/repositories/ResolutionAwareRepository +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultBaseRepositoryFactory$NamedMavenRepositoryDescriber +instanceKlass org/gradle/plugin/use/internal/DefaultPluginArtifactRepositories +instanceKlass org/gradle/plugin/management/internal/MultiPluginRequests +instanceKlass org/gradle/plugin/management/internal/DefaultPluginRequest +instanceKlass org/gradle/plugin/use/internal/PluginRequestCollector$1 +instanceKlass org/gradle/declarative/dsl/model/annotations/Builder +instanceKlass com/google/common/base/Strings +instanceKlass org/gradle/plugin/use/internal/PluginRequestCollector$PluginDependencySpecImpl +instanceKlass it/unimi/dsi/fastutil/ints/IntBinaryOperator +instanceKlass it/unimi/dsi/fastutil/objects/Object2IntMap$FastEntrySet +instanceKlass java/util/function/IntBinaryOperator +instanceKlass it/unimi/dsi/fastutil/objects/AbstractObject2IntFunction +instanceKlass it/unimi/dsi/fastutil/objects/Object2IntMap +instanceKlass it/unimi/dsi/fastutil/objects/Object2IntFunction +instanceKlass org/gradle/internal/classpath/DefaultInstrumentedClosuresTracker +instanceKlass org/gradle/internal/classpath/PerThreadInstrumentedClosuresTracker +instanceKlass org/gradle/internal/classpath/InstrumentedClosuresTracker +instanceKlass org/gradle/internal/classpath/InstrumentedClosuresHelper +instanceKlass org/gradle/util/internal/ClosureBackedAction +instanceKlass org/gradle/plugin/use/PluginDependencySpec +instanceKlass org/gradle/plugin/use/internal/PluginRequestCollector$PluginDependenciesSpecImpl +instanceKlass org/gradle/plugin/use/PluginDependenciesSpec +instanceKlass org/codehaus/groovy/runtime/metaclass/ClosureMetaClass$StandardClosureChooser +instanceKlass org/gradle/configuration/ProjectScriptTarget +instanceKlass org/gradle/internal/build/event/types/DefaultScriptPluginIdentifier +instanceKlass org/gradle/internal/service/scopes/ProjectScopeServices$ScriptScopedContext +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementProjectScopeServices$ProjectBackedModuleMetaDataProvider +instanceKlass org/gradle/api/internal/resources/ApiTextResourceAdapter +instanceKlass org/gradle/api/resources/internal/TextResourceInternal +instanceKlass org/gradle/internal/resource/transfer/CachingTextUriResourceLoader +instanceKlass org/gradle/internal/resource/transfer/CacheAwareExternalResourceAccessor$ResourceFileStore +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/DefaultExternalResourceAccessor +instanceKlass org/gradle/internal/resource/ExternalResource$ContentAndMetadataAction +instanceKlass org/gradle/internal/resource/transfer/DefaultCacheAwareExternalResourceAccessor +instanceKlass org/gradle/internal/resource/transport/DefaultExternalResourceRepository +instanceKlass org/gradle/internal/resource/transfer/ProgressLoggingExternalResourceLister$1 +instanceKlass org/gradle/internal/resource/ExternalResourceListBuildOperationType$Result +instanceKlass org/gradle/internal/resource/transfer/ProgressLoggingExternalResourceAccessor$1 +instanceKlass org/gradle/internal/resource/ExternalResourceReadMetadataBuildOperationType$Result +instanceKlass org/gradle/internal/resource/transfer/AbstractProgressLoggingHandler +instanceKlass org/gradle/internal/resource/transfer/CacheAwareExternalResourceAccessor +instanceKlass org/gradle/internal/resource/transport/AbstractRepositoryTransport +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/DefaultExternalResourceCachePolicy +instanceKlass org/gradle/internal/resource/transfer/DefaultExternalResourceConnector$NoOpStats +instanceKlass org/gradle/internal/resource/transfer/DefaultExternalResourceConnector$1 +instanceKlass org/gradle/internal/resource/transfer/DefaultExternalResourceConnector$ExternalResourceAccessStats +instanceKlass org/gradle/internal/resource/transfer/DefaultExternalResourceConnector +instanceKlass org/apache/http/HttpEntityEnclosingRequest +instanceKlass org/apache/http/HttpEntity +instanceKlass org/gradle/internal/resource/transport/http/HttpResourceUploader +instanceKlass org/gradle/internal/resource/transport/http/HttpResourceLister +instanceKlass org/gradle/internal/resource/transfer/ExternalResourceReadResponse +instanceKlass org/gradle/internal/resource/transfer/AbstractExternalResourceAccessor +instanceKlass org/apache/http/message/AbstractHttpMessage +instanceKlass org/apache/http/client/methods/AbortableHttpRequest +instanceKlass org/apache/http/client/methods/HttpExecutionAware +instanceKlass org/apache/http/client/methods/Configurable +instanceKlass org/apache/http/client/methods/HttpUriRequest +instanceKlass org/apache/http/protocol/HttpContext +instanceKlass org/slf4j/spi/LocationAwareLogger +instanceKlass org/apache/commons/logging/impl/SLF4JLog +instanceKlass org/apache/commons/logging/impl/SLF4JLocationAwareLog +instanceKlass org/apache/commons/logging/Log +instanceKlass org/apache/commons/logging/LogFactory +instanceKlass org/apache/http/conn/ssl/DefaultHostnameVerifier +instanceKlass org/gradle/internal/resource/transport/http/DefaultHttpSettings$Builder +instanceKlass org/gradle/internal/resource/transport/http/DefaultHttpSettings$2$2 +instanceKlass javax/net/ssl/X509TrustManager +instanceKlass javax/net/ssl/TrustManager +instanceKlass com/google/common/base/Suppliers$MemoizingSupplier +instanceKlass com/google/common/base/Suppliers$NonSerializableMemoizingSupplier +instanceKlass org/gradle/internal/resource/transport/http/DefaultHttpSettings$2$1 +instanceKlass org/gradle/internal/resource/transport/http/DefaultHttpSettings$2 +instanceKlass org/gradle/internal/resource/transport/http/DefaultHttpSettings$1 +instanceKlass org/gradle/internal/resource/transport/http/HttpTimeoutSettings +instanceKlass org/gradle/internal/resource/transport/http/HttpProxySettings +instanceKlass javax/net/ssl/HostnameVerifier +instanceKlass org/gradle/internal/resource/transport/http/DefaultHttpSettings +instanceKlass org/gradle/api/internal/artifacts/repositories/transport/RepositoryTransportFactory$DefaultResourceConnectorSpecification +instanceKlass org/gradle/internal/verifier/HttpRedirectVerifierFactory +instanceKlass org/gradle/internal/service/scopes/ProjectBackedPropertyHost +instanceKlass org/gradle/nativeplatform/internal/CompilerOutputFileNamingScheme +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolutionStrategyInternal +instanceKlass org/gradle/api/artifacts/ResolutionStrategy +instanceKlass org/gradle/api/artifacts/type/ArtifactTypeContainer +instanceKlass org/gradle/util/internal/DistributionLocator +instanceKlass org/gradle/api/tasks/wrapper/WrapperVersionsResources +instanceKlass org/gradle/buildinit/plugins/WrapperPlugin +instanceKlass org/gradle/buildinit/plugins/BuildInitPlugin +instanceKlass org/gradle/kotlin/dsl/tooling/builders/AbstractKotlinDslScriptsModelBuilder$Companion +instanceKlass org/gradle/kotlin/dsl/tooling/builders/AbstractKotlinDslScriptsModelBuilder +instanceKlass org/gradle/kotlin/dsl/tooling/builders/internal/IsolatedScriptsModelBuilder +instanceKlass kotlin/collections/ArraysUtilJVM +instanceKlass kotlin/collections/ArraysKt__ArraysJVMKt +instanceKlass kotlin/collections/CollectionsKt__CollectionsJVMKt +instanceKlass org/gradle/kotlin/dsl/tooling/builders/KotlinBuildScriptTemplateModelBuilder +instanceKlass org/gradle/kotlin/dsl/tooling/builders/KotlinBuildScriptModelBuilder +instanceKlass org/gradle/declarative/dsl/tooling/builders/DeclarativeSchemaModelBuilder +instanceKlass org/gradle/tooling/internal/protocol/cpp/InternalCppTestSuite +instanceKlass org/gradle/tooling/internal/protocol/cpp/InternalCppLibrary +instanceKlass org/gradle/tooling/internal/protocol/cpp/InternalCppApplication +instanceKlass org/gradle/language/cpp/internal/tooling/DefaultCppComponentModel +instanceKlass org/gradle/language/cpp/CppComponent +instanceKlass org/gradle/language/ComponentWithTargetMachines +instanceKlass org/gradle/language/ComponentWithDependencies +instanceKlass org/gradle/language/ComponentWithBinaries +instanceKlass org/gradle/language/cpp/internal/tooling/CppModelBuilder +instanceKlass org/gradle/tooling/provider/model/internal/PluginApplyingBuilder +instanceKlass org/gradle/plugins/ide/idea/model/IdeaModule +instanceKlass org/gradle/plugins/ide/internal/tooling/IsolatedIdeaModuleInternalBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/IsolatedGradleProjectInternalBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/BuildEnvironmentBuilder +instanceKlass org/gradle/tooling/model/GradleModuleVersion +instanceKlass org/gradle/plugins/ide/internal/tooling/PublicationsBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/model/TaskNameComparator +instanceKlass org/gradle/plugins/ide/internal/tooling/BuildInvocationsBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/BasicIdeaModelBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/model/PartialBasicGradleProject +instanceKlass org/gradle/plugins/ide/internal/tooling/GradleBuildBuilder +instanceKlass org/gradle/tooling/provider/model/internal/BuildScopeModelBuilder +instanceKlass org/gradle/plugins/ide/internal/configurer/HierarchicalElementAdapter +instanceKlass org/gradle/plugins/ide/internal/configurer/EclipseModelAwareUniqueProjectNameProvider +instanceKlass org/gradle/plugins/ide/eclipse/model/AbstractClasspathEntry +instanceKlass org/gradle/plugins/ide/eclipse/model/ClasspathEntry +instanceKlass org/objectweb/asm/Opcodes +instanceKlass org/gradle/plugins/ide/internal/tooling/EclipseModelBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/RunEclipseTasksBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/RunBuildDependenciesTaskBuilder +instanceKlass org/gradle/tooling/provider/model/ParameterizedToolingModelBuilder +instanceKlass org/gradle/tooling/model/idea/IdeaCompilerOutput +instanceKlass org/gradle/tooling/model/idea/IdeaLanguageLevel +instanceKlass org/gradle/plugins/ide/internal/tooling/IdeaModelBuilder +instanceKlass org/gradle/plugins/ide/internal/tooling/model/LaunchableGradleTask +instanceKlass org/gradle/tooling/internal/protocol/InternalLaunchable +instanceKlass org/gradle/tooling/internal/gradle/GradleProjectIdentity +instanceKlass org/gradle/tooling/internal/gradle/GradleBuildIdentity +instanceKlass org/gradle/plugins/ide/internal/tooling/GradleProjectBuilder +instanceKlass org/gradle/tooling/provider/model/internal/DefaultToolingModelBuilderRegistry$RegistrationImpl +instanceKlass org/gradle/tooling/provider/model/internal/DefaultToolingModelBuilderRegistry$VoidToolingModelBuilder +instanceKlass org/gradle/tooling/provider/model/internal/ToolingModelBuilderLookup$Builder +instanceKlass org/gradle/tooling/provider/model/internal/ToolingModelBuilderLookup$Registration +instanceKlass org/gradle/declarative/dsl/tooling/builders/internal/BuildScopeToolingServices$createIdeBuildScopeToolingModelBuilderRegistryAction$1 +instanceKlass org/gradle/plugins/ide/internal/tooling/IdeaModelBuilderInternal +instanceKlass org/gradle/plugins/ide/internal/tooling/GradleProjectBuilderInternal +instanceKlass org/gradle/plugins/ide/internal/tooling/ToolingModelServices$BuildScopeToolingServices$1 +instanceKlass org/gradle/api/internal/project/DefaultProjectTaskLister +instanceKlass org/gradle/tooling/provider/model/internal/DefaultIntermediateToolingModelProvider +instanceKlass org/gradle/tooling/provider/model/internal/ToolingModelProjectDependencyListener +instanceKlass org/gradle/plugin/software/internal/SoftwareTypeImplementation +instanceKlass it/unimi/dsi/fastutil/ints/IntCollections$UnmodifiableCollection +instanceKlass it/unimi/dsi/fastutil/ints/IntArrays$ArrayHashStrategy +instanceKlass it/unimi/dsi/fastutil/ints/IntArrays$Segment +instanceKlass it/unimi/dsi/fastutil/Hash$Strategy +instanceKlass it/unimi/dsi/fastutil/ints/IntArrays +instanceKlass it/unimi/dsi/fastutil/ints/IntSpliterator +instanceKlass it/unimi/dsi/fastutil/ints/IntBidirectionalIterator +instanceKlass it/unimi/dsi/fastutil/ints/IntIterator +instanceKlass java/util/PrimitiveIterator$OfInt +instanceKlass java/util/PrimitiveIterator +instanceKlass it/unimi/dsi/fastutil/ints/IntSets +instanceKlass org/gradle/api/internal/provider/Collectors$SingleElement +instanceKlass it/unimi/dsi/fastutil/ints/IntSet +instanceKlass it/unimi/dsi/fastutil/ints/IntCollection +instanceKlass it/unimi/dsi/fastutil/ints/IntIterable +instanceKlass org/gradle/api/internal/collections/FilteredElementSource$FilteringIterator +instanceKlass org/gradle/api/internal/collections/CollectionFilter$1 +instanceKlass org/gradle/api/internal/DefaultNamedDomainObjectCollection$FilteredIndex +instanceKlass org/gradle/api/internal/collections/DefaultCollectionEventRegister$FilteredEventRegister +instanceKlass org/gradle/api/internal/collections/FilteredElementSource +instanceKlass org/gradle/api/specs/Specs$2 +instanceKlass org/gradle/api/specs/Specs$1 +instanceKlass org/gradle/api/specs/Specs +instanceKlass org/gradle/api/internal/DelegatingDomainObjectSet +instanceKlass org/objectweb/asm/Context +instanceKlass org/objectweb/asm/ClassReader +instanceKlass org/gradle/api/internal/DefaultNamedDomainObjectCollection$ProviderBackedElementInfo +instanceKlass org/gradle/api/internal/DefaultNamedDomainObjectCollection$ElementInfo +instanceKlass org/gradle/api/internal/provider/Collectors$ElementFromProvider +instanceKlass org/gradle/api/internal/provider/Collectors$TypedCollector +instanceKlass org/gradle/api/internal/provider/Collectors$ProvidedCollector +instanceKlass org/gradle/api/internal/provider/ChangingValue +instanceKlass org/gradle/internal/code/DefaultUserCodeApplicationContext$CurrentApplication$1 +instanceKlass org/gradle/api/internal/DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction +instanceKlass org/gradle/api/internal/DefaultMutationGuard$1 +instanceKlass com/google/common/reflect/Reflection +instanceKlass com/google/common/reflect/Types$TypeVariableInvocationHandler +instanceKlass com/google/common/reflect/Types$TypeVariableImpl +instanceKlass com/google/common/reflect/Types$NativeTypeVariableEquals +instanceKlass org/gradle/api/internal/provider/ValueSupplier$SideEffect +instanceKlass org/gradle/api/internal/provider/ValueSupplier$ExecutionTimeValue +instanceKlass org/gradle/api/internal/provider/ValueSupplier$ValueProducer +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$RegisterDetails +instanceKlass org/apache/commons/lang/text/StrTokenizer +instanceKlass org/apache/commons/lang/text/StrBuilder +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$3 +instanceKlass java/util/function/LongUnaryOperator +instanceKlass org/gradle/model/internal/registry/RuleBindings$ScopeIndex +instanceKlass org/gradle/model/internal/registry/RuleBindings$PredicateMatches +instanceKlass org/gradle/model/internal/registry/DefaultModelRegistry$5 +instanceKlass org/gradle/model/internal/registry/NodeAtState +instanceKlass org/gradle/model/internal/registry/DefaultModelRegistry$GoalGraph +instanceKlass org/gradle/model/internal/registry/RuleBindings$NodeAtStateIndex +instanceKlass org/gradle/model/internal/registry/RuleBindings$TypePredicateIndex +instanceKlass org/gradle/model/internal/registry/RuleBindings$PathPredicateIndex +instanceKlass org/gradle/model/internal/registry/RuleBindings +instanceKlass org/gradle/model/internal/registry/ModelGraph +instanceKlass org/gradle/model/internal/core/DefaultModelRegistration +instanceKlass org/gradle/model/internal/core/AbstractModelAction +instanceKlass org/gradle/model/internal/core/EmptyModelProjection +instanceKlass org/gradle/model/internal/core/ModelProjection +instanceKlass org/gradle/model/internal/core/ModelAdapter +instanceKlass org/gradle/model/internal/core/ModelPromise +instanceKlass org/gradle/model/internal/core/ModelRegistrations$Builder$DescriptorReference +instanceKlass org/gradle/model/internal/core/ModelRegistration +instanceKlass org/gradle/model/internal/core/ModelAction +instanceKlass org/gradle/model/internal/core/ModelRegistrations$Builder +instanceKlass org/gradle/model/internal/core/ModelRegistrations +instanceKlass org/gradle/model/internal/registry/BoringProjectState +instanceKlass org/gradle/model/internal/core/ModelPredicate +instanceKlass org/gradle/model/internal/registry/DefaultModelRegistry$ModelGoal +instanceKlass org/gradle/model/internal/registry/ModelNodeInternal +instanceKlass org/gradle/model/internal/registry/DefaultModelRegistry +instanceKlass org/gradle/model/internal/registry/ModelRegistryInternal +instanceKlass org/gradle/tooling/internal/provider/runner/PluginApplicationTracker$PluginApplication +instanceKlass org/gradle/internal/build/event/types/DefaultBinaryPluginIdentifier +instanceKlass org/gradle/api/internal/plugins/DefaultPluginManager$OperationDetails +instanceKlass org/gradle/api/internal/plugins/DefaultPluginManager$AddPluginBuildOperation +instanceKlass org/gradle/api/internal/plugins/DefaultPluginManager$1 +instanceKlass org/gradle/api/internal/plugins/DefaultPotentialPluginWithId +instanceKlass org/gradle/api/internal/plugins/PluginInspector$PotentialImperativeClassPlugin +instanceKlass com/google/common/base/Predicates +instanceKlass org/gradle/model/internal/inspect/ModelRuleSourceDetector$3 +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$HelpAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$ProjectReportTaskAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$TaskReportTaskAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$PropertyReportTaskAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$DependencyInsightReportTaskAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$DependencyReportTaskAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$BuildEnvironmentReportTaskAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$ComponentReportAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$ModelReportAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin$DependentComponentsReportAction +instanceKlass org/gradle/api/plugins/HelpTasksPlugin +instanceKlass org/gradle/api/internal/plugins/PluginDescriptor +instanceKlass org/gradle/api/internal/plugins/ClassloaderBackedPluginDescriptorLocator +instanceKlass org/gradle/api/internal/plugins/DefaultPluginRegistry$PluginIdLookupCacheKey +instanceKlass java/util/DualPivotQuicksort +instanceKlass org/gradle/plugin/use/internal/DefaultPluginId +instanceKlass org/gradle/api/internal/plugins/PluginInstantiator +instanceKlass org/gradle/api/internal/plugins/ModelDefaultsApplyingPluginTarget +instanceKlass org/gradle/api/internal/plugins/RuleBasedPluginTarget +instanceKlass org/gradle/plugin/software/internal/DefaultModelDefaultsApplicator +instanceKlass com/google/common/collect/FluentIterable +instanceKlass org/gradle/model/internal/inspect/ModelRuleExtractor$CachedRuleSource +instanceKlass org/gradle/model/internal/inspect/MethodModelRuleExtractionContext +instanceKlass org/gradle/model/Rules +instanceKlass org/gradle/model/Validate +instanceKlass org/gradle/model/Finalize +instanceKlass org/gradle/model/Mutate +instanceKlass org/gradle/model/Defaults +instanceKlass org/gradle/model/internal/core/NodeInitializerRegistry +instanceKlass org/gradle/model/Model +instanceKlass org/gradle/model/internal/inspect/MethodModelRuleExtractors +instanceKlass org/gradle/model/internal/manage/instance/ManagedInstance +instanceKlass org/gradle/model/internal/manage/schema/extract/ManagedProxyClassGenerator$GeneratedView +instanceKlass org/gradle/model/internal/manage/instance/ModelElementState +instanceKlass org/gradle/model/internal/manage/instance/GeneratedViewState +instanceKlass org/gradle/model/internal/manage/binding/StructMethodBinding +instanceKlass org/gradle/internal/reflect/Types$TypeVisitor +instanceKlass org/gradle/model/internal/manage/binding/StructBindings +instanceKlass org/gradle/model/internal/manage/binding/StructBindingValidationProblemCollector +instanceKlass org/gradle/model/internal/manage/binding/DefaultStructBindingsStore +instanceKlass org/gradle/internal/declarativedsl/defaults/SoftwareTypeRegistryIntegrationKt$softwareTypeRegistryBasedModelDefaultsRepository$1 +instanceKlass org/gradle/internal/declarativedsl/evaluator/defaults/ModelDefaultsRepository +instanceKlass org/gradle/internal/declarativedsl/defaults/SoftwareTypeRegistryIntegrationKt +instanceKlass kotlin/UNINITIALIZED_VALUE +instanceKlass kotlin/SynchronizedLazyImpl +instanceKlass kotlin/Lazy +instanceKlass kotlin/LazyKt__LazyJVMKt +instanceKlass org/gradle/internal/declarativedsl/evaluationSchema/DefaultStepIdentifier +instanceKlass org/gradle/declarative/dsl/evaluation/InterpretationSequenceStep$StepIdentifier +instanceKlass kotlin/jvm/internal/Lambda +instanceKlass kotlin/jvm/internal/FunctionBase +instanceKlass org/gradle/internal/declarativedsl/evaluator/defaults/ApplyModelDefaults +instanceKlass org/gradle/declarative/dsl/evaluation/InterpretationStepFeature$ResolutionResultPostprocessing$ApplyModelDefaults +instanceKlass org/gradle/declarative/dsl/evaluation/InterpretationStepFeature$ResolutionResultPostprocessing +instanceKlass org/gradle/declarative/dsl/evaluation/InterpretationStepFeature +instanceKlass org/gradle/internal/declarativedsl/evaluationSchema/SimpleInterpretationSequenceStepWithConversion +instanceKlass org/gradle/internal/declarativedsl/evaluator/conversion/InterpretationSequenceStepWithConversion +instanceKlass org/gradle/declarative/dsl/evaluation/InterpretationSequenceStep +instanceKlass org/gradle/internal/declarativedsl/project/ProjectInterpretationSequenceStepKt +instanceKlass org/gradle/internal/declarativedsl/evaluator/defaults/DeclarativeModelDefaultsHandler +instanceKlass org/gradle/api/internal/initialization/ActionBasedModelDefaultsHandler +instanceKlass org/gradle/platform/base/BinaryTasks +instanceKlass org/gradle/model/internal/core/ModelPath$Cache +instanceKlass com/google/common/base/Platform$JdkPatternCompiler +instanceKlass com/google/common/base/PatternCompiler +instanceKlass com/google/common/base/Platform +instanceKlass org/gradle/platform/base/BinaryContainer +instanceKlass org/gradle/platform/base/ComponentBinaries +instanceKlass org/gradle/platform/base/ComponentType +instanceKlass org/gradle/platform/base/VariantComponentSpec +instanceKlass org/gradle/platform/base/VariantComponent +instanceKlass org/gradle/platform/base/SourceComponentSpec +instanceKlass org/gradle/language/base/LanguageSourceSet +instanceKlass org/gradle/model/internal/typeregistration/BaseInstanceFactory +instanceKlass org/gradle/model/internal/typeregistration/InstanceFactory +instanceKlass org/gradle/model/internal/inspect/ExtractedModelRule +instanceKlass org/gradle/model/internal/inspect/RuleSourceValidationProblemCollector +instanceKlass org/gradle/model/internal/inspect/AbstractAnnotationDrivenModelRuleExtractor +instanceKlass org/gradle/model/internal/manage/schema/cache/ModelSchemaCache +instanceKlass org/gradle/model/internal/manage/schema/extract/DefaultModelSchemaStore +instanceKlass org/gradle/model/RuleSource +instanceKlass org/gradle/model/internal/manage/schema/extract/StructSchemaExtractionStrategySupport +instanceKlass org/gradle/model/internal/manage/schema/extract/JavaUtilCollectionStrategy +instanceKlass org/gradle/model/ModelMap +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelMapStrategy +instanceKlass org/gradle/model/internal/manage/schema/extract/AbstractProxyClassGenerator +instanceKlass org/gradle/model/internal/manage/schema/extract/SpecializedMapStrategy +instanceKlass org/gradle/model/internal/type/WildcardTypeWrapper +instanceKlass org/gradle/model/internal/type/WildcardWrapper +instanceKlass org/gradle/model/internal/type/ParameterizedTypeWrapper +instanceKlass org/gradle/model/ModelSet +instanceKlass org/gradle/model/internal/manage/schema/CompositeSchema +instanceKlass org/gradle/model/internal/manage/schema/AbstractModelSchema +instanceKlass org/gradle/model/internal/manage/schema/ManagedImplSchema +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSetStrategy +instanceKlass org/gradle/model/internal/manage/schema/extract/JdkValueTypeStrategy +instanceKlass org/gradle/model/internal/manage/schema/extract/EnumStrategy +instanceKlass org/gradle/model/internal/manage/schema/ModelSchema +instanceKlass org/gradle/model/internal/manage/schema/extract/PrimitiveStrategy +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSchemaExtractionContext +instanceKlass org/gradle/model/internal/manage/schema/extract/DefaultModelSchemaExtractor +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSchemaAspect +instanceKlass org/gradle/platform/base/internal/VariantAspectExtractionStrategy +instanceKlass org/gradle/configuration/project/NotifyProjectBeforeEvaluatedBuildOperationType$1 +instanceKlass org/gradle/configuration/project/NotifyProjectBeforeEvaluatedBuildOperationType$Result +instanceKlass org/gradle/configuration/project/NotifyProjectBeforeEvaluatedBuildOperationType +instanceKlass org/gradle/internal/operations/BuildOperationType +instanceKlass org/gradle/api/artifacts/VersionCatalog +instanceKlass org/gradle/api/internal/catalog/DefaultDependenciesAccessors$DefaultVersionCatalogsExtension +instanceKlass org/gradle/api/artifacts/VersionCatalogsExtension +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$NotifyProjectBeforeEvaluatedDetails +instanceKlass org/gradle/configuration/project/NotifyProjectBeforeEvaluatedBuildOperationType$Details +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$NotifyBeforeEvaluate +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$ReleaseLocks +instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$4$1 +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$2 +instanceKlass org/gradle/internal/MutableReference +instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$4 +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$ConfigureProjectDetails +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator$EvaluateProject +instanceKlass org/gradle/configuration/project/LifecycleProjectEvaluator +instanceKlass org/gradle/configuration/project/DelayedConfigurationActions +instanceKlass org/gradle/configuration/project/BuildScriptProcessor +instanceKlass org/gradle/buildinit/plugins/internal/action/WrapperPluginAutoApplyAction +instanceKlass org/gradle/buildinit/plugins/internal/action/BuildInitAutoApplyAction +instanceKlass org/gradle/internal/buildconfiguration/DaemonJvmPropertiesConfigurator +instanceKlass org/gradle/kotlin/dsl/tooling/builders/internal/KotlinScriptingModelBuildersRegistrationAction +instanceKlass org/gradle/jvm/toolchain/internal/task/ShowToolchainsTaskConfigurator +instanceKlass org/gradle/api/plugins/internal/HelpTasksAutoApplyAction +instanceKlass org/gradle/configuration/project/ConfigureActionsProjectEvaluator +instanceKlass org/gradle/internal/event/DefaultListenerManager$ExclusiveEventBroadcast$2 +instanceKlass org/gradle/initialization/NotifyingBuildLoader$3$1 +instanceKlass org/gradle/initialization/NotifyProjectsLoadedBuildOperationType$Details +instanceKlass org/gradle/initialization/NotifyingBuildLoader$3 +instanceKlass org/gradle/initialization/NotifyingBuildLoader$BuildStructureOperationResult +instanceKlass org/gradle/initialization/LoadProjectsBuildOperationType$Result +instanceKlass org/gradle/initialization/NotifyingBuildLoader$DefaultProjectsIdentifiedProgressDetails +instanceKlass org/gradle/initialization/ProjectsIdentifiedProgressDetails +instanceKlass org/gradle/initialization/BuildStructureOperationProject +instanceKlass org/gradle/api/internal/project/ProjectHierarchyUtils +instanceKlass org/gradle/initialization/ProjectPropertySettingBuildLoader$CachingPropertyApplicator +instanceKlass org/gradle/internal/extensibility/ExtensibleDynamicObject$2 +instanceKlass org/gradle/api/internal/project/DefaultCrossProjectModelAccess +instanceKlass org/gradle/internal/BiAction +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainerFactory$1 +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$7 +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainer$6 +instanceKlass org/gradle/model/internal/core/MutableModelNode +instanceKlass org/gradle/model/internal/core/ModelNode +instanceKlass org/gradle/model/internal/core/ModelPath +instanceKlass org/gradle/api/internal/project/taskfactory/TaskIdentity +instanceKlass org/gradle/api/tasks/TaskProvider +instanceKlass org/gradle/api/internal/tasks/RealizeTaskBuildOperationType$Result +instanceKlass org/gradle/api/internal/tasks/RegisterTaskBuildOperationType$Result +instanceKlass org/gradle/model/internal/core/rule/describe/SimpleModelRuleDescriptor$1 +instanceKlass org/gradle/internal/Factories$2 +instanceKlass org/gradle/internal/Factories +instanceKlass org/gradle/model/internal/core/rule/describe/AbstractModelRuleDescriptor +instanceKlass org/gradle/model/internal/core/rule/describe/ModelRuleDescriptor +instanceKlass org/gradle/model/internal/core/ModelReference +instanceKlass org/gradle/api/internal/tasks/DefaultTaskContainerFactory +instanceKlass org/gradle/api/internal/project/taskfactory/TaskFactory +instanceKlass org/gradle/api/internal/project/taskfactory/AnnotationProcessingTaskFactory +instanceKlass org/gradle/api/internal/project/taskfactory/TaskActionFactory +instanceKlass org/gradle/api/internal/project/taskfactory/DefaultTaskClassInfoStore +instanceKlass org/gradle/nativeplatform/internal/CompilerOutputFileNamingSchemeFactory +instanceKlass org/gradle/nativeplatform/internal/services/NativeBinaryServices$ProjectCompilerServices +instanceKlass org/gradle/language/internal/DefaultNativeComponentFactory +instanceKlass org/gradle/language/internal/NativeComponentFactory +instanceKlass org/gradle/language/nativeplatform/internal/toolchains/ToolChainSelector$Result +instanceKlass org/gradle/language/nativeplatform/internal/toolchains/DefaultToolChainSelector +instanceKlass org/gradle/language/nativeplatform/internal/toolchains/ToolChainSelector +instanceKlass org/gradle/language/nativeplatform/internal/incremental/IncrementalCompilerBuilder$IncrementalCompiler +instanceKlass org/gradle/language/nativeplatform/internal/incremental/DefaultIncrementalCompilerBuilder +instanceKlass org/gradle/language/nativeplatform/internal/incremental/IncrementalCompilerBuilder +instanceKlass org/gradle/plugins/ide/internal/DefaultIdeArtifactRegistry +instanceKlass org/gradle/plugins/ide/internal/IdeArtifactRegistry +instanceKlass org/gradle/internal/snapshot/Snapshot +instanceKlass org/gradle/internal/snapshot/impl/DefaultSnapshottingService +instanceKlass org/gradle/internal/snapshot/SnapshottingService +instanceKlass org/gradle/internal/enterprise/test/TestTaskForkOptions +instanceKlass org/gradle/internal/enterprise/test/TestTaskFilters +instanceKlass org/gradle/internal/enterprise/test/TestTaskProperties +instanceKlass org/gradle/internal/enterprise/test/impl/DefaultTestTaskPropertiesService +instanceKlass org/gradle/internal/enterprise/test/TestTaskPropertiesService +instanceKlass org/gradle/buildinit/plugins/internal/ProjectLayoutSetupRegistry +instanceKlass org/gradle/buildinit/plugins/internal/services/BuildInitServices$1 +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmLanguageUtilities +instanceKlass org/gradle/api/plugins/jvm/internal/JvmLanguageUtilities +instanceKlass org/gradle/api/publish/maven/internal/publisher/MavenDuplicatePublicationTracker +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainSpecInternal +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainSpecInternal$Key +instanceKlass org/gradle/jvm/toolchain/internal/install/SecureFileDownloader +instanceKlass org/gradle/jvm/toolchain/JavaToolchainRequest +instanceKlass org/gradle/jvm/toolchain/internal/install/DefaultJavaToolchainProvisioningService +instanceKlass org/gradle/jvm/toolchain/internal/install/JavaToolchainProvisioningService +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainQueryService +instanceKlass org/gradle/jvm/toolchain/JavaToolchainSpec +instanceKlass org/gradle/jvm/toolchain/JavaCompiler +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJavaToolchainService +instanceKlass org/gradle/jvm/toolchain/JavaToolchainService +instanceKlass org/gradle/api/artifacts/ConfigurationVariant +instanceKlass org/gradle/api/plugins/jvm/internal/DefaultJvmPluginServices +instanceKlass org/gradle/api/plugins/jvm/internal/JvmPluginServices +instanceKlass org/gradle/api/plugins/jvm/internal/JvmEcosystemUtilities +instanceKlass org/gradle/api/tasks/SourceSetContainer +instanceKlass org/gradle/language/jvm/internal/JvmLanguageServices$ProjectScopeServices +instanceKlass org/gradle/jvm/toolchain/internal/ToolchainToolFactory +instanceKlass org/gradle/language/java/internal/JavaLanguageServices$JavaProjectScopeServices +instanceKlass org/gradle/jvm/toolchain/internal/JavaCompilerFactory +instanceKlass org/gradle/language/java/internal/JavaToolchainServices$ProjectScopeCompileServices +instanceKlass org/gradle/api/internal/tasks/compile/GroovyCompilerFactory +instanceKlass org/gradle/language/base/internal/compile/CompilerFactory +instanceKlass org/gradle/api/internal/tasks/compile/GroovyServices$ProjectServices +instanceKlass org/gradle/api/publish/ivy/internal/publisher/IvyDuplicatePublicationTracker +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementProjectScopeServices +instanceKlass org/gradle/workers/internal/BuildOperationAwareWorker +instanceKlass org/gradle/workers/internal/IsolatedClassloaderWorkerFactory +instanceKlass org/gradle/workers/internal/WorkerDaemonFactory +instanceKlass org/gradle/workers/internal/WorkerFactory +instanceKlass org/gradle/workers/WorkerExecutor +instanceKlass org/gradle/workers/internal/WorkersServices$ProjectScopeServices +instanceKlass org/gradle/api/internal/project/taskfactory/TaskInstantiator +instanceKlass org/gradle/model/internal/core/NamedEntityInstantiator +instanceKlass org/gradle/normalization/internal/RuntimeClasspathNormalizationInternal +instanceKlass org/gradle/normalization/RuntimeClasspathNormalization +instanceKlass org/gradle/normalization/InputNormalization +instanceKlass org/gradle/internal/service/scopes/WorkerSharedProjectScopeServices +instanceKlass org/gradle/api/internal/project/ant/AntLoggingAdapterFactory +instanceKlass org/gradle/internal/typeconversion/TypeConverter +instanceKlass org/gradle/internal/service/scopes/ProjectScopeServices +instanceKlass org/gradle/api/internal/file/DefaultProjectLayout +instanceKlass org/gradle/api/internal/file/TaskFileVarFactory +instanceKlass org/gradle/api/internal/project/DeferredProjectConfiguration +instanceKlass org/gradle/initialization/NotifyingBuildLoader$2$1 +instanceKlass org/gradle/initialization/LoadProjectsBuildOperationType$Details +instanceKlass org/gradle/initialization/LoadProjectsBuildOperationType$Result$Project +instanceKlass org/gradle/initialization/ProjectsIdentifiedProgressDetails$Project +instanceKlass org/gradle/initialization/NotifyingBuildLoader$2 +instanceKlass org/gradle/api/internal/DefaultDomainObjectCollection$IteratorImpl +instanceKlass org/gradle/internal/configuration/inputs/NoOpInputsListener +instanceKlass org/gradle/internal/configuration/inputs/InstrumentedInputs +instanceKlass org/gradle/api/internal/catalog/DefaultVersionCatalog +instanceKlass org/gradle/api/internal/catalog/DefaultDependenciesAccessors +instanceKlass org/gradle/api/internal/DependencyClassPathProvider +instanceKlass org/gradle/configuration/BuildOperationFiringProjectsPreparer$ConfigureBuild$1 +instanceKlass org/gradle/initialization/ConfigureBuildBuildOperationType$Details +instanceKlass org/gradle/configuration/BuildOperationFiringProjectsPreparer$ConfigureBuild +instanceKlass org/gradle/api/internal/project/ProjectLifecycleController +instanceKlass org/gradle/internal/resources/TaskExecutionLockRegistry$2 +instanceKlass org/gradle/internal/resources/ProjectLockRegistry$2 +instanceKlass org/gradle/internal/resources/LockCache$1 +instanceKlass org/gradle/internal/resources/ProjectLockRegistry$1 +instanceKlass org/gradle/api/internal/artifacts/DefaultProjectComponentIdentifier +instanceKlass org/gradle/api/internal/artifacts/ProjectComponentIdentifierInternal +instanceKlass org/gradle/api/internal/project/ProjectIdentity +instanceKlass org/gradle/internal/lazy/UnsafeLazy +instanceKlass org/gradle/api/internal/project/DefaultProjectStateRegistry$ProjectStateImpl +instanceKlass org/gradle/api/internal/project/DefaultProjectStateRegistry$DefaultBuildProjectRegistry +instanceKlass org/gradle/internal/build/BuildProjectRegistry +instanceKlass org/gradle/initialization/AbstractProjectSpec +instanceKlass org/gradle/initialization/ProjectSpec +instanceKlass org/gradle/initialization/ProjectSpecs +instanceKlass org/gradle/caching/internal/services/AbstractBuildCacheControllerFactory$ResultImpl +instanceKlass org/gradle/caching/internal/FinalizeBuildCacheConfigurationBuildOperationType$Result +instanceKlass org/gradle/caching/internal/services/AbstractBuildCacheControllerFactory$DetailsImpl +instanceKlass org/gradle/caching/internal/FinalizeBuildCacheConfigurationBuildOperationType$Details +instanceKlass org/gradle/caching/internal/FinalizeBuildCacheConfigurationBuildOperationType$Result$BuildCacheDescription +instanceKlass org/gradle/caching/internal/services/AbstractBuildCacheControllerFactory$1 +instanceKlass org/gradle/caching/configuration/internal/DefaultBuildCacheConfiguration +instanceKlass org/gradle/caching/local/internal/DirectoryBuildCacheServiceFactory +instanceKlass org/gradle/internal/time/TimeFormatting +instanceKlass org/gradle/util/internal/NameValidator +instanceKlass org/gradle/api/initialization/ConfigurableIncludedBuild +instanceKlass org/gradle/plugin/use/internal/PluginRequestCollector +instanceKlass org/gradle/api/internal/plugins/SoftwareTypeRegistrationPluginTarget +instanceKlass org/gradle/plugin/software/internal/DefaultSoftwareTypeRegistry +instanceKlass org/gradle/api/internal/cache/CacheDirUtil +instanceKlass org/gradle/cache/CleanupFrequency$3 +instanceKlass org/gradle/cache/CleanupFrequency$2 +instanceKlass org/gradle/cache/CleanupFrequency$1 +instanceKlass org/gradle/api/internal/cache/DefaultCleanup +instanceKlass org/gradle/api/internal/cache/CleanupInternal +instanceKlass it/unimi/dsi/fastutil/objects/ObjectListIterator +instanceKlass it/unimi/dsi/fastutil/objects/ObjectBidirectionalIterator +instanceKlass it/unimi/dsi/fastutil/BidirectionalIterator +instanceKlass it/unimi/dsi/fastutil/Stack +instanceKlass it/unimi/dsi/fastutil/objects/ReferenceList +instanceKlass it/unimi/dsi/fastutil/objects/ObjectSpliterator +instanceKlass it/unimi/dsi/fastutil/objects/ObjectIterator +instanceKlass it/unimi/dsi/fastutil/objects/ReferenceSet +instanceKlass it/unimi/dsi/fastutil/objects/ReferenceCollection +instanceKlass org/gradle/api/internal/provider/EvaluationContext$PerThreadContext +instanceKlass org/gradle/api/internal/provider/EvaluationContext$ScopeContext +instanceKlass org/gradle/api/internal/provider/EvaluationContext +instanceKlass org/gradle/internal/event/BroadcastDispatch$ActionInvocationHandler +instanceKlass java/util/BitSet$1BitSetSpliterator +instanceKlass org/gradle/vcs/VcsMappings +instanceKlass org/gradle/vcs/internal/services/VersionControlServices$VersionControlSettingsServices +instanceKlass org/gradle/plugin/internal/PluginUseServices$SettingsScopeServices +instanceKlass org/gradle/internal/service/scopes/SettingsScopeServices +instanceKlass org/gradle/initialization/IncludedBuildSpec +instanceKlass org/gradle/api/file/BuildLayout +instanceKlass org/gradle/plugin/management/PluginManagementSpec +instanceKlass org/gradle/vcs/SourceControl +instanceKlass org/gradle/initialization/ProjectDescriptorRegistry +instanceKlass org/gradle/initialization/DefaultProjectDescriptor +instanceKlass org/gradle/api/initialization/ProjectDescriptor +instanceKlass org/gradle/initialization/SettingsFactory$SettingsServiceRegistryFactory +instanceKlass org/gradle/initialization/BuildOperationSettingsProcessor$2$1 +instanceKlass org/gradle/initialization/EvaluateSettingsBuildOperationType$Details +instanceKlass org/gradle/initialization/BuildOperationSettingsProcessor$2 +instanceKlass org/gradle/internal/logging/sink/ProgressLogEventGenerator$1 +instanceKlass org/gradle/api/internal/tasks/testing/logging/TestExceptionFormatter +instanceKlass org/gradle/internal/exceptions/NonGradleCause +instanceKlass org/gradle/api/reporting/DirectoryReport +instanceKlass org/gradle/api/reporting/ConfigurableReport +instanceKlass org/gradle/api/reporting/Report +instanceKlass org/gradle/api/internal/tasks/testing/report/TestReporter +instanceKlass org/gradle/api/internal/tasks/testing/junit/result/TestResultsProvider +instanceKlass org/gradle/api/internal/tasks/testing/TestResultProcessor +instanceKlass org/gradle/api/tasks/testing/TestOutputListener +instanceKlass org/gradle/api/tasks/testing/TestListener +instanceKlass org/gradle/api/reporting/ReportContainer +instanceKlass org/gradle/api/tasks/testing/TestFilter +instanceKlass org/gradle/api/internal/tasks/TaskDependencyInternal +instanceKlass groovy/util/ObservableList +instanceKlass org/gradle/api/internal/tasks/InputChangesAwareTaskAction +instanceKlass org/gradle/api/internal/tasks/ImplementationAwareTaskAction +instanceKlass org/gradle/api/internal/tasks/TaskRequiredServices +instanceKlass org/gradle/api/internal/tasks/TaskLocalStateInternal +instanceKlass org/gradle/api/internal/TaskOutputsInternal +instanceKlass org/gradle/api/internal/TaskInputsInternal +instanceKlass org/gradle/internal/logging/slf4j/ContextAwareTaskLogger +instanceKlass org/gradle/api/reporting/Reporting +instanceKlass org/gradle/api/tasks/VerificationTask +instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$BuildOperationEmittingInvocationHandler +instanceKlass org/apache/commons/lang/ClassUtils +instanceKlass groovy/transform/Generated +instanceKlass org/gradle/internal/classpath/intercept/InvocationImpl$ThrowingSupplier +instanceKlass org/gradle/internal/classpath/intercept/InvocationImpl +instanceKlass SetupUtpTestResultListenerAction +instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator$1 +instanceKlass org/gradle/listener/ClosureBackedMethodInvocationDispatch +instanceKlass org/codehaus/groovy/ast/ClassNode$MapOfLists +instanceKlass org/codehaus/groovy/util/AbstractConcurrentMap$Entry +instanceKlass org/codehaus/groovy/util/AbstractConcurrentMapBase$Entry +instanceKlass org/codehaus/groovy/ast/ClassHelper$ClassHelperCache +instanceKlass org/codehaus/groovy/runtime/GeneratedLambda +instanceKlass org/codehaus/groovy/ast/ClassHelper +instanceKlass org/codehaus/groovy/classgen/asm/util/TypeUtil +instanceKlass org/gradle/execution/plan/WorkSource +instanceKlass org/gradle/execution/plan/QueryableExecutionPlan +instanceKlass org/gradle/execution/ProjectExecutionServiceRegistry +instanceKlass org/gradle/api/tasks/TaskLocalState +instanceKlass org/gradle/api/tasks/TaskDestroyables +instanceKlass org/gradle/api/tasks/TaskOutputs +instanceKlass org/gradle/api/tasks/TaskInputs +instanceKlass org/gradle/api/tasks/TaskState +instanceKlass org/gradle/execution/plan/FinalizedExecutionPlan$1 +instanceKlass org/gradle/execution/plan/FinalizedExecutionPlan +instanceKlass org/gradle/execution/taskgraph/DefaultTaskExecutionGraph +instanceKlass org/gradle/api/internal/tasks/TaskExecutionContext +instanceKlass org/codehaus/groovy/reflection/AccessPermissionChecker +instanceKlass org/gradle/internal/snapshot/SearchUtil +instanceKlass org/codehaus/groovy/runtime/ScriptBytecodeAdapter +instanceKlass org/gradle/internal/classpath/declarations/GroovyDynamicDispatchInterceptors +instanceKlass org/codehaus/groovy/runtime/metaclass/ClosureMetaClass$MethodChooser +instanceKlass org/codehaus/groovy/runtime/callsite/BooleanClosureWrapper +instanceKlass com/sun/beans/finder/FinderUtils +instanceKlass com/sun/beans/finder/AbstractFinder +instanceKlass org/gradle/internal/classpath/InstrumentableClosure +instanceKlass groovyjarjarasm/asm/Attribute +instanceKlass groovyjarjarasm/asm/Handler +instanceKlass org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation +instanceKlass org/codehaus/groovy/classgen/asm/BytecodeHelper +instanceKlass groovyjarjarasm/asm/Edge +instanceKlass groovyjarjarasm/asm/Label +instanceKlass groovyjarjarasm/asm/Type +instanceKlass groovyjarjarasm/asm/Frame +instanceKlass groovyjarjarasm/asm/ByteVector +instanceKlass groovyjarjarasm/asm/Symbol +instanceKlass groovyjarjarasm/asm/SymbolTable +instanceKlass groovyjarjarasm/asm/MethodVisitor +instanceKlass groovyjarjarasm/asm/FieldVisitor +instanceKlass groovyjarjarasm/asm/ModuleVisitor +instanceKlass groovyjarjarasm/asm/AnnotationVisitor +instanceKlass groovyjarjarasm/asm/RecordComponentVisitor +instanceKlass org/codehaus/groovy/classgen/GeneratorContext +instanceKlass org/codehaus/groovy/reflection/android/AndroidSupport +instanceKlass org/codehaus/groovy/runtime/callsite/CallSiteGenerator +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaMethodIndex$CacheEntry +instanceKlass org/codehaus/groovy/runtime/wrappers/Wrapper +instanceKlass groovy/lang/AdaptingMetaClass +instanceKlass groovy/lang/GroovyInterceptable +instanceKlass org/codehaus/groovy/runtime/ArrayUtil +instanceKlass org/codehaus/groovy/syntax/Types +instanceKlass org/codehaus/groovy/syntax/CSTNode +instanceKlass org/codehaus/groovy/ast/tools/GeneralUtils +instanceKlass org/gradle/api/component/SoftwareComponentContainer +instanceKlass org/gradle/api/project/IsolatedProject +instanceKlass org/gradle/api/NamedDomainObjectFactory +instanceKlass org/gradle/normalization/internal/InputNormalizationHandlerInternal +instanceKlass org/gradle/model/internal/registry/ModelRegistry +instanceKlass org/gradle/internal/model/RuleBasedPluginListener +instanceKlass org/gradle/api/internal/project/ProjectInternal$DetachedResolver +instanceKlass org/gradle/configuration/project/ProjectConfigurationActionContainer +instanceKlass org/gradle/api/internal/tasks/TaskContainerInternal +instanceKlass org/gradle/api/internal/PolymorphicDomainObjectContainerInternal +instanceKlass org/gradle/api/internal/tasks/TaskResolver +instanceKlass org/gradle/api/internal/project/ProjectStateInternal +instanceKlass org/gradle/normalization/InputNormalizationHandler +instanceKlass org/gradle/api/ProjectState +instanceKlass org/gradle/internal/metaobject/DynamicInvokeResult +instanceKlass org/gradle/internal/metaobject/InstrumentedMetaClass +instanceKlass org/gradle/internal/classpath/intercept/CallInterceptorResolver$ClosureCallInterceptorResolver +instanceKlass org/gradle/api/internal/file/copy/CopySpecInternal +instanceKlass org/gradle/api/file/SyncSpec +instanceKlass org/gradle/api/internal/file/copy/CopyAction +instanceKlass org/gradle/api/internal/file/copy/FileCopier +instanceKlass org/gradle/api/internal/resources/DefaultResourceHandler +instanceKlass org/gradle/api/internal/resources/DefaultTextResourceFactory +instanceKlass org/gradle/api/internal/resources/DefaultResourceResolver +instanceKlass org/gradle/api/internal/resources/ResourceResolver +instanceKlass org/gradle/api/resources/TextResourceFactory +instanceKlass org/gradle/api/internal/resources/DefaultResourceHandler$Factory$FactoryImpl +instanceKlass org/gradle/api/internal/file/archive/DefaultDecompressionCoordinator +instanceKlass org/gradle/internal/extensibility/ExtensionsStorage$ExtensionHolder +instanceKlass org/gradle/api/plugins/ExtensionsSchema$ExtensionSchema +instanceKlass org/gradle/api/NamedDomainObjectCollectionSchema$NamedDomainObjectSchema +instanceKlass org/gradle/internal/extensibility/ExtensionsStorage +instanceKlass org/gradle/api/plugins/ExtraPropertiesExtension +instanceKlass org/gradle/internal/extensibility/DefaultConvention +instanceKlass org/gradle/api/internal/plugins/ExtensionContainerInternal +instanceKlass org/gradle/internal/metaobject/DynamicObjectUtil +instanceKlass org/gradle/api/internal/project/DefaultDynamicLookupRoutine +instanceKlass org/gradle/api/internal/coerce/StringToEnumTransformer +instanceKlass org/gradle/internal/classpath/InstrumentedGroovyMetaClassHelper +instanceKlass org/gradle/internal/metaobject/BeanDynamicObject$MetaClassAdapter +instanceKlass org/gradle/api/internal/coerce/PropertySetTransformer +instanceKlass org/gradle/api/internal/coerce/MethodArgumentsTransformer +instanceKlass org/codehaus/groovy/runtime/memoize/EvictableCache$Action +instanceKlass java/util/WeakHashMap$HashIterator +instanceKlass java/util/function/BooleanSupplier +instanceKlass jdk/internal/jrtfs/JrtDirectoryStream$1 +instanceKlass jdk/internal/jrtfs/JrtDirectoryStream +instanceKlass jdk/internal/jrtfs/JrtFileAttributes +instanceKlass jdk/internal/jimage/ImageReader$SharedImageReader$LocationVisitor +instanceKlass jdk/internal/jimage/ImageReader$Node +instanceKlass jdk/internal/jrtfs/SystemImage$2 +instanceKlass jdk/internal/jrtfs/SystemImage +instanceKlass jdk/internal/jrtfs/JrtPath +instanceKlass groovy/grape/GrapeIvy +instanceKlass groovy/grape/GrapeEngine +instanceKlass jdk/nio/zipfs/ZipDirectoryStream$1 +instanceKlass jdk/nio/zipfs/ZipDirectoryStream +instanceKlass java/time/chrono/AbstractChronology +instanceKlass jdk/nio/zipfs/ZipUtils +instanceKlass java/nio/file/SimpleFileVisitor +instanceKlass jdk/nio/zipfs/ZipFileSystem$END +instanceKlass jdk/nio/zipfs/ZipConstants +instanceKlass sun/nio/fs/WindowsChannelFactory$2 +instanceKlass sun/nio/fs/WindowsSecurityDescriptor +instanceKlass java/nio/file/attribute/PosixFileAttributeView +instanceKlass jdk/nio/zipfs/ZipFileAttributeView +instanceKlass jdk/nio/zipfs/ZipPath +instanceKlass jdk/nio/zipfs/ZipCoder +instanceKlass sun/nio/fs/WindowsSecurity +instanceKlass sun/nio/fs/AbstractAclFileAttributeView +instanceKlass java/nio/file/attribute/AclFileAttributeView +instanceKlass java/nio/file/attribute/FileOwnerAttributeView +instanceKlass sun/nio/fs/WindowsFileSystemProvider$1 +instanceKlass java/nio/file/attribute/PosixFileAttributes +instanceKlass jdk/nio/zipfs/ZipFileAttributes +instanceKlass jdk/nio/zipfs/ZipFileSystem$IndexNode +instanceKlass sun/nio/fs/WindowsLinkSupport +instanceKlass java/util/AbstractMap$SimpleEntry +instanceKlass jdk/internal/jimage/ImageBufferCache$2 +instanceKlass jdk/internal/jimage/ImageBufferCache +instanceKlass java/nio/file/FileStore +instanceKlass java/nio/channels/AsynchronousFileChannel +instanceKlass java/nio/channels/AsynchronousChannel +instanceKlass java/nio/file/spi/FileSystemProvider$1 +instanceKlass sun/nio/ch/FileChannelImpl$Closer +instanceKlass sun/nio/fs/WindowsChannelFactory$Flags +instanceKlass sun/nio/fs/WindowsChannelFactory$1 +instanceKlass sun/nio/fs/WindowsChannelFactory +instanceKlass sun/nio/fs/WindowsUriSupport +instanceKlass org/codehaus/groovy/vmplugin/v9/ClassFinder +instanceKlass org/apache/groovy/util/Maps +instanceKlass org/codehaus/groovy/GroovyExceptionInterface +instanceKlass groovy/lang/GroovyClassLoader$1 +instanceKlass org/codehaus/groovy/runtime/memoize/CommonCache +instanceKlass java/util/concurrent/locks/StampedLock +instanceKlass org/codehaus/groovy/runtime/memoize/StampedCommonCache +instanceKlass org/codehaus/groovy/runtime/memoize/ValueConvertable +instanceKlass org/codehaus/groovy/control/CompilationUnit$IPrimaryClassNodeOperation +instanceKlass org/codehaus/groovy/control/CompilationUnit$ClassgenCallback +instanceKlass org/codehaus/groovy/runtime/memoize/UnlimitedConcurrentCache +instanceKlass org/codehaus/groovy/runtime/memoize/EvictableCache +instanceKlass org/codehaus/groovy/ast/expr/MethodCall +instanceKlass org/codehaus/groovy/ast/stmt/LoopingStatement +instanceKlass org/codehaus/groovy/control/messages/Message +instanceKlass org/codehaus/groovy/ast/CodeVisitorSupport +instanceKlass org/codehaus/groovy/ast/GroovyClassVisitor +instanceKlass org/codehaus/groovy/transform/ErrorCollecting +instanceKlass org/codehaus/groovy/ast/expr/ExpressionTransformer +instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock +instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock +instanceKlass org/apache/groovy/plugin/GroovyRunnerRegistry +instanceKlass org/codehaus/groovy/runtime/GroovyCategorySupport +instanceKlass java/util/concurrent/locks/ReentrantReadWriteLock +instanceKlass java/util/concurrent/locks/ReadWriteLock +instanceKlass org/codehaus/groovy/util/ComplexKeyHashMap$1 +instanceKlass java/beans/SimpleBeanInfo +instanceKlass java/beans/BeanProperty +instanceKlass com/sun/beans/WildcardTypeImpl +instanceKlass com/sun/beans/introspect/PropertyInfo +instanceKlass com/sun/beans/introspect/EventSetInfo +instanceKlass com/sun/beans/WeakCache +instanceKlass com/sun/beans/TypeResolver +instanceKlass java/beans/MethodRef +instanceKlass com/sun/beans/introspect/MethodInfo$MethodOrder +instanceKlass com/sun/beans/introspect/MethodInfo +instanceKlass com/sun/beans/util/Cache$Ref +instanceKlass com/sun/beans/util/Cache$CacheEntry +instanceKlass com/sun/beans/util/Cache +instanceKlass com/sun/beans/introspect/ClassInfo +instanceKlass javax/swing/SwingContainer +instanceKlass java/beans/JavaBean +instanceKlass com/sun/beans/finder/ClassFinder +instanceKlass com/sun/beans/finder/InstanceFinder +instanceKlass java/beans/WeakIdentityMap +instanceKlass java/beans/ThreadGroupContext +instanceKlass java/beans/BeanInfo +instanceKlass org/codehaus/groovy/reflection/CachedClass$CachedMethodComparatorWithString +instanceKlass org/codehaus/groovy/util/AbstractConcurrentMapBase +instanceKlass groovyjarjarasm/asm/ClassVisitor +instanceKlass groovy/lang/ExpandoMetaClass$Callable +instanceKlass org/codehaus/groovy/runtime/MethodKey +instanceKlass groovy/lang/ClosureInvokingMethod +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaMethodIndex$Header +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaMethodIndex$Entry +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaMethodIndex$EntryIterator +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaMethodIndex +instanceKlass org/codehaus/groovy/util/SingleKeyHashMap$Copier +instanceKlass groovy/lang/MetaClassImpl$MethodIndexAction +instanceKlass org/codehaus/groovy/runtime/GeneratedClosure +instanceKlass groovy/lang/MetaClassImpl +instanceKlass groovy/lang/MutableMetaClass +instanceKlass org/gradle/api/internal/provider/MapPropertyExtensions +instanceKlass org/w3c/dom/Document +instanceKlass org/w3c/dom/UserDataHandler +instanceKlass org/w3c/dom/NamedNodeMap +instanceKlass org/w3c/dom/TypeInfo +instanceKlass org/w3c/dom/Attr +instanceKlass org/w3c/dom/Element +instanceKlass org/w3c/dom/Node +instanceKlass org/w3c/dom/NodeList +instanceKlass org/apache/groovy/xml/extensions/XmlExtensions +instanceKlass java/sql/SQLXML +instanceKlass java/sql/RowId +instanceKlass java/sql/NClob +instanceKlass java/sql/Statement +instanceKlass java/sql/Clob +instanceKlass java/sql/Blob +instanceKlass java/sql/SQLType +instanceKlass java/sql/Array +instanceKlass java/sql/Ref +instanceKlass groovy/sql/GroovyResultSet +instanceKlass java/sql/ResultSet +instanceKlass java/sql/ResultSetMetaData +instanceKlass java/sql/Wrapper +instanceKlass org/apache/groovy/sql/extensions/SqlExtensions +instanceKlass java/nio/file/WatchEvent$Modifier +instanceKlass java/nio/file/WatchKey +instanceKlass java/nio/file/WatchEvent$Kind +instanceKlass java/nio/file/WatchService +instanceKlass org/apache/groovy/dateutil/extensions/DateUtilStaticExtensions +instanceKlass org/apache/groovy/dateutil/extensions/DateUtilExtensions +instanceKlass java/time/chrono/Era +instanceKlass java/time/chrono/Chronology +instanceKlass java/time/format/DateTimeFormatter +instanceKlass java/time/temporal/TemporalQuery +instanceKlass java/time/MonthDay +instanceKlass java/time/Year +instanceKlass java/time/Period +instanceKlass java/time/OffsetTime +instanceKlass java/time/Instant +instanceKlass java/time/ZonedDateTime +instanceKlass java/time/chrono/ChronoZonedDateTime +instanceKlass java/time/OffsetDateTime +instanceKlass java/time/YearMonth +instanceKlass java/time/chrono/ChronoPeriod +instanceKlass org/apache/groovy/datetime/extensions/DateTimeStaticExtensions +instanceKlass org/apache/groovy/datetime/extensions/DateTimeExtensions +instanceKlass org/gradle/api/artifacts/ProjectDependency +instanceKlass org/gradle/api/artifacts/SelfResolvingDependency +instanceKlass org/gradle/api/artifacts/DependencyArtifact +instanceKlass org/gradle/api/artifacts/dsl/DependencyModifier +instanceKlass org/gradle/api/artifacts/DependencyConstraint +instanceKlass org/gradle/api/provider/ProviderConvertible +instanceKlass org/gradle/api/artifacts/ExternalModuleDependency +instanceKlass org/gradle/api/artifacts/ExternalDependency +instanceKlass org/gradle/api/artifacts/ModuleVersionSelector +instanceKlass org/gradle/api/artifacts/ModuleDependency +instanceKlass org/gradle/api/artifacts/dsl/Dependencies +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DependenciesExtensionModule +instanceKlass org/codehaus/groovy/runtime/metaclass/MethodHelper +instanceKlass java/awt/LayoutManager +instanceKlass javax/swing/ButtonModel +instanceKlass javax/swing/AbstractButton$Handler +instanceKlass javax/swing/event/ChangeListener +instanceKlass javax/swing/Icon +instanceKlass javax/swing/event/TableModelListener +instanceKlass javax/swing/MenuSelectionManager +instanceKlass javax/swing/event/TableColumnModelListener +instanceKlass javax/swing/ListSelectionModel +instanceKlass javax/swing/TransferHandler$DropLocation +instanceKlass javax/swing/InputVerifier +instanceKlass javax/swing/AncestorNotifier +instanceKlass java/beans/VetoableChangeListener +instanceKlass javax/swing/ArrayTable +instanceKlass javax/swing/ActionMap +instanceKlass javax/swing/InputMap +instanceKlass javax/swing/border/Border +instanceKlass java/awt/AWTKeyStroke +instanceKlass javax/swing/plaf/ComponentUI +instanceKlass javax/swing/event/AncestorListener +instanceKlass javax/swing/TransferHandler +instanceKlass java/awt/event/ItemListener +instanceKlass java/awt/FontMetrics +instanceKlass java/awt/Color +instanceKlass java/awt/Paint +instanceKlass javax/accessibility/AccessibleContext +instanceKlass java/beans/PropertyChangeListener +instanceKlass javax/accessibility/AccessibleStateSet +instanceKlass sun/awt/RequestFocusController +instanceKlass java/awt/im/InputMethodRequests +instanceKlass java/awt/image/BufferStrategy +instanceKlass java/awt/Insets +instanceKlass java/awt/dnd/DropTarget +instanceKlass java/awt/dnd/DropTargetListener +instanceKlass java/awt/peer/ComponentPeer +instanceKlass java/awt/event/MouseWheelListener +instanceKlass java/awt/event/HierarchyBoundsListener +instanceKlass java/awt/event/HierarchyListener +instanceKlass java/awt/event/InputMethodListener +instanceKlass java/awt/event/MouseMotionListener +instanceKlass java/awt/event/MouseListener +instanceKlass java/awt/event/KeyListener +instanceKlass java/awt/event/FocusListener +instanceKlass java/awt/event/ComponentListener +instanceKlass sun/awt/ComponentFactory +instanceKlass java/awt/BufferCapabilities +instanceKlass java/awt/ImageCapabilities +instanceKlass java/awt/image/ImageProducer +instanceKlass java/awt/Cursor +instanceKlass java/awt/image/ColorModel +instanceKlass java/awt/Transparency +instanceKlass java/awt/im/InputContext +instanceKlass java/awt/Toolkit +instanceKlass sun/java2d/pipe/Region +instanceKlass java/awt/ComponentOrientation +instanceKlass java/awt/PointerInfo +instanceKlass java/awt/GraphicsConfiguration +instanceKlass java/util/EventObject +instanceKlass java/awt/geom/RectangularShape +instanceKlass java/awt/Shape +instanceKlass java/awt/geom/Point2D +instanceKlass java/awt/geom/Dimension2D +instanceKlass java/awt/Graphics +instanceKlass java/awt/Font +instanceKlass java/awt/Event +instanceKlass java/awt/MenuComponent +instanceKlass java/awt/Image +instanceKlass javax/swing/table/TableColumn +instanceKlass javax/swing/Action +instanceKlass javax/swing/table/AbstractTableModel +instanceKlass javax/swing/ButtonGroup +instanceKlass javax/swing/table/TableModel +instanceKlass javax/swing/MenuElement +instanceKlass javax/swing/tree/TreePath +instanceKlass javax/swing/table/TableColumnModel +instanceKlass javax/swing/tree/DefaultMutableTreeNode +instanceKlass javax/swing/MutableComboBoxModel +instanceKlass javax/swing/ComboBoxModel +instanceKlass javax/swing/AbstractListModel +instanceKlass javax/swing/SwingConstants +instanceKlass java/awt/Component +instanceKlass java/awt/MenuContainer +instanceKlass java/awt/image/ImageObserver +instanceKlass javax/swing/TransferHandler$HasGetTransferHandler +instanceKlass javax/accessibility/Accessible +instanceKlass java/awt/event/ActionListener +instanceKlass javax/swing/event/ListDataListener +instanceKlass java/awt/ItemSelectable +instanceKlass javax/swing/tree/MutableTreeNode +instanceKlass javax/swing/tree/TreeNode +instanceKlass javax/swing/ListModel +instanceKlass org/apache/groovy/swing/extensions/SwingExtensions +instanceKlass org/codehaus/groovy/runtime/m12n/ExtensionModule +instanceKlass org/codehaus/groovy/runtime/m12n/PropertiesModuleFactory +instanceKlass org/codehaus/groovy/util/URLStreams +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl$DefaultModuleListener +instanceKlass org/codehaus/groovy/runtime/m12n/ExtensionModuleScanner +instanceKlass java/util/ResourceBundle$CacheKey +instanceKlass org/codehaus/groovy/runtime/DefaultGroovyStaticMethods +instanceKlass org/codehaus/groovy/runtime/RangeInfo +instanceKlass java/util/function/ToDoubleFunction +instanceKlass java/util/function/ToLongFunction +instanceKlass java/util/function/ToIntFunction +instanceKlass java/util/function/DoubleFunction +instanceKlass java/util/function/DoublePredicate +instanceKlass java/util/function/LongPredicate +instanceKlass java/util/stream/DoubleStream +instanceKlass java/util/stream/LongStream +instanceKlass java/util/OptionalLong +instanceKlass java/util/OptionalDouble +instanceKlass org/codehaus/groovy/runtime/NumberAwareComparator +instanceKlass org/codehaus/groovy/runtime/EncodingGroovyMethods +instanceKlass org/codehaus/groovy/runtime/DefaultGroovyMethodsSupport +instanceKlass java/lang/ProcessHandle +instanceKlass java/lang/ProcessHandle$Info +instanceKlass org/codehaus/groovy/runtime/MetaClassHelper +instanceKlass org/codehaus/groovy/reflection/CachedMethod$MyComparator +instanceKlass sun/nio/fs/ExtendedFileSystemProvider +instanceKlass org/codehaus/groovy/ast/Variable +instanceKlass groovyjarjarasm/asm/Opcodes +instanceKlass org/codehaus/groovy/vmplugin/v8/Java8 +instanceKlass org/codehaus/groovy/vmplugin/VMPlugin +instanceKlass org/codehaus/groovy/vmplugin/VMPluginFactory +instanceKlass org/codehaus/groovy/reflection/ReflectionUtils +instanceKlass org/codehaus/groovy/runtime/memoize/MemoizeCache +instanceKlass java/lang/invoke/MethodHandleImpl$BindCaller +instanceKlass org/codehaus/groovy/transform/trait/Traits$Implemented +instanceKlass org/codehaus/groovy/util/ReferenceType$HardRef +instanceKlass org/codehaus/groovy/util/ManagedReference +instanceKlass org/codehaus/groovy/reflection/ClassInfo$GlobalClassSet +instanceKlass org/apache/groovy/util/SystemUtil +instanceKlass org/codehaus/groovy/reflection/GroovyClassValue +instanceKlass org/codehaus/groovy/reflection/GroovyClassValueFactory +instanceKlass org/codehaus/groovy/reflection/ClassInfo$1 +instanceKlass org/codehaus/groovy/reflection/CachedClass +instanceKlass org/codehaus/groovy/reflection/GroovyClassValue$ComputeValue +instanceKlass org/codehaus/groovy/util/ComplexKeyHashMap$Entry +instanceKlass org/codehaus/groovy/util/ComplexKeyHashMap$EntryIterator +instanceKlass org/codehaus/groovy/util/ComplexKeyHashMap +instanceKlass org/codehaus/groovy/reflection/ReflectionCache +instanceKlass java/util/Timer +instanceKlass java/util/TimerTask +instanceKlass groovy/lang/groovydoc/Groovydoc +instanceKlass groovy/lang/ListWithDefault +instanceKlass groovy/lang/Range +instanceKlass groovy/util/BufferedIterator +instanceKlass java/util/BitSet +instanceKlass org/codehaus/groovy/reflection/GeneratedMetaMethod$DgmMethodRecord +instanceKlass groovy/lang/MetaClassRegistry$MetaClassCreationHandle +instanceKlass org/codehaus/groovy/runtime/m12n/ExtensionModuleRegistry +instanceKlass org/codehaus/groovy/util/Reference +instanceKlass org/codehaus/groovy/util/ReferenceManager +instanceKlass org/codehaus/groovy/util/ReferenceBundle +instanceKlass org/codehaus/groovy/util/ManagedConcurrentLinkedQueue +instanceKlass org/codehaus/groovy/util/FastArray +instanceKlass groovy/lang/MetaClassRegistryChangeEventListener +instanceKlass java/util/EventListener +instanceKlass org/codehaus/groovy/reflection/ParameterTypes +instanceKlass org/codehaus/groovy/runtime/m12n/ExtensionModuleScanner$ExtensionModuleListener +instanceKlass org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl +instanceKlass org/codehaus/groovy/runtime/InvokerHelper +instanceKlass org/gradle/internal/classpath/intercept/PropertyAwareCallInterceptor +instanceKlass org/gradle/internal/classpath/intercept/SignatureAwareCallInterceptor +instanceKlass com/google/common/collect/TransformedIterator +instanceKlass org/gradle/launcher/daemon/server/DaemonRegistryUnavailableExpirationStrategy$1 +instanceKlass org/gradle/internal/classpath/intercept/InterceptScope +instanceKlass org/gradle/internal/classpath/intercept/Invocation +instanceKlass org/gradle/internal/classpath/intercept/AbstractCallInterceptor +instanceKlass org/gradle/launcher/daemon/registry/PersistentDaemonRegistry$1 +instanceKlass org/gradle/launcher/daemon/server/health/gc/GarbageCollectionStats +instanceKlass org/gradle/internal/classpath/intercept/FilterableCallInterceptor +instanceKlass java/util/concurrent/LinkedBlockingDeque$AbstractItr +instanceKlass java/lang/Process +instanceKlass java/lang/ProcessBuilder +instanceKlass org/gradle/internal/classpath/intercept/CallInterceptor +instanceKlass org/gradle/internal/classpath/intercept/DefaultCallSiteDecorator +instanceKlass org/gradle/internal/classpath/intercept/CallInterceptorResolver +instanceKlass org/gradle/internal/classpath/MethodHandleUtils +instanceKlass kotlin/io/FilesKt__FilePathComponentsKt +instanceKlass org/gradle/internal/configuration/inputs/AccessTrackingProperties$Listener +instanceKlass org/gradle/internal/instrumentation/api/types/FilterableBytecodeInterceptorFactory$BytecodeUpgradeInterceptorFactory +instanceKlass org/gradle/internal/instrumentation/api/types/FilterableBytecodeInterceptor$BytecodeUpgradeInterceptor +instanceKlass org/gradle/internal/instrumentation/api/types/FilterableBytecodeInterceptorFactory$InstrumentationInterceptorFactory +instanceKlass org/gradle/internal/instrumentation/api/types/FilterableBytecodeInterceptorFactory +instanceKlass org/gradle/internal/instrumentation/api/types/FilterableBytecodeInterceptor$InstrumentationInterceptor +instanceKlass org/gradle/internal/instrumentation/api/types/FilterableBytecodeInterceptor +instanceKlass java/util/stream/Nodes$ArrayNode +instanceKlass org/codehaus/groovy/runtime/callsite/AbstractCallSite +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$NoOpBuilder +instanceKlass groovy/transform/Internal +instanceKlass java/beans/Transient +instanceKlass org/gradle/process/ExecResult +instanceKlass org/gradle/api/resources/ResourceHandler +instanceKlass org/codehaus/groovy/reflection/ClassInfo +instanceKlass org/codehaus/groovy/util/Finalizable +instanceKlass org/codehaus/groovy/runtime/callsite/CallSiteArray +instanceKlass org/codehaus/groovy/runtime/callsite/CallSite +instanceKlass com/google/common/collect/Count +instanceKlass org/gradle/api/internal/initialization/loadercache/DefaultClassLoaderCache$CachedClassLoader +instanceKlass org/gradle/initialization/ClassLoaderScopeOrigin$Script +instanceKlass org/gradle/groovy/scripts/internal/BuildScriptData +instanceKlass org/gradle/internal/fingerprint/impl/DefaultFileSystemLocationFingerprint$1 +instanceKlass org/gradle/internal/fingerprint/impl/DefaultFileSystemLocationFingerprint +instanceKlass org/gradle/internal/io/IoSupplier +instanceKlass org/gradle/api/internal/changedetection/state/DefaultRegularFileSnapshotContext +instanceKlass org/gradle/internal/snapshot/PathUtil$1 +instanceKlass org/gradle/internal/snapshot/AbstractStorePathRelationshipHandler +instanceKlass org/gradle/internal/snapshot/AbstractIncompleteFileSystemNode$2 +instanceKlass org/gradle/api/internal/initialization/ClassLoaderScopeIdentifier$Id +instanceKlass org/gradle/model/dsl/internal/transform/ClosureCreationInterceptingVerifier +instanceKlass org/gradle/groovy/scripts/internal/FactoryBackedCompileOperation +instanceKlass org/gradle/groovy/scripts/internal/BuildScriptTransformer$1 +instanceKlass org/gradle/groovy/scripts/internal/BuildScriptTransformer +instanceKlass org/gradle/api/internal/plugins/DefaultPluginManager$3 +instanceKlass org/gradle/api/plugins/AppliedPlugin +instanceKlass org/gradle/api/internal/plugins/ApplyPluginBuildOperationType$Result +instanceKlass org/gradle/api/internal/plugins/DefaultPluginManager +instanceKlass org/gradle/api/internal/plugins/ImperativeOnlyPluginTarget +instanceKlass org/gradle/api/internal/plugins/PluginTarget +instanceKlass org/gradle/groovy/scripts/internal/DefaultScriptRunnerFactory$ScriptRunnerImpl +instanceKlass org/gradle/groovy/scripts/internal/CrossBuildInMemoryCachingScriptClassCache$CachedCompiledScript +instanceKlass org/gradle/internal/classloader/ImplementationHashAware +instanceKlass org/gradle/groovy/scripts/internal/DefaultScriptCompilationHandler$ClassesDirCompiledScript +instanceKlass org/gradle/internal/fingerprint/classpath/impl/ClasspathFingerprintingStrategy$ClasspathFingerprintingVisitor$1 +instanceKlass org/gradle/internal/fingerprint/hashing/RegularFileSnapshotContext +instanceKlass org/gradle/internal/fingerprint/classpath/impl/ClasspathFingerprintingStrategy$ClasspathFingerprintingVisitor +instanceKlass org/gradle/internal/snapshot/DirectorySnapshot$2 +instanceKlass org/gradle/internal/snapshot/FileSystemSnapshot$1 +instanceKlass org/gradle/internal/fingerprint/impl/DefaultCurrentFileCollectionFingerprint +instanceKlass org/gradle/internal/classpath/types/InstrumentationTypeRegistry$EmptyInstrumentationTypeRegistry +instanceKlass org/gradle/internal/classpath/DefaultCachedClasspathTransformer$ValueOrTransformProvider +instanceKlass org/gradle/internal/classpath/ClasspathFileHasher +instanceKlass org/gradle/internal/classpath/CustomClasspathFileTransformer +instanceKlass org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler$1 +instanceKlass org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler$GroovyScriptCompilationAndInstrumentation$GroovyScriptCompilationOutput +instanceKlass org/gradle/internal/Try +instanceKlass org/gradle/internal/execution/ExecutionEngine$Execution$1 +instanceKlass org/gradle/internal/execution/history/impl/DefaultExecutionOutputState +instanceKlass org/gradle/internal/execution/history/ImmutableWorkspaceMetadata +instanceKlass org/gradle/caching/internal/origin/OriginMetadata +instanceKlass java/util/stream/Streams$RangeIntSpliterator +instanceKlass com/google/common/collect/CollectSpliterators$1WithCharacteristics +instanceKlass com/google/common/collect/CollectSpliterators +instanceKlass org/gradle/internal/fingerprint/impl/DefaultFileCollectionSnapshotter$1 +instanceKlass org/gradle/internal/snapshot/CompositeFileSystemSnapshot +instanceKlass org/gradle/internal/snapshot/SnapshotUtil$1 +instanceKlass org/gradle/internal/fingerprint/impl/DefaultFileCollectionSnapshotter$SnapshottingVisitor +instanceKlass org/gradle/internal/execution/UnitOfWork$OutputFileValueSupplier +instanceKlass org/gradle/internal/execution/UnitOfWork$FileValueSupplier +instanceKlass org/gradle/api/tasks/TaskDependency +instanceKlass org/gradle/internal/execution/impl/DefaultOutputSnapshotter$1 +instanceKlass org/gradle/internal/execution/steps/AssignImmutableWorkspaceStep$2 +instanceKlass org/gradle/internal/snapshot/SnapshotUtil$2 +instanceKlass org/gradle/internal/snapshot/FileSystemLocationSnapshot$FileSystemLocationSnapshotTransformer +instanceKlass org/gradle/internal/snapshot/SnapshotUtil +instanceKlass org/gradle/internal/snapshot/SnapshotHierarchy$SnapshotDiffListener +instanceKlass org/gradle/internal/snapshot/AbstractIncompleteFileSystemNode +instanceKlass org/gradle/internal/watch/registry/impl/SnapshotCollectingDiffListener +instanceKlass org/gradle/internal/vfs/impl/AbstractVirtualFileSystem$UpdateFunction +instanceKlass org/gradle/internal/snapshot/AbstractListChildMap +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache$DataBlockUpdateResult +instanceKlass org/gradle/api/internal/changedetection/state/CachingFileHasher$FileInfo +instanceKlass org/gradle/internal/io/StreamByteBuffer$StreamByteBufferChunk +instanceKlass org/gradle/internal/io/StreamByteBuffer +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache$Lookup +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache$IndexEntry +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache$IndexRoot +instanceKlass com/google/common/primitives/Longs +instanceKlass org/gradle/cache/internal/btree/FreeListBlockStore$FreeListEntry +instanceKlass org/gradle/cache/internal/btree/BlockPointer +instanceKlass org/gradle/cache/internal/btree/ByteInput +instanceKlass org/gradle/cache/internal/btree/ByteOutput +instanceKlass org/gradle/internal/snapshot/ChildMap$Entry$PathRelationshipHandler +instanceKlass org/gradle/internal/snapshot/SingletonChildMap +instanceKlass org/gradle/internal/snapshot/ChildMapFactory +instanceKlass org/gradle/internal/snapshot/ChildMap$Entry +instanceKlass org/gradle/internal/snapshot/ChildMap$InvalidationHandler +instanceKlass org/gradle/internal/snapshot/MerkleDirectorySnapshotBuilder$Directory +instanceKlass java/nio/file/Files$3 +instanceKlass java/nio/file/FileTreeWalker$Event +instanceKlass java/nio/file/FileTreeWalker$DirectoryNode +instanceKlass java/nio/file/FileTreeWalker +instanceKlass org/gradle/internal/snapshot/MerkleDirectorySnapshotBuilder +instanceKlass org/gradle/internal/snapshot/impl/FilteredTrackingMerkleDirectorySnapshotBuilder +instanceKlass org/gradle/internal/snapshot/DirectorySnapshotBuilder +instanceKlass org/gradle/internal/snapshot/RelativePathTracker +instanceKlass org/gradle/internal/RelativePathSupplier +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotterStatistics$CollectingFileVisitor +instanceKlass org/gradle/internal/vfs/impl/DefaultFileSystemAccess$1 +instanceKlass org/gradle/internal/file/impl/DefaultFileMetadata$1 +instanceKlass org/gradle/internal/file/impl/DefaultFileMetadata +instanceKlass org/gradle/internal/file/FileMetadata +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/NativePlatformBackedFileMetadataAccessor$1 +instanceKlass net/rubygrapefruit/platform/internal/WindowsFileTime +instanceKlass net/rubygrapefruit/platform/internal/jni/WindowsFileFunctions +instanceKlass net/rubygrapefruit/platform/internal/WindowsFileStat +instanceKlass org/gradle/cache/internal/btree/FreeListBlockStore$2 +instanceKlass org/gradle/cache/internal/btree/FreeListBlockStore$1 +instanceKlass org/gradle/internal/vfs/impl/VersionHierarchy$1 +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache$2 +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache$1 +instanceKlass org/gradle/cache/internal/btree/FreeListBlockStore +instanceKlass org/gradle/internal/snapshot/PathUtil +instanceKlass org/gradle/cache/internal/btree/StateCheckBlockStore +instanceKlass org/gradle/internal/snapshot/VfsRelativePath +instanceKlass org/gradle/cache/internal/btree/Block +instanceKlass org/gradle/cache/internal/btree/FileBackedBlockStore +instanceKlass org/gradle/internal/vfs/VirtualFileSystem$VfsStorer +instanceKlass org/gradle/internal/vfs/VirtualFileSystem$StoringAction +instanceKlass org/gradle/cache/internal/btree/CachingBlockStore +instanceKlass org/gradle/internal/snapshot/SnapshottingFilter$1 +instanceKlass org/gradle/cache/internal/btree/KeyHasher +instanceKlass org/gradle/internal/snapshot/SnapshottingFilter +instanceKlass org/gradle/cache/internal/btree/BlockStore$Factory +instanceKlass org/gradle/cache/internal/btree/BlockPayload +instanceKlass org/gradle/cache/internal/btree/BlockStore +instanceKlass org/gradle/cache/internal/ExclusiveCacheAccessingWorker$1 +instanceKlass org/gradle/cache/internal/ExclusiveCacheAccessingWorker$FlushOperationsCommand +instanceKlass org/gradle/internal/execution/workspace/impl/CacheBasedImmutableWorkspaceProvider$1 +instanceKlass org/gradle/cache/internal/ExclusiveCacheAccessingWorker$ShutdownOperationsCommand +instanceKlass sun/nio/fs/WindowsPath$1 +instanceKlass org/gradle/internal/execution/steps/IdentifyStep$1 +instanceKlass org/gradle/internal/execution/steps/IdentifyStep$Operation$Result +instanceKlass org/gradle/internal/execution/UnitOfWork$Identity +instanceKlass org/gradle/internal/execution/impl/DefaultInputFingerprinter$InputFingerprints +instanceKlass org/gradle/internal/execution/UnitOfWork$ValueSupplier +instanceKlass org/gradle/internal/execution/InputFingerprinter$Result +instanceKlass org/gradle/internal/execution/impl/DefaultInputFingerprinter$InputCollectingVisitor +instanceKlass org/gradle/internal/execution/steps/BuildOperationStep$1 +instanceKlass org/gradle/internal/execution/steps/IdentifyStep$2 +instanceKlass org/gradle/internal/execution/steps/IdentifyStep$Operation$Details +instanceKlass org/gradle/internal/execution/impl/DefaultWorkValidationContext +instanceKlass org/gradle/internal/execution/impl/DefaultExecutionEngine$1 +instanceKlass org/gradle/internal/execution/UnitOfWork$WorkOutput +instanceKlass org/gradle/internal/scripts/BuildScriptCompilationAndInstrumentation +instanceKlass org/gradle/internal/execution/ImmutableUnitOfWork +instanceKlass com/google/common/io/ByteArrayDataOutput +instanceKlass com/google/common/io/ByteArrayDataInput +instanceKlass com/google/common/io/ByteStreams +instanceKlass java/math/MutableBigInteger +instanceKlass org/gradle/groovy/scripts/internal/ScriptCacheKey +instanceKlass org/gradle/groovy/scripts/internal/NoDataCompileOperation +instanceKlass java/util/zip/ZipFile$ZipEntryIterator +instanceKlass org/codehaus/groovy/control/CompilationUnit$SourceUnitOperation +instanceKlass org/codehaus/groovy/control/CompilationUnit$ISourceUnitOperation +instanceKlass org/codehaus/groovy/control/CompilationUnit$PhaseOperation +instanceKlass org/gradle/groovy/scripts/internal/Permits +instanceKlass org/codehaus/groovy/ast/GroovyCodeVisitor +instanceKlass org/gradle/plugin/use/internal/PluginUseScriptBlockMetadataCompiler +instanceKlass org/codehaus/groovy/ast/ASTNode +instanceKlass org/codehaus/groovy/ast/NodeMetaDataHandler +instanceKlass groovy/lang/groovydoc/GroovydocHolder +instanceKlass org/gradle/groovy/scripts/internal/InitialPassStatementTransformer +instanceKlass org/gradle/internal/resource/CachingTextResource +instanceKlass org/gradle/groovy/scripts/DelegatingScriptSource +instanceKlass org/gradle/groovy/scripts/DefaultScriptCompilerFactory$ScriptCompilerImpl +instanceKlass org/gradle/configuration/DefaultScriptTarget +instanceKlass org/gradle/util/internal/TextUtil$1 +instanceKlass org/gradle/util/internal/TextUtil +instanceKlass org/gradle/configuration/BuildOperationScriptPlugin$OperationDetails +instanceKlass org/gradle/configuration/BuildOperationScriptPlugin$1 +instanceKlass org/gradle/internal/code/DefaultUserCodeApplicationContext$CurrentApplication +instanceKlass org/gradle/internal/code/UserCodeApplicationContext$Application +instanceKlass org/gradle/internal/code/UserCodeApplicationId +instanceKlass org/gradle/internal/code/DefaultUserCodeSource +instanceKlass org/gradle/configuration/BuildOperationScriptPlugin$2 +instanceKlass org/gradle/internal/code/UserCodeSource +instanceKlass org/gradle/configuration/ApplyScriptPluginBuildOperationType$Result +instanceKlass org/gradle/configuration/BuildOperationScriptPlugin +instanceKlass org/gradle/internal/scripts/GradleScript +instanceKlass org/gradle/api/Script +instanceKlass org/gradle/configuration/ScriptTarget +instanceKlass org/gradle/configuration/DefaultScriptPluginFactory$ScriptPluginImpl +instanceKlass org/gradle/api/attributes/DocsType +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemAttributesDescriber +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$TargetJvmEnvironmentDisambiguationRules +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$TargetJvmEnvironmentCompatibilityRules +instanceKlass org/gradle/api/attributes/java/TargetJvmEnvironment +instanceKlass org/gradle/api/internal/attributes/DefaultOrderedDisambiguationRule +instanceKlass org/gradle/api/internal/attributes/DefaultOrderedCompatibilityRule +instanceKlass org/gradle/api/internal/attributes/AttributeMatchingRules +instanceKlass org/gradle/api/attributes/java/TargetJvmVersion +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$BundlingDisambiguationRules +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$BundlingCompatibilityRules +instanceKlass org/gradle/api/attributes/Bundling +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$LibraryElementsDisambiguationRules +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$LibraryElementsCompatibilityRules +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$1 +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$UsageDisambiguationRules +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport$UsageCompatibilityRules +instanceKlass org/gradle/api/internal/artifacts/JavaEcosystemSupport +instanceKlass org/gradle/internal/locking/DefaultDependencyLockingHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/DefaultRootComponentMetadataBuilder$MetadataHolder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/RootComponentMetadataBuilder$RootComponentState +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfigurationRole +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationRoles +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationRole +instanceKlass org/gradle/api/internal/file/AbstractFileCollection +instanceKlass org/gradle/api/internal/initialization/ResettableConfiguration +instanceKlass org/gradle/api/internal/artifacts/configurations/MutationValidator +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationInternal +instanceKlass org/gradle/internal/deprecation/DeprecatableConfiguration +instanceKlass org/gradle/api/internal/artifacts/ResolveContext +instanceKlass org/gradle/api/artifacts/ConsumableConfiguration +instanceKlass org/gradle/api/artifacts/ResolvableConfiguration +instanceKlass org/gradle/api/artifacts/DependencyScopeConfiguration +instanceKlass org/gradle/internal/artifacts/configurations/AbstractRoleBasedConfigurationCreationRequest +instanceKlass org/gradle/api/internal/artifacts/configurations/RoleBasedConfigurationCreationRequest +instanceKlass org/gradle/api/internal/AbstractTask +instanceKlass org/gradle/api/internal/TaskInternal +instanceKlass org/gradle/api/internal/file/copy/CopySpecSource +instanceKlass org/gradle/api/file/CopySpec +instanceKlass org/gradle/api/file/CopyProcessingSpec +instanceKlass org/gradle/api/file/ContentFilterable +instanceKlass org/gradle/api/file/CopySourceSpec +instanceKlass org/gradle/api/artifacts/ConfigurablePublishArtifact +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ShortCircuitEmptyConfigurationResolver +instanceKlass org/gradle/api/artifacts/ResolvedConfiguration +instanceKlass org/gradle/api/internal/artifacts/ivyservice/LenientConfigurationInternal +instanceKlass org/gradle/api/internal/artifacts/ResolverResults$LegacyResolverResults$LegacyVisitedArtifactSet +instanceKlass org/gradle/api/artifacts/LenientConfiguration +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/oldresult/ResolvedConfigurationBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/VisitedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/results/VisitedGraphResults +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/DependencyArtifactsVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/DependencyGraphVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultConfigurationResolver +instanceKlass org/gradle/api/internal/file/DefaultFileSystemLocation +instanceKlass org/gradle/api/resources/TextResource +instanceKlass org/gradle/internal/locking/LockFileReaderWriter +instanceKlass org/gradle/api/internal/provider/AbstractCollectionProperty$NoValueSupplier +instanceKlass org/gradle/api/internal/provider/AbstractCollectionProperty$EmptySupplier +instanceKlass org/gradle/api/internal/provider/ValidatingValueCollector +instanceKlass org/gradle/api/internal/lambdas/SerializableLambdas$SerializableSupplier +instanceKlass org/gradle/api/internal/provider/CollectionSupplier +instanceKlass org/gradle/api/internal/file/FileSystemLocationPropertyInternal +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/LockEntryFilter +instanceKlass org/gradle/internal/locking/LockEntryFilterFactory +instanceKlass org/gradle/internal/locking/DependencyLockingNotationConverter +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DependencyLockingState +instanceKlass org/gradle/internal/locking/DefaultDependencyLockingProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ChangingValueDependencyResolutionListener$1 +instanceKlass org/gradle/api/internal/artifacts/configurations/dynamicversion/Expiry +instanceKlass org/gradle/api/artifacts/component/ModuleComponentSelector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ChangingValueDependencyResolutionListener +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildScopeServices$2 +instanceKlass org/gradle/api/artifacts/ComponentMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ResolvedArtifactCaches +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/InMemoryModuleArtifactCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/DefaultModuleArtifactCache$CachedArtifactSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/DefaultModuleArtifactCache$ArtifactAtRepositoryKeySerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/CachedArtifact +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/CachedArtifacts +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleMetadataStore +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleMetadataCache$CachedMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/dynamicversions/ModuleVersionsCache$CachedModuleVersionList +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildScopeServices$1 +instanceKlass it/unimi/dsi/fastutil/longs/Long2ObjectFunctions$SynchronizedFunction +instanceKlass it/unimi/dsi/fastutil/longs/Long2ObjectMaps +instanceKlass it/unimi/dsi/fastutil/HashCommon +instanceKlass it/unimi/dsi/fastutil/longs/Long2ObjectMap$FastEntrySet +instanceKlass it/unimi/dsi/fastutil/objects/ObjectSet +instanceKlass it/unimi/dsi/fastutil/longs/LongSet +instanceKlass it/unimi/dsi/fastutil/longs/LongCollection +instanceKlass it/unimi/dsi/fastutil/longs/LongIterable +instanceKlass it/unimi/dsi/fastutil/objects/ObjectCollection +instanceKlass it/unimi/dsi/fastutil/objects/ObjectIterable +instanceKlass it/unimi/dsi/fastutil/longs/AbstractLong2ObjectFunction +instanceKlass it/unimi/dsi/fastutil/Hash +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildScopeServices$3 +instanceKlass org/gradle/api/internal/artifacts/verification/signatures/SignatureVerificationService +instanceKlass org/gradle/security/internal/PublicKeyService +instanceKlass org/gradle/api/internal/artifacts/verification/signatures/DefaultSignatureVerificationServiceFactory +instanceKlass org/gradle/internal/model/CalculatedValueContainerFactory$DefaultCalculatedValueCache +instanceKlass org/gradle/api/internal/attributes/AbstractAttributeContainer +instanceKlass org/gradle/api/internal/artifacts/type/DefaultArtifactTypeRegistry +instanceKlass org/gradle/api/internal/artifacts/transform/TransformedProjectArtifactSet +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSet$Artifacts +instanceKlass org/gradle/api/internal/artifacts/transform/AbstractTransformedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/transform/TransformedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/transform/TransformUpstreamDependenciesResolverFactory +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformedVariantFactory$Factory +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$TransformCache +instanceKlass org/gradle/api/internal/attributes/DefaultAttributesSchema$DefaultAttributeSelectionSchema +instanceKlass org/gradle/internal/component/model/DefaultAttributeMatcher +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder$CachingAttributeMatcher +instanceKlass org/gradle/api/artifacts/transform/TransformParameters$None +instanceKlass org/gradle/api/artifacts/transform/TransformParameters +instanceKlass org/gradle/api/artifacts/transform/TransformAction +instanceKlass org/gradle/api/artifacts/transform/TransformSpec +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultVariantTransformRegistry$RecordingRegistration +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultVariantTransformRegistry +instanceKlass org/gradle/api/internal/artifacts/TransformRegistration +instanceKlass org/gradle/api/internal/artifacts/transform/Transform +instanceKlass org/gradle/internal/properties/PropertyVisitor +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformRegistrationFactory +instanceKlass org/gradle/api/reflect/InjectionPointQualifier +instanceKlass org/gradle/internal/properties/annotations/AbstractTypeMetadataWalker +instanceKlass org/gradle/internal/properties/annotations/TypeMetadataWalker$StaticMetadataWalker +instanceKlass org/gradle/internal/properties/annotations/TypeMetadataWalker$InstanceMetadataWalker +instanceKlass org/gradle/internal/properties/annotations/TypeMetadataWalker +instanceKlass org/gradle/api/internal/tasks/properties/ScriptSourceAwareImplementationResolver +instanceKlass org/gradle/internal/properties/annotations/TypeMetadataWalker$TypeMetadataVisitor +instanceKlass org/gradle/internal/properties/bean/DefaultPropertyWalker +instanceKlass org/gradle/internal/properties/annotations/TypeMetadata +instanceKlass org/gradle/internal/properties/annotations/PropertyMetadata +instanceKlass org/gradle/internal/properties/annotations/DefaultTypeMetadataStore +instanceKlass org/gradle/api/internal/tasks/properties/DefaultPropertyTypeResolver +instanceKlass org/gradle/internal/properties/annotations/TypeMetadataStore +instanceKlass org/gradle/internal/properties/bean/ImplementationResolver +instanceKlass org/gradle/internal/properties/annotations/PropertyTypeResolver +instanceKlass org/gradle/api/internal/tasks/properties/InspectionSchemeFactory$InspectionSchemeImpl +instanceKlass org/gradle/internal/reflect/annotations/PropertyAnnotationMetadata +instanceKlass org/gradle/internal/properties/annotations/MissingPropertyAnnotationHandler +instanceKlass org/gradle/api/internal/tasks/properties/InspectionScheme +instanceKlass org/apache/commons/lang/builder/HashCodeBuilder +instanceKlass com/google/common/base/Equivalence$Wrapper +instanceKlass org/gradle/internal/reflect/Methods +instanceKlass org/gradle/internal/scripts/ScriptOrigin +instanceKlass org/gradle/util/internal/ConfigureUtil$WrappedConfigureAction +instanceKlass org/gradle/internal/reflect/annotations/AnnotationCategory$1 +instanceKlass org/gradle/api/internal/plugins/software/RegistersSoftwareTypes +instanceKlass org/gradle/internal/reflect/annotations/impl/DefaultTypeAnnotationMetadataStore$1 +instanceKlass org/gradle/internal/reflect/validation/TypeValidationContext +instanceKlass org/gradle/internal/reflect/annotations/TypeAnnotationMetadata +instanceKlass org/gradle/internal/reflect/annotations/impl/DefaultTypeAnnotationMetadataStore +instanceKlass org/gradle/internal/buildoption/StringInternalOption +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformInvocationFactory +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyManagementServices$TransformGradleUserHomeServices$1 +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementGradleUserHomeScopeServices$3 +instanceKlass org/gradle/cache/ManualEvictionInMemoryCache +instanceKlass org/gradle/cache/internal/DefaultCrossBuildInMemoryCacheFactory$CrossBuildCacheRetainingDataFromPreviousBuild +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/StoreSet +instanceKlass org/gradle/api/internal/artifacts/DefaultGlobalDependencyResolutionRules$CompositeDependencySubstitutionRules +instanceKlass org/gradle/api/internal/artifacts/DefaultGlobalDependencyResolutionRules +instanceKlass org/gradle/api/artifacts/ComponentModuleMetadataDetails +instanceKlass org/gradle/api/artifacts/ComponentModuleMetadata +instanceKlass org/gradle/api/internal/artifacts/dsl/ComponentModuleMetadataContainer +instanceKlass org/gradle/api/internal/artifacts/dsl/ModuleReplacementsData +instanceKlass org/gradle/internal/component/external/model/AbstractStatelessDerivationStrategy +instanceKlass org/gradle/api/internal/artifacts/dsl/MetadataRuleWrapper +instanceKlass org/gradle/api/internal/notations/ComponentIdentifierParserFactory +instanceKlass org/gradle/api/artifacts/DependencyConstraintMetadata +instanceKlass org/gradle/api/internal/catalog/parser/StrictVersionParser +instanceKlass org/gradle/api/internal/notations/DependencyStringNotationConverter +instanceKlass org/gradle/api/internal/notations/DependencyMetadataNotationParser +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/AbstractDependencyImpl +instanceKlass org/gradle/api/artifacts/DirectDependencyMetadata +instanceKlass org/gradle/api/artifacts/DependencyMetadata +instanceKlass org/gradle/internal/rules/DefaultRuleActionAdapter +instanceKlass org/gradle/api/artifacts/maven/PomModuleDescriptor +instanceKlass org/gradle/api/artifacts/ivy/IvyModuleDescriptor +instanceKlass org/gradle/internal/rules/DefaultRuleActionValidator +instanceKlass org/gradle/api/internal/artifacts/dsl/ComponentMetadataRuleContainer +instanceKlass org/gradle/internal/rules/SpecRuleAction +instanceKlass org/gradle/internal/rules/RuleAction +instanceKlass org/gradle/api/internal/artifacts/dsl/SpecConfigurableRule +instanceKlass org/gradle/internal/rules/RuleActionAdapter +instanceKlass org/gradle/internal/rules/RuleActionValidator +instanceKlass org/gradle/api/internal/artifacts/ComponentMetadataProcessor +instanceKlass org/gradle/internal/resolve/caching/CrossBuildCachingRuleExecutor$AnySerializer +instanceKlass org/gradle/internal/resolve/caching/CrossBuildCachingRuleExecutor$CachedEntry +instanceKlass org/gradle/api/internal/artifacts/configurations/dynamicversion/CachePolicy +instanceKlass org/gradle/internal/resolve/caching/CrossBuildCachingRuleExecutor$EntryValidator +instanceKlass org/gradle/api/artifacts/ResolvedModuleVersion +instanceKlass org/gradle/internal/resolve/caching/ImplicitInputRecorder +instanceKlass org/gradle/internal/component/model/ModuleConfigurationMetadata +instanceKlass org/gradle/internal/component/model/VariantResolveMetadata +instanceKlass org/gradle/internal/component/model/ConfigurationGraphResolveMetadata +instanceKlass org/gradle/internal/component/model/ConfigurationMetadata +instanceKlass org/gradle/internal/component/model/VariantArtifactGraphResolveMetadata +instanceKlass org/gradle/internal/component/external/model/AbstractRealisedModuleResolveMetadataSerializationHelper +instanceKlass org/gradle/api/internal/artifacts/ModuleComponentSelectorSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleMetadataSerializer +instanceKlass org/gradle/internal/component/external/model/VirtualComponentIdentifier +instanceKlass org/gradle/internal/component/external/model/ModuleComponentResolveMetadata +instanceKlass org/gradle/internal/component/external/model/ModuleComponentGraphResolveMetadata +instanceKlass org/gradle/internal/component/external/model/ExternalComponentGraphResolveMetadata +instanceKlass org/gradle/internal/component/model/ComponentGraphResolveMetadata +instanceKlass org/gradle/internal/component/external/model/ExternalComponentResolveMetadata +instanceKlass org/gradle/internal/component/model/ModuleSources +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleDescriptorHashCodec +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MetadataFileSource +instanceKlass org/gradle/internal/component/model/PersistentModuleSource +instanceKlass org/gradle/internal/component/model/ModuleSource +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/DefaultMetadataFileSourceCodec +instanceKlass org/gradle/internal/component/model/PersistentModuleSource$Codec +instanceKlass com/google/common/collect/MapMakerInternalMap$StrongKeyDummyValueEntry$Helper +instanceKlass org/gradle/api/Namer$Comparator +instanceKlass org/gradle/api/internal/collections/SortedSetElementSource +instanceKlass org/gradle/api/Named$Namer +instanceKlass org/gradle/api/reflect/TypeOf +instanceKlass groovy/lang/Buildable +instanceKlass groovy/lang/Writable +instanceKlass org/gradle/internal/management/DefaultDependencyResolutionManagement$ComponentMetadataRulesRegistar +instanceKlass org/gradle/declarative/dsl/model/annotations/Restricted +instanceKlass org/gradle/declarative/dsl/model/annotations/Configuring +instanceKlass org/gradle/api/initialization/dsl/VersionCatalogBuilder +instanceKlass org/gradle/api/reflect/HasPublicType +instanceKlass org/gradle/api/initialization/resolve/MutableVersionCatalogContainer +instanceKlass org/gradle/internal/management/DefaultDependencyResolutionManagement +instanceKlass org/gradle/api/internal/collections/AbstractIterationOrderRetainingElementSource$RealizedElementCollectionIterator +instanceKlass org/gradle/api/internal/DefaultNamedDomainObjectCollection$UnfilteredIndex +instanceKlass org/gradle/api/internal/lambdas/SerializableLambdas +instanceKlass org/gradle/api/internal/lambdas/SerializableLambdas$SerializableAction +instanceKlass org/gradle/api/internal/collections/DefaultCollectionEventRegister +instanceKlass org/gradle/api/internal/collections/AbstractIterationOrderRetainingElementSource$ValuePointer +instanceKlass org/gradle/api/internal/provider/Collector +instanceKlass org/gradle/api/internal/collections/AbstractIterationOrderRetainingElementSource +instanceKlass org/gradle/api/internal/artifacts/DefaultArtifactRepositoryContainer$RepositoryNamer +instanceKlass java/lang/SafeVarargs +instanceKlass org/gradle/declarative/dsl/model/annotations/Adding +instanceKlass com/google/common/reflect/Types$WildcardTypeImpl +instanceKlass sun/reflect/generics/tree/ArrayTypeSignature +instanceKlass sun/reflect/generics/tree/IntSignature +instanceKlass com/google/common/reflect/Types$ClassOwnership$1LocalClass +instanceKlass com/google/common/reflect/Types$ParameterizedTypeImpl +instanceKlass com/google/common/reflect/Types +instanceKlass sun/reflect/misc/ReflectUtil +instanceKlass com/google/common/reflect/TypeResolver$TypeVariableKey +instanceKlass com/google/common/reflect/TypeResolver$TypeTable +instanceKlass com/google/common/reflect/TypeResolver +instanceKlass java/lang/reflect/AnnotatedType +instanceKlass com/google/common/reflect/TypeVisitor +instanceKlass com/google/common/reflect/Invokable +instanceKlass java/lang/invoke/SerializedLambda +instanceKlass org/gradle/api/internal/collections/CollectionFilter +instanceKlass org/gradle/api/artifacts/repositories/RepositoryContentDescriptor +instanceKlass org/gradle/api/artifacts/repositories/InclusiveRepositoryContentDescriptor +instanceKlass org/gradle/api/artifacts/repositories/FlatDirectoryArtifactRepository +instanceKlass org/gradle/api/artifacts/repositories/MavenArtifactRepository +instanceKlass org/gradle/api/artifacts/repositories/IvyArtifactRepository +instanceKlass org/gradle/api/artifacts/repositories/MetadataSupplierAware +instanceKlass org/gradle/api/artifacts/repositories/AuthenticationSupported +instanceKlass org/gradle/api/artifacts/repositories/UrlArtifactRepository +instanceKlass org/gradle/api/internal/collections/IndexedElementSource +instanceKlass org/gradle/api/Rule +instanceKlass org/gradle/api/NamedDomainObjectCollectionSchema +instanceKlass org/gradle/api/internal/DefaultNamedDomainObjectCollection$Index +instanceKlass org/gradle/api/internal/collections/ElementSource +instanceKlass org/gradle/api/internal/collections/PendingSource +instanceKlass org/gradle/api/internal/collections/CollectionEventRegister +instanceKlass org/gradle/api/internal/collections/EventSubscriptionVerifier +instanceKlass org/gradle/api/internal/WithEstimatedSize +instanceKlass org/gradle/internal/metaobject/PropertyMixIn +instanceKlass org/gradle/internal/metaobject/MethodMixIn +instanceKlass org/gradle/api/internal/artifacts/dsl/RepositoryHandlerInternal +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/GradleModuleMetadataParser +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/MavenVersionSelectorScheme +instanceKlass org/gradle/internal/component/external/model/ModuleDependencyMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/PomParent +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/AbstractModuleDescriptorParser +instanceKlass org/gradle/api/artifacts/repositories/AuthenticationContainer +instanceKlass org/gradle/api/artifacts/repositories/ArtifactRepository +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultBaseRepositoryFactory +instanceKlass org/gradle/api/internal/provider/CredentialsProviderFactory +instanceKlass org/gradle/api/provider/ValueSourceSpec +instanceKlass org/gradle/api/file/FileContents +instanceKlass org/gradle/process/ExecOutput +instanceKlass org/gradle/api/internal/provider/DefaultProviderFactory +instanceKlass org/gradle/api/internal/provider/sources/process/DelegatingExecSpec +instanceKlass org/gradle/api/internal/provider/sources/process/DelegatingJavaExecSpec +instanceKlass org/gradle/api/internal/provider/sources/process/ProviderCompatibleBaseExecSpec +instanceKlass org/gradle/api/internal/provider/sources/process/DelegatingBaseExecSpec +instanceKlass org/gradle/process/internal/DefaultExecSpecFactory +instanceKlass org/gradle/api/internal/provider/ValueSourceProviderFactory$ComputationListener +instanceKlass org/gradle/api/internal/provider/ValueSourceProviderFactory$ValueListener +instanceKlass org/gradle/api/provider/ValueSourceParameters$None +instanceKlass org/gradle/api/provider/ValueSourceParameters +instanceKlass org/gradle/api/provider/ValueSource +instanceKlass org/gradle/internal/isolated/IsolationScheme +instanceKlass org/gradle/api/internal/provider/DefaultValueSourceProviderFactory +instanceKlass org/gradle/process/internal/ExecHandleListener +instanceKlass org/gradle/process/internal/DefaultExecActionFactory$BuilderImpl +instanceKlass org/gradle/process/internal/ExecFactory$Builder +instanceKlass org/gradle/cache/internal/DefaultFileContentCacheFactory$DefaultFileContentCache +instanceKlass org/gradle/internal/jvm/JavaModuleDetector$ModuleInfoLocator +instanceKlass org/gradle/cache/internal/FileContentCache +instanceKlass org/gradle/cache/internal/DefaultFileContentCacheFactory +instanceKlass org/gradle/internal/component/external/descriptor/Configuration +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/DefaultMavenImmutableAttributesFactory +instanceKlass org/gradle/internal/component/external/model/PreferJavaRuntimeVariant$PreferJarVariantUsageDisambiguationRule +instanceKlass org/gradle/internal/component/external/model/PreferJavaRuntimeVariant$PreferRuntimeVariantUsageDisambiguationRule +instanceKlass org/gradle/api/attributes/LibraryElements$Impl +instanceKlass org/gradle/api/attributes/Usage$Impl +instanceKlass org/gradle/api/attributes/LibraryElements +instanceKlass org/gradle/api/attributes/Usage +instanceKlass org/gradle/api/internal/attributes/EmptySchema$DoNothingDisambiguationRule +instanceKlass org/gradle/api/internal/attributes/EmptySchema$DoNothingCompatibilityRule +instanceKlass org/gradle/internal/resource/local/CompositeLocallyAvailableResourceFinder +instanceKlass org/gradle/internal/resource/local/ivy/PatternBasedLocallyAvailableResourceFinder$1 +instanceKlass org/gradle/util/internal/MavenUtil +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/AbstractResourcePattern +instanceKlass org/gradle/internal/resource/local/LocallyAvailableResourceCandidates +instanceKlass org/gradle/internal/resource/local/AbstractLocallyAvailableResourceFinder +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/ResourcePattern +instanceKlass org/gradle/internal/resource/local/ivy/LocallyAvailableResourceFinderFactory +instanceKlass org/gradle/api/internal/artifacts/repositories/transport/RepositoryTransport +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolutionstrategy/ExternalResourceCachePolicy +instanceKlass org/gradle/internal/resource/connector/ResourceConnectorSpecification +instanceKlass org/gradle/api/internal/filestore/DefaultArtifactIdentifierFileStore$1 +instanceKlass org/gradle/internal/resource/cached/CachedExternalResource +instanceKlass org/gradle/internal/resource/metadata/ExternalResourceMetaData +instanceKlass org/gradle/internal/resource/cached/DefaultCachedExternalResourceIndex$CachedExternalResourceSerializer +instanceKlass org/gradle/internal/resource/cached/CachedItem +instanceKlass org/gradle/api/file/FileVisitor +instanceKlass org/gradle/internal/resource/local/LocallyAvailableResource +instanceKlass org/gradle/internal/resource/local/DefaultPathKeyFileStore +instanceKlass org/gradle/api/Namer +instanceKlass org/gradle/internal/resource/cached/DefaultExternalResourceFileStore$1 +instanceKlass org/gradle/internal/resource/local/GroupedAndNamedUniqueFileStore$Grouper +instanceKlass org/gradle/internal/resource/local/PathKeyFileStore +instanceKlass org/gradle/internal/hash/ChecksumHasher +instanceKlass org/gradle/internal/hash/DefaultChecksumService +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator$CurrentSystemPropertyAccess +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator$SystemPropertyAccess +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenFileLocations +instanceKlass org/apache/maven/settings/io/SettingsReader +instanceKlass org/apache/maven/settings/building/SettingsBuildingRequest +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/EdgeState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/DependencyGraphEdge +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/ResolvedGraphDependency +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedVariant +instanceKlass org/gradle/api/internal/artifacts/transform/TransformedVariant +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/GraphNodesValidationFailure +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/GraphValidationFailure +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/ArtifactSelectionFailure +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/VariantSelectionByNameFailure +instanceKlass org/gradle/internal/component/resolution/failure/formatting/StyledAttributeDescriber +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/simple/DefaultExcludeNothing +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ExcludeNothing +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/Unions +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ModuleExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ModuleIdSetExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ModuleIdExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/GroupExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ExcludeAnyOf +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/CompositeExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/AbstractIntersection +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/Intersection +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/Intersections +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ModuleSetExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/GroupSetExclude +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/simple/DefaultExcludeFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/DelegatingExcludeFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/CachingExcludeFactory$ConcurrentCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/CachingExcludeFactory$MergeCaches +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/specs/ExcludeSpec +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/factories/ExcludeFactory +instanceKlass org/gradle/api/internal/tasks/NodeExecutionContext +instanceKlass org/gradle/util/internal/WrapUtil +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/AbstractDependencyMetadataConverter +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DependencyMetadataConverter +instanceKlass org/gradle/internal/component/model/LocalOriginDependencyMetadata +instanceKlass org/gradle/internal/component/model/ForcingDependencyMetadata +instanceKlass org/gradle/internal/component/model/DependencyMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultDependencyMetadataFactory +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/GradlePluginVariantsSupport$TargetGradleVersionDisambiguationRule +instanceKlass org/gradle/api/internal/attributes/DefaultCompatibilityRuleChain$ExceptionHandler +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/GradlePluginVariantsSupport$TargetGradleVersionCompatibilityRule +instanceKlass org/gradle/api/attributes/AttributeCompatibilityRule +instanceKlass org/gradle/api/attributes/plugin/GradlePluginApiVersion +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/GradlePluginVariantsSupport +instanceKlass org/gradle/internal/logging/text/TreeFormatter +instanceKlass org/gradle/internal/component/resolution/failure/ResolutionCandidateAssessor$AssessedAttribute +instanceKlass org/gradle/internal/component/resolution/failure/ResolutionCandidateAssessor$AssessedCandidate +instanceKlass org/gradle/internal/component/resolution/failure/describer/AbstractResolutionFailureDescriber +instanceKlass org/gradle/internal/component/resolution/failure/describer/ResolutionFailureDescriber +instanceKlass org/gradle/internal/component/resolution/failure/type/AbstractResolutionFailure +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/VariantSelectionByAttributesFailure +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/VariantSelectionFailure +instanceKlass org/gradle/internal/component/resolution/failure/interfaces/ResolutionFailure +instanceKlass org/gradle/api/internal/attributes/DefaultDisambiguationRuleChain$ExceptionHandler +instanceKlass org/gradle/internal/action/DefaultConfigurableRules +instanceKlass org/gradle/internal/action/ConfigurableRules +instanceKlass org/gradle/api/artifacts/CacheableRule +instanceKlass org/gradle/internal/snapshot/impl/AbstractArraySnapshot +instanceKlass org/gradle/internal/snapshot/impl/AbstractScalarValueSnapshot +instanceKlass org/gradle/api/internal/DefaultActionConfiguration +instanceKlass org/gradle/internal/action/DefaultConfigurableRule +instanceKlass org/gradle/internal/action/ConfigurableRule +instanceKlass org/gradle/internal/action/InstantiatingAction +instanceKlass org/gradle/api/ActionConfiguration +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/PlatformSupport$ComponentCategoryDisambiguationRule +instanceKlass org/gradle/api/internal/ReusableAction +instanceKlass org/gradle/api/attributes/AttributeDisambiguationRule +instanceKlass org/gradle/api/internal/attributes/MultipleCandidatesResult +instanceKlass org/gradle/api/attributes/MultipleCandidatesDetails +instanceKlass org/gradle/api/internal/attributes/DefaultDisambiguationRuleChain +instanceKlass org/gradle/api/internal/attributes/CompatibilityCheckResult +instanceKlass org/gradle/api/attributes/CompatibilityCheckDetails +instanceKlass org/gradle/internal/action/InstantiatingAction$ExceptionHandler +instanceKlass org/gradle/api/internal/attributes/DefaultCompatibilityRuleChain +instanceKlass org/gradle/api/attributes/CompatibilityRuleChain +instanceKlass org/gradle/api/attributes/DisambiguationRuleChain +instanceKlass org/gradle/api/internal/attributes/DefaultAttributeMatchingStrategy +instanceKlass org/gradle/internal/component/resolution/failure/ResolutionFailureDescriberRegistry +instanceKlass org/gradle/api/internal/attributes/DisambiguationRule +instanceKlass org/gradle/api/internal/attributes/AttributeDescriber +instanceKlass org/gradle/api/internal/attributes/CompatibilityRule +instanceKlass org/gradle/api/attributes/AttributeMatchingStrategy +instanceKlass org/gradle/internal/component/model/AttributeMatcher +instanceKlass org/gradle/internal/component/model/AttributeSelectionSchema +instanceKlass org/gradle/api/internal/attributes/DefaultAttributesSchema +instanceKlass org/gradle/api/attributes/Category$Impl +instanceKlass org/gradle/model/internal/type/ClassTypeWrapper +instanceKlass org/gradle/model/internal/type/TypeWrapper +instanceKlass org/gradle/model/internal/type/ModelType +instanceKlass org/gradle/model/internal/inspect/FormattingValidationProblemCollector +instanceKlass org/gradle/api/attributes/Category +instanceKlass org/gradle/api/internal/DefaultCollectionCallbackActionDecorator +instanceKlass org/gradle/vcs/internal/resolver/OncePerBuildInvocationVcsVersionWorkingDirResolver +instanceKlass org/gradle/vcs/internal/resolver/DefaultVcsVersionWorkingDirResolver +instanceKlass org/gradle/vcs/internal/VersionRef +instanceKlass org/gradle/vcs/internal/resolver/PersistentVcsMetadataCache$VersionRefSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/CachingVersionSelectorScheme +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/VersionSelector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/DefaultVersionSelectorScheme +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/StaticVersionComparator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/DefaultVersionComparator +instanceKlass org/gradle/internal/file/nio/ModificationTimeFileAccessTimeJournal +instanceKlass org/gradle/vcs/internal/VersionControlRepositoryConnection +instanceKlass org/gradle/vcs/internal/VersionControlSystem +instanceKlass org/gradle/vcs/internal/services/DefaultVersionControlRepositoryFactory +instanceKlass org/gradle/vcs/internal/DefaultVcsMappingsStore +instanceKlass org/gradle/vcs/internal/DefaultVcsMappingFactory +instanceKlass org/gradle/vcs/internal/services/DefaultVersionControlSpecFactory +instanceKlass org/gradle/internal/typeconversion/CharSequenceNotationConverter +instanceKlass org/gradle/api/internal/notations/ModuleIdentifierNotationConverter +instanceKlass org/gradle/api/artifacts/transform/CacheableTransform +instanceKlass org/gradle/work/DisableCachingByDefault +instanceKlass org/gradle/api/tasks/CacheableTask +instanceKlass org/gradle/api/tasks/UntrackedTask +instanceKlass org/gradle/internal/properties/annotations/AbstractTypeAnnotationHandler +instanceKlass org/gradle/internal/resource/transport/sftp/SftpConnectorFactory +instanceKlass com/jcraft/jsch/HostKeyRepository +instanceKlass com/jcraft/jsch/Logger +instanceKlass org/gradle/internal/resource/transport/sftp/LockableSftpClient +instanceKlass org/gradle/internal/resource/transport/sftp/SftpClientFactory$SftpClientCreator +instanceKlass org/gradle/internal/resource/transport/aws/s3/S3ConnectorFactory +instanceKlass org/gradle/internal/resource/transport/gcp/gcs/GcsConnectorFactory +instanceKlass org/gradle/internal/resource/transport/http/HttpConnectorFactory +instanceKlass org/gradle/internal/resource/transport/http/HttpClientHelper +instanceKlass org/gradle/internal/resource/transport/http/HttpSettings +instanceKlass org/gradle/internal/resource/transport/http/DefaultSslContextFactory +instanceKlass org/gradle/internal/resource/transport/file/FileConnectorFactory +instanceKlass org/gradle/api/internal/initialization/ScriptClassPathResolutionContext +instanceKlass org/gradle/api/artifacts/Dependency +instanceKlass org/gradle/api/internal/initialization/DefaultScriptHandler +instanceKlass org/gradle/api/internal/initialization/ScriptHandlerInternal +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyManagementServices$DefaultDependencyResolutionServices +instanceKlass org/gradle/api/artifacts/query/ArtifactResolutionQuery +instanceKlass org/gradle/api/internal/artifacts/query/DefaultArtifactResolutionQueryFactory +instanceKlass org/gradle/api/internal/artifacts/DefaultComponentSelectorConverter +instanceKlass org/gradle/api/internal/artifacts/transform/ArtifactVariantSelector +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultVariantSelectorFactory +instanceKlass org/gradle/api/internal/artifacts/transform/VariantDefinition +instanceKlass org/gradle/api/internal/artifacts/transform/ConsumerProvidedVariantFinder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/DefaultLocalComponentRegistry +instanceKlass org/gradle/api/internal/artifacts/ResolveExceptionMapper +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/DefaultRootComponentMetadataBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/RootComponentMetadataBuilder +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformedVariantFactory$VariantKey +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSet$TransformSourceVisitor +instanceKlass org/gradle/api/internal/artifacts/transform/DefaultTransformedVariantFactory +instanceKlass org/gradle/api/internal/artifacts/transform/TransformedVariantFactory +instanceKlass org/gradle/api/file/ProjectLayout +instanceKlass org/gradle/api/artifacts/dsl/ArtifactHandler +instanceKlass org/gradle/api/artifacts/dsl/DependencyHandler +instanceKlass org/gradle/api/internal/artifacts/query/ArtifactResolutionQueryFactory +instanceKlass org/gradle/api/artifacts/dsl/DependencyConstraintHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/ProjectDependencyResolver +instanceKlass org/gradle/internal/resolve/resolver/DependencyToComponentIdResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/LocalComponentRegistry +instanceKlass org/gradle/api/internal/artifacts/ComponentSelectorConverter +instanceKlass org/gradle/api/internal/artifacts/transform/VariantSelectorFactory +instanceKlass org/gradle/api/internal/artifacts/RepositoriesSupplier +instanceKlass org/gradle/api/artifacts/dsl/DependencyLockingHandler +instanceKlass org/gradle/api/internal/artifacts/dsl/DefaultComponentMetadataHandler +instanceKlass org/gradle/api/artifacts/dsl/ComponentMetadataHandler +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolutionStrategyFactory +instanceKlass org/gradle/api/internal/artifacts/configurations/DefaultConfigurationFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/DefaultRootComponentMetadataBuilder$Factory +instanceKlass org/gradle/api/internal/artifacts/ComponentMetadataProcessorFactory +instanceKlass org/gradle/api/internal/artifacts/dsl/ComponentMetadataHandlerInternal +instanceKlass org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactory +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationContainerInternal +instanceKlass org/gradle/api/internal/artifacts/configurations/RoleBasedConfigurationContainerInternal +instanceKlass org/gradle/api/internal/artifacts/dsl/DefaultComponentModuleMetadataHandler +instanceKlass org/gradle/api/internal/artifacts/ComponentModuleMetadataProcessor +instanceKlass org/gradle/api/artifacts/dsl/ComponentModuleMetadataHandler +instanceKlass org/gradle/api/internal/artifacts/repositories/DefaultUrlArtifactRepository$Factory +instanceKlass org/gradle/api/internal/artifacts/transform/MutableTransformWorkspaceServices +instanceKlass org/gradle/internal/file/ReservedFileSystemLocation +instanceKlass org/gradle/api/internal/artifacts/DependencyResolutionServices +instanceKlass org/gradle/api/internal/artifacts/ArtifactPublicationServices +instanceKlass org/gradle/api/internal/artifacts/GlobalDependencyResolutionRules +instanceKlass org/gradle/api/internal/artifacts/type/ArtifactTypeRegistry +instanceKlass org/gradle/api/internal/artifacts/transform/TransformInvocationFactory +instanceKlass org/gradle/api/internal/artifacts/transform/TransformRegistrationFactory +instanceKlass org/gradle/api/internal/artifacts/BaseRepositoryFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/parser/MetaDataParser +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DependencyLockingProvider +instanceKlass org/gradle/api/internal/artifacts/ConfigurationResolver +instanceKlass org/gradle/api/internal/artifacts/VariantTransformRegistry +instanceKlass org/gradle/internal/component/external/model/VariantDerivationStrategy +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyManagementServices$DependencyResolutionScopeServices +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyManagementServices$TransformGradleUserHomeServices +instanceKlass org/gradle/internal/model/CalculatedModelValue +instanceKlass org/gradle/api/internal/initialization/RootScriptDomainObjectContext +instanceKlass org/gradle/internal/resource/UriTextResource$UriResourceLocation +instanceKlass org/gradle/groovy/scripts/TextResourceScriptSource +instanceKlass org/gradle/internal/resource/ResourceLocation +instanceKlass org/gradle/internal/resource/UriTextResource +instanceKlass org/gradle/initialization/InitScriptHandler$1 +instanceKlass org/gradle/initialization/DirectoryInitScriptFinder +instanceKlass org/gradle/initialization/CompositeInitScriptFinder +instanceKlass org/gradle/initialization/InitScriptFinder +instanceKlass org/gradle/initialization/DefaultGradlePropertiesController$Loaded +instanceKlass org/gradle/internal/extensions/stdlib/CastExtensionsKt +instanceKlass kotlin/text/StringsKt__AppendableKt +instanceKlass org/gradle/internal/extensions/stdlib/MapExtensionsKt +instanceKlass org/gradle/internal/cc/impl/services/DefaultEnvironment$DefaultProperties +instanceKlass org/gradle/initialization/Environment$Properties +instanceKlass org/gradle/initialization/DefaultGradleProperties +instanceKlass org/gradle/initialization/DefaultSettingsLoader +instanceKlass org/gradle/initialization/SettingsAttachingSettingsLoader +instanceKlass org/gradle/internal/composite/CommandLineIncludedBuildSettingsLoader +instanceKlass org/gradle/internal/composite/ChildBuildRegisteringSettingsLoader +instanceKlass org/gradle/internal/composite/CompositeBuildSettingsLoader +instanceKlass org/gradle/initialization/InitScriptHandlingSettingsLoader +instanceKlass org/gradle/api/internal/initialization/CacheConfigurationsHandlingSettingsLoader +instanceKlass org/gradle/initialization/GradlePropertiesHandlingSettingsLoader +instanceKlass org/gradle/initialization/BuildOperationFiringSettingsPreparer$LoadBuild$1 +instanceKlass org/gradle/initialization/LoadBuildBuildOperationType$Details +instanceKlass org/gradle/initialization/BuildOperationFiringSettingsPreparer$LoadBuild +instanceKlass org/gradle/initialization/BuildOperationFiringSettingsPreparer$2 +instanceKlass org/gradle/initialization/BuildIdentifiedProgressDetails +instanceKlass org/gradle/composite/internal/BuildController +instanceKlass org/gradle/composite/internal/DefaultBuildControllers +instanceKlass org/gradle/composite/internal/BuildControllers +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildTaskGraph$DefaultBuildTreeWorkGraph +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkGraph$FinalizedGraph +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkGraph +instanceKlass org/gradle/internal/cc/impl/VintageBuildTreeWorkController$scheduleAndRunRequestedTasks$1 +instanceKlass org/gradle/internal/build/ExecutionResult +instanceKlass org/gradle/tooling/internal/provider/runner/BuildModelActionRunner$ModelCreateAction +instanceKlass org/gradle/internal/event/DefaultListenerManager$ExclusiveEventBroadcast$3 +instanceKlass org/gradle/internal/logging/format/TersePrettyDurationFormatter +instanceKlass org/gradle/internal/buildevents/BuildResultLogger +instanceKlass org/gradle/internal/exceptions/FailureResolutionAware$Context +instanceKlass org/gradle/util/internal/TreeVisitor +instanceKlass org/gradle/internal/buildevents/BuildExceptionReporter +instanceKlass org/gradle/internal/logging/format/DurationFormatter +instanceKlass org/gradle/internal/buildevents/BuildLogger +instanceKlass org/gradle/api/internal/tasks/execution/statistics/TaskExecutionStatisticsEventAdapter +instanceKlass org/gradle/tooling/internal/provider/FileSystemWatchingBuildActionRunner$1 +instanceKlass org/gradle/internal/watch/options/FileSystemWatchingSettingsFinalizedProgressDetails +instanceKlass org/gradle/api/internal/tasks/compile/CompileJavaBuildOperationType$Result +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$Finished +instanceKlass org/gradle/internal/operations/OperationFinishEvent +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$1$1 +instanceKlass org/gradle/internal/watch/vfs/BuildStartedFileSystemWatchingBuildOperationType$Result +instanceKlass java/util/ArrayDeque$DeqSpliterator +instanceKlass org/gradle/internal/Combiners +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherProbeRegistry$WatchProbe +instanceKlass org/gradle/internal/watch/registry/impl/WatchableHierarchies$Invalidator +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherRegistry$MutableFileWatchingStatistics +instanceKlass net/rubygrapefruit/platform/file/FileWatchEvent$Handler +instanceKlass org/gradle/internal/watch/registry/FileWatcherRegistry$FileWatchingStatistics +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherRegistry +instanceKlass org/gradle/internal/watch/registry/impl/AbstractFileWatcherUpdater$MovedDirectoryHandler +instanceKlass org/gradle/internal/watch/registry/impl/HierarchicalFileWatcherUpdater$FileSystemLocationToWatchValidator +instanceKlass org/gradle/internal/watch/registry/impl/AbstractFileWatcherUpdater +instanceKlass org/gradle/internal/file/FileHierarchySet$RootVisitor +instanceKlass org/gradle/internal/watch/registry/impl/WatchableHierarchies +instanceKlass net/rubygrapefruit/platform/internal/jni/AbstractFileEventFunctions$AbstractFileWatcher +instanceKlass net/rubygrapefruit/platform/file/FileWatchEvent +instanceKlass net/rubygrapefruit/platform/internal/jni/AbstractFileEventFunctions$NativeFileWatcherCallback +instanceKlass org/gradle/internal/watch/registry/impl/DefaultFileWatcherProbeRegistry +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$BroadcastingChangeHandler +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$InvalidateVfsChangeHandler +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$CompositeChangeHandler +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$FilterChangesToOutputsChangesHandler +instanceKlass net/rubygrapefruit/platform/internal/FileSystemList$DefaultCaseSensitivity +instanceKlass net/rubygrapefruit/platform/internal/DefaultFileSystemInfo +instanceKlass net/rubygrapefruit/platform/file/FileSystemInfo +instanceKlass net/rubygrapefruit/platform/internal/jni/PosixFileSystemFunctions +instanceKlass net/rubygrapefruit/platform/file/CaseSensitivity +instanceKlass net/rubygrapefruit/platform/internal/FileSystemList +instanceKlass org/gradle/internal/watch/vfs/BuildStartedFileSystemWatchingBuildOperationType$Details$1 +instanceKlass org/gradle/internal/watch/vfs/BuildStartedFileSystemWatchingBuildOperationType$Details +instanceKlass org/gradle/internal/watch/vfs/FileSystemWatchingStatistics +instanceKlass org/gradle/internal/watch/vfs/impl/WatchingVirtualFileSystem$1 +instanceKlass org/slf4j/helpers/NamedLoggerBase +instanceKlass org/gradle/configuration/internal/DefaultListenerBuildOperationDecorator +instanceKlass com/google/common/util/concurrent/AbstractFuture$Failure +instanceKlass com/google/common/util/concurrent/AbstractFuture$Cancellation +instanceKlass com/google/common/util/concurrent/AbstractFuture$SetFuture +instanceKlass com/google/common/util/concurrent/Uninterruptibles +instanceKlass org/gradle/api/tasks/util/internal/CachingPatternSpecFactory$CachingSpec +instanceKlass org/gradle/api/internal/file/RelativePathSpec +instanceKlass org/gradle/api/internal/file/pattern/AnythingMatcher +instanceKlass org/gradle/api/internal/file/pattern/FixedPatternStep +instanceKlass org/gradle/api/internal/file/pattern/HasSuffixPatternStep +instanceKlass org/gradle/api/internal/file/pattern/HasPrefixPatternStep +instanceKlass org/gradle/api/internal/file/pattern/HasPrefixAndSuffixPatternStep +instanceKlass org/gradle/api/internal/file/pattern/AnyWildcardPatternStep +instanceKlass org/gradle/api/internal/file/pattern/PatternStep +instanceKlass org/gradle/api/internal/file/pattern/PatternStepFactory +instanceKlass org/gradle/api/internal/file/pattern/FixedStepPathMatcher +instanceKlass org/gradle/api/internal/file/pattern/GreedyPathMatcher +instanceKlass org/gradle/api/internal/file/pattern/EndOfPathMatcher +instanceKlass org/gradle/api/internal/file/pattern/PatternMatcher +instanceKlass org/gradle/api/internal/file/pattern/PathMatcher +instanceKlass org/gradle/api/internal/file/pattern/PatternMatcherFactory +instanceKlass com/google/common/base/Stopwatch +instanceKlass com/google/common/util/concurrent/AbstractFuture$Waiter +instanceKlass com/google/common/util/concurrent/AbstractFuture$Listener +instanceKlass com/google/common/util/concurrent/AbstractFuture$UnsafeAtomicHelper$1 +instanceKlass com/google/common/util/concurrent/AbstractFuture$AtomicHelper +instanceKlass com/google/common/util/concurrent/internal/InternalFutureFailureAccess +instanceKlass com/google/common/util/concurrent/AbstractFuture$Trusted +instanceKlass com/google/common/util/concurrent/ListenableFuture +instanceKlass org/gradle/api/tasks/util/internal/CachingPatternSpecFactory$1 +instanceKlass org/gradle/api/tasks/util/internal/CachingPatternSpecFactory$SpecKey +instanceKlass org/gradle/initialization/buildsrc/BuildSrcDetector +instanceKlass java/util/function/UnaryOperator +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeLifecycleController +instanceKlass org/gradle/internal/buildtree/BuildTreeLifecycleController +instanceKlass org/gradle/internal/cc/impl/VintageBuildTreeWorkController +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkController +instanceKlass org/gradle/internal/buildtree/IntermediateBuildActionRunner +instanceKlass org/gradle/internal/buildtree/BuildTreeModelController +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeModelCreator +instanceKlass org/gradle/internal/buildtree/BuildTreeModelCreator +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeWorkPreparer +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkPreparer +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeFinishExecutor +instanceKlass org/gradle/composite/internal/OperationFiringBuildTreeFinishExecutor$3 +instanceKlass org/gradle/composite/internal/OperationFiringBuildTreeFinishExecutor$2 +instanceKlass org/gradle/operations/lifecycle/FinishRootBuildTreeBuildOperationType$Result +instanceKlass org/gradle/operations/lifecycle/FinishRootBuildTreeBuildOperationType$Details +instanceKlass org/gradle/composite/internal/OperationFiringBuildTreeFinishExecutor +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeWorkExecutor +instanceKlass org/gradle/internal/buildtree/BuildOperationFiringBuildTreeWorkExecutor$1 +instanceKlass org/gradle/operations/lifecycle/RunRequestedWorkBuildOperationType$Details +instanceKlass org/gradle/internal/buildtree/BuildOperationFiringBuildTreeWorkExecutor +instanceKlass org/gradle/internal/operations/BuildOperationQueue +instanceKlass org/gradle/internal/operations/DefaultBuildOperationQueueFactory +instanceKlass org/gradle/internal/operations/BuildOperationQueue$QueueWorker +instanceKlass org/gradle/internal/operations/DefaultBuildOperationExecutor +instanceKlass org/gradle/execution/SelectedTaskExecutionAction +instanceKlass org/gradle/execution/DryRunBuildExecutionAction +instanceKlass org/gradle/execution/BuildOperationFiringBuildWorkerExecutor +instanceKlass org/gradle/internal/build/DefaultBuildWorkPreparer +instanceKlass org/gradle/internal/build/BuildOperationFiringBuildWorkPreparer +instanceKlass org/gradle/execution/plan/ToPlannedNodeConverterRegistry$MissingToPlannedNodeConverter +instanceKlass org/gradle/execution/plan/ExecutionPlan +instanceKlass org/gradle/internal/graph/CachingDirectedGraphWalker$GraphWithEmptyEdges +instanceKlass org/gradle/api/internal/tasks/CachingTaskDependencyResolveContext$TaskGraphImpl +instanceKlass org/gradle/internal/graph/DirectedGraphWithEdgeValues +instanceKlass org/gradle/internal/graph/CachingDirectedGraphWalker +instanceKlass org/gradle/internal/graph/DirectedGraph +instanceKlass org/gradle/api/internal/tasks/AbstractTaskDependencyResolveContext +instanceKlass org/gradle/api/internal/tasks/TaskDependencyResolveContext +instanceKlass org/gradle/api/internal/artifacts/transform/ToPlannedTransformStepConverter +instanceKlass org/gradle/internal/taskgraph/CalculateTaskGraphBuildOperationType$TaskIdentity +instanceKlass org/gradle/internal/taskgraph/NodeIdentity +instanceKlass org/gradle/execution/plan/PlannedNodeInternal +instanceKlass org/gradle/internal/taskgraph/CalculateTaskGraphBuildOperationType$PlannedNode +instanceKlass org/gradle/execution/plan/ToPlannedTaskConverter +instanceKlass org/gradle/execution/plan/TaskNodeFactory$DefaultTypeOriginInspectorFactory +instanceKlass org/gradle/execution/plan/SingleFileTreeElementMatcher +instanceKlass org/gradle/internal/collect/PersistentList +instanceKlass org/gradle/execution/plan/ValuedVfsHierarchy +instanceKlass org/gradle/execution/plan/ExecutionNodeAccessHierarchy$AbstractNodeAccessVisitor +instanceKlass org/gradle/execution/plan/ValuedVfsHierarchy$ValueVisitor +instanceKlass org/gradle/execution/plan/ExecutionNodeAccessHierarchy +instanceKlass org/gradle/internal/build/BuildModelLifecycleListener +instanceKlass org/gradle/BuildResult +instanceKlass org/gradle/execution/plan/BuildWorkPlan +instanceKlass org/gradle/internal/build/DefaultBuildLifecycleController +instanceKlass org/gradle/internal/work/DefaultSynchronizer +instanceKlass org/gradle/internal/model/StateTransitionController$CurrentState +instanceKlass org/gradle/internal/model/StateTransitionController +instanceKlass org/gradle/api/internal/artifacts/DefaultBuildIdentifier +instanceKlass org/gradle/internal/model/StateTransitionController$State +instanceKlass org/gradle/initialization/VintageBuildModelController +instanceKlass org/gradle/initialization/DefaultTaskExecutionPreparer +instanceKlass org/gradle/execution/EntryTaskSelector$Context +instanceKlass org/gradle/execution/TaskNameResolvingBuildTaskScheduler +instanceKlass org/gradle/execution/DefaultTasksBuildTaskScheduler +instanceKlass org/gradle/execution/commandline/CommandLineTaskConfigurer +instanceKlass org/gradle/api/internal/tasks/options/OptionValueNotationParserFactory +instanceKlass org/gradle/initialization/DefaultSettingsPreparer +instanceKlass org/gradle/initialization/BuildOperationFiringSettingsPreparer$1 +instanceKlass org/gradle/initialization/LoadBuildBuildOperationType$Result +instanceKlass org/gradle/initialization/BuildOperationFiringSettingsPreparer +instanceKlass org/gradle/api/initialization/dsl/ScriptHandler +instanceKlass org/gradle/configuration/DefaultInitScriptProcessor +instanceKlass org/gradle/initialization/SettingsFactory +instanceKlass org/gradle/initialization/ScriptEvaluatingSettingsProcessor +instanceKlass org/gradle/initialization/SettingsEvaluatedCallbackFiringSettingsProcessor +instanceKlass org/gradle/initialization/RootBuildCacheControllerSettingsProcessor +instanceKlass org/gradle/initialization/BuildOperationSettingsProcessor$1 +instanceKlass org/gradle/initialization/EvaluateSettingsBuildOperationType$Result +instanceKlass org/gradle/initialization/BuildOperationSettingsProcessor +instanceKlass org/gradle/internal/resource/TextResource +instanceKlass org/gradle/internal/resource/DefaultTextFileResourceLoader +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/UnknownProjectFinder +instanceKlass org/gradle/api/internal/initialization/DefaultBuildLogicBuilder +instanceKlass org/gradle/groovy/scripts/internal/ScriptSourceListener +instanceKlass org/gradle/configuration/DefaultScriptPluginFactory +instanceKlass org/gradle/configuration/ScriptPluginFactorySelector$1 +instanceKlass org/gradle/configuration/ScriptPluginFactorySelector$ProviderInstantiator +instanceKlass org/gradle/configuration/ScriptPlugin +instanceKlass org/gradle/api/Plugin +instanceKlass org/gradle/configuration/ScriptPluginFactorySelector +instanceKlass org/gradle/groovy/scripts/internal/StatementTransformer +instanceKlass org/gradle/groovy/scripts/Transformer +instanceKlass org/gradle/configuration/project/DefaultCompileOperationFactory +instanceKlass org/gradle/plugin/use/PluginId +instanceKlass org/gradle/plugin/management/internal/DefaultPluginResolutionStrategy +instanceKlass org/gradle/plugin/internal/PluginUseServices$BuildScopeServices$1 +instanceKlass org/gradle/plugin/use/resolve/internal/PluginArtifactRepositories +instanceKlass org/gradle/api/artifacts/dsl/RepositoryHandler +instanceKlass org/gradle/api/artifacts/ArtifactRepositoryContainer +instanceKlass org/gradle/api/NamedDomainObjectList +instanceKlass org/gradle/api/internal/artifacts/Module +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildScopeServices$DependencyMetaDataProviderImpl +instanceKlass org/gradle/api/internal/artifacts/DefaultDependencyManagementServices +instanceKlass org/gradle/api/internal/plugins/PluginImplementation +instanceKlass org/gradle/api/internal/plugins/DefaultPluginRegistry +instanceKlass org/gradle/api/internal/plugins/PotentialPlugin +instanceKlass org/gradle/model/internal/inspect/ModelRuleSourceDetector$1 +instanceKlass com/google/common/collect/MapMakerInternalMap$AbstractStrongKeyEntry +instanceKlass com/google/common/collect/MapMakerInternalMap$WeakValueEntry +instanceKlass com/google/common/collect/MapMakerInternalMap$StrongKeyWeakValueEntry$Helper +instanceKlass org/gradle/api/internal/initialization/ClassLoaderScopeIdentifier +instanceKlass org/gradle/api/internal/initialization/AbstractClassLoaderScope +instanceKlass org/gradle/initialization/ClassLoaderScopeOrigin +instanceKlass org/gradle/api/internal/initialization/loadercache/ClassLoaderId +instanceKlass org/gradle/initialization/ClassLoaderScopeId +instanceKlass org/gradle/initialization/DefaultClassLoaderScopeRegistry +instanceKlass org/gradle/api/internal/initialization/loadercache/DefaultClassLoaderCache$ClassLoaderSpec +instanceKlass org/gradle/api/internal/initialization/loadercache/DefaultClassLoaderCache +instanceKlass org/gradle/plugin/management/internal/autoapply/CompositeAutoAppliedPluginRegistry +instanceKlass org/gradle/plugin/management/internal/autoapply/DefaultAutoAppliedPluginHandler +instanceKlass org/gradle/groovy/scripts/internal/BuildScopeInMemoryCachingScriptClassCompiler +instanceKlass org/gradle/groovy/scripts/ScriptCompiler +instanceKlass org/gradle/groovy/scripts/DefaultScriptCompilerFactory +instanceKlass org/gradle/groovy/scripts/ScriptRunner +instanceKlass org/gradle/groovy/scripts/internal/DefaultScriptRunnerFactory +instanceKlass org/gradle/internal/scripts/ScriptExecutionListener +instanceKlass org/gradle/groovy/scripts/internal/BuildOperationBackedScriptCompilationHandler$1 +instanceKlass org/gradle/internal/scripts/CompileScriptBuildOperationType$Result +instanceKlass org/gradle/groovy/scripts/internal/BuildOperationBackedScriptCompilationHandler +instanceKlass org/gradle/internal/execution/UnitOfWork +instanceKlass org/gradle/internal/classpath/transforms/ClassTransform +instanceKlass org/gradle/cache/internal/DefaultCacheCoordinator$TransparentFileAccess +instanceKlass org/gradle/internal/execution/workspace/ImmutableWorkspaceProvider$ImmutableWorkspace +instanceKlass org/gradle/internal/execution/workspace/impl/CacheBasedImmutableWorkspaceProvider +instanceKlass org/gradle/internal/execution/impl/DefaultInputFingerprinter +instanceKlass org/gradle/internal/execution/impl/DefaultFileCollectionFingerprinterRegistry +instanceKlass org/gradle/api/internal/changedetection/state/CachingFileSystemLocationSnapshotHasher +instanceKlass org/gradle/api/internal/changedetection/state/LineEndingNormalizingInputStreamHasher +instanceKlass org/gradle/internal/execution/impl/DefaultFileNormalizationSpec +instanceKlass org/gradle/internal/execution/FileNormalizationSpec +instanceKlass org/gradle/internal/execution/impl/FingerprinterRegistration +instanceKlass org/gradle/internal/fingerprint/FileSystemLocationFingerprint +instanceKlass org/gradle/internal/fingerprint/impl/FileCollectionFingerprinterRegistrations$1 +instanceKlass org/gradle/api/internal/changedetection/state/LineEndingNormalizingFileSystemLocationSnapshotHasher$1 +instanceKlass org/gradle/api/internal/changedetection/state/LineEndingNormalizingFileSystemLocationSnapshotHasher +instanceKlass org/gradle/internal/fingerprint/hashing/FileSystemLocationSnapshotHasher$1 +instanceKlass org/gradle/internal/tools/api/ApiMemberWriterFactory +instanceKlass org/gradle/internal/tools/api/ApiClassExtractor$Builder +instanceKlass org/gradle/internal/tools/api/ApiClassExtractor +instanceKlass org/gradle/internal/tools/api/ApiMemberWriterAdapter +instanceKlass org/gradle/internal/tools/api/impl/JavaApiMemberWriter +instanceKlass org/gradle/internal/tools/api/ApiMemberWriter +instanceKlass org/gradle/api/internal/changedetection/state/AbiExtractingClasspathResourceHasher +instanceKlass org/gradle/internal/fingerprint/classpath/CompileClasspathFingerprinter +instanceKlass org/gradle/internal/fingerprint/hashing/FileSystemLocationSnapshotHasher +instanceKlass org/gradle/api/internal/changedetection/state/SplitResourceSnapshotterCacheService +instanceKlass org/gradle/internal/execution/steps/ChoosePipelineStep +instanceKlass org/gradle/internal/execution/steps/IdentityCacheStep +instanceKlass org/gradle/internal/execution/ExecutionEngine$Request +instanceKlass org/gradle/internal/execution/impl/DefaultExecutionEngine +instanceKlass org/gradle/internal/execution/steps/RemovePreviousOutputsStep +instanceKlass org/gradle/internal/execution/steps/OverlappingOutputsFilter +instanceKlass org/gradle/internal/execution/steps/CachingContext +instanceKlass org/gradle/internal/execution/steps/ResolveInputChangesStep +instanceKlass org/gradle/internal/execution/history/AfterExecutionState +instanceKlass org/gradle/internal/execution/steps/StoreExecutionStateStep +instanceKlass org/gradle/internal/execution/steps/SkipUpToDateStep +instanceKlass org/gradle/internal/execution/history/changes/IncrementalInputProperties +instanceKlass org/gradle/internal/execution/steps/ResolveChangesStep +instanceKlass org/gradle/internal/execution/UnitOfWork$InputVisitor +instanceKlass org/gradle/internal/execution/steps/AbstractSkipEmptyWorkStep +instanceKlass org/gradle/internal/execution/steps/LoadPreviousExecutionStateStep +instanceKlass org/gradle/internal/execution/steps/HandleStaleOutputsStep +instanceKlass org/gradle/internal/execution/steps/AssignMutableWorkspaceStep +instanceKlass org/gradle/internal/execution/steps/BroadcastChangingOutputsStep +instanceKlass org/gradle/internal/execution/steps/NoInputChangesStep +instanceKlass org/gradle/caching/internal/CacheableEntity +instanceKlass org/gradle/internal/execution/steps/BuildCacheStep +instanceKlass org/gradle/internal/execution/steps/NeverUpToDateStep +instanceKlass org/gradle/internal/execution/steps/legacy/MarkSnapshottingInputsFinishedStep +instanceKlass org/gradle/internal/Either +instanceKlass org/gradle/internal/execution/caching/CachingState$Disabled +instanceKlass org/gradle/internal/execution/caching/CachingState +instanceKlass org/gradle/internal/execution/caching/CachingDisabledReason +instanceKlass org/gradle/internal/execution/caching/CachingStateFactory +instanceKlass org/gradle/internal/execution/steps/AbstractResolveCachingStateStep +instanceKlass org/gradle/internal/execution/steps/ValidateStep +instanceKlass org/gradle/internal/execution/history/BeforeExecutionState +instanceKlass org/gradle/internal/execution/history/ExecutionInputState +instanceKlass org/gradle/internal/execution/UnitOfWork$ImplementationVisitor +instanceKlass org/gradle/internal/execution/steps/ExecutionRequestContext +instanceKlass org/gradle/internal/execution/steps/BuildOperationStep +instanceKlass org/gradle/internal/execution/steps/legacy/MarkSnapshottingInputsStartedStep +instanceKlass org/gradle/internal/execution/history/ExecutionOutputState +instanceKlass org/gradle/internal/snapshot/FileSystemSnapshotHierarchyVisitor +instanceKlass org/gradle/internal/execution/ExecutionEngine$Result +instanceKlass org/gradle/internal/execution/steps/Result +instanceKlass org/gradle/internal/execution/steps/AssignImmutableWorkspaceStep +instanceKlass org/gradle/internal/execution/ExecutionEngine$Execution +instanceKlass org/gradle/internal/execution/UnitOfWork$ExecutionRequest +instanceKlass org/gradle/internal/execution/steps/ExecuteStep +instanceKlass org/gradle/internal/execution/steps/CancelExecutionStep +instanceKlass org/gradle/internal/execution/steps/TimeoutStep +instanceKlass org/gradle/internal/execution/steps/Context +instanceKlass org/gradle/internal/execution/steps/PreCreateOutputParentsStep +instanceKlass java/lang/invoke/ClassSpecializer$Factory$1Var +instanceKlass org/gradle/internal/execution/timeout/Timeout +instanceKlass org/gradle/internal/execution/timeout/impl/DefaultTimeoutHandler +instanceKlass org/gradle/internal/execution/history/impl/DefaultOverlappingOutputDetector +instanceKlass org/gradle/internal/execution/UnitOfWork$OutputVisitor +instanceKlass org/gradle/internal/execution/impl/DefaultOutputSnapshotter +instanceKlass org/gradle/internal/snapshot/FileSystemLocationSnapshot$FileSystemLocationSnapshotVisitor +instanceKlass org/gradle/internal/execution/history/impl/DefaultOutputFilesRepository +instanceKlass org/gradle/cache/internal/DefaultPersistentDirectoryCache$Initializer +instanceKlass org/gradle/internal/execution/history/impl/DefaultImmutableWorkspaceMetadataStore +instanceKlass org/gradle/api/internal/changedetection/state/SplitFileHasher +instanceKlass org/gradle/internal/execution/history/changes/ChangeVisitor +instanceKlass org/gradle/internal/execution/history/changes/InputFileChanges +instanceKlass org/gradle/internal/execution/history/changes/ChangeContainer +instanceKlass org/gradle/internal/execution/history/changes/DefaultExecutionStateChangeDetector +instanceKlass org/gradle/api/internal/file/AbstractFileResolver$2 +instanceKlass org/apache/commons/io/FilenameUtils +instanceKlass org/gradle/internal/typeconversion/NotationConverterToNotationParserAdapter$ResultImpl +instanceKlass kotlin/jvm/functions/Function0 +instanceKlass kotlin/Function +instanceKlass org/gradle/util/internal/DeferredUtil +instanceKlass org/gradle/caching/BuildCacheServiceFactory$Describer +instanceKlass org/gradle/caching/internal/services/AbstractBuildCacheControllerFactory +instanceKlass org/gradle/caching/internal/origin/OriginMetadataFactory$PropertiesConfigurator +instanceKlass org/gradle/caching/internal/BuildCacheServices$FilePermissionsAccessAdapter +instanceKlass org/gradle/caching/internal/packaging/impl/TarBuildCacheEntryPacker +instanceKlass org/gradle/caching/internal/packaging/impl/GZipBuildCacheEntryPacker +instanceKlass org/gradle/internal/file/ThreadLocalBufferProvider +instanceKlass org/gradle/caching/internal/packaging/impl/DefaultTarPackerFileSystemSupport +instanceKlass org/gradle/caching/internal/controller/NoOpBuildCacheController +instanceKlass org/gradle/caching/internal/controller/impl/LifecycleAwareBuildCacheControllerFactory$DelegatingBuildCacheController +instanceKlass org/gradle/groovy/scripts/internal/DefaultScriptCompilationHandler$NoOpGroovyResourceLoader +instanceKlass org/gradle/groovy/scripts/internal/CompileOperation +instanceKlass org/codehaus/groovy/control/CompilerConfiguration +instanceKlass org/gradle/groovy/scripts/ScriptSource +instanceKlass org/gradle/groovy/scripts/internal/CompiledScript +instanceKlass groovy/lang/GroovyResourceLoader +instanceKlass com/google/common/base/NullnessCasts +instanceKlass com/google/common/base/AbstractIterator$1 +instanceKlass com/google/common/base/AbstractIterator +instanceKlass com/google/common/base/Splitter$1 +instanceKlass com/google/common/base/CharMatcher +instanceKlass com/google/common/base/CommonPattern +instanceKlass com/google/common/base/Splitter$Strategy +instanceKlass com/google/common/base/Splitter +instanceKlass org/gradle/configuration/DefaultImportsReader$2 +instanceKlass com/google/common/io/Java8Compatibility +instanceKlass com/google/common/io/LineBuffer +instanceKlass com/google/common/io/LineReader +instanceKlass com/google/common/io/CharStreams +instanceKlass org/gradle/configuration/DefaultImportsReader$1 +instanceKlass com/google/common/io/Resources +instanceKlass org/gradle/configuration/DefaultImportsReader +instanceKlass org/gradle/composite/internal/plugins/CompositeBuildPluginResolverContributor$PluginResult +instanceKlass org/gradle/composite/internal/plugins/CompositeBuildPluginResolverContributor$CompositeBuildPluginResolver +instanceKlass org/gradle/plugin/management/internal/autoapply/InjectedAutoAppliedPluginRegistry +instanceKlass org/gradle/configuration/DefaultProjectsPreparer +instanceKlass org/gradle/configuration/BuildTreePreparingProjectsPreparer +instanceKlass org/gradle/configuration/BuildOperationFiringProjectsPreparer$1 +instanceKlass org/gradle/initialization/ConfigureBuildBuildOperationType$Result +instanceKlass org/gradle/configuration/BuildOperationFiringProjectsPreparer +instanceKlass org/gradle/internal/resource/local/FileResourceListener +instanceKlass org/gradle/initialization/InstantiatingBuildLoader +instanceKlass org/gradle/initialization/ProjectPropertySettingBuildLoader +instanceKlass org/gradle/initialization/NotifyingBuildLoader$1 +instanceKlass org/gradle/initialization/NotifyProjectsLoadedBuildOperationType$Result +instanceKlass org/gradle/initialization/NotifyingBuildLoader +instanceKlass org/gradle/initialization/DefaultGradlePropertiesController$SharedGradleProperties +instanceKlass org/gradle/initialization/DefaultGradlePropertiesController$NotLoaded +instanceKlass org/gradle/initialization/DefaultGradlePropertiesController$State +instanceKlass org/gradle/initialization/DefaultGradlePropertiesController +instanceKlass org/gradle/initialization/properties/DefaultProjectPropertiesLoader +instanceKlass org/gradle/initialization/properties/DefaultSystemPropertiesInstaller +instanceKlass org/gradle/initialization/properties/MutableGradleProperties +instanceKlass org/gradle/initialization/DefaultGradlePropertiesLoader +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DependencySubstitutionsInternal +instanceKlass org/gradle/api/artifacts/DependencySubstitutions +instanceKlass org/gradle/composite/internal/IncludedBuildDependencySubstitutionsBuilder +instanceKlass org/gradle/api/internal/artifacts/dsl/CapabilityNotationParserFactory$1 +instanceKlass org/gradle/internal/typeconversion/CompositeNotationConverter +instanceKlass org/gradle/api/internal/artifacts/dsl/CapabilityNotationParserFactory +instanceKlass org/gradle/internal/typeconversion/NotationParserBuilder$LazyDisplayName +instanceKlass org/gradle/internal/typeconversion/JustReturningParser +instanceKlass org/gradle/api/artifacts/VersionConstraint +instanceKlass org/gradle/internal/typeconversion/TypedNotationConverter +instanceKlass org/gradle/internal/typeconversion/CrossBuildCachingNotationConverter +instanceKlass org/gradle/composite/internal/DefaultBuildableCompositeBuildContext +instanceKlass org/gradle/api/artifacts/ConfigurationContainer +instanceKlass org/gradle/kotlin/dsl/tooling/builders/BuildSrcClassPathModeConfigurationAction +instanceKlass org/gradle/initialization/buildsrc/GradlePluginApiVersionAttributeConfigurationAction +instanceKlass org/gradle/initialization/buildsrc/GroovyBuildSrcProjectConfigurationAction +instanceKlass org/gradle/configuration/project/PluginsProjectConfigureActions +instanceKlass org/gradle/api/internal/InternalAction +instanceKlass org/gradle/configuration/project/ProjectConfigureAction +instanceKlass org/gradle/initialization/buildsrc/BuildSrcProjectConfigurationAction +instanceKlass org/gradle/initialization/buildsrc/BuildSrcBuildListenerFactory +instanceKlass org/gradle/initialization/buildsrc/BuildSourceBuilder$1 +instanceKlass org/gradle/initialization/buildsrc/BuildBuildSrcBuildOperationType$Result +instanceKlass org/gradle/cache/internal/BuildScopeCacheDir +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeWorkGraphPreparer +instanceKlass javax/annotation/meta/TypeQualifier +instanceKlass org/gradle/api/problems/internal/GeneralDataSpec +instanceKlass org/gradle/api/problems/internal/AdditionalDataSpec +instanceKlass org/gradle/execution/TaskSelection +instanceKlass org/gradle/util/internal/NameMatcher +instanceKlass org/gradle/execution/TaskSelector$SelectionContext +instanceKlass org/gradle/api/tasks/TaskContainer +instanceKlass org/gradle/api/tasks/TaskCollection +instanceKlass org/gradle/execution/TaskSelectionResult +instanceKlass org/gradle/execution/TaskNameResolver +instanceKlass org/gradle/execution/DefaultTaskSelector +instanceKlass org/gradle/api/internal/file/FileCollectionInternal$1 +instanceKlass org/gradle/api/internal/file/FileCollectionInternal$Source +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$MergedQueues +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$WorkerStats +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$WorkerState +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$ExecutorState +instanceKlass org/gradle/internal/id/LongIdGenerator +instanceKlass org/gradle/api/internal/initialization/transform/registration/InstrumentationTransformRegisterer +instanceKlass org/gradle/util/internal/GUtil$1 +instanceKlass org/gradle/internal/build/DefaultPublicBuildPath +instanceKlass org/gradle/workers/internal/DefaultWorkResult +instanceKlass org/gradle/api/tasks/WorkResult +instanceKlass org/gradle/internal/work/ConditionalExecutionQueue +instanceKlass org/gradle/api/HasImplicitReceiver +instanceKlass org/gradle/api/internal/AbstractMutationGuard +instanceKlass org/gradle/api/internal/project/BuildOperationCrossProjectConfigurator +instanceKlass org/gradle/api/internal/WithMutationGuard +instanceKlass org/gradle/internal/concurrent/CompositeStoppable$3 +instanceKlass org/gradle/api/execution/TaskExecutionGraphListener +instanceKlass org/gradle/execution/plan/WorkNodeExecutor +instanceKlass org/gradle/execution/plan/LocalTaskNodeExecutor +instanceKlass org/gradle/execution/plan/NodeExecutor +instanceKlass org/gradle/execution/commandline/CommandLineTaskParser +instanceKlass org/gradle/execution/taskgraph/TaskListenerInternal +instanceKlass org/gradle/api/execution/TaskExecutionListener +instanceKlass org/gradle/api/internal/tasks/options/OptionReader +instanceKlass org/gradle/execution/BuildTaskScheduler +instanceKlass org/gradle/initialization/TaskExecutionPreparer +instanceKlass org/gradle/execution/BuildWorkExecutor +instanceKlass org/gradle/internal/service/scopes/GradleScopeServices +instanceKlass org/gradle/internal/ImmutableActionSet +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$ClassBuilderImpl$ReturnTypeEntry +instanceKlass javax/annotation/Nullable +instanceKlass org/gradle/api/plugins/PluginContainer +instanceKlass org/gradle/api/plugins/PluginCollection +instanceKlass org/gradle/configuration/ConfigurationTargetIdentifier +instanceKlass org/gradle/internal/MutableActionSet +instanceKlass org/gradle/api/internal/plugins/PluginManagerInternal +instanceKlass org/gradle/execution/taskgraph/TaskExecutionGraphInternal +instanceKlass org/gradle/invocation/DefaultGradle$DefaultGradleLifecycle +instanceKlass org/gradle/initialization/SettingsState +instanceKlass org/gradle/api/internal/initialization/ClassLoaderScope +instanceKlass org/gradle/util/Path +instanceKlass org/gradle/api/internal/SettingsInternal +instanceKlass org/gradle/api/initialization/Settings +instanceKlass org/gradle/api/ProjectEvaluationListener +instanceKlass org/gradle/api/internal/plugins/DefaultObjectConfigurationAction +instanceKlass org/gradle/api/plugins/ObjectConfigurationAction +instanceKlass org/gradle/api/invocation/GradleLifecycle +instanceKlass org/gradle/api/execution/TaskExecutionGraph +instanceKlass org/gradle/api/plugins/PluginManager +instanceKlass org/gradle/api/internal/project/AbstractPluginAware +instanceKlass org/gradle/api/flow/FlowScope +instanceKlass org/gradle/internal/flow/services/FlowServices$FlowServicesProvider +instanceKlass org/gradle/internal/flow/services/FlowParametersInstantiator +instanceKlass org/gradle/internal/flow/services/FlowScheduler +instanceKlass org/gradle/internal/flow/services/DefaultFlowProviders +instanceKlass org/gradle/api/flow/FlowProviders +instanceKlass org/gradle/declarative/dsl/tooling/builders/internal/BuildScopeToolingServices +instanceKlass org/gradle/internal/cc/impl/services/DefaultIsolatedProjectEvaluationListenerProvider +instanceKlass org/gradle/invocation/GradleLifecycleActionExecutor +instanceKlass org/gradle/invocation/IsolatedProjectEvaluationListenerProvider +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheClassLoaderScopeRegistryListener +instanceKlass org/gradle/internal/cc/impl/serialize/ScopeLookup +instanceKlass org/gradle/internal/cc/impl/problems/AbstractProblemsListener +instanceKlass org/gradle/internal/configuration/problems/ProblemsListener +instanceKlass org/gradle/internal/cc/impl/DefaultConfigurationCacheIO +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheIncludedBuildIO +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheBuildTreeIO +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheOperationIO +instanceKlass org/gradle/internal/cc/impl/DefaultConfigurationCacheHost +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheHost +instanceKlass org/gradle/internal/cc/base/serialize/HostServiceProvider +instanceKlass org/gradle/internal/cc/impl/WorkGraphLoadingState +instanceKlass org/gradle/api/internal/tasks/TaskExecutionAccessChecker +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheServices$TaskExecutionAccessCheckerProvider +instanceKlass org/gradle/internal/cc/impl/RelevantProjectsRegistry +instanceKlass org/gradle/api/internal/artifacts/configurations/ProjectComponentObservationListener +instanceKlass org/gradle/profile/BuildProfileServices$2 +instanceKlass org/gradle/vcs/internal/services/VersionControlServices$VcsResolverFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ResolverProviderFactory +instanceKlass org/gradle/vcs/internal/resolver/VcsVersionWorkingDirResolver +instanceKlass org/gradle/vcs/internal/services/VersionControlServices$VersionControlBuildServices +instanceKlass org/gradle/tooling/provider/model/ToolingModelBuilder +instanceKlass org/gradle/language/cpp/internal/tooling/ToolingNativeServices$ToolingModelRegistration +instanceKlass org/gradle/authentication/aws/AwsImAuthentication +instanceKlass org/gradle/internal/resource/transport/aws/s3/S3ResourcesServices$AuthenticationSchemeAction +instanceKlass org/gradle/nativeplatform/toolchain/internal/metadata/CompilerMetaDataProvider +instanceKlass org/gradle/nativeplatform/toolchain/internal/metadata/CompilerMetaDataProviderFactory +instanceKlass org/gradle/nativeplatform/internal/resolve/NativeDependencyResolver +instanceKlass org/gradle/nativeplatform/internal/resolve/LibraryBinaryLocator +instanceKlass org/gradle/nativeplatform/internal/resolve/NativeDependencyResolverServices +instanceKlass org/gradle/cache/internal/FileContentCacheFactory$Calculator +instanceKlass org/gradle/language/nativeplatform/internal/incremental/sourceparser/CachingCSourceParser +instanceKlass org/gradle/language/nativeplatform/internal/incremental/sourceparser/CSourceParser +instanceKlass org/gradle/language/nativeplatform/internal/incremental/DefaultCompilationStateCacheFactory +instanceKlass org/gradle/language/nativeplatform/internal/incremental/CompilationStateCacheFactory +instanceKlass org/gradle/language/cpp/internal/NativeDependencyCache +instanceKlass org/gradle/plugins/ide/internal/configurer/UniqueProjectNameProvider +instanceKlass org/gradle/plugins/ide/internal/tooling/ToolingModelServices$BuildScopeToolingServices +instanceKlass org/gradle/ide/xcode/internal/xcodeproj/GidGenerator +instanceKlass org/gradle/ide/xcode/internal/services/XcodeServices$1 +instanceKlass org/gradle/internal/scan/config/BuildScanConfig +instanceKlass org/gradle/internal/scan/config/BuildScanConfig$Attributes +instanceKlass org/gradle/internal/enterprise/impl/legacy/LegacyGradleEnterprisePluginCheckInService +instanceKlass org/gradle/internal/scan/eob/BuildScanEndOfBuildNotifier +instanceKlass org/gradle/internal/scan/config/BuildScanConfigProvider +instanceKlass org/gradle/internal/enterprise/impl/legacy/DefaultBuildScanScopeIds +instanceKlass org/gradle/internal/scan/scopeids/BuildScanScopeIds +instanceKlass org/gradle/internal/enterprise/impl/DefaultDevelocityBuildLifecycleService +instanceKlass org/gradle/internal/enterprise/DevelocityBuildLifecycleService +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginCheckInResult +instanceKlass org/gradle/internal/enterprise/core/GradleEnterprisePluginAdapter +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginCheckInService +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginCheckInService +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginRequiredServices +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginRequiredServices +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginAdapterFactory +instanceKlass org/gradle/internal/enterprise/impl/GradleEnterprisePluginAutoApplicationListener +instanceKlass org/gradle/plugin/use/internal/PluginRequestApplicator$PluginApplicationListener +instanceKlass org/gradle/composite/internal/plugins/CompositeBuildPluginResolverContributor +instanceKlass org/gradle/plugin/use/resolve/internal/PluginResolverContributor +instanceKlass org/apache/http/HttpRequest +instanceKlass org/apache/http/HttpMessage +instanceKlass org/gradle/caching/http/internal/HttpBuildCacheRequestCustomizer +instanceKlass org/gradle/caching/http/internal/DefaultHttpBuildCacheServiceFactory +instanceKlass org/gradle/caching/BuildCacheServiceFactory +instanceKlass org/gradle/caching/configuration/AbstractBuildCache +instanceKlass org/gradle/caching/configuration/BuildCache +instanceKlass org/gradle/caching/configuration/internal/DefaultBuildCacheServiceRegistration +instanceKlass org/gradle/maven/MavenPomArtifact +instanceKlass org/gradle/maven/MavenModule +instanceKlass org/gradle/api/publish/maven/internal/publisher/MavenPublishers +instanceKlass org/gradle/api/publish/maven/internal/dependencies/VersionRangeMapper +instanceKlass org/gradle/api/publish/maven/internal/MavenPublishServices$ComponentRegistrationAction +instanceKlass org/gradle/jvm/toolchain/internal/WindowsInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/OsXInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/LinuxInstallationSupplier +instanceKlass org/xml/sax/ErrorHandler +instanceKlass org/gradle/jvm/toolchain/internal/MavenToolchainsInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/SdkmanInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/JabbaInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/IntellijInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/AsdfInstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/DefaultOsXJavaHomeCommand +instanceKlass org/gradle/jvm/toolchain/internal/OsXJavaHomeCommand +instanceKlass org/gradle/jvm/internal/services/ProviderBackedToolchainConfiguration +instanceKlass org/gradle/jvm/toolchain/internal/InstallationSupplier +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJvmToolchainManagement +instanceKlass org/gradle/jvm/toolchain/JvmToolchainManagement +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJavaToolchainResolverRegistry +instanceKlass org/gradle/jvm/toolchain/internal/JavaToolchainResolverRegistryInternal +instanceKlass org/gradle/jvm/toolchain/JavaToolchainResolverRegistry +instanceKlass org/gradle/platform/internal/DefaultBuildPlatform +instanceKlass org/gradle/platform/BuildPlatform +instanceKlass org/gradle/jvm/toolchain/internal/JdkCacheDirectory +instanceKlass org/gradle/jvm/toolchain/internal/ToolchainConfiguration +instanceKlass org/gradle/internal/jvm/inspection/JavaInstallationRegistry +instanceKlass org/gradle/jvm/internal/services/ToolchainsJvmServices$BuildServices +instanceKlass org/gradle/internal/jvm/inspection/InvalidJvmInstallationCacheInvalidator +instanceKlass org/gradle/internal/jvm/inspection/JvmInstallationMetadata$DefaultJvmInstallationMetadata +instanceKlass org/gradle/jvm/toolchain/internal/InstallationLocation +instanceKlass org/gradle/internal/jvm/inspection/InvalidInstallationWarningReporter +instanceKlass org/gradle/internal/jvm/inspection/JvmInstallationMetadata +instanceKlass org/gradle/internal/jvm/inspection/DefaultJvmMetadataDetector +instanceKlass org/gradle/internal/jvm/inspection/ReportingJvmMetadataDetector +instanceKlass org/gradle/internal/jvm/inspection/CachingJvmMetadataDetector +instanceKlass org/gradle/internal/jvm/inspection/ConditionalInvalidation +instanceKlass org/gradle/api/internal/model/InstantiatorBackedObjectFactory +instanceKlass org/gradle/process/internal/ExecHandleBuilder +instanceKlass org/gradle/process/internal/JavaExecAction +instanceKlass org/gradle/process/JavaExecSpec +instanceKlass org/gradle/process/internal/JavaForkOptionsInternal +instanceKlass org/gradle/process/JavaForkOptions +instanceKlass org/gradle/process/JavaDebugOptions +instanceKlass org/gradle/process/internal/ExecAction +instanceKlass org/gradle/process/ExecSpec +instanceKlass org/gradle/process/BaseExecSpec +instanceKlass org/gradle/process/ProcessForkOptions +instanceKlass org/gradle/process/internal/DefaultExecActionFactory +instanceKlass org/gradle/jvm/internal/services/PlatformJvmServices$1 +instanceKlass org/gradle/language/base/artifact/SourcesArtifact +instanceKlass org/gradle/language/jvm/internal/JvmLanguageServices$ComponentRegistrationAction +instanceKlass org/gradle/language/java/artifact/JavadocArtifact +instanceKlass org/gradle/jvm/JvmLibrary +instanceKlass org/gradle/platform/base/Library +instanceKlass org/gradle/language/java/internal/JavaLanguageServices$JavaBuildScopeServices +instanceKlass org/gradle/initialization/DefaultJdkToolsInitializer +instanceKlass org/gradle/api/internal/tasks/compile/incremental/IncrementalCompilerFactory +instanceKlass org/gradle/api/internal/tasks/compile/incremental/classpath/CachingClassSetAnalyzer +instanceKlass org/gradle/api/internal/tasks/compile/incremental/analyzer/CachingClassDependenciesAnalyzer +instanceKlass org/gradle/api/internal/tasks/compile/incremental/classpath/ClassSetAnalyzer +instanceKlass org/gradle/api/internal/tasks/compile/incremental/analyzer/ClassDependenciesAnalyzer +instanceKlass org/gradle/api/internal/tasks/CompileServices$BuildScopeCompileServices +instanceKlass org/gradle/api/publish/internal/mapping/VariantDependencyResolver +instanceKlass org/gradle/api/publish/internal/mapping/ComponentDependencyResolver +instanceKlass org/gradle/api/publish/internal/mapping/DefaultDependencyCoordinateResolverFactory +instanceKlass org/gradle/api/publish/internal/mapping/DependencyCoordinateResolverFactory +instanceKlass org/gradle/api/publish/internal/validation/DuplicatePublicationTracker +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/DefaultProjectDependencyPublicationResolver$VariantCoordinateResolver +instanceKlass org/gradle/api/component/SoftwareComponent +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/DefaultProjectDependencyPublicationResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/ProjectDependencyPublicationResolver +instanceKlass org/gradle/ivy/IvyDescriptorArtifact +instanceKlass org/gradle/api/component/Artifact +instanceKlass org/gradle/api/internal/component/DefaultComponentTypeRegistry$DefaultComponentTypeRegistration +instanceKlass org/gradle/ivy/IvyModule +instanceKlass org/gradle/api/component/Component +instanceKlass org/gradle/api/internal/component/ComponentTypeRegistration +instanceKlass org/gradle/api/internal/component/DefaultComponentTypeRegistry +instanceKlass org/gradle/api/publish/ivy/internal/publisher/IvyPublisher +instanceKlass org/gradle/api/publish/ivy/internal/IvyServices$BuildServices +instanceKlass org/gradle/api/internal/resolve/ProjectModelResolver +instanceKlass org/gradle/platform/base/internal/registry/ComponentModelBaseServices$BuildScopeServices +instanceKlass org/gradle/plugin/use/tracker/internal/PluginVersionTracker +instanceKlass org/gradle/plugin/use/resolve/internal/PluginResolutionVisitor +instanceKlass org/gradle/api/internal/plugins/PluginDescriptorLocator +instanceKlass org/gradle/plugin/use/internal/DefaultPluginRequestApplicator +instanceKlass org/gradle/plugin/use/resolve/internal/PluginResolver +instanceKlass org/gradle/plugin/use/internal/PluginResolverFactory +instanceKlass org/gradle/plugin/use/internal/PluginDependencyResolutionServices +instanceKlass org/gradle/plugin/use/resolve/internal/PluginArtifactRepositoriesProvider +instanceKlass org/gradle/plugin/use/internal/PluginRepositoryHandlerProvider +instanceKlass org/gradle/plugin/management/internal/PluginResolutionStrategyInternal +instanceKlass org/gradle/plugin/management/PluginResolutionStrategy +instanceKlass org/gradle/plugin/use/resolve/service/internal/ClientInjectedClasspathPluginResolver +instanceKlass org/gradle/plugin/software/internal/ModelDefaultsApplicator +instanceKlass org/gradle/plugin/internal/PluginUseServices$BuildScopeServices +instanceKlass org/gradle/authentication/http/HttpHeaderAuthentication +instanceKlass org/gradle/authentication/http/DigestAuthentication +instanceKlass org/gradle/internal/authentication/AbstractAuthentication +instanceKlass org/gradle/internal/authentication/AuthenticationInternal +instanceKlass org/gradle/authentication/http/BasicAuthentication +instanceKlass org/gradle/authentication/Authentication +instanceKlass org/gradle/internal/authentication/DefaultAuthenticationSchemeRegistry +instanceKlass org/gradle/internal/resource/transport/http/HttpResourcesServices$AuthenticationSchemeAction +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleComponentRepository +instanceKlass org/gradle/api/internal/artifacts/MetadataResolutionContext +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ComponentResolvers +instanceKlass org/gradle/api/artifacts/result/ResolvedArtifactResult +instanceKlass org/gradle/api/artifacts/result/ArtifactResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ExternalModuleComponentResolverFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/RootGraphNode +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/NodeState +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/DependencyGraphNode +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/ResolvedGraphVariant +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/ModuleConflictHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/CapabilitiesConflictHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/conflicts/ConflictHandler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSetResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/graph/builder/DependencyGraphBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DependencySubstitutionApplicator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/ModuleConflictResolver +instanceKlass org/gradle/internal/resolve/resolver/ComponentMetaDataResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/DependencyGraphResolver +instanceKlass org/gradle/internal/resource/local/LocallyAvailableExternalResource +instanceKlass org/gradle/internal/resource/ExternalResource +instanceKlass org/gradle/internal/resource/local/FileResourceConnector +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/DefaultProjectPublicationRegistry +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/ProjectPublicationRegistry +instanceKlass org/gradle/api/internal/artifacts/transform/TransformStepNodeDependencyResolver +instanceKlass org/gradle/internal/component/external/model/ModuleComponentArtifactMetadata +instanceKlass org/gradle/internal/resource/local/LocallyAvailableResourceFinder +instanceKlass org/gradle/internal/verifier/HttpRedirectVerifier +instanceKlass org/gradle/initialization/DependenciesAccessors +instanceKlass org/gradle/internal/management/DependencyResolutionManagementInternal +instanceKlass org/gradle/api/initialization/resolve/DependencyResolutionManagement +instanceKlass org/gradle/internal/resolve/caching/CrossBuildCachingRuleExecutor +instanceKlass org/gradle/internal/resolve/caching/CachingRuleExecutor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/verification/DependencyVerificationOverride +instanceKlass org/gradle/internal/component/model/GraphVariantSelector +instanceKlass org/gradle/api/internal/runtimeshaded/RuntimeShadedJarFactory +instanceKlass org/gradle/api/internal/artifacts/transform/TransformExecutionListener +instanceKlass org/gradle/internal/component/resolution/failure/ResolutionFailureHandler +instanceKlass org/gradle/api/internal/artifacts/repositories/transport/RepositoryTransportFactory +instanceKlass org/gradle/internal/resource/local/FileResourceRepository +instanceKlass org/gradle/internal/resource/ExternalResourceRepository +instanceKlass org/gradle/api/internal/artifacts/DefaultProjectDependencyFactory +instanceKlass org/gradle/api/internal/artifacts/dsl/CapabilityNotationParser +instanceKlass org/gradle/internal/resource/TextUriResourceLoader$Factory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/excludes/ModuleExclusions +instanceKlass org/gradle/internal/resource/TextUriResourceLoader +instanceKlass org/gradle/api/internal/artifacts/repositories/resolver/ExternalResourceAccessor +instanceKlass org/gradle/api/internal/artifacts/verification/signatures/SignatureVerificationServiceFactory +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DependencyConstraintFactoryInternal +instanceKlass org/gradle/api/artifacts/dsl/DependencyConstraintFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/VersionComparator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/VersionSelectorScheme +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedVariantCache +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/MavenFileLocations +instanceKlass org/gradle/api/internal/artifacts/mvnsettings/LocalMavenRepositoryLocator +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildScopeServices +instanceKlass org/gradle/internal/declarativedsl/evaluator/DeclarativeKotlinScriptEvaluator +instanceKlass org/gradle/internal/declarativedsl/provider/BuildServices +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/DependencyFactoryInternal +instanceKlass org/gradle/api/artifacts/dsl/DependencyFactory +instanceKlass org/gradle/kotlin/dsl/provider/KotlinScriptEvaluator +instanceKlass org/gradle/kotlin/dsl/provider/ClassPathModeExceptionCollector +instanceKlass org/gradle/kotlin/dsl/provider/KotlinScriptClassPathProvider +instanceKlass org/gradle/kotlin/dsl/provider/PluginRequestsHandler +instanceKlass org/gradle/kotlin/dsl/provider/BuildServices +instanceKlass org/gradle/kotlin/dsl/concurrent/BuildServices +instanceKlass org/gradle/kotlin/dsl/accessors/Stage1BlocksAccessorClassPathGenerator +instanceKlass org/gradle/kotlin/dsl/accessors/ProjectAccessorsClassPathGenerator +instanceKlass org/gradle/kotlin/dsl/concurrent/AsyncIOScopeFactory +instanceKlass org/gradle/kotlin/dsl/accessors/BuildScopeServices +instanceKlass org/gradle/internal/execution/history/OutputsCleaner +instanceKlass org/gradle/internal/execution/OutputChangeListener +instanceKlass org/gradle/internal/execution/history/ExecutionHistoryCacheAccess +instanceKlass org/gradle/internal/execution/steps/DeferredExecutionAwareStep +instanceKlass org/gradle/internal/execution/steps/AfterExecutionOutputFilter +instanceKlass org/gradle/internal/execution/steps/Step +instanceKlass org/gradle/internal/execution/history/OutputFilesRepository +instanceKlass org/gradle/internal/execution/history/ExecutionHistoryStore +instanceKlass org/gradle/internal/service/scopes/ExecutionBuildServices +instanceKlass org/gradle/caching/internal/controller/impl/LifecycleAwareBuildCacheController +instanceKlass org/gradle/caching/internal/controller/BuildCacheController +instanceKlass org/gradle/caching/configuration/internal/BuildCacheConfigurationInternal +instanceKlass org/gradle/caching/configuration/BuildCacheConfiguration +instanceKlass org/gradle/caching/internal/services/BuildCacheControllerFactory +instanceKlass org/gradle/caching/internal/packaging/impl/TarPackerFileSystemSupport +instanceKlass org/gradle/caching/configuration/internal/BuildCacheServiceRegistration +instanceKlass org/gradle/caching/internal/packaging/BuildCacheEntryPacker +instanceKlass org/gradle/caching/internal/packaging/impl/FilePermissionAccess +instanceKlass org/gradle/caching/internal/BuildCacheServices$3 +instanceKlass org/gradle/configuration/project/ProjectEvaluator +instanceKlass org/gradle/internal/cc/impl/DefaultBuildModelControllerServices$VintageModelProvider +instanceKlass org/gradle/api/internal/project/DynamicLookupRoutine +instanceKlass org/gradle/api/internal/project/CrossProjectModelAccess +instanceKlass org/gradle/internal/cc/impl/DefaultBuildModelControllerServices$VintageIsolatedProjectsProvider +instanceKlass org/gradle/internal/cc/impl/services/DefaultEnvironment +instanceKlass org/gradle/internal/build/BuildModelController +instanceKlass org/gradle/internal/cc/impl/DefaultBuildModelControllerServices$VintageBuildControllerProvider +instanceKlass org/gradle/tooling/provider/model/internal/IntermediateToolingModelProvider +instanceKlass org/gradle/internal/cc/impl/DefaultBuildModelControllerServices$ServicesProvider +instanceKlass org/gradle/internal/cleanup/DefaultBuildOutputCleanupRegistry +instanceKlass org/gradle/internal/execution/BuildOutputCleanupRegistry +instanceKlass org/gradle/api/internal/artifacts/configurations/DependencyMetaDataProvider +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementServices +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/ProjectFinder +instanceKlass org/gradle/api/internal/initialization/DefaultScriptHandlerFactory +instanceKlass org/gradle/api/internal/initialization/DefaultScriptClassPathResolver +instanceKlass org/gradle/internal/composite/DefaultBuildIncluder +instanceKlass org/gradle/internal/build/ExportedTaskNode +instanceKlass org/gradle/internal/build/BuildWorkGraph +instanceKlass org/gradle/internal/build/DefaultBuildWorkGraphController +instanceKlass org/gradle/internal/build/BuildWorkGraphController +instanceKlass org/gradle/execution/plan/WorkNodeDependencyResolver +instanceKlass org/gradle/execution/plan/TaskNodeDependencyResolver +instanceKlass org/gradle/execution/plan/DependencyResolver +instanceKlass org/gradle/api/internal/tasks/WorkDependencyResolver +instanceKlass org/gradle/internal/execution/WorkValidationContext +instanceKlass org/gradle/internal/execution/WorkValidationContext$TypeOriginInspector +instanceKlass org/gradle/execution/plan/DefaultNodeValidator +instanceKlass org/gradle/execution/plan/NodeValidator +instanceKlass org/gradle/initialization/layout/ResolvedBuildLayout +instanceKlass org/gradle/internal/build/BuildIncluder +instanceKlass org/gradle/initialization/SettingsLoader +instanceKlass org/gradle/initialization/DefaultSettingsLoaderFactory +instanceKlass org/gradle/api/internal/project/ProjectFactory +instanceKlass org/gradle/api/internal/project/IProjectFactory +instanceKlass org/gradle/api/internal/file/DefaultArchiveOperations +instanceKlass org/gradle/api/file/ArchiveOperations +instanceKlass org/gradle/api/internal/file/DefaultFileSystemOperations +instanceKlass org/gradle/api/file/FileSystemOperations +instanceKlass org/gradle/api/resources/internal/ReadableResourceInternal +instanceKlass org/gradle/api/resources/ReadableResource +instanceKlass org/gradle/api/resources/Resource +instanceKlass org/gradle/internal/resource/LocalBinaryResource +instanceKlass org/gradle/internal/resource/ReadableContent +instanceKlass org/gradle/internal/resource/Resource +instanceKlass org/gradle/api/internal/file/delete/DeleteSpecInternal +instanceKlass org/gradle/api/file/DeleteSpec +instanceKlass org/gradle/api/internal/file/DefaultFileOperations +instanceKlass org/gradle/api/internal/file/FileOperations +instanceKlass org/gradle/process/internal/DefaultExecOperations +instanceKlass org/gradle/api/internal/project/ProjectInternal +instanceKlass org/gradle/model/internal/registry/ModelRegistryScope +instanceKlass org/gradle/api/internal/DomainObjectContext +instanceKlass org/gradle/api/internal/file/HasScriptServices +instanceKlass org/gradle/api/internal/project/ProjectIdentifier +instanceKlass org/gradle/tooling/provider/model/internal/BuildScopeToolingModelBuilderRegistryAction +instanceKlass org/gradle/execution/selection/BuildTaskSelector$BuildSpecificSelector +instanceKlass org/gradle/api/internal/plugins/PluginInspector +instanceKlass org/gradle/api/services/internal/DefaultBuildServicesRegistry +instanceKlass org/gradle/api/services/internal/BuildServiceRegistryInternal +instanceKlass org/gradle/api/services/BuildServiceRegistry +instanceKlass org/gradle/initialization/SettingsLoaderFactory +instanceKlass org/gradle/initialization/InitScriptHandler +instanceKlass org/gradle/api/internal/initialization/ScriptHandlerFactory +instanceKlass org/gradle/api/initialization/SharedModelDefaults +instanceKlass org/gradle/plugin/software/internal/SoftwareTypeRegistry +instanceKlass org/gradle/initialization/DefaultToolchainManagement +instanceKlass org/gradle/internal/management/ToolchainManagementInternal +instanceKlass org/gradle/internal/FinalizableValue +instanceKlass org/gradle/api/toolchain/management/ToolchainManagement +instanceKlass org/gradle/initialization/buildsrc/BuildSourceBuilder +instanceKlass org/gradle/api/internal/initialization/ScriptClassPathResolver +instanceKlass org/gradle/internal/service/scopes/BuildScopeServiceRegistryFactory +instanceKlass org/gradle/internal/service/scopes/ServiceRegistryFactory +instanceKlass org/gradle/execution/plan/ExecutionPlanFactory +instanceKlass org/gradle/execution/plan/TaskDependencyResolver +instanceKlass org/gradle/execution/plan/TaskNodeFactory +instanceKlass org/gradle/plugin/use/internal/PluginRequestApplicator +instanceKlass org/gradle/plugin/management/internal/autoapply/AutoAppliedPluginHandler +instanceKlass org/gradle/api/internal/GradleInternal +instanceKlass org/gradle/api/internal/plugins/PluginAwareInternal +instanceKlass org/gradle/execution/plan/OrdinalGroupFactory +instanceKlass org/gradle/api/provider/ProviderFactory +instanceKlass org/gradle/api/internal/project/DefaultProjectRegistry +instanceKlass org/gradle/api/internal/project/ProjectRegistry +instanceKlass org/gradle/api/internal/provider/sources/process/ProcessOutputProviderFactory +instanceKlass org/gradle/api/internal/properties/GradleProperties +instanceKlass org/gradle/initialization/Environment +instanceKlass org/gradle/api/internal/tasks/TaskStatistics +instanceKlass org/gradle/api/internal/resources/DefaultResourceHandler$Factory +instanceKlass org/gradle/api/internal/resources/ApiTextResourceAdapter$Factory +instanceKlass org/gradle/tooling/provider/model/internal/DefaultToolingModelBuilderRegistry +instanceKlass org/gradle/tooling/provider/model/internal/ToolingModelBuilderLookup +instanceKlass org/gradle/tooling/provider/model/ToolingModelBuilderRegistry +instanceKlass org/gradle/execution/plan/ExecutionNodeAccessHierarchies +instanceKlass org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler +instanceKlass org/gradle/internal/execution/ExecutionEngine +instanceKlass org/gradle/groovy/scripts/internal/DefaultScriptCompilationHandler +instanceKlass org/gradle/internal/build/BuildWorkPreparer +instanceKlass org/gradle/internal/actor/ActorFactory +instanceKlass org/gradle/api/internal/project/taskfactory/ITaskFactory +instanceKlass org/gradle/initialization/BuildLoader +instanceKlass org/gradle/api/internal/plugins/PluginRegistry +instanceKlass org/gradle/initialization/SettingsProcessor +instanceKlass org/gradle/api/internal/component/ComponentTypeRegistry +instanceKlass org/gradle/plugin/software/internal/ModelDefaultsHandler +instanceKlass org/gradle/groovy/scripts/internal/ScriptRunnerFactory +instanceKlass org/gradle/initialization/SettingsPreparer +instanceKlass org/gradle/configuration/InitScriptProcessor +instanceKlass org/gradle/api/internal/initialization/BuildLogicBuilder +instanceKlass org/gradle/configuration/ProjectsPreparer +instanceKlass org/gradle/configuration/CompileOperationFactory +instanceKlass org/gradle/api/internal/project/ProjectTaskLister +instanceKlass org/gradle/api/invocation/BuildInvocationDetails +instanceKlass org/gradle/internal/authentication/AuthenticationSchemeRegistry +instanceKlass org/gradle/internal/operations/logging/BuildOperationLoggerFactory +instanceKlass org/gradle/initialization/GradlePropertiesController +instanceKlass org/gradle/configuration/ScriptPluginFactory +instanceKlass org/gradle/initialization/properties/SystemPropertiesInstaller +instanceKlass org/gradle/groovy/scripts/ScriptCompilerFactory +instanceKlass org/gradle/groovy/scripts/internal/ScriptClassCompiler +instanceKlass org/gradle/internal/build/PublicBuildPath +instanceKlass org/gradle/api/internal/provider/sources/process/ExecSpecFactory +instanceKlass org/gradle/api/internal/provider/ValueSourceProviderFactory +instanceKlass org/gradle/process/ExecOperations +instanceKlass org/gradle/initialization/IGradlePropertiesLoader +instanceKlass org/gradle/initialization/properties/ProjectPropertiesLoader +instanceKlass org/gradle/api/internal/project/IsolatedAntBuilder +instanceKlass org/gradle/internal/resource/TextFileResourceLoader +instanceKlass org/gradle/cache/scopes/BuildScopedCacheBuilderFactory +instanceKlass org/gradle/groovy/scripts/internal/ScriptCompilationHandler +instanceKlass org/gradle/internal/service/scopes/BuildScopeServices +instanceKlass org/gradle/internal/cc/impl/DefaultBuildModelControllerServices$servicesForBuild$1 +instanceKlass org/gradle/internal/build/BuildModelControllerServices$Supplier +instanceKlass org/gradle/internal/composite/IncludedBuildInternal +instanceKlass org/gradle/api/initialization/IncludedBuild +instanceKlass org/gradle/internal/buildtree/BuildTreeFinishExecutor +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkExecutor +instanceKlass org/gradle/internal/build/AbstractBuildState +instanceKlass org/gradle/internal/Actions$NullAction +instanceKlass org/gradle/internal/Actions +instanceKlass org/gradle/plugin/management/internal/PluginRequests$EmptyPluginRequests +instanceKlass org/gradle/plugin/management/internal/PluginRequests +instanceKlass org/gradle/api/internal/BuildDefinition +instanceKlass org/gradle/internal/buildtree/InitDeprecationLoggingActionExecutor$1 +instanceKlass org/gradle/api/problems/internal/NoOpProblemEmitter +instanceKlass org/gradle/api/problems/internal/ProblemsProgressEventEmitterHolder +instanceKlass org/gradle/launcher/exec/ChainingBuildActionRunner +instanceKlass org/gradle/internal/buildtree/ProblemReportingBuildActionRunner +instanceKlass org/gradle/launcher/exec/BuildOutcomeReportingBuildActionRunner +instanceKlass org/gradle/tooling/internal/provider/FileSystemWatchingBuildActionRunner +instanceKlass org/gradle/launcher/exec/BuildCompletionNotifyingBuildActionRunner +instanceKlass org/gradle/launcher/exec/RootBuildLifecycleBuildActionExecutor +instanceKlass org/gradle/internal/buildtree/InitDeprecationLoggingActionExecutor +instanceKlass org/gradle/internal/buildtree/InitProblems +instanceKlass org/gradle/api/problems/internal/DefaultProblemReporter +instanceKlass com/google/common/collect/Synchronized$SynchronizedObject +instanceKlass com/google/common/collect/Table +instanceKlass com/google/common/collect/Synchronized +instanceKlass com/google/common/collect/SortedSetMultimap +instanceKlass com/google/common/collect/Multimaps +instanceKlass org/gradle/api/problems/internal/InternalProblemReporter +instanceKlass org/gradle/api/problems/ProblemReporter +instanceKlass org/gradle/api/problems/internal/DefaultProblems +instanceKlass org/gradle/internal/problems/DefaultProblemDiagnosticsFactory$DefaultProblemStream +instanceKlass org/gradle/initialization/exception/StackTraceSanitizingExceptionAnalyser +instanceKlass org/gradle/initialization/exception/MultipleBuildFailuresExceptionAnalyser +instanceKlass org/gradle/internal/problems/DefaultProblemDiagnosticsFactory$1 +instanceKlass org/gradle/internal/problems/DefaultProblemDiagnosticsFactory$CopyStackTraceTransFormer +instanceKlass org/gradle/internal/code/DefaultUserCodeApplicationContext +instanceKlass org/gradle/internal/problems/failure/StackFramePredicate +instanceKlass org/gradle/problems/internal/emitters/BuildOperationBasedProblemEmitter +instanceKlass org/gradle/problems/internal/NoOpProblemReportCreator +instanceKlass org/gradle/internal/problems/failure/StackTraceClassifier$1 +instanceKlass org/gradle/internal/problems/failure/InternalStackTraceClassifier +instanceKlass org/gradle/internal/problems/failure/CompositeStackTraceClassifier +instanceKlass org/gradle/internal/problems/failure/StackTraceClassifier +instanceKlass org/gradle/internal/problems/failure/DefaultFailureFactory +instanceKlass org/gradle/internal/cc/impl/models/DefaultToolingModelParameterCarrierFactory +instanceKlass org/gradle/tooling/internal/provider/serialization/DefaultPayloadClassLoaderRegistry$DetailsToClassLoaderTransformer +instanceKlass org/gradle/tooling/internal/provider/serialization/DefaultPayloadClassLoaderRegistry$ClassLoaderToDetailsTransformer +instanceKlass org/gradle/tooling/internal/provider/serialization/DefaultPayloadClassLoaderRegistry +instanceKlass org/gradle/tooling/internal/provider/serialization/ClassLoaderDetails +instanceKlass org/gradle/tooling/internal/provider/serialization/SerializeMap +instanceKlass org/gradle/tooling/internal/provider/serialization/DeserializeMap +instanceKlass org/gradle/tooling/internal/provider/serialization/WellKnownClassLoaderRegistry +instanceKlass java/io/ObjectOutput +instanceKlass java/io/ObjectStreamConstants +instanceKlass java/io/ObjectInput +instanceKlass org/gradle/tooling/internal/provider/serialization/ModelClassLoaderFactory +instanceKlass org/gradle/internal/daemon/serialization/DaemonSidePayloadClassLoaderFactory +instanceKlass org/gradle/internal/classpath/DefaultCachedClasspathTransformer$ParallelTransformExecutor +instanceKlass org/gradle/internal/file/impl/SingleDepthFileAccessTracker +instanceKlass org/gradle/cache/DefaultCacheCleanupStrategy +instanceKlass org/gradle/cache/internal/SingleDepthFilesFinder +instanceKlass org/gradle/cache/internal/AbstractCacheCleanup +instanceKlass org/gradle/cache/internal/CompositeCleanupAction$Builder +instanceKlass org/gradle/cache/internal/CompositeCleanupAction +instanceKlass org/gradle/internal/classpath/ClasspathBuilder$EntryBuilder +instanceKlass org/gradle/internal/classpath/InPlaceClasspathBuilder +instanceKlass org/gradle/initialization/BuildOptionBuildOperationProgressEventsEmitter$2 +instanceKlass org/gradle/operations/configuration/IsolatedProjectsSettingsFinalizedProgressDetails +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$Progress +instanceKlass org/gradle/internal/operations/OperationProgressEvent +instanceKlass org/gradle/initialization/BuildOptionBuildOperationProgressEventsEmitter$1 +instanceKlass org/gradle/internal/configurationcache/options/ConfigurationCacheSettingsFinalizedProgressDetails +instanceKlass org/gradle/internal/buildoption/FeatureFlag +instanceKlass org/gradle/internal/buildoption/FeatureFlagListener +instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry$ResourceLockProducer +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeContext +instanceKlass org/gradle/internal/buildtree/BuildTreeContext +instanceKlass org/gradle/internal/cc/impl/DefaultBuildTreeModelControllerServices$VintageModelProvider +instanceKlass org/gradle/internal/buildtree/DefaultBuildTreeModelSideEffectExecutor +instanceKlass org/gradle/internal/cc/impl/DefaultBuildTreeModelControllerServices$VintageBuildTreeProvider +instanceKlass org/gradle/internal/scripts/ProjectScopedScriptResolution$1 +instanceKlass org/gradle/internal/scripts/ProjectScopedScriptResolution +instanceKlass org/gradle/internal/cc/impl/services/VintageEnvironmentChangeTracker +instanceKlass org/gradle/internal/cc/impl/VintageBuildTreeLifecycleControllerFactory +instanceKlass org/gradle/internal/buildtree/BuildTreeLifecycleControllerFactory +instanceKlass org/gradle/internal/cc/impl/initialization/AbstractInjectedClasspathInstrumentationStrategy +instanceKlass org/gradle/plugin/use/resolve/service/internal/InjectedClasspathInstrumentationStrategy +instanceKlass org/gradle/internal/configuration/problems/DefaultProblemFactory +instanceKlass org/gradle/internal/configuration/problems/ProblemFactory +instanceKlass org/gradle/internal/cc/impl/DefaultBuildTreeModelControllerServices$SharedBuildTreeScopedServices +instanceKlass org/gradle/api/internal/initialization/DefaultBuildLogicBuildQueue +instanceKlass org/gradle/api/internal/initialization/BuildLogicBuildQueue +instanceKlass org/gradle/api/internal/project/taskfactory/TaskIdentityFactory +instanceKlass org/gradle/initialization/exception/DefaultExceptionAnalyser +instanceKlass org/gradle/internal/problems/DefaultProblemDiagnosticsFactory +instanceKlass org/gradle/internal/problems/DefaultProblemLocationAnalyzer +instanceKlass org/gradle/initialization/ClassLoaderScopeRegistryListener +instanceKlass org/gradle/internal/problems/ProblemLocationAnalyzer +instanceKlass org/gradle/internal/buildoption/DefaultFeatureFlags +instanceKlass org/gradle/execution/TaskPathProjectEvaluator +instanceKlass org/gradle/internal/buildtree/DeprecationsReporter +instanceKlass org/gradle/api/internal/provider/DefaultConfigurationTimeBarrier +instanceKlass org/gradle/api/internal/project/ProjectState +instanceKlass org/gradle/api/internal/project/DefaultProjectStateRegistry +instanceKlass org/gradle/internal/buildtree/BuildInclusionCoordinator +instanceKlass org/gradle/initialization/BuildOptionBuildOperationProgressEventsEmitter +instanceKlass org/gradle/internal/buildtree/BuildTreeLifecycleListener +instanceKlass org/gradle/internal/build/BuildLifecycleController +instanceKlass org/gradle/internal/build/DefaultBuildLifecycleControllerFactory +instanceKlass org/gradle/internal/build/BuildLifecycleControllerFactory +instanceKlass org/gradle/tooling/internal/provider/runner/AbstractClientProvidedBuildActionRunner$ClientAction +instanceKlass org/gradle/tooling/internal/provider/runner/AbstractClientProvidedBuildActionRunner +instanceKlass org/gradle/execution/EntryTaskSelector +instanceKlass org/gradle/tooling/internal/provider/runner/TestExecutionRequestActionRunner +instanceKlass org/gradle/internal/buildtree/BuildTreeModelAction +instanceKlass org/gradle/tooling/internal/provider/runner/BuildModelActionRunner +instanceKlass org/gradle/internal/buildtree/BuildTreeModelSideEffectExecutor +instanceKlass org/gradle/tooling/provider/model/internal/ToolingModelParameterCarrier$Factory +instanceKlass org/gradle/tooling/internal/provider/runner/BuildControllerFactory +instanceKlass org/gradle/internal/encryption/impl/DefaultEncryptionService +instanceKlass org/gradle/internal/encryption/EncryptionService +instanceKlass org/gradle/internal/configuration/problems/CommonReport +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheServices$ConfigurationCacheReportProvider +instanceKlass org/gradle/api/internal/provider/ConfigurationTimeBarrier +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheServices$ExecutionAccessCheckerProvider +instanceKlass org/gradle/internal/cc/impl/services/RemoteScriptUpToDateChecker +instanceKlass org/gradle/internal/resource/transfer/ExternalResourceConnector +instanceKlass org/gradle/internal/resource/transfer/ExternalResourceUploader +instanceKlass org/gradle/internal/resource/transfer/ExternalResourceLister +instanceKlass org/gradle/internal/resource/transfer/ExternalResourceAccessor +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheServices$RemoteScriptUpToDateCheckerProvider +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheServices$IgnoredConfigurationInputsProvider +instanceKlass org/gradle/internal/serialize/codecs/core/jos/JavaSerializationEncodingLookup +instanceKlass org/gradle/internal/cc/impl/services/IsolatedActionCodecsFactory +instanceKlass org/gradle/internal/cc/impl/IgnoredConfigurationInputs +instanceKlass org/gradle/internal/cc/base/services/ConfigurationCacheEnvironmentChangeTracker +instanceKlass org/gradle/initialization/EnvironmentChangeTracker +instanceKlass org/gradle/internal/cc/impl/initialization/ConfigurationCacheProblemsListener +instanceKlass org/gradle/api/internal/ExternalProcessStartedListener +instanceKlass org/gradle/internal/cc/impl/InstrumentedInputAccessListener +instanceKlass org/gradle/internal/configuration/inputs/InstrumentedInputsListener +instanceKlass org/gradle/execution/ExecutionAccessChecker +instanceKlass org/gradle/internal/cc/impl/InstrumentedExecutionAccessListener +instanceKlass org/gradle/internal/classpath/InstrumentedExecutionAccess$Listener +instanceKlass org/gradle/internal/buildoption/FeatureFlags +instanceKlass org/gradle/internal/cc/impl/DeprecatedFeaturesListener +instanceKlass org/gradle/execution/ExecutionAccessListener +instanceKlass org/gradle/api/internal/tasks/execution/TaskExecutionAccessListener +instanceKlass org/gradle/api/internal/BuildScopeListenerRegistrationListener +instanceKlass org/gradle/internal/cc/impl/DefaultBuildToolingModelControllerFactory +instanceKlass org/gradle/internal/build/BuildToolingModelControllerFactory +instanceKlass org/gradle/internal/cc/impl/DefaultBuildModelControllerServices +instanceKlass org/gradle/internal/build/BuildModelControllerServices +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheRepository +instanceKlass org/gradle/internal/encryption/EncryptionConfiguration +instanceKlass org/gradle/internal/cc/impl/initialization/ConfigurationCacheStartParameter +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheKey +instanceKlass org/gradle/profile/BuildProfileServices$1 +instanceKlass org/gradle/internal/serialize/beans/services/DefaultBeanStateReaderLookup +instanceKlass org/gradle/internal/serialize/graph/BeanStateReaderLookup +instanceKlass org/gradle/internal/serialize/beans/services/DefaultBeanStateWriterLookup +instanceKlass org/gradle/internal/serialize/graph/BeanStateWriterLookup +instanceKlass org/gradle/vcs/internal/VcsResolver +instanceKlass org/gradle/vcs/internal/resolver/VcsVersionSelectionCache +instanceKlass org/gradle/vcs/internal/VcsMappingsStore +instanceKlass org/gradle/vcs/internal/VersionControlSpecFactory +instanceKlass org/gradle/vcs/internal/VcsMappingFactory +instanceKlass org/gradle/vcs/internal/services/VersionControlServices$VersionControlBuildTreeServices +instanceKlass org/gradle/plugins/ide/internal/IdeArtifactStore +instanceKlass org/gradle/internal/enterprise/impl/legacy/DefaultBuildScanBuildStartedTime +instanceKlass org/gradle/internal/scan/time/BuildScanBuildStartedTime +instanceKlass org/gradle/internal/enterprise/impl/legacy/DefaultBuildScanClock +instanceKlass org/gradle/internal/scan/time/BuildScanClock +instanceKlass org/gradle/internal/cc/impl/InputTrackingState +instanceKlass org/gradle/internal/enterprise/impl/DefaultDevelocityPluginUnsafeConfigurationService +instanceKlass org/gradle/internal/enterprise/DevelocityPluginUnsafeConfigurationService +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginBackgroundJobExecutors +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginBackgroundJobExecutors +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginConfig +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginConfig +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginBuildState +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginBuildState +instanceKlass org/gradle/internal/enterprise/impl/DefaultGradleEnterprisePluginServiceRef +instanceKlass org/gradle/internal/enterprise/GradleEnterprisePluginServiceRef +instanceKlass org/gradle/internal/enterprise/impl/GradleEnterprisePluginAutoAppliedStatus +instanceKlass org/gradle/plugin/management/internal/PluginRequestInternal +instanceKlass org/gradle/plugin/management/PluginRequest +instanceKlass org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry +instanceKlass org/gradle/plugin/management/internal/autoapply/AutoAppliedPluginRegistry +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/LocalComponentCache +instanceKlass org/gradle/composite/internal/DefaultBuildTreeLocalComponentProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/BuildTreeLocalComponentProvider +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildRegistry +instanceKlass org/gradle/internal/buildtree/BuildTreeWorkGraphPreparer +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildTaskGraph +instanceKlass org/gradle/composite/internal/BuildTreeWorkGraphController +instanceKlass org/gradle/internal/build/IncludedBuildState +instanceKlass org/gradle/composite/internal/DefaultIncludedBuildFactory +instanceKlass org/gradle/internal/build/IncludedBuildFactory +instanceKlass org/gradle/internal/build/RootBuildState +instanceKlass org/gradle/internal/build/CompositeBuildParticipantBuildState +instanceKlass org/gradle/internal/buildtree/NestedBuildTree +instanceKlass org/gradle/internal/build/StandAloneNestedBuild +instanceKlass org/gradle/internal/build/BuildActionTarget +instanceKlass org/gradle/internal/build/NestedBuildState +instanceKlass org/gradle/composite/internal/BuildStateFactory +instanceKlass org/gradle/api/internal/composite/CompositeBuildContext +instanceKlass org/gradle/api/internal/artifacts/ivyservice/dependencysubstitution/DependencySubstitutionRules +instanceKlass org/gradle/internal/buildtree/GlobalDependencySubstitutionRegistry +instanceKlass org/gradle/composite/internal/CompositeBuildServices$CompositeBuildTreeScopeServices +instanceKlass org/gradle/api/internal/tasks/compile/processing/AnnotationProcessorDetector +instanceKlass org/gradle/language/java/internal/JavaLanguageServices$1 +instanceKlass org/gradle/internal/model/ModelContainer +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationsProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/DefaultProjectLocalComponentProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/LocalComponentProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ConnectionFailureRepositoryDisabler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/RepositoryDisabler +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ThisBuildOnlySelectedVariantSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/SelectedVariantSerializer +instanceKlass it/unimi/dsi/fastutil/longs/Long2ObjectMap +instanceKlass it/unimi/dsi/fastutil/longs/Long2ObjectFunction +instanceKlass java/util/function/LongFunction +instanceKlass it/unimi/dsi/fastutil/Function +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ThisBuildOnlyComponentDetailsSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentDetailsSerializer +instanceKlass org/gradle/internal/component/external/model/ModuleComponentGraphResolveState +instanceKlass org/gradle/internal/component/external/model/ExternalComponentGraphResolveState +instanceKlass org/gradle/internal/component/external/model/ModuleComponentGraphResolveStateFactory +instanceKlass org/gradle/internal/component/local/model/LocalComponentGraphResolveState +instanceKlass org/gradle/internal/component/model/ComponentGraphResolveState +instanceKlass org/gradle/internal/component/local/model/VariantMetadataFactory +instanceKlass org/gradle/internal/component/local/model/LocalComponentGraphResolveStateFactory +instanceKlass org/gradle/internal/component/model/ComponentIdGenerator +instanceKlass org/gradle/api/artifacts/component/ProjectComponentSelector +instanceKlass org/gradle/api/internal/attributes/AttributeDesugaring +instanceKlass org/gradle/internal/id/ConfigurationCacheableIdFactory +instanceKlass org/gradle/api/internal/artifacts/transform/TransformStepNodeFactory +instanceKlass org/gradle/api/internal/project/ProjectStateRegistry +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvableArtifact +instanceKlass org/gradle/api/internal/artifacts/ivyservice/projectmodule/ProjectArtifactResolver +instanceKlass org/gradle/api/internal/project/HoldsProjectState +instanceKlass org/gradle/internal/resolve/resolver/ArtifactResolver +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/StartParameterResolutionOverride +instanceKlass org/gradle/internal/resource/cached/AbstractCachedIndex +instanceKlass org/gradle/internal/resource/local/GroupedAndNamedUniqueFileStore +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleRepositoryCacheProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/FileStoreAndIndexProvider +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleSourcesSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/store/ResolutionResultsStoreFactory +instanceKlass org/gradle/api/internal/filestore/DefaultArtifactIdentifierFileStore$Factory +instanceKlass org/gradle/internal/resource/cached/DefaultExternalResourceFileStore$Factory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleRepositoryCaches +instanceKlass org/gradle/util/internal/BuildCommencedTimeProvider +instanceKlass org/gradle/util/internal/SimpleMapInterner +instanceKlass org/gradle/internal/resource/cached/CachedExternalResourceIndex +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/dynamicversions/AbstractModuleVersionsCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/dynamicversions/ModuleVersionsCache +instanceKlass org/gradle/api/internal/filestore/ArtifactIdentifierFileStore +instanceKlass org/gradle/internal/resource/cached/ExternalResourceFileStore +instanceKlass org/gradle/internal/resource/local/FileStoreSearcher +instanceKlass org/gradle/internal/resource/local/FileStore +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/AbstractArtifactsCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/ModuleArtifactsCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/artifacts/ModuleArtifactCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/AbstractModuleMetadataCache +instanceKlass org/gradle/api/internal/artifacts/ivyservice/modulecache/ModuleMetadataCache +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildTreeScopeServices +instanceKlass org/gradle/problems/internal/ProblemReportCreator +instanceKlass org/gradle/api/problems/internal/ProblemEmitter +instanceKlass org/gradle/problems/internal/services/ProblemsBuildTreeServices +instanceKlass org/gradle/internal/enterprise/core/GradleEnterprisePluginManager +instanceKlass org/gradle/internal/buildtree/BuildTreeActionExecutor +instanceKlass org/gradle/tooling/internal/provider/LauncherServices$ToolingBuildTreeScopeServices +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor$ExecutorStats +instanceKlass org/gradle/execution/plan/DefaultPlanExecutor +instanceKlass org/gradle/execution/plan/PlanExecutor +instanceKlass org/gradle/caching/internal/origin/OriginMetadataFactory +instanceKlass org/gradle/caching/internal/controller/impl/LifecycleAwareBuildCacheControllerFactory +instanceKlass org/gradle/caching/internal/BuildCacheServices$2 +instanceKlass org/gradle/execution/selection/DefaultBuildTaskSelector +instanceKlass org/gradle/execution/selection/BuildTaskSelector +instanceKlass org/gradle/api/problems/internal/InternalProblems +instanceKlass org/gradle/api/problems/Problems +instanceKlass org/gradle/internal/build/BuildStateRegistry +instanceKlass org/gradle/execution/TaskSelector +instanceKlass org/gradle/execution/ProjectConfigurer +instanceKlass org/gradle/internal/buildtree/BuildTreeScopeServices +instanceKlass org/gradle/internal/buildtree/BuildTreeState +instanceKlass org/gradle/internal/id/UniqueId$1 +instanceKlass com/google/common/base/Ascii +instanceKlass com/google/common/io/BaseEncoding$Alphabet +instanceKlass com/google/common/io/BaseEncoding +instanceKlass org/gradle/internal/id/UniqueId +instanceKlass org/gradle/internal/cc/impl/DefaultBuildTreeModelControllerServices$servicesForBuildTree$1 +instanceKlass org/gradle/internal/buildtree/BuildTreeModelControllerServices$Supplier +instanceKlass org/gradle/internal/lazy/AtomicLazy +instanceKlass org/gradle/api/configuration/BuildFeature +instanceKlass org/gradle/api/internal/configuration/DefaultBuildFeatures +instanceKlass org/gradle/api/configuration/BuildFeatures +instanceKlass org/gradle/internal/cc/impl/ConfigurationCacheLoggingParameters +instanceKlass org/gradle/internal/cc/impl/services/DefaultBuildModelParameters +instanceKlass org/gradle/internal/buildtree/BuildModelParameters +instanceKlass org/gradle/internal/buildoption/DefaultInternalOptions +instanceKlass org/gradle/internal/buildoption/InternalOptions +instanceKlass org/gradle/internal/buildtree/RunTasksRequirements +instanceKlass org/gradle/initialization/layout/BuildLayoutConfiguration +instanceKlass org/gradle/internal/logging/sink/ProgressLogEventGenerator$Operation +instanceKlass org/gradle/internal/logging/progress/DefaultProgressLoggerFactory$ProgressLoggerImpl +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$Started +instanceKlass org/gradle/api/internal/tasks/RegisterTaskBuildOperationType$Details +instanceKlass org/gradle/api/internal/tasks/RealizeTaskBuildOperationType$Details +instanceKlass org/gradle/api/internal/ExecuteDomainObjectCollectionCallbackBuildOperationType$Details +instanceKlass org/gradle/configuration/internal/ExecuteListenerBuildOperationType$Details +instanceKlass org/gradle/configuration/ApplyScriptPluginBuildOperationType$Details +instanceKlass org/gradle/api/internal/plugins/ApplyPluginBuildOperationType$Details +instanceKlass org/gradle/internal/operations/OperationStartEvent +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$DefaultBuildOperationContext +instanceKlass org/gradle/internal/operations/BuildOperationProgressEventListenerAdapter +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$BuildOperationTrackingListener +instanceKlass org/gradle/internal/operations/BuildOperationState +instanceKlass org/gradle/internal/operations/BuildOperationRef +instanceKlass org/gradle/internal/operations/OperationIdentifier +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$2 +instanceKlass org/gradle/internal/operations/BuildOperationMetadata$1 +instanceKlass org/gradle/internal/operations/BuildOperationDescriptor$Builder +instanceKlass org/gradle/internal/operations/BuildOperationDescriptor +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$CallableBuildOperationWorker +instanceKlass org/gradle/launcher/exec/RunAsBuildOperationBuildActionExecutor$3 +instanceKlass org/gradle/internal/operations/notify/BuildOperationProgressNotification +instanceKlass org/gradle/internal/operations/notify/BuildOperationFinishedNotification +instanceKlass org/gradle/internal/operations/notify/BuildOperationStartedNotification +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$Adapter +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$RecordingListener +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$ReplayAndAttachListener +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationListener +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$State +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$AcquireLocks +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$3 +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$DefaultResourceLockState +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService$1 +instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$3 +instanceKlass org/gradle/internal/resources/AbstractTrackedResourceLock +instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry$ThreadLockDetails +instanceKlass org/gradle/internal/buildtree/BuildActionRunner$Result +instanceKlass org/gradle/workers/internal/ExecuteWorkItemBuildOperationType$Details +instanceKlass org/gradle/api/internal/artifacts/transform/ExecutePlannedTransformStepBuildOperationDetails +instanceKlass org/gradle/operations/dependencies/transforms/ExecutePlannedTransformStepBuildOperationType$Details +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskBuildOperationDetails +instanceKlass org/gradle/internal/operations/trace/CustomOperationTraceSerialization +instanceKlass org/gradle/api/internal/tasks/execution/ExecuteTaskBuildOperationType$Details +instanceKlass org/gradle/configuration/project/ConfigureProjectBuildOperationType$Details +instanceKlass org/gradle/api/internal/tasks/testing/operations/ExecuteTestBuildOperationType$Details +instanceKlass org/gradle/internal/resource/ExternalResourceReadBuildOperationType$Details +instanceKlass org/gradle/tooling/internal/provider/runner/ClientBuildEventGenerator$Mapper +instanceKlass org/gradle/tooling/internal/provider/runner/ClientBuildEventGenerator$Operation +instanceKlass org/gradle/tooling/internal/provider/runner/ClientBuildEventGenerator +instanceKlass org/gradle/tooling/internal/protocol/events/InternalWorkItemDescriptor +instanceKlass org/gradle/tooling/internal/provider/runner/WorkItemOperationMapper +instanceKlass org/gradle/tooling/internal/protocol/events/InternalProjectConfigurationDescriptor +instanceKlass org/gradle/tooling/internal/protocol/events/InternalProjectConfigurationResult +instanceKlass org/gradle/tooling/internal/provider/runner/ProjectConfigurationOperationMapper +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTestFailureResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTestSkippedResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTestSuccessResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTestResult +instanceKlass org/gradle/tooling/internal/provider/runner/TestOperationMapper +instanceKlass org/gradle/tooling/internal/protocol/events/InternalNotFoundFileDownloadResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalFileDownloadResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalFileDownloadDescriptor +instanceKlass org/gradle/tooling/internal/provider/runner/FileDownloadOperationMapper +instanceKlass org/gradle/tooling/internal/provider/runner/TaskOperationMapper$PostProcessors +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskFailureResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalFailureResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskSkippedResult +instanceKlass org/gradle/tooling/internal/provider/runner/TaskOperationMapper +instanceKlass java/util/Collections$2 +instanceKlass org/gradle/tooling/internal/protocol/events/InternalJavaCompileTaskOperationResult$InternalAnnotationProcessorResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskCachedResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskSuccessResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalSuccessResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalJavaCompileTaskOperationResult +instanceKlass org/gradle/internal/build/event/types/AbstractResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalIncrementalTaskResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTaskResult +instanceKlass org/gradle/tooling/internal/protocol/events/InternalOperationResult +instanceKlass org/gradle/api/internal/tasks/compile/tooling/JavaCompileTaskSuccessResultPostProcessor +instanceKlass org/gradle/internal/build/event/OperationResultPostProcessor +instanceKlass com/google/common/collect/RangeGwtSerializationDependencies +instanceKlass com/google/common/collect/ImmutableRangeSet$Builder +instanceKlass com/google/common/collect/SortedIterable +instanceKlass com/google/common/collect/AbstractRangeSet +instanceKlass com/google/common/collect/RangeSet +instanceKlass com/google/common/collect/CollectCollectors +instanceKlass org/gradle/tooling/internal/protocol/events/InternalOperationFinishedProgressEvent +instanceKlass org/gradle/tooling/internal/protocol/events/InternalOperationStartedProgressEvent +instanceKlass org/gradle/tooling/internal/protocol/events/InternalProgressEvent +instanceKlass org/gradle/tooling/internal/protocol/events/InternalTransformDescriptor +instanceKlass org/gradle/internal/build/event/types/DefaultOperationDescriptor +instanceKlass org/gradle/execution/plan/SelfExecutingNode +instanceKlass org/gradle/execution/plan/Node +instanceKlass org/gradle/tooling/internal/protocol/events/InternalOperationDescriptor +instanceKlass org/gradle/tooling/internal/provider/runner/TransformOperationMapper +instanceKlass org/gradle/tooling/internal/provider/runner/BuildOperationMapper +instanceKlass org/gradle/tooling/internal/provider/runner/TaskOriginTracker +instanceKlass org/gradle/tooling/internal/provider/runner/ProjectConfigurationTracker +instanceKlass org/gradle/tooling/internal/provider/runner/TestTaskExecutionTracker +instanceKlass org/gradle/tooling/internal/protocol/events/InternalScriptPluginIdentifier +instanceKlass org/gradle/tooling/internal/protocol/events/InternalBinaryPluginIdentifier +instanceKlass org/gradle/tooling/internal/protocol/events/InternalPluginIdentifier +instanceKlass org/gradle/tooling/internal/provider/runner/PluginApplicationTracker +instanceKlass org/gradle/tooling/internal/provider/runner/BuildOperationTracker +instanceKlass org/gradle/tooling/internal/provider/runner/OperationDependenciesResolver +instanceKlass org/gradle/tooling/internal/provider/runner/ProgressEventConsumer +instanceKlass org/gradle/internal/buildtree/BuildActionModelRequirements +instanceKlass org/gradle/launcher/exec/BuildTreeLifecycleBuildActionExecutor +instanceKlass org/gradle/launcher/exec/RunAsBuildOperationBuildActionExecutor$2 +instanceKlass org/gradle/launcher/exec/RunAsBuildOperationBuildActionExecutor$1 +instanceKlass org/gradle/launcher/exec/RunBuildBuildOperationType$Result +instanceKlass org/gradle/launcher/exec/RunBuildBuildOperationType$Details +instanceKlass org/gradle/launcher/exec/RunAsBuildOperationBuildActionExecutor +instanceKlass org/gradle/launcher/exec/RunAsWorkerThreadBuildActionExecutor +instanceKlass org/gradle/execution/CancellableOperationManager +instanceKlass org/gradle/tooling/internal/provider/continuous/ContinuousBuildActionExecutor +instanceKlass org/gradle/tooling/internal/provider/SubscribableBuildActionExecutor +instanceKlass org/gradle/internal/snapshot/ValueSnapshot +instanceKlass org/gradle/internal/snapshot/impl/DefaultValueSnapshotter$ValueSnapshotVisitor +instanceKlass org/gradle/internal/scripts/ScriptingLanguages$1 +instanceKlass org/gradle/scripts/ScriptingLanguage +instanceKlass org/gradle/internal/scripts/ScriptingLanguages +instanceKlass org/gradle/internal/scripts/ScriptFileUtil +instanceKlass org/gradle/internal/scripts/DefaultScriptFileResolver +instanceKlass org/gradle/internal/resources/LeaseHolder +instanceKlass org/gradle/internal/resources/LockCache +instanceKlass org/gradle/internal/resources/AbstractResourceLockRegistry +instanceKlass org/gradle/internal/resources/ResourceLockContainer +instanceKlass org/gradle/internal/resources/ResourceLockRegistry +instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$Registries +instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService$ProjectLockStatisticsImpl +instanceKlass org/gradle/internal/resources/ProjectLockStatistics +instanceKlass org/gradle/internal/work/DefaultWorkerLimits +instanceKlass org/gradle/internal/cc/impl/DefaultBuildTreeModelControllerServices$Companion +instanceKlass org/gradle/internal/InternalBuildListener +instanceKlass org/gradle/internal/InternalListener +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge$1 +instanceKlass org/gradle/internal/operations/DefaultBuildOperationProgressEventEmitter +instanceKlass org/gradle/deployment/internal/DefaultDeploymentRegistry$PendingChanges +instanceKlass org/gradle/deployment/internal/ContinuousExecutionGate$GateKeeper +instanceKlass org/gradle/deployment/internal/DefaultContinuousExecutionGate +instanceKlass org/gradle/deployment/internal/ContinuousExecutionGate +instanceKlass org/gradle/internal/execution/WorkInputListener +instanceKlass org/gradle/internal/service/scopes/DefaultWorkInputListeners +instanceKlass org/gradle/tooling/internal/provider/runner/ToolingApiBuildEventListenerFactory$1 +instanceKlass org/gradle/internal/operations/DefaultBuildOperationListenerManager$ProgressShieldingBuildOperationListener +instanceKlass org/gradle/internal/operations/DefaultBuildOperationAncestryTracker +instanceKlass org/gradle/composite/internal/CompositeProjectComponentArtifactMetadataSerializer +instanceKlass org/gradle/composite/internal/CompositeProjectComponentArtifactMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionReasonSerializer +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionDescriptorSerializer +instanceKlass org/gradle/internal/component/external/model/DefaultModuleComponentIdentifier +instanceKlass org/gradle/api/artifacts/component/ModuleComponentIdentifier +instanceKlass org/gradle/api/internal/artifacts/metadata/TransformedComponentFileArtifactIdentifierSerializer +instanceKlass org/gradle/internal/component/local/model/TransformedComponentFileArtifactIdentifier +instanceKlass org/gradle/api/internal/artifacts/metadata/ComponentFileArtifactIdentifierSerializer +instanceKlass org/gradle/api/internal/artifacts/metadata/ModuleComponentFileArtifactIdentifierSerializer +instanceKlass org/gradle/api/internal/artifacts/metadata/ComponentArtifactIdentifierSerializer +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementValueSnapshotterSerializerRegistry$OpaqueComponentArtifactIdentifierSerializer +instanceKlass org/gradle/api/artifacts/PublishArtifact +instanceKlass org/gradle/api/internal/artifacts/metadata/PublishArtifactLocalArtifactMetadataSerializer +instanceKlass org/gradle/api/internal/capabilities/ImmutableCapability +instanceKlass org/gradle/api/internal/capabilities/CapabilityInternal +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/CapabilitySerializer +instanceKlass org/gradle/api/internal/artifacts/ModuleVersionIdentifierSerializer +instanceKlass org/gradle/internal/resolve/caching/DesugaringAttributeContainerSerializer +instanceKlass org/gradle/api/artifacts/component/BuildIdentifier +instanceKlass org/gradle/api/artifacts/component/ProjectComponentIdentifier +instanceKlass org/gradle/api/artifacts/result/ResolvedComponentResult +instanceKlass org/gradle/api/artifacts/result/ComponentResult +instanceKlass org/gradle/api/artifacts/result/ComponentSelectionReason +instanceKlass org/gradle/api/artifacts/result/ResolvedVariantResult +instanceKlass org/gradle/internal/component/local/model/ComponentFileArtifactIdentifier +instanceKlass org/gradle/internal/component/external/model/DefaultModuleComponentArtifactIdentifier +instanceKlass org/gradle/internal/component/external/model/ModuleComponentArtifactIdentifier +instanceKlass org/gradle/internal/component/local/model/OpaqueComponentArtifactIdentifier +instanceKlass org/gradle/api/artifacts/component/ComponentIdentifier +instanceKlass org/gradle/internal/component/local/model/PublishArtifactLocalArtifactMetadata +instanceKlass org/gradle/api/artifacts/component/ComponentArtifactIdentifier +instanceKlass org/gradle/internal/component/local/model/LocalComponentArtifactMetadata +instanceKlass org/gradle/internal/component/model/ComponentArtifactMetadata +instanceKlass org/gradle/api/artifacts/ModuleVersionIdentifier +instanceKlass org/gradle/api/capabilities/Capability +instanceKlass org/gradle/api/artifacts/result/ComponentSelectionDescriptor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/CachingComponentSelectionDescriptorFactory +instanceKlass org/gradle/api/internal/attributes/UsageCompatibilityHandler +instanceKlass org/gradle/api/attributes/Attribute +instanceKlass org/gradle/api/internal/attributes/DefaultImmutableAttributes +instanceKlass org/gradle/api/internal/attributes/AttributeValue +instanceKlass org/gradle/internal/snapshot/impl/DefaultIsolatableFactory$IsolatableVisitor +instanceKlass org/gradle/internal/snapshot/impl/AbstractValueProcessor$ValueVisitor +instanceKlass org/gradle/internal/snapshot/impl/AbstractValueProcessor +instanceKlass com/google/common/cache/LocalCache$StrongValueReference +instanceKlass org/gradle/api/internal/provider/ManagedFactories$ProviderManagedFactory +instanceKlass org/gradle/api/internal/provider/ManagedFactories$PropertyManagedFactory +instanceKlass org/gradle/api/internal/provider/ManagedFactories$MapPropertyManagedFactory +instanceKlass org/gradle/api/internal/provider/ManagedFactories$ListPropertyManagedFactory +instanceKlass org/gradle/api/internal/provider/CollectionPropertyInternal +instanceKlass org/gradle/api/internal/provider/CollectionProviderInternal +instanceKlass org/gradle/api/internal/provider/ManagedFactories$SetPropertyManagedFactory +instanceKlass org/gradle/api/internal/file/ManagedFactories$DirectoryPropertyManagedFactory +instanceKlass org/gradle/api/internal/file/ManagedFactories$DirectoryManagedFactory +instanceKlass org/gradle/api/internal/file/ManagedFactories$RegularFilePropertyManagedFactory +instanceKlass org/gradle/api/internal/file/ManagedFactories$RegularFileManagedFactory +instanceKlass org/gradle/api/internal/file/collections/ManagedFactories$ConfigurableFileCollectionManagedFactory +instanceKlass org/gradle/internal/state/DefaultManagedFactoryRegistry +instanceKlass org/gradle/internal/classloader/ConfigurableClassLoaderHierarchyHasher +instanceKlass org/gradle/internal/classloader/DefaultClassLoaderFactory +instanceKlass org/gradle/api/internal/initialization/loadercache/DefaultClasspathHasher +instanceKlass org/gradle/internal/fingerprint/impl/EmptyCurrentFileCollectionFingerprint +instanceKlass org/gradle/internal/snapshot/AbstractFileSystemLocationSnapshot +instanceKlass org/gradle/internal/snapshot/FileSystemLeafSnapshot +instanceKlass org/gradle/api/internal/changedetection/state/ZipHasher$HashingExceptionReporter +instanceKlass org/gradle/internal/fingerprint/hashing/ZipEntryContext +instanceKlass org/gradle/api/internal/file/archive/ZipInput +instanceKlass org/gradle/api/internal/changedetection/state/ZipHasher +instanceKlass org/gradle/api/internal/changedetection/state/IgnoringResourceHasher +instanceKlass org/gradle/api/internal/changedetection/state/LineEndingNormalizingResourceHasher$1 +instanceKlass org/gradle/api/internal/file/archive/ZipEntry +instanceKlass org/gradle/api/internal/changedetection/state/FallbackHandlingResourceHasher +instanceKlass org/gradle/internal/snapshot/RelativePathTrackingFileSystemSnapshotHierarchyVisitor +instanceKlass org/gradle/internal/fingerprint/CurrentFileCollectionFingerprint +instanceKlass org/gradle/internal/fingerprint/FileCollectionFingerprint +instanceKlass org/gradle/internal/fingerprint/impl/AbstractFingerprintingStrategy +instanceKlass org/gradle/api/internal/changedetection/state/RuntimeClasspathResourceHasher +instanceKlass org/gradle/api/internal/changedetection/state/PropertiesFileFilter +instanceKlass org/gradle/api/internal/changedetection/state/ResourceEntryFilter$1 +instanceKlass org/gradle/api/internal/changedetection/state/ResourceEntryFilter +instanceKlass org/gradle/api/internal/changedetection/state/ResourceFilter$1 +instanceKlass org/gradle/api/internal/changedetection/state/ResourceFilter +instanceKlass org/gradle/internal/fingerprint/FingerprintingStrategy +instanceKlass org/gradle/internal/fingerprint/impl/AbstractFileCollectionFingerprinter +instanceKlass org/gradle/internal/execution/FileCollectionSnapshotter$Result +instanceKlass org/gradle/api/internal/file/FileCollectionStructureVisitor +instanceKlass org/gradle/internal/fingerprint/impl/DefaultFileCollectionSnapshotter +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotter$DefaultExcludes$EndMatcher +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotter$DefaultExcludes$StartMatcher +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotter$DefaultExcludes +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotter$1 +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotter$SymbolicLinkMapping +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotter +instanceKlass java/util/concurrent/Semaphore +instanceKlass com/google/common/util/concurrent/Striped +instanceKlass org/gradle/internal/vfs/impl/DefaultFileSystemAccess$StripedProducerGuard +instanceKlass org/gradle/internal/vfs/impl/DefaultFileSystemAccess +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotterStatistics +instanceKlass org/gradle/internal/build/BuildAddedListener +instanceKlass org/gradle/internal/snapshot/EmptyChildMap +instanceKlass org/gradle/internal/snapshot/ChildMap$StoreHandler +instanceKlass org/gradle/internal/snapshot/ChildMap$NodeHandler +instanceKlass org/gradle/internal/vfs/impl/VersionHierarchy +instanceKlass org/gradle/internal/vfs/impl/VersionHierarchyRoot +instanceKlass org/gradle/internal/watch/registry/impl/FileSystemWatchingDocumentationIndex +instanceKlass org/gradle/internal/snapshot/SnapshotHierarchy$NodeDiffListener +instanceKlass org/gradle/internal/vfs/impl/AbstractVirtualFileSystem +instanceKlass net/rubygrapefruit/platform/internal/jni/AbstractFileEventFunctions$AbstractWatcherBuilder +instanceKlass org/gradle/internal/watch/registry/FileWatcherUpdater +instanceKlass net/rubygrapefruit/platform/file/FileWatcher +instanceKlass org/gradle/internal/watch/registry/FileWatcherRegistry +instanceKlass org/gradle/internal/watch/registry/FileWatcherProbeRegistry +instanceKlass org/gradle/internal/watch/registry/impl/AbstractFileWatcherRegistryFactory +instanceKlass org/gradle/internal/snapshot/ChildMap +instanceKlass org/gradle/internal/vfs/impl/DefaultSnapshotHierarchy$1 +instanceKlass org/gradle/internal/vfs/impl/DefaultSnapshotHierarchy +instanceKlass com/google/common/io/CharSource +instanceKlass com/google/common/hash/PrimitiveSink +instanceKlass com/google/common/io/Closer$SuppressingSuppressor +instanceKlass com/google/common/io/Closer$Suppressor +instanceKlass com/google/common/io/Closer +instanceKlass com/google/common/io/CharSink +instanceKlass java/io/File$TempDirectory +instanceKlass org/gradle/api/internal/file/temp/TempFiles +instanceKlass org/gradle/internal/watch/vfs/impl/DefaultWatchableFileSystemDetector +instanceKlass net/rubygrapefruit/platform/internal/PosixFileSystems +instanceKlass org/gradle/internal/watch/vfs/FileChangeListener +instanceKlass org/gradle/internal/watch/registry/FileWatcherRegistry$ChangeHandler +instanceKlass org/gradle/internal/service/scopes/DefaultFileChangeListeners +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices$3 +instanceKlass org/gradle/internal/service/scopes/VirtualFileSystemServices$GradleUserHomeServices$1 +instanceKlass org/gradle/internal/file/FilePathUtil +instanceKlass org/gradle/internal/file/FileHierarchySet$Node +instanceKlass org/gradle/internal/file/FileHierarchySet$NodeVisitor +instanceKlass org/gradle/internal/file/FileHierarchySet +instanceKlass org/gradle/cache/internal/DefaultGlobalCacheLocations +instanceKlass org/gradle/internal/hash/DefaultFileHasher +instanceKlass org/gradle/api/internal/changedetection/state/CachingFileHasher +instanceKlass com/google/common/collect/MapMakerInternalMap$StrongValueEntry +instanceKlass com/google/common/collect/MapMakerInternalMap$WeakKeyDummyValueEntry$Helper +instanceKlass com/google/common/collect/MapMakerInternalMap$InternalEntry +instanceKlass com/google/common/collect/MapMakerInternalMap$1 +instanceKlass com/google/common/collect/MapMakerInternalMap$InternalEntryHelper +instanceKlass com/google/common/collect/MapMakerInternalMap$WeakValueReference +instanceKlass com/google/common/collect/Interners$InternerImpl +instanceKlass com/google/common/collect/MapMaker +instanceKlass com/google/common/collect/Interners$InternerBuilder +instanceKlass com/google/common/collect/Interners +instanceKlass org/gradle/internal/hash/DefaultStreamHasher +instanceKlass org/gradle/api/internal/changedetection/state/FileHasherStatistics +instanceKlass sun/security/provider/ByteArrayAccess$LE +instanceKlass com/google/common/base/Charsets +instanceKlass org/gradle/internal/hash/Hashing$MessageDigestHasher +instanceKlass org/gradle/internal/hash/Hashing$DefaultHasher +instanceKlass org/gradle/internal/hash/PrimitiveHasher +instanceKlass org/gradle/internal/hash/Hasher +instanceKlass org/gradle/internal/hash/Hashing$MessageDigestHashFunction +instanceKlass org/gradle/internal/hash/HashFunction +instanceKlass org/gradle/internal/hash/Hashing +instanceKlass org/gradle/api/internal/changedetection/state/CachingResourceHasher +instanceKlass org/gradle/internal/fingerprint/hashing/ResourceHasher +instanceKlass org/gradle/internal/fingerprint/hashing/ZipEntryContextHasher +instanceKlass org/gradle/internal/fingerprint/hashing/RegularFileSnapshotContextHasher +instanceKlass org/gradle/internal/fingerprint/hashing/ConfigurableNormalizer +instanceKlass org/gradle/internal/snapshot/FileSystemLocationSnapshot +instanceKlass org/gradle/internal/snapshot/MetadataSnapshot +instanceKlass org/gradle/internal/snapshot/FileSystemNode +instanceKlass org/gradle/api/internal/changedetection/state/DefaultResourceSnapshotterCacheService +instanceKlass org/gradle/internal/hash/HashCode +instanceKlass org/apache/commons/lang/StringUtils +instanceKlass org/gradle/api/internal/artifacts/ivyservice/WritableArtifactCacheLockingAccessCoordinator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultArtifactCaches$LateInitWritableArtifactCacheLockingAccessCoordinator +instanceKlass com/google/common/primitives/IntsMethodsForWeb +instanceKlass org/apache/commons/lang/ArrayUtils +instanceKlass org/gradle/cache/internal/CacheVersion +instanceKlass java/lang/Character$CharacterCache +instanceKlass org/gradle/util/internal/DefaultGradleVersion$Stage +instanceKlass org/gradle/cache/internal/CacheVersionMapping$Builder +instanceKlass org/gradle/cache/internal/CacheVersionMapping$1 +instanceKlass org/gradle/cache/internal/CacheVersionMapping +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultArtifactCacheMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ArtifactCacheLockingAccessCoordinator +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ArtifactCacheMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultArtifactCaches +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementGradleUserHomeScopeServices$1 +instanceKlass org/gradle/cache/internal/DefaultCacheCoordinator$IndexedCacheEntry +instanceKlass sun/nio/ch/DatagramSocketAdaptor$DatagramPackets +instanceKlass java/net/DatagramPacket +instanceKlass org/gradle/cache/internal/locklistener/DefaultFileLockContentionHandler$ContendedAction +instanceKlass org/gradle/cache/internal/locklistener/DefaultFileLockContentionHandler$1 +instanceKlass org/gradle/cache/internal/CrossProcessSynchronizingIndexedCache +instanceKlass org/gradle/cache/internal/InMemoryDecoratedCache +instanceKlass org/gradle/cache/internal/InMemoryCacheController +instanceKlass com/google/common/cache/LongAddables$1 +instanceKlass com/google/common/cache/Striped64$Cell +instanceKlass com/google/common/cache/Striped64$1 +instanceKlass sun/misc/Unsafe +instanceKlass com/google/common/cache/LongAddable +instanceKlass com/google/common/cache/LongAddables +instanceKlass com/google/common/cache/AbstractCache$SimpleStatsCounter +instanceKlass org/gradle/cache/internal/LoggingEvictionListener +instanceKlass org/gradle/cache/internal/DefaultInMemoryCacheDecoratorFactory$CacheDetails +instanceKlass org/gradle/cache/internal/AsyncCacheAccessDecoratedCache +instanceKlass org/gradle/cache/internal/ExclusiveCacheAccessingWorker +instanceKlass org/gradle/cache/internal/DefaultMultiProcessSafeIndexedCache +instanceKlass org/gradle/cache/internal/btree/BTreePersistentIndexedCache +instanceKlass org/gradle/cache/internal/DefaultInMemoryCacheDecoratorFactory$InMemoryCacheDecorator +instanceKlass org/gradle/cache/IndexedCacheParameters +instanceKlass org/gradle/api/internal/changedetection/state/DefaultFileAccessTimeJournal +instanceKlass org/gradle/cache/CacheDecorator +instanceKlass org/gradle/cache/internal/MultiProcessSafeAsyncPersistentIndexedCache +instanceKlass org/gradle/cache/internal/DefaultInMemoryCacheDecoratorFactory +instanceKlass org/gradle/cache/internal/DefaultCacheFactory$ReferenceTrackingCache +instanceKlass org/gradle/cache/internal/DefaultCacheFactory$DirCacheReference +instanceKlass org/gradle/cache/internal/cacheops/CacheOperationStack +instanceKlass org/gradle/cache/internal/LockOnDemandCrossProcessCacheAccess$ContendedAction +instanceKlass org/gradle/cache/internal/LockOnDemandCrossProcessCacheAccess$UnlockAction +instanceKlass org/gradle/cache/internal/DefaultCacheCoordinator$1 +instanceKlass org/gradle/cache/internal/cacheops/CacheAccessOperationsStack +instanceKlass org/gradle/cache/internal/CacheInitializationAction$1 +instanceKlass org/gradle/cache/internal/CacheInitializationAction +instanceKlass org/gradle/cache/MultiProcessSafeIndexedCache +instanceKlass org/gradle/cache/UnitOfWorkParticipant +instanceKlass org/gradle/cache/AsyncCacheAccess +instanceKlass org/gradle/cache/internal/AbstractCrossProcessCacheAccess +instanceKlass org/gradle/cache/CrossProcessCacheAccess +instanceKlass org/gradle/cache/internal/DefaultCacheCoordinator +instanceKlass org/gradle/cache/internal/CacheCreationCoordinator +instanceKlass org/gradle/internal/operations/RunnableBuildOperation +instanceKlass org/gradle/cache/internal/DefaultCacheCleanupExecutor +instanceKlass org/gradle/cache/internal/CacheCleanupExecutor +instanceKlass org/gradle/cache/IndexedCache +instanceKlass org/gradle/cache/internal/DefaultPersistentDirectoryStore +instanceKlass org/gradle/cache/CacheCleanupStrategy$1 +instanceKlass org/gradle/cache/internal/DefaultCacheBuilder +instanceKlass org/gradle/cache/internal/scopes/DefaultCacheScopeMapping$1 +instanceKlass sun/invoke/util/VerifyAccess$1 +instanceKlass org/gradle/internal/DeprecatedInGradleScope +instanceKlass org/gradle/BuildAdapter +instanceKlass org/gradle/BuildListener +instanceKlass org/gradle/internal/file/DefaultFileSystemDefaultExcludesProvider$1 +instanceKlass java/nio/file/attribute/PosixFilePermissions$1 +instanceKlass java/nio/file/attribute/PosixFilePermissions +instanceKlass org/apache/tools/ant/util/FileUtils +instanceKlass org/apache/tools/ant/taskdefs/condition/Os +instanceKlass org/apache/tools/ant/taskdefs/condition/Condition +instanceKlass org/apache/tools/ant/types/resources/Appendable +instanceKlass org/apache/tools/ant/types/resources/FileProvider +instanceKlass org/apache/tools/ant/types/resources/Touchable +instanceKlass org/apache/tools/ant/ProjectComponent +instanceKlass org/apache/tools/ant/types/ResourceCollection +instanceKlass org/apache/tools/ant/DirectoryScanner +instanceKlass org/apache/tools/ant/types/ResourceFactory +instanceKlass org/apache/tools/ant/types/selectors/SelectorScanner +instanceKlass org/apache/tools/ant/FileScanner +instanceKlass org/gradle/internal/file/DefaultFileSystemDefaultExcludesProvider +instanceKlass org/gradle/internal/session/DefaultBuildSessionContext +instanceKlass org/gradle/internal/session/BuildSessionContext +instanceKlass org/gradle/plugin/use/internal/InjectedPluginClasspath +instanceKlass org/gradle/internal/cc/impl/DefaultBuildTreeModelControllerServices +instanceKlass org/gradle/api/artifacts/ModuleIdentifier +instanceKlass org/gradle/vcs/internal/resolver/PersistentVcsMetadataCache +instanceKlass org/gradle/vcs/internal/VcsDirectoryLayout +instanceKlass org/gradle/vcs/internal/VersionControlRepositoryConnectionFactory +instanceKlass org/gradle/vcs/internal/services/VersionControlServices$VersionControlBuildSessionServices +instanceKlass org/gradle/nativeplatform/toolchain/internal/gcc/metadata/SystemLibraryDiscovery +instanceKlass org/gradle/nativeplatform/toolchain/internal/xcode/AbstractLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/WindowsKitInstall +instanceKlass org/gradle/platform/base/internal/toolchain/SearchResult +instanceKlass org/gradle/platform/base/internal/toolchain/ToolSearchResult +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/AbstractWindowsKitComponentLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/UcrtLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/version/SystemPathVersionLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/version/AbstractVisualStudioVersionLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/WindowsSdkLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/VisualStudioLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/WindowsComponentLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/version/VisualStudioMetaDataProvider +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/version/VisualStudioVersionLocator +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/version/VisualCppMetadataProvider +instanceKlass org/gradle/nativeplatform/toolchain/internal/msvcpp/version/VswhereVersionLocator +instanceKlass org/gradle/nativeplatform/internal/services/NativeBinaryServices$BuildSessionScopeServices +instanceKlass org/gradle/composite/internal/CompositeBuildServices$CompositeBuildSessionScopeServices +instanceKlass org/gradle/api/tasks/testing/TestDescriptor +instanceKlass org/gradle/api/internal/tasks/testing/operations/TestListenerBuildOperationAdapter +instanceKlass org/gradle/api/internal/tasks/testing/results/TestListenerInternal +instanceKlass org/gradle/api/internal/tasks/testing/operations/TestExecutionBuildOperationBuildSessionScopeServices +instanceKlass org/gradle/internal/jvm/inspection/JvmInstallationProblemReporter +instanceKlass org/gradle/internal/component/model/IvyArtifactName +instanceKlass org/gradle/internal/component/external/model/ivy/MutableIvyModuleResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/IvyMutableModuleMetadataFactory +instanceKlass org/gradle/internal/component/external/model/maven/MutableMavenModuleResolveMetadata +instanceKlass org/gradle/internal/component/external/model/MutableModuleComponentResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MavenImmutableAttributesFactory +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MavenMutableModuleMetadataFactory +instanceKlass org/gradle/api/internal/artifacts/repositories/metadata/MutableModuleMetadataFactory +instanceKlass org/gradle/internal/isolation/Isolatable +instanceKlass org/gradle/internal/hash/Hashable +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/AttributeContainerSerializer +instanceKlass org/gradle/api/internal/attributes/ImmutableAttributes +instanceKlass org/gradle/api/internal/attributes/AttributeContainerInternal +instanceKlass org/gradle/api/attributes/AttributeContainer +instanceKlass org/gradle/api/internal/attributes/DefaultImmutableAttributesFactory +instanceKlass org/gradle/api/internal/catalog/DependenciesAccessorsWorkspaceProvider +instanceKlass org/gradle/internal/execution/workspace/ImmutableWorkspaceProvider +instanceKlass org/gradle/api/internal/attributes/ImmutableAttributesFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/result/ComponentSelectionDescriptorFactory +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementBuildSessionScopeServices +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactVisitor +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ResolvedArtifactSet +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolutionResultProvider +instanceKlass org/gradle/api/internal/artifacts/configurations/ResolutionHost +instanceKlass org/gradle/api/internal/artifacts/ivyservice/resolveengine/artifact/ArtifactSetToFileCollectionFactory +instanceKlass org/gradle/workers/internal/WorkerExecutionQueueFactory +instanceKlass org/gradle/workers/internal/WorkerDaemonClientCancellationHandler +instanceKlass org/gradle/process/internal/worker/child/WorkerDirectoryProvider +instanceKlass org/gradle/internal/work/ConditionalExecutionQueueFactory +instanceKlass org/gradle/workers/internal/WorkersServices$BuildSessionScopeServices +instanceKlass org/gradle/internal/buildtree/BuildTreeModelControllerServices +instanceKlass org/gradle/api/internal/tasks/userinput/BuildScanUserInputHandler +instanceKlass org/gradle/internal/session/BuildSessionActionExecutor +instanceKlass org/gradle/api/internal/tasks/userinput/UserInputHandler +instanceKlass org/gradle/tooling/internal/provider/LauncherServices$ToolingBuildSessionScopeServices +instanceKlass org/gradle/internal/fingerprint/impl/FileCollectionFingerprinterRegistrations +instanceKlass org/gradle/internal/execution/OutputSnapshotter +instanceKlass org/gradle/internal/execution/InputFingerprinter +instanceKlass org/gradle/internal/file/FileSystemDefaultExcludesProvider +instanceKlass org/gradle/internal/execution/FileCollectionFingerprinterRegistry +instanceKlass org/gradle/internal/service/scopes/VirtualFileSystemServices$BuildSessionServices +instanceKlass org/gradle/internal/scopeids/PersistentScopeIdStoreFactory +instanceKlass org/gradle/internal/scopeids/ScopeIdsServices +instanceKlass org/gradle/internal/work/DefaultAsyncWorkTracker +instanceKlass org/gradle/internal/work/AsyncWorkTracker +instanceKlass org/gradle/internal/exceptions/FailureResolutionAware +instanceKlass org/gradle/internal/build/BuildLayoutValidator +instanceKlass org/gradle/internal/model/StateTransitionControllerFactory +instanceKlass org/gradle/internal/model/CalculatedValueCache +instanceKlass org/gradle/internal/model/ValueCalculator +instanceKlass org/gradle/internal/model/CalculatedValueContainerFactory +instanceKlass org/gradle/internal/model/CalculatedValueFactory +instanceKlass org/gradle/deployment/internal/DefaultDeploymentRegistry +instanceKlass org/gradle/deployment/internal/PendingChangesListener +instanceKlass org/gradle/deployment/internal/DeploymentRegistryInternal +instanceKlass org/gradle/deployment/internal/DeploymentRegistry +instanceKlass org/gradle/deployment/internal/PendingChangesManager +instanceKlass org/gradle/internal/buildevents/BuildStartedTime +instanceKlass org/gradle/initialization/layout/ProjectCacheDir +instanceKlass org/gradle/initialization/SettingsLocation +instanceKlass org/gradle/internal/scopeids/id/ScopeId +instanceKlass org/gradle/internal/scopeids/PersistentScopeIdLoader +instanceKlass org/gradle/internal/hash/ChecksumService +instanceKlass org/gradle/api/internal/project/CrossProjectConfigurator +instanceKlass org/gradle/cache/scopes/BuildTreeScopedCacheBuilderFactory +instanceKlass org/gradle/api/internal/file/archive/DecompressionCoordinator +instanceKlass org/gradle/internal/service/scopes/CoreBuildSessionServices +instanceKlass org/gradle/internal/snapshot/impl/ValueSnapshotterSerializerRegistry +instanceKlass org/gradle/internal/snapshot/ValueSnapshotter +instanceKlass org/gradle/internal/service/scopes/WorkerSharedBuildSessionScopeServices +instanceKlass org/gradle/internal/service/scopes/DefaultGradleUserHomeScopeServiceRegistry$Services +instanceKlass org/gradle/api/internal/tasks/compile/incremental/cache/UserHomeScopedCompileCaches +instanceKlass org/gradle/api/internal/tasks/compile/incremental/cache/GeneralCompileCaches +instanceKlass org/gradle/api/internal/tasks/CompileServices$UserHomeScopeServices +instanceKlass org/gradle/kotlin/dsl/provider/plugins/DefaultProjectSchemaProvider +instanceKlass org/gradle/kotlin/dsl/accessors/ProjectSchemaProvider +instanceKlass org/gradle/kotlin/dsl/provider/plugins/precompiled/DefaultPrecompiledScriptPluginsSupport +instanceKlass org/gradle/kotlin/dsl/provider/PrecompiledScriptPluginsSupport +instanceKlass org/gradle/kotlin/dsl/provider/plugins/DefaultKotlinScriptBasePluginsApplicator +instanceKlass org/gradle/kotlin/dsl/provider/KotlinScriptBasePluginsApplicator +instanceKlass org/gradle/kotlin/dsl/provider/plugins/GradleUserHomeServices +instanceKlass org/gradle/internal/execution/ExecutionEngine$IdentityCacheResult +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ArtifactCachesProvider +instanceKlass org/gradle/api/internal/artifacts/transform/ImmutableTransformWorkspaceServices +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultArtifactCaches$WritableArtifactCacheLockingParameters +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementGradleUserHomeScopeServices +instanceKlass org/gradle/workers/internal/ClassLoaderStructureProvider +instanceKlass org/gradle/workers/internal/WorkerDaemonClientsManager +instanceKlass org/gradle/workers/internal/ActionExecutionSpecFactory +instanceKlass org/gradle/workers/internal/WorkersServices$GradleUserHomeServices +instanceKlass org/gradle/tooling/internal/provider/serialization/PayloadSerializer +instanceKlass org/gradle/tooling/internal/provider/serialization/PayloadClassLoaderRegistry +instanceKlass org/gradle/tooling/internal/provider/serialization/PayloadClassLoaderFactory +instanceKlass org/gradle/internal/daemon/services/DaemonServices$DaemonGradleUserHomeServices +instanceKlass org/gradle/kotlin/dsl/provider/KotlinScriptClassloadingCache +instanceKlass org/gradle/kotlin/dsl/provider/GradleUserHomeServices +instanceKlass org/gradle/kotlin/dsl/support/EmbeddedKotlinProvider +instanceKlass org/gradle/kotlin/dsl/support/GradleUserHomeServices +instanceKlass org/gradle/kotlin/dsl/cache/KotlinDslWorkspaceProvider +instanceKlass org/gradle/kotlin/dsl/cache/GradleUserHomeServices +instanceKlass org/gradle/internal/service/ServiceAccess$PrivateAccessScope +instanceKlass org/gradle/internal/build/BuildState +instanceKlass org/gradle/internal/watch/registry/FileWatcherRegistryFactory +instanceKlass org/gradle/internal/snapshot/SnapshotHierarchy +instanceKlass org/gradle/internal/watch/vfs/impl/FileWatchingFilter +instanceKlass org/gradle/internal/vfs/FileSystemAccess$WriteListener +instanceKlass org/gradle/api/internal/changedetection/state/CrossBuildFileHashCache +instanceKlass org/gradle/internal/execution/FileCollectionSnapshotter +instanceKlass org/gradle/internal/watch/vfs/BuildLifecycleAwareVirtualFileSystem +instanceKlass org/gradle/internal/vfs/VirtualFileSystem +instanceKlass org/gradle/internal/watch/vfs/FileChangeListeners +instanceKlass org/gradle/internal/hash/FileHasher +instanceKlass org/gradle/internal/watch/vfs/WatchableFileSystemDetector +instanceKlass org/gradle/api/internal/changedetection/state/ResourceSnapshotterCacheService +instanceKlass org/gradle/internal/service/scopes/VirtualFileSystemServices$GradleUserHomeServices +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$InstanceUnpackingVisitor +instanceKlass org/gradle/internal/fingerprint/classpath/ClasspathFingerprinter +instanceKlass org/gradle/internal/execution/FileCollectionFingerprinter +instanceKlass org/gradle/internal/snapshot/FileSystemSnapshot +instanceKlass org/gradle/internal/classpath/ClasspathFileTransformer +instanceKlass org/gradle/internal/classpath/DefaultCachedClasspathTransformer +instanceKlass org/gradle/internal/classpath/CachedClasspathTransformer +instanceKlass org/gradle/internal/classpath/transforms/ClasspathElementTransformFactoryForLegacy +instanceKlass org/gradle/internal/classpath/transforms/ClasspathElementTransform +instanceKlass org/gradle/internal/classpath/transforms/ClasspathElementTransformFactoryForAgent +instanceKlass org/gradle/internal/classpath/transforms/ClasspathElementTransformFactory +instanceKlass org/gradle/internal/classpath/types/GradleCoreInstrumentationTypeRegistry +instanceKlass org/gradle/internal/classpath/types/InstrumentationTypeRegistry +instanceKlass org/gradle/api/internal/changedetection/state/FileTimeStampInspector +instanceKlass org/gradle/initialization/RootBuildLifecycleListener +instanceKlass org/gradle/cache/internal/FilesFinder +instanceKlass org/gradle/internal/file/FileAccessTracker +instanceKlass org/gradle/cache/CacheCleanupStrategy +instanceKlass org/gradle/cache/CleanupAction +instanceKlass org/gradle/internal/classpath/DefaultClasspathTransformerCacheFactory +instanceKlass org/gradle/internal/classpath/ClasspathTransformerCacheFactory +instanceKlass org/gradle/internal/classpath/DefaultClasspathBuilder +instanceKlass org/gradle/internal/classpath/ClasspathBuilder +instanceKlass org/gradle/internal/classpath/ClasspathEntryVisitor$Entry +instanceKlass org/gradle/internal/classpath/ClasspathWalker +instanceKlass org/gradle/cache/internal/GradleUserHomeCleanupServices$1 +instanceKlass org/gradle/internal/cache/MonitoredCleanupAction +instanceKlass org/gradle/internal/operations/CallableBuildOperation +instanceKlass org/gradle/cache/internal/GradleUserHomeCleanupService +instanceKlass org/gradle/cache/internal/VersionSpecificCacheDirectoryScanner +instanceKlass org/gradle/cache/internal/UsedGradleVersionsFromGradleUserHomeCaches +instanceKlass org/gradle/api/internal/cache/NoMarkingStrategy +instanceKlass org/gradle/api/internal/cache/CacheDirTagMarkingStrategy +instanceKlass org/gradle/api/internal/provider/TypeSanitizingTransformer +instanceKlass org/gradle/internal/time/TimestampSuppliers$1 +instanceKlass org/gradle/internal/time/TimestampSuppliers +instanceKlass org/gradle/internal/serialization/Cached +instanceKlass org/gradle/internal/instantiation/generator/ManagedObjectFactory$ManagedPropertyName +instanceKlass org/gradle/api/internal/provider/ValueSanitizers$4 +instanceKlass org/gradle/api/internal/provider/ValueSanitizers$3 +instanceKlass org/gradle/api/internal/provider/ValueSanitizers$2 +instanceKlass org/gradle/api/internal/provider/ValueSanitizers$1 +instanceKlass org/gradle/api/internal/provider/ValueCollector +instanceKlass org/gradle/api/internal/provider/ValueSanitizer +instanceKlass org/gradle/api/internal/provider/ValueSanitizers +instanceKlass org/gradle/api/internal/provider/ValueState +instanceKlass org/gradle/api/internal/provider/ValueSupplier$Present +instanceKlass org/gradle/api/internal/provider/ValueSupplier$Missing +instanceKlass org/gradle/api/internal/provider/ValueSupplier$Value +instanceKlass org/gradle/api/NamedDomainObjectProvider +instanceKlass org/gradle/api/internal/provider/Providers +instanceKlass org/gradle/internal/Describables$AbstractDescribable +instanceKlass org/gradle/internal/Describables +instanceKlass org/gradle/api/internal/cache/DefaultCacheConfigurations$DefaultCacheResourceConfiguration +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$ObjectCreationDetails +instanceKlass org/gradle/internal/instantiation/generator/InjectUtil +instanceKlass java/util/TimSort +instanceKlass com/google/common/collect/Iterables +instanceKlass com/google/common/collect/Ordering +instanceKlass org/gradle/internal/instantiation/generator/ConstructorComparator +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$InvokeConstructorStrategy +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$GeneratedClassImpl$GeneratedConstructorImpl +instanceKlass org/gradle/internal/instantiation/generator/ClassGenerator$GeneratedConstructor +instanceKlass org/gradle/internal/instantiation/generator/ClassGenerator$SerializationConstructor +instanceKlass org/objectweb/asm/Handler +instanceKlass org/objectweb/asm/Attribute +instanceKlass org/gradle/model/internal/asm/AsmClassGeneratorUtils +instanceKlass org/apache/groovy/util/BeanUtils +instanceKlass groovy/lang/MetaProperty +instanceKlass com/google/common/collect/LinkedHashMultimap$ValueSet$1 +instanceKlass com/google/common/collect/AbstractMapBasedMultimap$WrappedCollection$WrappedIterator +instanceKlass java/lang/invoke/MethodHandle$1 +instanceKlass org/gradle/api/Task +instanceKlass org/objectweb/asm/Edge +instanceKlass org/objectweb/asm/Label +instanceKlass org/objectweb/asm/Frame +instanceKlass org/gradle/model/internal/asm/BytecodeFragment +instanceKlass org/objectweb/asm/ByteVector +instanceKlass org/objectweb/asm/Symbol +instanceKlass org/objectweb/asm/SymbolTable +instanceKlass org/objectweb/asm/MethodVisitor +instanceKlass org/objectweb/asm/FieldVisitor +instanceKlass org/objectweb/asm/ModuleVisitor +instanceKlass org/objectweb/asm/AnnotationVisitor +instanceKlass org/objectweb/asm/RecordComponentVisitor +instanceKlass org/gradle/model/internal/asm/AsmClassGenerator +instanceKlass org/objectweb/asm/Handle +instanceKlass org/gradle/internal/DisplayName +instanceKlass org/gradle/api/Project +instanceKlass org/gradle/api/internal/provider/AbstractMinimalProvider +instanceKlass org/gradle/api/internal/provider/PropertyInternal +instanceKlass org/gradle/api/internal/provider/support/LazyGroovySupport +instanceKlass org/gradle/api/internal/provider/HasConfigurableValueInternal +instanceKlass org/gradle/api/internal/provider/ProviderInternal +instanceKlass org/gradle/api/internal/provider/EvaluationContext$EvaluationOwner +instanceKlass org/gradle/api/internal/provider/ValueSupplier +instanceKlass org/gradle/internal/instantiation/generator/ManagedObjectFactory +instanceKlass org/gradle/util/internal/ConfigureUtil +instanceKlass org/gradle/internal/metaobject/AbstractDynamicObject +instanceKlass org/gradle/api/plugins/Convention +instanceKlass org/gradle/api/plugins/ExtensionContainer +instanceKlass org/gradle/internal/metaobject/DynamicObject +instanceKlass org/gradle/internal/metaobject/PropertyAccess +instanceKlass org/gradle/internal/metaobject/MethodAccess +instanceKlass org/gradle/internal/extensibility/ConventionAwareHelper +instanceKlass org/gradle/api/internal/HasConvention +instanceKlass org/gradle/api/internal/IConventionAware +instanceKlass org/gradle/internal/state/OwnerAware +instanceKlass org/gradle/api/internal/GeneratedSubclass +instanceKlass org/gradle/api/internal/ConventionMapping +instanceKlass groovy/lang/GroovyObjectSupport +instanceKlass groovy/lang/GroovyCallable +instanceKlass org/gradle/api/IsolatedAction +instanceKlass java/util/stream/MatchOps$BooleanTerminalSink +instanceKlass java/util/stream/MatchOps$MatchOp +instanceKlass java/util/stream/MatchOps +instanceKlass jdk/internal/vm/annotation/IntrinsicCandidate +instanceKlass java/lang/Deprecated +instanceKlass org/gradle/api/internal/DynamicObjectAware +instanceKlass org/gradle/internal/extensibility/NoConventionMapping +instanceKlass org/gradle/api/NonExtensible +instanceKlass org/gradle/api/cache/MarkingStrategy +instanceKlass sun/reflect/generics/tree/Wildcard +instanceKlass sun/reflect/generics/tree/BottomSignature +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$MethodMetadata +instanceKlass org/gradle/internal/reflect/PropertyAccessor +instanceKlass org/gradle/internal/reflect/PropertyMutator +instanceKlass org/gradle/internal/reflect/JavaPropertyReflectionUtil +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$PropertyMetadata +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$ClassMetadata +instanceKlass org/gradle/internal/reflect/MethodSet$MethodKey +instanceKlass org/gradle/internal/reflect/MutablePropertyDetails +instanceKlass java/beans/Introspector$1 +instanceKlass jdk/internal/access/JavaBeansAccess +instanceKlass java/beans/FeatureDescriptor +instanceKlass java/beans/Introspector +instanceKlass org/gradle/api/cache/Cleanup +instanceKlass org/gradle/api/invocation/Gradle +instanceKlass org/gradle/api/plugins/ExtensionAware +instanceKlass org/gradle/api/plugins/PluginAware +instanceKlass org/gradle/api/internal/cache/CacheResourceConfigurationInternal +instanceKlass org/gradle/cache/CleanupFrequency +instanceKlass org/gradle/api/cache/CacheResourceConfiguration +instanceKlass org/gradle/internal/reflect/PropertyDetails +instanceKlass org/gradle/internal/reflect/MutableClassDetails +instanceKlass org/gradle/internal/reflect/ClassDetails +instanceKlass org/gradle/internal/reflect/ClassInspector +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$ClassGenerationVisitor +instanceKlass org/gradle/internal/instantiation/generator/AsmBackedClassGenerator$ClassInspectionVisitorImpl +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$InjectionAnnotationValidator +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$DisabledAnnotationValidator +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$ClassValidator +instanceKlass com/google/common/collect/LinkedHashMultimap$ValueSetLink +instanceKlass java/lang/StrictMath +instanceKlass org/gradle/internal/reflect/MethodSet +instanceKlass com/google/common/collect/SetMultimap +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$ClassGenerationHandler +instanceKlass org/gradle/internal/instantiation/generator/Jsr330ConstructorSelector$CachedConstructor +instanceKlass org/gradle/api/internal/cache/DefaultCacheConfigurations +instanceKlass org/gradle/api/Incubating +instanceKlass org/gradle/api/internal/model/DefaultObjectFactory +instanceKlass org/gradle/api/model/BuildTreeObjectFactory +instanceKlass org/gradle/internal/state/Managed +instanceKlass com/google/common/base/ExtraObjectsMethodsForWeb +instanceKlass org/gradle/model/internal/inspect/ValidationProblemCollector +instanceKlass org/gradle/api/internal/MutationGuards$1 +instanceKlass org/gradle/api/internal/MutationGuard +instanceKlass org/gradle/api/internal/MutationGuards +instanceKlass org/gradle/api/internal/CollectionCallbackActionDecorator$1 +instanceKlass org/gradle/api/internal/collections/DefaultDomainObjectCollectionFactory +instanceKlass org/gradle/api/file/Directory +instanceKlass org/gradle/api/file/RegularFile +instanceKlass org/gradle/api/file/FileSystemLocation +instanceKlass org/gradle/api/internal/file/collections/FileCollectionObservationListener +instanceKlass org/gradle/api/internal/tasks/DefaultTaskDependencyFactory +instanceKlass org/gradle/api/internal/file/collections/MinimalFileTree +instanceKlass org/gradle/api/internal/file/collections/MinimalFileCollection +instanceKlass org/gradle/api/internal/file/FileTreeInternal +instanceKlass org/gradle/api/internal/file/FileCollectionInternal +instanceKlass org/gradle/api/internal/tasks/TaskDependencyContainer +instanceKlass org/gradle/api/internal/file/DefaultFileCollectionFactory +instanceKlass org/gradle/internal/exceptions/DiagnosticsVisitor +instanceKlass org/gradle/internal/typeconversion/ErrorHandlingNotationParser +instanceKlass org/gradle/internal/typeconversion/NotationConvertResult +instanceKlass org/gradle/internal/typeconversion/NotationConverterToNotationParserAdapter +instanceKlass org/gradle/internal/typeconversion/TypeInfo +instanceKlass org/gradle/internal/typeconversion/NotationParserBuilder +instanceKlass org/gradle/api/internal/file/FileOrUriNotationConverter +instanceKlass org/gradle/api/internal/file/AbstractFileResolver +instanceKlass org/gradle/api/internal/provider/DefaultPropertyFactory +instanceKlass org/gradle/internal/state/ModelObject +instanceKlass org/gradle/api/internal/file/collections/DefaultDirectoryFileTreeFactory +instanceKlass org/gradle/api/tasks/util/internal/PatternSets$PatternSetFactory +instanceKlass org/gradle/api/tasks/util/internal/PatternSets +instanceKlass com/google/common/cache/LocalCache$AbstractReferenceEntry +instanceKlass java/util/concurrent/atomic/AtomicReferenceArray +instanceKlass com/google/common/cache/LocalCache$LoadingValueReference +instanceKlass com/google/common/cache/RemovalListener +instanceKlass com/google/common/cache/Weigher +instanceKlass com/google/common/base/Equivalence +instanceKlass java/util/function/BiPredicate +instanceKlass com/google/common/base/MoreObjects +instanceKlass com/google/common/cache/LocalCache$1 +instanceKlass com/google/common/cache/ReferenceEntry +instanceKlass com/google/common/cache/LocalCache$ValueReference +instanceKlass com/google/common/cache/CacheLoader +instanceKlass com/google/common/cache/LocalCache$LocalManualCache +instanceKlass com/google/common/cache/CacheBuilder$2 +instanceKlass com/google/common/cache/CacheStats +instanceKlass com/google/common/base/Suppliers$SupplierOfInstance +instanceKlass com/google/common/base/Suppliers +instanceKlass com/google/common/cache/CacheBuilder$1 +instanceKlass com/google/common/cache/AbstractCache$StatsCounter +instanceKlass com/google/common/cache/LoadingCache +instanceKlass com/google/common/cache/Cache +instanceKlass com/google/common/base/Ticker +instanceKlass com/google/common/cache/CacheBuilder +instanceKlass org/gradle/cache/internal/HeapProportionalCacheSizer +instanceKlass org/gradle/internal/instantiation/generator/DefaultInstantiationScheme$DefaultDeserializationInstantiator +instanceKlass org/gradle/internal/instantiation/InstanceFactory +instanceKlass org/gradle/internal/instantiation/generator/DependencyInjectingInstantiator +instanceKlass org/gradle/internal/instantiation/DeserializationInstantiator +instanceKlass org/gradle/internal/instantiation/generator/DefaultInstantiationScheme +instanceKlass org/gradle/internal/instantiation/generator/ParamsMatchingConstructorSelector +instanceKlass org/gradle/internal/instantiation/generator/Jsr330ConstructorSelector +instanceKlass com/google/common/collect/ImmutableMultimap$Builder +instanceKlass com/google/common/collect/Multiset +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$GeneratedClassImpl +instanceKlass org/gradle/internal/instantiation/generator/ClassGenerator$GeneratedClass +instanceKlass org/gradle/cache/internal/DefaultCrossBuildInMemoryCacheFactory$AbstractCrossBuildInMemoryCache +instanceKlass org/gradle/internal/session/BuildSessionLifecycleListener +instanceKlass org/gradle/model/internal/asm/ClassGeneratorSuffixRegistry +instanceKlass org/gradle/api/artifacts/dsl/DependencyCollector +instanceKlass org/gradle/api/ExtensiblePolymorphicDomainObjectContainer +instanceKlass org/gradle/api/internal/rules/NamedDomainObjectFactoryRegistry +instanceKlass org/gradle/api/PolymorphicDomainObjectContainer +instanceKlass org/gradle/api/NamedDomainObjectContainer +instanceKlass org/gradle/util/Configurable +instanceKlass org/gradle/api/NamedDomainObjectSet +instanceKlass org/gradle/api/DomainObjectSet +instanceKlass org/gradle/api/NamedDomainObjectCollection +instanceKlass org/gradle/api/DomainObjectCollection +instanceKlass org/gradle/api/file/DirectoryProperty +instanceKlass org/gradle/api/file/RegularFileProperty +instanceKlass org/gradle/api/file/FileSystemLocationProperty +instanceKlass org/gradle/api/provider/Property +instanceKlass org/gradle/api/provider/MapProperty +instanceKlass org/gradle/api/provider/SetProperty +instanceKlass org/gradle/api/provider/ListProperty +instanceKlass org/gradle/api/provider/HasMultipleValues +instanceKlass org/gradle/api/provider/Provider +instanceKlass org/gradle/api/file/ConfigurableFileTree +instanceKlass org/gradle/api/file/DirectoryTree +instanceKlass org/gradle/api/file/FileTree +instanceKlass org/gradle/api/file/ConfigurableFileCollection +instanceKlass org/gradle/api/provider/SupportsConvention +instanceKlass org/gradle/api/provider/HasConfigurableValue +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$InstantiationStrategy +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$ClassInspectionVisitor +instanceKlass com/google/common/reflect/TypeCapture +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator$UnclaimedPropertyHandler +instanceKlass com/google/common/collect/ListMultimap +instanceKlass com/google/common/collect/AbstractMultimap +instanceKlass com/google/common/collect/Multimap +instanceKlass org/gradle/internal/instantiation/generator/AbstractClassGenerator +instanceKlass org/gradle/internal/instantiation/generator/ClassGenerator +instanceKlass org/gradle/internal/service/ServiceRegistryBuilder$1 +instanceKlass org/gradle/internal/service/ServiceRegistrationAction +instanceKlass org/gradle/api/internal/tasks/properties/annotations/OutputPropertyRoleAnnotationHandler +instanceKlass org/gradle/internal/instantiation/generator/DefaultInstantiatorFactory$ManagedTypeFactory +instanceKlass org/gradle/internal/instantiation/InstantiationScheme +instanceKlass org/gradle/internal/instantiation/generator/ConstructorSelector +instanceKlass org/gradle/internal/instantiation/generator/DefaultInstantiatorFactory +instanceKlass org/gradle/cache/internal/CrossBuildInMemoryCache +instanceKlass org/gradle/cache/internal/DefaultCrossBuildInMemoryCacheFactory +instanceKlass java/util/stream/ForEachOps$ForEachOp +instanceKlass java/util/stream/ForEachOps +instanceKlass org/gradle/work/NormalizeLineEndings +instanceKlass org/gradle/api/tasks/IgnoreEmptyDirectories +instanceKlass org/gradle/api/tasks/Optional +instanceKlass org/gradle/api/tasks/PathSensitive +instanceKlass org/gradle/api/tasks/CompileClasspath +instanceKlass org/gradle/api/tasks/Classpath +instanceKlass org/gradle/api/tasks/SkipWhenEmpty +instanceKlass org/gradle/work/Incremental +instanceKlass org/gradle/internal/file/impl/DefaultDeleter +instanceKlass org/gradle/cache/internal/scopes/DefaultCacheScopeMapping +instanceKlass org/gradle/cache/internal/CacheScopeMapping +instanceKlass org/gradle/cache/CacheBuilder +instanceKlass org/gradle/cache/internal/DefaultUnscopedCacheBuilderFactory +instanceKlass org/gradle/cache/internal/ReferencablePersistentCache +instanceKlass org/gradle/cache/PersistentCache +instanceKlass org/gradle/cache/HasCleanupAction +instanceKlass org/gradle/cache/CleanableStore +instanceKlass org/gradle/cache/ExclusiveCacheAccessCoordinator +instanceKlass org/gradle/cache/internal/DefaultCacheFactory +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$BuildOperationExecutionListenerFactory +instanceKlass org/gradle/internal/operations/BuildOperationTimeSupplier +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$1 +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$ReadableBuildOperationContext +instanceKlass org/gradle/internal/operations/BuildOperationContext +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$BuildOperationExecution +instanceKlass org/gradle/internal/operations/BuildOperation +instanceKlass org/gradle/internal/operations/BuildOperationWorker +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner +instanceKlass org/gradle/internal/logging/services/ProgressLoggingBridge +instanceKlass org/gradle/internal/logging/progress/ProgressLogger +instanceKlass org/gradle/internal/logging/progress/DefaultProgressLoggerFactory +instanceKlass org/gradle/internal/operations/DefaultBuildOperationIdFactory +instanceKlass org/gradle/cache/internal/UsedGradleVersions +instanceKlass org/gradle/cache/internal/GradleUserHomeCleanupServices +instanceKlass org/gradle/execution/plan/ToPlannedNodeConverterRegistry +instanceKlass org/gradle/groovy/scripts/internal/CrossBuildInMemoryCachingScriptClassCache +instanceKlass org/gradle/cache/internal/DefaultGeneratedGradleJarCache +instanceKlass org/gradle/cache/internal/GeneratedGradleJarCache +instanceKlass org/gradle/groovy/scripts/internal/GroovyDslWorkspaceProvider +instanceKlass org/gradle/internal/vfs/FileSystemAccess +instanceKlass org/gradle/api/internal/cache/CacheConfigurationsInternal +instanceKlass org/gradle/api/cache/CacheConfigurations +instanceKlass org/gradle/cache/internal/LegacyCacheCleanupEnablement +instanceKlass org/gradle/internal/jvm/JavaModuleDetector +instanceKlass org/gradle/cache/internal/scopes/AbstractScopedCacheBuilderFactory +instanceKlass org/gradle/initialization/layout/GlobalCacheDir +instanceKlass org/gradle/cache/scopes/GlobalScopedCacheBuilderFactory +instanceKlass org/gradle/initialization/ClassLoaderScopeRegistryListenerManager +instanceKlass org/gradle/process/internal/worker/child/WorkerProcessClassPathProvider +instanceKlass org/gradle/internal/classloader/ClasspathHasher +instanceKlass org/gradle/internal/service/scopes/DefaultGradleUserHomeScopeServiceRegistry$1 +instanceKlass org/gradle/internal/session/BuildSessionState +instanceKlass org/gradle/internal/operations/trace/SerializedOperation +instanceKlass org/gradle/internal/operations/trace/BuildOperationTrace$SerializingBuildOperationListener +instanceKlass groovy/json/DefaultJsonGenerator +instanceKlass org/gradle/internal/operations/trace/BuildOperationTrace$JsonThrowableConverter +instanceKlass org/gradle/internal/operations/trace/BuildOperationTrace$JsonClassConverter +instanceKlass groovy/json/JsonGenerator +instanceKlass groovy/json/JsonGenerator$Options +instanceKlass groovy/json/JsonGenerator$Converter +instanceKlass org/gradle/internal/operations/DefaultBuildOperationListenerManager$1 +instanceKlass org/gradle/internal/operations/DefaultBuildOperationListenerManager +instanceKlass org/gradle/configuration/internal/DefaultDynamicCallContextTracker +instanceKlass org/gradle/configuration/internal/DynamicCallContextTracker +instanceKlass org/gradle/internal/work/WorkerLeaseRegistry$WorkerLease +instanceKlass org/gradle/internal/resources/ResourceLock +instanceKlass org/gradle/internal/work/WorkerLeaseRegistry$WorkerLeaseCompletion +instanceKlass com/google/common/base/Supplier +instanceKlass org/gradle/internal/work/Synchronizer +instanceKlass org/gradle/internal/work/DefaultWorkerLeaseService +instanceKlass org/gradle/internal/work/ProjectParallelExecutionController +instanceKlass org/gradle/internal/resources/ResourceLockState +instanceKlass org/gradle/internal/resources/DefaultResourceLockCoordinationService +instanceKlass org/gradle/internal/resources/ResourceLockCoordinationService +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationValve +instanceKlass org/gradle/internal/operations/logging/LoggingBuildOperationProgressBroadcaster +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationBridge +instanceKlass org/gradle/internal/operations/notify/BuildOperationNotificationListenerRegistrar +instanceKlass org/gradle/internal/work/WorkerLeaseService +instanceKlass org/gradle/internal/work/WorkerThreadRegistry +instanceKlass org/gradle/internal/resources/ProjectLeaseRegistry +instanceKlass org/gradle/internal/work/WorkerLeaseRegistry +instanceKlass org/gradle/internal/operations/trace/BuildOperationTrace +instanceKlass org/gradle/internal/service/scopes/CrossBuildSessionParameters +instanceKlass org/gradle/configuration/internal/ListenerBuildOperationDecorator +instanceKlass org/gradle/api/internal/CollectionCallbackActionDecorator +instanceKlass org/gradle/internal/operations/BuildOperationExecutor +instanceKlass org/gradle/internal/operations/BuildOperationQueueFactory +instanceKlass org/gradle/internal/code/UserCodeApplicationContext +instanceKlass org/gradle/internal/work/WorkerLimits +instanceKlass org/gradle/internal/service/scopes/CoreCrossBuildSessionServices +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$CollectionService +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$CollectingVisitor +instanceKlass sun/reflect/generics/tree/VoidDescriptor +instanceKlass org/gradle/internal/session/CrossBuildSessionState$Services +instanceKlass org/gradle/internal/session/CrossBuildSessionState +instanceKlass org/gradle/internal/buildprocess/execution/BuildSessionLifecycleBuildActionExecutor$ActionImpl +instanceKlass org/gradle/tooling/internal/protocol/ModelIdentifier +instanceKlass org/gradle/tooling/internal/protocol/InternalProtocolInterface +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$3 +instanceKlass org/gradle/internal/logging/sink/ProgressLogEventGenerator +instanceKlass org/gradle/internal/logging/console/BuildLogLevelFilterRenderer +instanceKlass org/gradle/launcher/daemon/server/exec/ExecuteBuild$1 +instanceKlass org/gradle/initialization/DefaultBuildRequestContext +instanceKlass org/gradle/initialization/DefaultBuildRequestMetaData +instanceKlass org/gradle/configuration/DefaultBuildClientMetaData +instanceKlass org/gradle/launcher/daemon/server/exec/DaemonConnectionBackedEventConsumer +instanceKlass org/gradle/launcher/daemon/server/exec/WatchForDisconnection$1 +instanceKlass org/gradle/internal/featurelifecycle/LoggingIncubatingFeatureHandler +instanceKlass org/gradle/util/internal/IncubationLogger +instanceKlass org/gradle/internal/daemon/clientinput/ClientInputForwarder$2 +instanceKlass org/gradle/internal/daemon/clientinput/ClientInputForwarder$1 +instanceKlass java/math/MathContext +instanceKlass org/gradle/internal/util/NumberUtil +instanceKlass org/gradle/launcher/daemon/server/exec/LogToClient$AsynchronousLogDispatcher$1 +instanceKlass java/util/concurrent/CountDownLatch +instanceKlass jdk/internal/reflect/UnsafeFieldAccessorFactory +instanceKlass com/google/common/collect/AbstractIterator$1 +instanceKlass java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry +instanceKlass java/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1 +instanceKlass org/gradle/launcher/daemon/registry/PersistentDaemonRegistry$5 +instanceKlass jdk/internal/math/FDBigInteger +instanceKlass org/gradle/launcher/daemon/server/exec/StartBuildOrRespondWithBusy$1 +instanceKlass org/gradle/launcher/daemon/server/DefaultDaemonConnection$CommandQueue$1 +instanceKlass org/gradle/launcher/daemon/server/exec/HandleCancel$1 +instanceKlass com/google/common/collect/Platform +instanceKlass org/gradle/launcher/daemon/server/api/DaemonCommandExecution +instanceKlass org/gradle/launcher/exec/DefaultBuildActionParameters +instanceKlass org/gradle/configuration/GradleLauncherMetaData +instanceKlass com/google/common/collect/AbstractMapEntry +instanceKlass com/google/common/collect/ImmutableMap$Builder +instanceKlass org/gradle/internal/deprecation/DeprecationMessageBuilder$WithDocumentation +instanceKlass org/gradle/internal/deprecation/Documentation +instanceKlass org/gradle/internal/deprecation/DeprecationTimeline +instanceKlass org/gradle/internal/deprecation/Documentation$AbstractBuilder +instanceKlass org/gradle/internal/deprecation/DeprecationLogger$4 +instanceKlass org/gradle/internal/problems/NoOpProblemDiagnosticsFactory$2 +instanceKlass org/gradle/internal/problems/NoOpProblemDiagnosticsFactory$1 +instanceKlass org/gradle/problems/buildtree/ProblemStream +instanceKlass org/gradle/problems/ProblemDiagnostics +instanceKlass org/gradle/internal/problems/NoOpProblemDiagnosticsFactory +instanceKlass org/gradle/problems/buildtree/ProblemStream$StackTraceTransformer +instanceKlass org/gradle/internal/featurelifecycle/LoggingDeprecatedFeatureHandler +instanceKlass org/gradle/internal/featurelifecycle/FeatureHandler +instanceKlass org/gradle/internal/deprecation/DeprecationMessageBuilder +instanceKlass org/gradle/internal/deprecation/DeprecationLogger +instanceKlass org/gradle/internal/deprecation/DeprecationLogger$ThrowingRunnable +instanceKlass org/gradle/internal/DefaultTaskExecutionRequest +instanceKlass com/google/common/collect/Lists +instanceKlass org/gradle/internal/buildoption/Option$Value +instanceKlass org/gradle/internal/RunDefaultTasksExecutionRequest +instanceKlass org/gradle/TaskExecutionRequest +instanceKlass org/gradle/api/launcher/cli/WelcomeMessageConfiguration +instanceKlass org/gradle/internal/concurrent/DefaultParallelismConfiguration +instanceKlass org/gradle/internal/logging/DefaultLoggingConfiguration +instanceKlass org/gradle/initialization/BuildLayoutParameters +instanceKlass java/nio/channels/spi/AbstractSelector$1 +instanceKlass org/gradle/launcher/daemon/server/DefaultDaemonConnection$1 +instanceKlass org/gradle/launcher/daemon/server/DefaultDaemonConnection$ReceiveQueue +instanceKlass org/gradle/launcher/daemon/server/DefaultDaemonConnection$DisconnectQueue +instanceKlass org/gradle/launcher/daemon/server/DefaultDaemonConnection$CommandQueue +instanceKlass org/gradle/launcher/daemon/server/DefaultDaemonConnection +instanceKlass org/gradle/launcher/daemon/server/api/DaemonConnection +instanceKlass org/gradle/launcher/daemon/server/DefaultIncomingConnectionHandler$ConnectionWorker +instanceKlass org/gradle/launcher/daemon/server/SynchronizedDispatchConnection +instanceKlass org/gradle/internal/serialize/Serializers$StatefulSerializerAdapter$2 +instanceKlass org/gradle/internal/serialize/PositionAwareEncoder +instanceKlass org/gradle/internal/serialize/Serializers$StatefulSerializerAdapter$1 +instanceKlass org/gradle/internal/remote/internal/inet/SocketInetAddress$Serializer +instanceKlass org/gradle/internal/io/BufferCaster +instanceKlass java/lang/invoke/ConstantBootstraps +instanceKlass java/nio/channels/SelectionKey +instanceKlass java/nio/BufferMismatch +instanceKlass sun/nio/ch/Util$BufferCache +instanceKlass com/sun/security/sasl/Provider$1 +instanceKlass sun/security/jgss/SunProvider$1 +instanceKlass org/jcp/xml/dsig/internal/dom/XMLDSigRI$2 +instanceKlass org/jcp/xml/dsig/internal/dom/XMLDSigRI$1 +instanceKlass sun/security/pkcs11/SunPKCS11$Descriptor +instanceKlass javax/security/auth/callback/CallbackHandler +instanceKlass javax/security/auth/Subject +instanceKlass sun/security/mscapi/SunMSCAPI$2 +instanceKlass sun/security/mscapi/SunMSCAPI$1 +instanceKlass java/security/spec/ECFieldF2m +instanceKlass sun/security/util/ObjectIdentifier +instanceKlass sun/security/util/ByteArrayTagOrder +instanceKlass sun/security/util/ByteArrayLexOrder +instanceKlass sun/security/util/DerEncoder +instanceKlass java/security/spec/ECParameterSpec +instanceKlass java/security/spec/AlgorithmParameterSpec +instanceKlass java/security/spec/ECPoint +instanceKlass java/security/spec/EllipticCurve +instanceKlass java/security/spec/ECFieldFp +instanceKlass java/security/spec/ECField +instanceKlass sun/security/util/CurveDB +instanceKlass sun/security/ec/SunEC$1 +instanceKlass com/sun/security/sasl/gsskerb/JdkSASL$1 +instanceKlass sun/security/smartcardio/SunPCSC$1 +instanceKlass sun/security/jca/ProviderConfig$ProviderLoader +instanceKlass sun/security/jca/ProviderConfig$3 +instanceKlass sun/security/rsa/SunRsaSignEntries +instanceKlass sun/nio/ch/UnixDomainSocketsUtil +instanceKlass sun/nio/ch/UnixDomainSockets +instanceKlass sun/nio/ch/PipeImpl$Initializer$LoopbackConnector +instanceKlass sun/nio/ch/PipeImpl$Initializer +instanceKlass java/nio/channels/Pipe +instanceKlass sun/nio/ch/WEPoll +instanceKlass sun/nio/ch/Util$2 +instanceKlass sun/nio/ch/Util +instanceKlass java/nio/channels/Selector +instanceKlass java/nio/DirectByteBuffer$Deallocator +instanceKlass org/gradle/internal/remote/internal/KryoBackedMessageSerializer +instanceKlass org/gradle/internal/remote/internal/inet/SocketConnection +instanceKlass org/gradle/internal/serialize/ObjectWriter +instanceKlass org/gradle/internal/serialize/ObjectReader +instanceKlass org/gradle/internal/serialize/Serializers$StatefulSerializerAdapter +instanceKlass org/gradle/internal/serialize/StatefulSerializer +instanceKlass org/gradle/internal/serialize/Serializers +instanceKlass org/gradle/internal/remote/internal/RemoteConnection +instanceKlass org/gradle/internal/remote/internal/Connection +instanceKlass org/gradle/internal/dispatch/Receive +instanceKlass org/gradle/internal/remote/internal/MessageSerializer +instanceKlass org/gradle/internal/remote/internal/inet/SocketConnectCompletion +instanceKlass org/gradle/internal/remote/internal/ConnectCompletion +instanceKlass java/net/Socket +instanceKlass sun/nio/ch/IOStatus +instanceKlass org/gradle/launcher/daemon/server/DaemonStateCoordinator$1 +instanceKlass org/gradle/internal/event/DefaultListenerManager$ExclusiveEventBroadcast$1 +instanceKlass org/gradle/launcher/daemon/server/Daemon$DefaultDaemonExpirationListener +instanceKlass org/gradle/launcher/daemon/server/Daemon$DaemonExpirationPeriodicCheck +instanceKlass org/gradle/launcher/daemon/server/expiry/AnyDaemonExpirationStrategy +instanceKlass org/gradle/launcher/daemon/server/DaemonRegistryUnavailableExpirationStrategy +instanceKlass org/gradle/internal/reflect/JavaReflectionUtil +instanceKlass org/gradle/internal/service/scopes/ParallelListener +instanceKlass org/gradle/internal/event/DefaultListenerManager$ListenerDetails +instanceKlass org/gradle/launcher/daemon/server/health/LowMemoryDaemonExpirationStrategy +instanceKlass org/gradle/process/internal/health/memory/OsMemoryStatusListener +instanceKlass org/gradle/launcher/daemon/server/NotMostRecentlyUsedDaemonExpirationStrategy +instanceKlass com/google/common/base/Functions$ConstantFunction +instanceKlass com/google/common/base/Functions +instanceKlass org/gradle/launcher/daemon/server/DaemonIdleTimeoutExpirationStrategy +instanceKlass org/gradle/launcher/daemon/toolchain/DaemonJvmCriteria$JavaHome +instanceKlass org/gradle/launcher/daemon/context/DaemonRequestContext +instanceKlass org/gradle/launcher/daemon/context/DaemonCompatibilitySpec +instanceKlass org/gradle/api/internal/specs/ExplainingSpec +instanceKlass org/gradle/launcher/daemon/server/CompatibleDaemonExpirationStrategy +instanceKlass org/gradle/launcher/daemon/server/expiry/AllDaemonExpirationStrategy +instanceKlass org/gradle/internal/stream/EncodedStream +instanceKlass org/gradle/launcher/daemon/bootstrap/DaemonStartupCommunication +instanceKlass java/io/FileOutputStream$1 +instanceKlass org/gradle/internal/remote/internal/inet/SocketInetAddress +instanceKlass org/gradle/internal/serialize/AbstractEncoder +instanceKlass org/gradle/internal/serialize/FlushableEncoder +instanceKlass org/gradle/launcher/daemon/registry/DaemonInfo$Serializer +instanceKlass org/gradle/cache/internal/filelock/LockInfo +instanceKlass org/gradle/cache/internal/filelock/DefaultLockStateSerializer$SequenceNumberLockState +instanceKlass org/gradle/internal/time/ExponentialBackoff$Result +instanceKlass org/gradle/cache/internal/filelock/FileLockOutcome +instanceKlass org/gradle/cache/internal/DefaultFileLockManager$DefaultFileLock$1 +instanceKlass org/gradle/internal/time/ExponentialBackoff +instanceKlass org/gradle/cache/internal/DefaultFileLockManager$AwaitableFileLockReleasedSignal +instanceKlass org/gradle/cache/FileLockReleasedSignal +instanceKlass org/gradle/cache/internal/filelock/LockInfoSerializer +instanceKlass org/gradle/cache/internal/filelock/LockInfoAccess +instanceKlass org/gradle/cache/internal/filelock/LockStateAccess +instanceKlass org/gradle/cache/internal/filelock/LockFileAccess +instanceKlass org/gradle/cache/internal/filelock/LockState +instanceKlass org/gradle/cache/internal/filelock/DefaultLockStateSerializer +instanceKlass org/apache/commons/io/filefilter/IOFileFilter +instanceKlass java/nio/file/PathMatcher +instanceKlass java/io/FilenameFilter +instanceKlass java/nio/file/FileVisitor +instanceKlass org/apache/commons/io/file/PathFilter +instanceKlass org/apache/commons/io/FileUtils +instanceKlass org/gradle/internal/time/ExponentialBackoff$Query +instanceKlass org/gradle/cache/FileLock$State +instanceKlass org/gradle/cache/internal/filelock/LockStateSerializer +instanceKlass sun/nio/ch/ExtendedSocketOption$1 +instanceKlass sun/nio/ch/ExtendedSocketOption +instanceKlass sun/nio/ch/OptionKey +instanceKlass sun/nio/ch/SocketOptionRegistry$LazyInitialization +instanceKlass sun/nio/ch/SocketOptionRegistry$RegistryKey +instanceKlass sun/nio/ch/SocketOptionRegistry +instanceKlass sun/nio/ch/DatagramChannelImpl$DefaultOptionsHolder +instanceKlass java/net/StandardSocketOptions$StdSocketOption +instanceKlass java/net/StandardSocketOptions +instanceKlass sun/nio/ch/DatagramSocketAdaptor$DatagramSockets +instanceKlass sun/nio/ch/NativeSocketAddress +instanceKlass sun/net/ResourceManager +instanceKlass java/nio/channels/MulticastChannel +instanceKlass java/net/DatagramSocket +instanceKlass org/gradle/cache/internal/locklistener/FileLockCommunicator +instanceKlass org/gradle/cache/internal/filelock/DefaultLockOptions +instanceKlass org/gradle/cache/internal/FileBackedObjectHolder$1Updater +instanceKlass org/gradle/launcher/daemon/registry/PersistentDaemonRegistry$8 +instanceKlass org/gradle/launcher/daemon/registry/DaemonInfo +instanceKlass org/gradle/launcher/daemon/context/DaemonConnectDetails +instanceKlass sun/util/cldr/CLDRBaseLocaleDataMetaInfo$TZCanonicalIDMapHolder +instanceKlass java/time/LocalTime +instanceKlass java/time/temporal/ValueRange +instanceKlass java/time/temporal/TemporalField +instanceKlass java/time/LocalDate +instanceKlass java/time/chrono/ChronoLocalDate +instanceKlass java/time/zone/ZoneOffsetTransition +instanceKlass java/time/LocalDateTime +instanceKlass java/time/chrono/ChronoLocalDateTime +instanceKlass java/time/temporal/TemporalAdjuster +instanceKlass java/time/temporal/Temporal +instanceKlass java/time/temporal/TemporalAccessor +instanceKlass java/time/zone/ZoneOffsetTransitionRule +instanceKlass java/time/zone/ZoneRules +instanceKlass java/time/zone/Ser +instanceKlass java/io/Externalizable +instanceKlass java/time/zone/ZoneRulesProvider$1 +instanceKlass java/time/zone/ZoneRulesProvider +instanceKlass java/time/ZoneId +instanceKlass sun/util/resources/provider/NonBaseLocaleDataMetaInfo +instanceKlass sun/util/locale/provider/BaseLocaleDataMetaInfo +instanceKlass sun/util/locale/provider/TimeZoneNameUtility$TimeZoneNameGetter +instanceKlass sun/util/locale/provider/TimeZoneNameUtility +instanceKlass org/gradle/internal/remote/internal/inet/TcpIncomingConnector$1 +instanceKlass org/gradle/internal/remote/internal/inet/TcpIncomingConnector$Receiver +instanceKlass org/gradle/internal/remote/internal/inet/MultiChoiceAddress +instanceKlass org/gradle/internal/remote/internal/inet/InetEndpoint +instanceKlass java/util/UUID$Holder +instanceKlass java/util/UUID +instanceKlass sun/net/NetHooks +instanceKlass java/net/InetSocketAddress$InetSocketAddressHolder +instanceKlass java/net/Inet4AddressImpl +instanceKlass org/gradle/internal/remote/internal/inet/InetAddresses +instanceKlass sun/net/NetProperties$1 +instanceKlass sun/net/NetProperties +instanceKlass java/net/SocketImpl +instanceKlass java/net/SocketOptions +instanceKlass java/net/ServerSocket +instanceKlass jdk/net/ExtendedSocketOptions$PlatformSocketOptions$1 +instanceKlass jdk/net/ExtendedSocketOptions$PlatformSocketOptions +instanceKlass jdk/net/ExtendedSocketOptions$ExtSocketOption +instanceKlass java/net/SocketOption +instanceKlass jdk/net/ExtendedSocketOptions +instanceKlass sun/net/ext/ExtendedSocketOptions +instanceKlass sun/nio/ch/Net$1 +instanceKlass java/net/ProtocolFamily +instanceKlass sun/nio/ch/Net +instanceKlass sun/nio/ch/SelChImpl +instanceKlass sun/nio/ch/DefaultSelectorProvider +instanceKlass java/nio/channels/spi/SelectorProvider$Holder +instanceKlass java/nio/channels/spi/SelectorProvider +instanceKlass java/nio/channels/NetworkChannel +instanceKlass org/gradle/launcher/daemon/server/DaemonTcpServerConnector$1 +instanceKlass org/gradle/launcher/daemon/server/Daemon$5 +instanceKlass org/gradle/launcher/daemon/server/DefaultIncomingConnectionHandler +instanceKlass org/gradle/initialization/DefaultBuildCancellationToken +instanceKlass org/gradle/initialization/BuildCancellationToken +instanceKlass org/gradle/launcher/daemon/server/DaemonStateCoordinator +instanceKlass org/gradle/launcher/daemon/server/Daemon$4 +instanceKlass org/gradle/launcher/daemon/server/Daemon$3 +instanceKlass org/gradle/launcher/daemon/server/Daemon$2 +instanceKlass org/gradle/launcher/daemon/server/Daemon$1 +instanceKlass org/gradle/launcher/daemon/server/DaemonRegistryUpdater +instanceKlass sun/security/provider/AbstractDrbg$NonceProvider +instanceKlass sun/nio/fs/BasicFileAttributesHolder +instanceKlass sun/nio/fs/WindowsDirectoryStream$WindowsDirectoryIterator +instanceKlass sun/nio/fs/WindowsDirectoryStream +instanceKlass java/nio/file/DirectoryStream +instanceKlass java/nio/file/Files$AcceptAllFilter +instanceKlass java/nio/file/DirectoryStream$Filter +instanceKlass java/util/concurrent/LinkedBlockingDeque$Node +instanceKlass java/lang/management/MemoryUsage +instanceKlass org/gradle/launcher/daemon/server/health/gc/GarbageCollectionEvent +instanceKlass java/net/NetworkInterface$1 +instanceKlass java/net/DefaultInterface +instanceKlass java/net/Inet6Address$Inet6AddressHolder +instanceKlass java/net/InetAddress$PlatformNameService +instanceKlass java/net/InetAddress$NameService +instanceKlass java/net/Inet6AddressImpl +instanceKlass java/net/InetAddressImpl +instanceKlass java/net/InetAddressImplFactory +instanceKlass java/net/InetAddress$InetAddressHolder +instanceKlass java/net/InetAddress$1 +instanceKlass jdk/internal/access/JavaNetInetAddressAccess +instanceKlass java/net/InetAddress +instanceKlass java/net/InterfaceAddress +instanceKlass java/net/NetworkInterface +instanceKlass java/lang/constant/DynamicConstantDesc +instanceKlass java/lang/constant/DirectMethodHandleDesc$1 +instanceKlass java/lang/constant/DirectMethodHandleDescImpl$1 +instanceKlass java/lang/constant/DirectMethodHandleDescImpl +instanceKlass java/lang/constant/DirectMethodHandleDesc +instanceKlass java/lang/constant/MethodHandleDesc$1 +instanceKlass java/lang/constant/MethodHandleDesc +instanceKlass java/lang/constant/MethodTypeDescImpl +instanceKlass java/lang/constant/MethodTypeDesc +instanceKlass java/lang/constant/ReferenceClassDescImpl +instanceKlass java/lang/constant/ConstantUtils +instanceKlass java/lang/constant/ClassDesc +instanceKlass java/lang/constant/ConstantDescs +instanceKlass java/lang/invoke/VarHandle$2 +instanceKlass java/lang/invoke/VarHandle$TypesAndInvokers +instanceKlass java/lang/invoke/VarHandleByteArrayBase +instanceKlass sun/security/provider/ByteArrayAccess$BE +instanceKlass sun/security/provider/ByteArrayAccess +instanceKlass sun/security/provider/SeedGenerator$1 +instanceKlass sun/security/util/MessageDigestSpi2 +instanceKlass sun/security/jca/GetInstance$Instance +instanceKlass sun/security/jca/GetInstance +instanceKlass java/security/MessageDigestSpi +instanceKlass sun/security/provider/SeedGenerator +instanceKlass sun/security/provider/AbstractDrbg$SeederHolder +instanceKlass java/security/DrbgParameters$NextBytes +instanceKlass sun/security/provider/EntropySource +instanceKlass sun/security/provider/AbstractDrbg +instanceKlass java/security/DrbgParameters$Instantiation +instanceKlass java/security/DrbgParameters +instanceKlass sun/security/provider/MoreDrbgParameters +instanceKlass java/security/SecureRandomSpi +instanceKlass java/security/SecureRandomParameters +instanceKlass jdk/internal/event/Event +instanceKlass sun/security/util/SecurityProviderConstants +instanceKlass java/security/Provider$UString +instanceKlass java/security/Provider$Service +instanceKlass sun/security/provider/NativePRNG$NonBlocking +instanceKlass sun/security/provider/NativePRNG$Blocking +instanceKlass sun/security/provider/NativePRNG +instanceKlass sun/security/provider/SunEntries$1 +instanceKlass sun/security/provider/SunEntries +instanceKlass sun/security/util/SecurityConstants +instanceKlass sun/security/jca/ProviderList$2 +instanceKlass jdk/internal/math/FloatingDecimal$ASCIIToBinaryBuffer +instanceKlass jdk/internal/math/FloatingDecimal$PreparedASCIIToBinaryBuffer +instanceKlass jdk/internal/math/FloatingDecimal$ASCIIToBinaryConverter +instanceKlass jdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer +instanceKlass jdk/internal/math/FloatingDecimal$ExceptionalBinaryToASCIIBuffer +instanceKlass jdk/internal/math/FloatingDecimal$BinaryToASCIIConverter +instanceKlass jdk/internal/math/FloatingDecimal +instanceKlass java/security/Provider$EngineDescription +instanceKlass java/security/Provider$ServiceKey +instanceKlass sun/security/jca/ProviderConfig +instanceKlass sun/security/jca/ProviderList +instanceKlass sun/security/jca/Providers +instanceKlass com/google/common/base/Joiner +instanceKlass org/gradle/launcher/daemon/server/exec/DaemonCommandExecuter +instanceKlass org/gradle/internal/remote/ConnectionAcceptor +instanceKlass org/gradle/internal/remote/Address +instanceKlass java/net/SocketAddress +instanceKlass org/gradle/internal/remote/internal/inet/TcpIncomingConnector +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$OutputMessageSerializer +instanceKlass org/gradle/internal/logging/serializer/LogLevelChangeEventSerializer +instanceKlass org/gradle/internal/logging/serializer/ProgressEventSerializer +instanceKlass org/gradle/internal/logging/serializer/ProgressCompleteEventSerializer +instanceKlass org/gradle/internal/operations/BuildOperationMetadata +instanceKlass org/gradle/internal/logging/serializer/ProgressStartEventSerializer +instanceKlass org/gradle/internal/logging/serializer/SpanSerializer +instanceKlass org/gradle/internal/logging/serializer/StyledTextOutputEventSerializer +instanceKlass org/gradle/internal/logging/serializer/ReadStdInEventSerializer +instanceKlass org/gradle/internal/logging/serializer/UserInputResumeEventSerializer +instanceKlass org/gradle/internal/logging/serializer/SelectOptionPromptEventSerializer +instanceKlass org/gradle/internal/logging/serializer/IntQuestionPromptEventSerializer +instanceKlass org/gradle/internal/logging/serializer/TextQuestionPromptEventSerializer +instanceKlass org/gradle/internal/logging/serializer/BooleanQuestionPromptEventSerializer +instanceKlass org/gradle/internal/logging/serializer/YesNoQuestionPromptEventSerializer +instanceKlass org/gradle/internal/logging/serializer/UserInputRequestEventSerializer +instanceKlass org/gradle/internal/logging/serializer/LogEventSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$CloseInputSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$UserResponseSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$ForwardInputSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$BuildEventSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$FinishedSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$SuccessSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$FailureSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$BuildStartedSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$DaemonUnavailableSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$CancelSerializer +instanceKlass org/gradle/launcher/exec/BuildActionParameters +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$BuildActionParametersSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer$BuildSerializer +instanceKlass org/gradle/launcher/daemon/protocol/DaemonMessageSerializer +instanceKlass org/gradle/launcher/daemon/server/DaemonTcpServerConnector +instanceKlass org/gradle/launcher/daemon/server/IncomingConnectionHandler +instanceKlass org/gradle/launcher/daemon/server/api/DaemonStateControl +instanceKlass org/gradle/internal/remote/internal/inet/MultiChoiceAddressSerializer +instanceKlass org/gradle/launcher/daemon/registry/DaemonRegistryContent$Serializer +instanceKlass org/gradle/launcher/daemon/registry/DaemonRegistryContent +instanceKlass org/gradle/cache/LockOptions +instanceKlass org/gradle/cache/internal/AbstractFileAccess +instanceKlass org/gradle/internal/serialize/Encoder +instanceKlass org/gradle/cache/internal/FileBackedObjectHolder +instanceKlass org/gradle/cache/internal/FileIntegrityViolationSuppressingObjectHolderDecorator +instanceKlass org/gradle/cache/ObjectHolder$UpdateAction +instanceKlass org/gradle/cache/ObjectHolder +instanceKlass org/gradle/launcher/daemon/registry/PersistentDaemonRegistry +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/FallbackStat +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/EmptyChmod +instanceKlass org/gradle/internal/nativeintegration/filesystem/jdk7/Jdk7Symlink +instanceKlass java/util/LinkedList$ListItr +instanceKlass net/rubygrapefruit/platform/file/PosixFileInfo +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices$BrokenService +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/UnavailablePosixFiles +instanceKlass net/rubygrapefruit/platform/memory/WindowsMemory +instanceKlass net/rubygrapefruit/platform/terminal/Terminals +instanceKlass org/gradle/api/internal/file/temp/GradleUserHomeTemporaryFileProvider$1 +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices$2 +instanceKlass net/rubygrapefruit/platform/file/WindowsFileInfo +instanceKlass net/rubygrapefruit/platform/file/FileInfo +instanceKlass net/rubygrapefruit/platform/internal/DirList +instanceKlass net/rubygrapefruit/platform/internal/AbstractFiles +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/NativePlatformBackedFileMetadataAccessor +instanceKlass org/gradle/cache/internal/DefaultFileLockManager$RandomLongIdGenerator +instanceKlass org/gradle/cache/internal/DefaultProcessMetaDataProvider +instanceKlass org/gradle/internal/time/ExponentialBackoff$Signal +instanceKlass org/gradle/cache/FileLock +instanceKlass org/gradle/cache/FileAccess +instanceKlass java/util/function/LongSupplier +instanceKlass org/gradle/cache/internal/DefaultFileLockManager +instanceKlass org/gradle/internal/service/scopes/BasicGlobalScopeServices$1 +instanceKlass org/gradle/cache/internal/locklistener/DefaultFileLockContentionHandler +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$TypeInfo +instanceKlass java/util/AbstractMap$SimpleImmutableEntry +instanceKlass java/util/concurrent/ConcurrentSkipListMap$Iter +instanceKlass org/gradle/tooling/internal/protocol/test/InternalTaskSpec +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$InternalTaskSpecSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$TestExecutionRequestActionSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$ClientProvidedPhasedActionSerializer +instanceKlass org/gradle/tooling/internal/provider/serialization/SerializedPayloadSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$ClientProvidedBuildActionSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$BuildEventSubscriptionsSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$BuildModelActionSerializer +instanceKlass org/gradle/tooling/internal/provider/action/SubscribableBuildAction +instanceKlass java/util/concurrent/atomic/Striped64$1 +instanceKlass jdk/internal/util/random/RandomSupport +instanceKlass java/util/Random +instanceKlass java/util/random/RandomGenerator +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$InstanceBasedSerializerFactory +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$ValueSerializer +instanceKlass org/gradle/internal/serialize/AbstractSerializer +instanceKlass org/gradle/internal/serialize/BaseSerializerFactory +instanceKlass org/gradle/internal/serialize/AbstractCollectionSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$NullableFileSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$StartParameterSerializer +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer$ExecuteBuildActionSerializer +instanceKlass org/gradle/tooling/internal/provider/action/ExecuteBuildAction +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$HierarchySerializerMatcher +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$StrictSerializerMatcher +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$SerializerClassMatcherStrategy +instanceKlass java/util/concurrent/ConcurrentSkipListMap$Node +instanceKlass java/util/concurrent/ConcurrentSkipListMap$Index +instanceKlass java/util/concurrent/ConcurrentNavigableMap +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$1 +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry$SerializerFactory +instanceKlass org/gradle/internal/serialize/DefaultSerializerRegistry +instanceKlass org/gradle/internal/serialize/SerializerRegistry +instanceKlass org/gradle/tooling/internal/provider/action/BuildActionSerializer +instanceKlass org/gradle/initialization/BuildRequestContext +instanceKlass org/gradle/launcher/daemon/server/exec/WatchForDisconnection +instanceKlass org/gradle/launcher/daemon/server/exec/ResetDeprecationLogger +instanceKlass org/gradle/launcher/daemon/server/exec/RequestStopIfSingleUsedDaemon +instanceKlass org/gradle/internal/daemon/clientinput/StdinHandler +instanceKlass org/gradle/internal/daemon/clientinput/ClientInputForwarder +instanceKlass org/gradle/launcher/daemon/server/exec/ForwardClientInput +instanceKlass org/gradle/launcher/daemon/server/exec/LogAndCheckHealth +instanceKlass jdk/internal/misc/ScopedMemoryAccess$Scope +instanceKlass org/gradle/launcher/daemon/server/exec/ReturnResult +instanceKlass java/util/concurrent/SynchronousQueue$TransferStack$SNode +instanceKlass java/util/concurrent/SynchronousQueue$Transferer +instanceKlass java/util/concurrent/ForkJoinTask +instanceKlass java/util/concurrent/CompletableFuture$AsynchronousCompletionTask +instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer$Node +instanceKlass java/util/concurrent/ForkJoinPool$ManagedBlocker +instanceKlass java/util/concurrent/ForkJoinPool$WorkQueue +instanceKlass java/util/concurrent/ForkJoinPool$DefaultCommonPoolForkJoinWorkerThreadFactory +instanceKlass java/util/concurrent/ForkJoinPool$1 +instanceKlass java/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory +instanceKlass java/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory +instanceKlass java/time/Duration +instanceKlass java/util/concurrent/CompletableFuture$AltResult +instanceKlass java/util/concurrent/CompletableFuture +instanceKlass java/util/concurrent/CompletionStage +instanceKlass java/time/temporal/TemporalAmount +instanceKlass org/gradle/launcher/daemon/server/exec/BuildCommandOnly +instanceKlass java/time/temporal/TemporalUnit +instanceKlass java/util/concurrent/TimeUnit$1 +instanceKlass org/gradle/launcher/daemon/server/api/HandleReportStatus +instanceKlass org/gradle/launcher/daemon/server/exec/HandleCancel +instanceKlass org/gradle/launcher/daemon/server/api/HandleInvalidateVirtualFileSystem +instanceKlass org/gradle/launcher/daemon/protocol/Message +instanceKlass org/gradle/launcher/daemon/server/api/HandleStop +instanceKlass org/gradle/launcher/daemon/diagnostics/DaemonDiagnostics +instanceKlass org/gradle/launcher/daemon/server/expiry/DaemonExpirationResult +instanceKlass org/gradle/launcher/daemon/server/expiry/DaemonExpirationListener +instanceKlass java/util/concurrent/Executors$RunnableAdapter +instanceKlass java/util/concurrent/Executors +instanceKlass java/util/concurrent/FutureTask$WaitNode +instanceKlass java/util/concurrent/FutureTask +instanceKlass org/gradle/internal/concurrent/AbstractManagedExecutor$1 +instanceKlass org/gradle/launcher/daemon/server/health/gc/GarbageCollectionCheck +instanceKlass java/util/concurrent/BlockingDeque +instanceKlass org/gradle/launcher/daemon/server/health/gc/DefaultSlidingWindow +instanceKlass org/gradle/launcher/daemon/server/health/gc/SlidingWindow +instanceKlass org/gradle/launcher/daemon/server/health/gc/DefaultGarbageCollectionMonitor +instanceKlass org/gradle/launcher/daemon/server/health/gc/GarbageCollectionInfo +instanceKlass org/gradle/internal/concurrent/ExecutorPolicy$CatchAndRecordFailures +instanceKlass java/util/concurrent/RunnableScheduledFuture +instanceKlass java/util/concurrent/ScheduledFuture +instanceKlass java/util/concurrent/Delayed +instanceKlass java/util/concurrent/RunnableFuture +instanceKlass java/util/concurrent/Future +instanceKlass org/gradle/internal/concurrent/ThreadFactoryImpl +instanceKlass java/util/concurrent/ThreadPoolExecutor$AbortPolicy +instanceKlass java/util/concurrent/RejectedExecutionHandler +instanceKlass java/util/concurrent/AbstractExecutorService +instanceKlass org/gradle/internal/concurrent/ManagedScheduledExecutor +instanceKlass org/gradle/internal/concurrent/ManagedThreadPoolExecutor +instanceKlass java/util/concurrent/ScheduledExecutorService +instanceKlass org/gradle/internal/concurrent/ManagedExecutor +instanceKlass java/util/concurrent/ExecutorService +instanceKlass java/util/concurrent/Executor +instanceKlass org/gradle/internal/concurrent/AsyncStoppable +instanceKlass org/gradle/internal/concurrent/ExecutorPolicy +instanceKlass org/gradle/internal/concurrent/DefaultExecutorFactory +instanceKlass sun/management/Sensor +instanceKlass sun/management/MemoryPoolImpl +instanceKlass java/lang/management/MemoryPoolMXBean +instanceKlass com/sun/jmx/mbeanserver/Util +instanceKlass javax/management/ObjectName$Property +instanceKlass com/sun/jmx/mbeanserver/GetPropertyAction +instanceKlass javax/management/ObjectName +instanceKlass javax/management/QueryExp +instanceKlass java/lang/invoke/LambdaFormEditor$1 +instanceKlass java/lang/invoke/MethodHandles$1 +instanceKlass java/lang/Long$LongCache +instanceKlass sun/management/Util +instanceKlass com/sun/management/GarbageCollectorMXBean +instanceKlass java/lang/management/MemoryMXBean +instanceKlass java/util/HashMap$HashMapSpliterator +instanceKlass jdk/management/jfr/internal/FlightRecorderMXBeanProvider$SingleMBeanComponent +instanceKlass jdk/management/jfr/FlightRecorderMXBean +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$11 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$10 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$9 +instanceKlass sun/management/ManagementFactoryHelper$LoggingMXBeanAccess$1 +instanceKlass sun/management/ManagementFactoryHelper$LoggingMXBeanAccess +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$8 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$7 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$6 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$5 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$4 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$3 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$2 +instanceKlass java/lang/management/DefaultPlatformMBeanProvider$1 +instanceKlass com/sun/management/internal/PlatformMBeanProviderImpl$5 +instanceKlass sun/management/VMManagementImpl +instanceKlass sun/management/VMManagement +instanceKlass sun/management/ManagementFactoryHelper +instanceKlass sun/management/NotificationEmitterSupport +instanceKlass javax/management/NotificationEmitter +instanceKlass javax/management/NotificationBroadcaster +instanceKlass com/sun/management/DiagnosticCommandMBean +instanceKlass javax/management/DynamicMBean +instanceKlass com/sun/management/internal/PlatformMBeanProviderImpl$4 +instanceKlass com/sun/management/internal/PlatformMBeanProviderImpl$3 +instanceKlass com/sun/management/internal/PlatformMBeanProviderImpl$2 +instanceKlass com/sun/management/internal/PlatformMBeanProviderImpl$1 +instanceKlass sun/management/spi/PlatformMBeanProvider$PlatformComponent +instanceKlass java/util/concurrent/Callable +instanceKlass sun/management/spi/PlatformMBeanProvider +instanceKlass java/lang/management/ManagementFactory$PlatformMBeanFinder$1 +instanceKlass java/lang/management/ManagementFactory$PlatformMBeanFinder +instanceKlass java/lang/management/GarbageCollectorMXBean +instanceKlass java/lang/management/MemoryManagerMXBean +instanceKlass java/lang/management/PlatformManagedObject +instanceKlass java/lang/management/ManagementFactory +instanceKlass org/gradle/launcher/daemon/server/health/gc/GarbageCollectionMonitor +instanceKlass org/gradle/internal/time/DefaultTimer +instanceKlass com/google/common/collect/ElementTypesAreNonnullByDefault +instanceKlass com/google/errorprone/annotations/DoNotMock +instanceKlass com/google/common/collect/ObjectArrays +instanceKlass org/gradle/internal/service/scopes/ListenerService +instanceKlass org/gradle/internal/service/scopes/StatefulListener +instanceKlass org/gradle/internal/event/DefaultListenerManager$EventBroadcast +instanceKlass org/gradle/internal/event/DefaultListenerManager +instanceKlass org/gradle/internal/buildprocess/execution/BuildSessionLifecycleBuildActionExecutor +instanceKlass org/gradle/internal/buildprocess/execution/StartParamsValidatingActionExecutor +instanceKlass org/gradle/initialization/BuildRequestMetaData +instanceKlass org/gradle/initialization/exception/ExceptionAnalyser +instanceKlass org/gradle/initialization/exception/ExceptionCollector +instanceKlass org/gradle/problems/buildtree/ProblemDiagnosticsFactory +instanceKlass org/gradle/internal/buildprocess/execution/SessionFailureReportingActionExecutor +instanceKlass org/gradle/StartParameter +instanceKlass org/gradle/concurrent/ParallelismConfiguration +instanceKlass org/gradle/internal/buildprocess/execution/SetupLoggingActionExecutor +instanceKlass org/gradle/groovy/scripts/internal/ScriptSourceHasher +instanceKlass org/gradle/execution/plan/ToPlannedNodeConverter +instanceKlass org/gradle/internal/hash/ClassLoaderHierarchyHasher +instanceKlass org/gradle/cache/GlobalCacheLocations +instanceKlass org/gradle/cache/internal/FileContentCacheFactory +instanceKlass org/gradle/cache/scopes/ScopedCacheBuilderFactory +instanceKlass org/gradle/api/internal/initialization/loadercache/ClassLoaderCache +instanceKlass org/gradle/process/internal/worker/WorkerProcessFactory +instanceKlass org/gradle/initialization/ClassLoaderScopeRegistry +instanceKlass org/gradle/internal/file/FileAccessTimeJournal +instanceKlass org/gradle/internal/execution/timeout/TimeoutHandler +instanceKlass org/gradle/internal/classloader/HashingClassLoaderFactory +instanceKlass org/gradle/cache/UnscopedCacheBuilderFactory +instanceKlass org/gradle/internal/isolation/IsolatableFactory +instanceKlass org/gradle/internal/service/scopes/WorkerSharedUserHomeScopeServices +instanceKlass org/gradle/internal/service/scopes/DefaultGradleUserHomeScopeServiceRegistry +instanceKlass org/gradle/internal/logging/text/AbstractStyledTextOutputFactory +instanceKlass java/util/concurrent/atomic/AtomicBoolean +instanceKlass org/gradle/internal/instrumentation/agent/DefaultClassFileTransformer +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$StateContext +instanceKlass java/text/DontCareFieldPosition$1 +instanceKlass java/text/Format$FieldDelegate +instanceKlass java/util/Date +instanceKlass java/text/DigitList +instanceKlass java/text/FieldPosition +instanceKlass java/lang/StringUTF16$CharsSpliterator +instanceKlass java/util/stream/Sink$ChainedInt +instanceKlass java/util/OptionalInt +instanceKlass java/util/stream/Sink$OfInt +instanceKlass java/util/function/IntConsumer +instanceKlass java/util/function/IntPredicate +instanceKlass java/util/stream/IntStream +instanceKlass java/lang/StringLatin1$CharsSpliterator +instanceKlass java/text/DecimalFormatSymbols +instanceKlass sun/util/resources/Bundles$2 +instanceKlass sun/util/resources/LocaleData$LocaleDataResourceBundleProvider +instanceKlass java/util/spi/ResourceBundleProvider +instanceKlass java/text/DateFormatSymbols +instanceKlass sun/util/calendar/CalendarUtils +instanceKlass sun/util/calendar/CalendarDate +instanceKlass sun/util/resources/Bundles$CacheKeyReference +instanceKlass java/util/ResourceBundle$ResourceBundleProviderHelper +instanceKlass sun/util/resources/Bundles$CacheKey +instanceKlass java/util/ResourceBundle$1 +instanceKlass jdk/internal/access/JavaUtilResourceBundleAccess +instanceKlass sun/util/resources/Bundles +instanceKlass sun/util/resources/LocaleData$LocaleDataStrategy +instanceKlass sun/util/resources/Bundles$Strategy +instanceKlass sun/util/resources/LocaleData$1 +instanceKlass sun/util/resources/LocaleData +instanceKlass sun/util/locale/provider/LocaleResources +instanceKlass java/util/ResourceBundle +instanceKlass java/util/ResourceBundle$Control +instanceKlass sun/util/locale/provider/CalendarDataUtility$CalendarWeekParameterGetter +instanceKlass sun/util/locale/provider/LocaleServiceProviderPool$LocalizedObjectGetter +instanceKlass sun/util/locale/provider/LocaleServiceProviderPool +instanceKlass java/util/Locale$Builder +instanceKlass sun/util/locale/provider/CalendarDataUtility +instanceKlass sun/util/calendar/CalendarSystem$GregorianHolder +instanceKlass sun/util/calendar/CalendarSystem +instanceKlass java/util/Calendar$Builder +instanceKlass sun/util/locale/provider/AvailableLanguageTags +instanceKlass sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo +instanceKlass jdk/internal/module/ModulePatcher$PatchedModuleReader +instanceKlass sun/util/locale/LocaleObjectCache +instanceKlass sun/util/locale/BaseLocale$Key +instanceKlass sun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar +instanceKlass sun/util/locale/InternalLocaleBuilder +instanceKlass sun/util/locale/StringTokenIterator +instanceKlass sun/util/locale/ParseStatus +instanceKlass sun/util/locale/LanguageTag +instanceKlass sun/util/cldr/CLDRBaseLocaleDataMetaInfo +instanceKlass sun/util/locale/provider/LocaleDataMetaInfo +instanceKlass sun/util/locale/provider/ResourceBundleBasedAdapter +instanceKlass sun/util/locale/provider/LocaleProviderAdapter$1 +instanceKlass sun/util/locale/provider/LocaleProviderAdapter +instanceKlass java/util/spi/LocaleServiceProvider +instanceKlass sun/util/calendar/ZoneInfoFile$ZoneOffsetTransitionRule +instanceKlass sun/util/calendar/ZoneInfoFile$1 +instanceKlass sun/util/calendar/ZoneInfoFile +instanceKlass java/util/TimeZone +instanceKlass java/util/Calendar +instanceKlass java/text/AttributedCharacterIterator$Attribute +instanceKlass java/text/Format +instanceKlass org/gradle/internal/logging/sink/LogEventDispatcher +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$SeenFromEol +instanceKlass org/gradle/internal/SystemProperties +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$4 +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$3 +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$2 +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$1 +instanceKlass org/gradle/internal/logging/text/AbstractLineChoppingStyledTextOutput$State +instanceKlass org/gradle/internal/logging/text/StreamBackedStandardOutputListener +instanceKlass org/gradle/internal/logging/text/AbstractStyledTextOutput +instanceKlass org/gradle/internal/logging/console/StyledTextOutputBackedRenderer +instanceKlass org/slf4j/helpers/FormattingTuple +instanceKlass org/slf4j/helpers/MessageFormatter +instanceKlass net/rubygrapefruit/platform/internal/FunctionResult +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$PrintStreamDestination +instanceKlass java/util/logging/ErrorManager +instanceKlass org/gradle/internal/logging/source/JavaUtilLoggingSystem$SnapshotImpl +instanceKlass org/gradle/internal/logging/config/LoggingSystemAdapter$SnapshotImpl +instanceKlass org/gradle/internal/dispatch/MethodInvocation +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$SnapshotImpl +instanceKlass org/gradle/process/internal/shutdown/ShutdownHooks +instanceKlass org/gradle/launcher/daemon/bootstrap/DaemonMain$1 +instanceKlass com/google/common/io/Files$2 +instanceKlass com/google/common/io/LineProcessor +instanceKlass com/google/common/io/ByteSink +instanceKlass com/google/common/io/ByteSource +instanceKlass com/google/common/base/Predicate +instanceKlass com/google/common/graph/SuccessorsFunction +instanceKlass com/google/common/io/Files +instanceKlass org/gradle/util/internal/GFileUtils +instanceKlass org/gradle/util/GradleVersion +instanceKlass net/rubygrapefruit/platform/internal/jni/PosixProcessFunctions +instanceKlass org/gradle/jvm/toolchain/internal/DefaultJavaLanguageVersion +instanceKlass org/gradle/jvm/toolchain/JavaLanguageVersion +instanceKlass com/google/common/base/Optional +instanceKlass org/gradle/internal/FileUtils$1 +instanceKlass org/gradle/internal/FileUtils +instanceKlass com/google/common/collect/CollectPreconditions +instanceKlass com/google/common/collect/BiMap +instanceKlass com/google/common/collect/Maps$EntryTransformer +instanceKlass com/google/common/base/Converter +instanceKlass com/google/common/collect/ImmutableMap +instanceKlass com/google/common/collect/SortedMapDifference +instanceKlass com/google/common/collect/MapDifference +instanceKlass com/google/common/collect/Maps +instanceKlass com/google/common/collect/Sets +instanceKlass org/gradle/launcher/daemon/context/DefaultDaemonContext$Serializer +instanceKlass org/gradle/launcher/daemon/toolchain/DaemonJvmCriteria +instanceKlass org/gradle/launcher/daemon/context/DefaultDaemonContext +instanceKlass org/gradle/internal/nativeintegration/ReflectiveEnvironment +instanceKlass org/gradle/internal/nativeintegration/processenvironment/AbstractProcessEnvironment +instanceKlass net/rubygrapefruit/platform/internal/DefaultProcess +instanceKlass net/rubygrapefruit/platform/internal/WrapperProcess +instanceKlass net/rubygrapefruit/platform/file/WindowsFiles +instanceKlass org/gradle/internal/invocation/BuildAction +instanceKlass org/gradle/launcher/daemon/server/api/DaemonCommandAction +instanceKlass org/gradle/launcher/daemon/server/MasterExpirationStrategy +instanceKlass org/gradle/launcher/daemon/server/Daemon +instanceKlass org/gradle/internal/serialize/Serializer +instanceKlass org/gradle/launcher/daemon/server/health/gc/GarbageCollectorMonitoringStrategy +instanceKlass org/gradle/launcher/daemon/server/health/DaemonHealthStats +instanceKlass org/gradle/launcher/daemon/server/health/DaemonHealthCheck +instanceKlass org/gradle/launcher/daemon/server/health/HealthExpirationStrategy +instanceKlass org/gradle/launcher/daemon/server/DaemonLogFile +instanceKlass org/gradle/launcher/daemon/registry/DaemonDir +instanceKlass org/gradle/launcher/daemon/server/stats/DaemonRunningStats +instanceKlass org/gradle/tooling/internal/provider/runner/OperationDependencyLookup +instanceKlass org/gradle/tooling/internal/provider/runner/ToolingApiBuildEventListenerFactory +instanceKlass org/gradle/problems/buildtree/ProblemReporter +instanceKlass org/gradle/internal/serialize/beans/services/BeanConstructors +instanceKlass org/gradle/nativeplatform/NativeBinarySpec +instanceKlass org/gradle/platform/base/BinarySpec +instanceKlass org/gradle/platform/base/Binary +instanceKlass org/gradle/api/CheckableComponentSpec +instanceKlass org/gradle/api/BuildableComponentSpec +instanceKlass org/gradle/platform/base/ComponentSpec +instanceKlass org/gradle/model/ModelElement +instanceKlass org/gradle/internal/resource/transport/sftp/SftpClientFactory +instanceKlass org/gradle/internal/resource/transport/sftp/SftpResourcesServices$GlobalScopeServices +instanceKlass org/gradle/internal/resource/transport/aws/s3/S3ResourcesServices$GlobalScopeServices +instanceKlass org/gradle/internal/resource/transport/gcp/gcs/GcsResourcesServices$GlobalScopeServices +instanceKlass org/gradle/nativeplatform/TargetMachineBuilder +instanceKlass org/gradle/nativeplatform/TargetMachine +instanceKlass org/gradle/nativeplatform/internal/DefaultTargetMachineFactory +instanceKlass org/gradle/nativeplatform/TargetMachineFactory +instanceKlass org/gradle/nativeplatform/internal/NativePlatformResolver +instanceKlass org/gradle/platform/base/internal/PlatformResolver +instanceKlass org/gradle/nativeplatform/platform/internal/OperatingSystemInternal +instanceKlass org/gradle/nativeplatform/platform/OperatingSystem +instanceKlass org/gradle/nativeplatform/platform/internal/NativePlatformInternal +instanceKlass org/gradle/nativeplatform/platform/NativePlatform +instanceKlass org/gradle/platform/base/Platform +instanceKlass org/gradle/nativeplatform/platform/internal/NativePlatforms +instanceKlass org/gradle/internal/logging/text/DiagnosticsVisitor +instanceKlass org/gradle/buildinit/plugins/internal/action/InitBuiltInCommand +instanceKlass org/gradle/internal/build/event/OperationResultPostProcessorFactory +instanceKlass org/gradle/initialization/BuildEventConsumer +instanceKlass org/gradle/internal/build/event/BuildEventSubscriptions +instanceKlass org/gradle/language/java/internal/JavaLanguageServices$JavaGlobalScopeServices +instanceKlass org/gradle/api/component/SoftwareComponentFactory +instanceKlass org/gradle/api/publish/internal/service/PublishServices$GlobalScopeServices +instanceKlass org/gradle/platform/base/internal/registry/ComponentModelBaseServices$GlobalScopeServices +instanceKlass org/gradle/reporting/ReportRenderer +instanceKlass org/gradle/api/reporting/components/internal/DiagnosticsServices$1 +instanceKlass org/gradle/api/plugins/internal/HelpBuiltInCommand +instanceKlass org/gradle/configuration/project/BuiltInCommand +instanceKlass org/gradle/plugin/internal/PluginUseServices$GlobalScopeServices +instanceKlass java/lang/FunctionalInterface +instanceKlass org/gradle/internal/resource/transport/http/HttpClientHelper$Factory +instanceKlass org/gradle/internal/resource/transport/http/SslContextFactory +instanceKlass org/gradle/internal/resource/transport/http/HttpResourcesServices$GlobalScopeServices +instanceKlass org/gradle/internal/fingerprint/FileNormalizer +instanceKlass org/gradle/internal/reflect/annotations/AnnotationCategory +instanceKlass org/gradle/api/problems/ProblemSpec +instanceKlass org/gradle/api/problems/internal/DocLink +instanceKlass org/gradle/internal/model/CalculatedValue +instanceKlass org/gradle/internal/component/local/model/LocalVariantGraphResolveMetadata +instanceKlass org/gradle/internal/component/model/VariantGraphResolveMetadata +instanceKlass org/gradle/api/internal/artifacts/configurations/ConfigurationInternal$VariantVisitor +instanceKlass org/gradle/api/artifacts/Configuration +instanceKlass org/gradle/api/Named +instanceKlass org/gradle/api/attributes/HasConfigurableAttributes +instanceKlass org/gradle/api/attributes/HasAttributes +instanceKlass org/gradle/api/file/FileCollection +instanceKlass org/gradle/api/Buildable +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultLocalVariantMetadataBuilder +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/LocalVariantMetadataBuilder +instanceKlass org/gradle/internal/component/model/ExcludeMetadata +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultExcludeRuleConverter +instanceKlass org/gradle/api/internal/artifacts/DefaultImmutableModuleIdentifierFactory +instanceKlass org/apache/ivy/util/MessageLogger +instanceKlass org/gradle/api/internal/artifacts/ivyservice/DefaultIvyContextManager +instanceKlass org/gradle/api/internal/artifacts/ivyservice/IvyContextManager +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/Version +instanceKlass org/gradle/api/internal/artifacts/ivyservice/ivyresolve/strategy/VersionParser +instanceKlass org/gradle/api/Transformer +instanceKlass org/gradle/api/artifacts/component/ComponentSelector +instanceKlass org/gradle/internal/resource/ExternalResourceName +instanceKlass org/gradle/api/Describable +instanceKlass org/gradle/internal/typeconversion/NotationParser +instanceKlass org/gradle/api/internal/artifacts/ImmutableModuleIdentifierFactory +instanceKlass org/gradle/api/internal/attributes/EmptySchema +instanceKlass org/gradle/api/internal/attributes/AttributesSchemaInternal +instanceKlass org/gradle/api/internal/attributes/AttributesSchemaWithDescribers +instanceKlass org/gradle/api/attributes/AttributesSchema +instanceKlass org/gradle/api/internal/artifacts/dsl/dependencies/PlatformSupport +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/ExcludeRuleConverter +instanceKlass org/gradle/cache/internal/ProducerGuard +instanceKlass org/gradle/internal/typeconversion/NotationConverter +instanceKlass org/gradle/internal/resource/connector/ResourceConnectorFactory +instanceKlass org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DependencyMetadataFactory +instanceKlass org/gradle/api/internal/artifacts/DependencyManagementGlobalScopeServices +instanceKlass org/gradle/tooling/internal/provider/LauncherServices$ToolingGlobalScopeServices +instanceKlass org/gradle/tooling/internal/provider/ExecuteBuildActionRunner +instanceKlass org/gradle/internal/buildtree/BuildActionRunner +instanceKlass org/gradle/tooling/internal/provider/serialization/ClassLoaderCache +instanceKlass org/gradle/api/internal/tasks/userinput/UserInputReader$UserInput +instanceKlass org/gradle/api/internal/tasks/userinput/DefaultUserInputReader +instanceKlass org/gradle/api/internal/tasks/userinput/UserInputReader +instanceKlass org/gradle/kotlin/dsl/support/ImplicitImports +instanceKlass org/gradle/kotlin/dsl/support/GlobalServices +instanceKlass kotlin/annotation/Target +instanceKlass kotlin/annotation/Retention +instanceKlass kotlin/Metadata +instanceKlass org/gradle/internal/snapshot/impl/DirectorySnapshotterStatistics$Collector +instanceKlass org/gradle/api/internal/changedetection/state/FileHasherStatistics$Collector +instanceKlass org/gradle/internal/service/scopes/VirtualFileSystemServices$GlobalScopeServices +instanceKlass org/gradle/internal/service/scopes/ExecutionGlobalServices$AnnotationHandlerRegistration +instanceKlass org/gradle/internal/properties/bean/PropertyWalker +instanceKlass org/gradle/api/internal/tasks/properties/AbstractTypeScheme +instanceKlass org/gradle/api/internal/tasks/properties/TypeScheme +instanceKlass org/gradle/internal/service/scopes/ExecutionGlobalServices$AnnotationHandlerRegistar +instanceKlass org/gradle/api/internal/tasks/properties/InspectionSchemeFactory +instanceKlass org/gradle/api/model/ReplacedBy +instanceKlass org/gradle/api/tasks/Internal +instanceKlass org/gradle/api/internal/plugins/software/SoftwareType +instanceKlass org/gradle/api/services/ServiceReference +instanceKlass org/gradle/api/tasks/OutputFiles +instanceKlass org/gradle/api/tasks/OutputFile +instanceKlass org/gradle/api/tasks/OutputDirectory +instanceKlass org/gradle/api/tasks/OutputDirectories +instanceKlass org/gradle/api/tasks/options/OptionValues +instanceKlass org/gradle/api/tasks/Nested +instanceKlass org/gradle/api/tasks/LocalState +instanceKlass org/gradle/api/tasks/InputFiles +instanceKlass org/gradle/api/tasks/InputFile +instanceKlass org/gradle/api/tasks/InputDirectory +instanceKlass org/gradle/api/artifacts/transform/InputArtifactDependencies +instanceKlass org/gradle/api/artifacts/transform/InputArtifact +instanceKlass org/gradle/api/tasks/Input +instanceKlass org/gradle/api/tasks/Destroys +instanceKlass org/gradle/api/tasks/Console +instanceKlass org/gradle/internal/execution/history/ImmutableWorkspaceMetadataStore +instanceKlass org/gradle/internal/execution/WorkInputListeners +instanceKlass org/gradle/internal/properties/annotations/TypeAnnotationHandler +instanceKlass org/gradle/internal/execution/WorkExecutionTracker +instanceKlass org/gradle/internal/reflect/annotations/TypeAnnotationMetadataStore +instanceKlass org/gradle/api/internal/project/taskfactory/TaskClassInfoStore +instanceKlass org/gradle/internal/service/scopes/ExecutionGlobalServices +instanceKlass org/gradle/internal/file/BufferProvider +instanceKlass org/gradle/caching/internal/BuildCacheServices$1 +instanceKlass org/gradle/internal/operations/BuildOperationAncestryTracker +instanceKlass org/gradle/internal/build/event/BuildEventServices$1 +instanceKlass org/gradle/internal/build/event/BuildEventListenerFactory +instanceKlass org/gradle/internal/build/event/DefaultBuildEventsListenerRegistry +instanceKlass org/gradle/internal/build/event/BuildEventListenerRegistryInternal +instanceKlass org/gradle/build/event/BuildEventsListenerRegistry +instanceKlass org/gradle/internal/buildoption/IntegerInternalOption +instanceKlass org/gradle/internal/buildoption/InternalFlag +instanceKlass org/gradle/internal/buildoption/InternalOption +instanceKlass org/gradle/internal/buildoption/Option +instanceKlass org/gradle/internal/service/DefaultServiceLocator$ServiceFactory +instanceKlass org/gradle/internal/service/scopes/AbstractGradleModuleServices +instanceKlass org/gradle/internal/service/scopes/GradleModuleServices +instanceKlass org/gradle/internal/classpath/intercept/JvmBytecodeInterceptorFactoryProvider$CompositeJvmBytecodeInterceptorFactoryProvider +instanceKlass org/gradle/internal/classpath/GroovyCallInterceptorsProvider$CompositeGroovyCallInterceptorsProvider +instanceKlass org/gradle/internal/classpath/GroovyCallInterceptorsProvider$ClassLoaderSourceGroovyCallInterceptorsProvider +instanceKlass org/gradle/internal/classpath/intercept/JvmBytecodeInterceptorFactoryProvider$ClassLoaderSourceJvmBytecodeInterceptorFactoryProvider +instanceKlass org/gradle/internal/classpath/intercept/JvmBytecodeInterceptorSet +instanceKlass org/gradle/internal/classpath/intercept/DefaultJvmBytecodeInterceptorFactorySet +instanceKlass org/gradle/internal/classpath/Instrumented +instanceKlass org/gradle/internal/classpath/GroovyCallInterceptorsProvider$ClassSourceGroovyCallInterceptorsProvider +instanceKlass org/gradle/internal/classpath/intercept/DefaultCallSiteInterceptorSet +instanceKlass org/gradle/internal/classpath/intercept/CallSiteDecorator +instanceKlass org/gradle/internal/classpath/intercept/JvmBytecodeInterceptorFactoryProvider +instanceKlass org/gradle/internal/classpath/GroovyCallInterceptorsProvider +instanceKlass org/gradle/internal/classpath/intercept/JvmBytecodeInterceptorFactorySet +instanceKlass org/gradle/internal/classpath/intercept/CallSiteInterceptorSet +instanceKlass org/gradle/internal/classpath/intercept/CallInterceptorRegistry +instanceKlass org/gradle/internal/classpath/TransformedClassPath +instanceKlass org/gradle/api/internal/classpath/DefaultModuleRegistry$DefaultModule +instanceKlass org/gradle/internal/IoActions +instanceKlass org/gradle/util/internal/GUtil +instanceKlass groovy/lang/MetaClass +instanceKlass groovy/lang/MetaObjectProtocol +instanceKlass groovy/lang/GroovySystem +instanceKlass groovy/lang/MetaClassRegistry +instanceKlass groovy/lang/GroovyObject +instanceKlass org/objectweb/asm/ClassVisitor +instanceKlass org/gradle/internal/classloader/InstrumentingClassLoader +instanceKlass java/util/ComparableTimSort +instanceKlass java/util/Arrays$LegacyMergeSort +instanceKlass org/gradle/internal/util/Trie$Builder +instanceKlass org/gradle/internal/util/Trie +instanceKlass org/gradle/internal/classloader/FilteringClassLoader$TrieSet +instanceKlass jdk/internal/loader/BootLoader$PackageHelper +instanceKlass java/util/stream/StreamSpliterators +instanceKlass java/util/stream/AbstractSpinedBuffer +instanceKlass java/util/stream/Node$Builder +instanceKlass java/util/stream/Node$OfDouble +instanceKlass java/util/stream/Node$OfLong +instanceKlass java/util/stream/Node$OfInt +instanceKlass java/util/stream/Node$OfPrimitive +instanceKlass java/util/stream/Nodes$EmptyNode +instanceKlass java/util/stream/Node +instanceKlass java/util/stream/Nodes +instanceKlass java/util/function/IntFunction +instanceKlass java/util/stream/Streams$2 +instanceKlass java/util/stream/StreamSpliterators$AbstractWrappingSpliterator +instanceKlass java/util/stream/Streams$ConcatSpliterator +instanceKlass org/gradle/internal/classloader/ClassLoaderUtils$Java9PackagesFetcher +instanceKlass org/gradle/internal/classloader/ClassLoaderUtils$AbstractClassLoaderLookuper +instanceKlass org/gradle/internal/classloader/ClassLoaderUtils$ClassLoaderPackagesFetcher +instanceKlass org/gradle/internal/classloader/ClassLoaderUtils$ClassDefiner +instanceKlass org/gradle/internal/classloader/ClassLoaderUtils +instanceKlass org/gradle/initialization/GradleApiSpecAggregator$DefaultSpec +instanceKlass kotlin/jvm/internal/Intrinsics +instanceKlass kotlin/collections/SetsKt__SetsJVMKt +instanceKlass com/google/common/collect/PeekingIterator +instanceKlass com/google/common/collect/UnmodifiableIterator +instanceKlass com/google/common/collect/Iterators +instanceKlass com/google/common/collect/Hashing +instanceKlass com/google/common/math/IntMath$1 +instanceKlass com/google/common/math/MathPreconditions +instanceKlass com/google/common/math/IntMath +instanceKlass com/google/common/base/Preconditions +instanceKlass org/apache/groovy/json/DefaultFastStringServiceFactory +instanceKlass org/apache/groovy/json/FastStringServiceFactory +instanceKlass org/gradle/internal/reflect/ReflectionCache$CacheEntry +instanceKlass com/google/common/collect/ImmutableCollection$Builder +instanceKlass com/google/common/collect/ImmutableSet$SetBuilderImpl +instanceKlass org/gradle/kotlin/dsl/provider/KotlinGradleApiSpecProvider +instanceKlass org/gradle/initialization/GradleApiSpecProvider$SpecAdapter +instanceKlass org/gradle/initialization/GradleApiSpecProvider +instanceKlass org/gradle/internal/service/DefaultServiceLocator +instanceKlass org/gradle/initialization/GradleApiSpecProvider$Spec +instanceKlass org/gradle/initialization/GradleApiSpecAggregator +instanceKlass com/google/common/base/Function +instanceKlass org/gradle/internal/reflect/CachedInvokable +instanceKlass org/gradle/internal/reflect/ReflectionCache +instanceKlass org/gradle/internal/reflect/DirectInstantiator +instanceKlass org/gradle/initialization/DefaultClassLoaderRegistry +instanceKlass org/gradle/internal/installation/GradleRuntimeShadedJarDetector +instanceKlass sun/net/www/protocol/jar/JarFileFactory +instanceKlass sun/net/www/protocol/jar/URLJarFile$URLJarFileCloseController +instanceKlass java/net/URLClassLoader$2 +instanceKlass org/objectweb/asm/Type +instanceKlass org/gradle/initialization/DefaultLegacyTypesSupport +instanceKlass org/gradle/api/internal/jvm/JavaVersionParser +instanceKlass org/gradle/api/internal/DynamicModulesClassPathProvider +instanceKlass org/gradle/api/internal/DefaultClassPathProvider +instanceKlass org/gradle/api/internal/ClassPathProvider +instanceKlass org/gradle/api/internal/DefaultClassPathRegistry +instanceKlass org/gradle/api/internal/classpath/DefaultPluginModuleRegistry +instanceKlass org/gradle/api/internal/classpath/ManifestUtil +instanceKlass org/gradle/internal/classpath/DefaultClassPath$ImmutableUniqueList$Builder +instanceKlass org/gradle/internal/classloader/ClassLoaderSpec +instanceKlass org/gradle/internal/classloader/ClassLoaderHierarchy +instanceKlass org/gradle/internal/classloader/ClassLoaderVisitor +instanceKlass org/gradle/api/internal/classpath/Module +instanceKlass org/gradle/internal/installation/GradleInstallation$1 +instanceKlass org/gradle/internal/installation/GradleInstallation +instanceKlass org/gradle/internal/classloader/ClasspathUtil +instanceKlass org/gradle/internal/installation/CurrentGradleInstallationLocator +instanceKlass org/gradle/internal/buildevents/BuildLoggerFactory +instanceKlass org/gradle/execution/DefaultWorkValidationWarningRecorder +instanceKlass org/gradle/execution/WorkValidationWarningReporter +instanceKlass org/gradle/internal/execution/steps/ValidateStep$ValidationWarningRecorder +instanceKlass javax/inject/Inject +instanceKlass org/gradle/initialization/layout/BuildLayoutFactory +instanceKlass org/gradle/internal/service/scopes/EventScope +instanceKlass org/gradle/internal/scripts/DefaultScriptFileResolverListeners +instanceKlass org/gradle/internal/scripts/ScriptFileResolverListeners +instanceKlass org/gradle/internal/id/UUIDGenerator +instanceKlass org/gradle/internal/remote/internal/IncomingConnector +instanceKlass org/gradle/internal/remote/MessagingServer +instanceKlass org/gradle/internal/remote/MessagingClient +instanceKlass org/gradle/internal/remote/internal/OutgoingConnector +instanceKlass org/gradle/internal/id/IdGenerator +instanceKlass org/gradle/internal/remote/services/MessagingServices +instanceKlass org/gradle/api/internal/file/DefaultFileLookup +instanceKlass org/gradle/internal/service/scopes/Scope$Settings +instanceKlass java/lang/annotation/Documented +instanceKlass javax/annotation/meta/TypeQualifierDefault +instanceKlass javax/annotation/Nonnull +instanceKlass org/gradle/api/NonNullApi +instanceKlass org/gradle/internal/service/scopes/Scope$Project +instanceKlass org/gradle/internal/service/scopes/Scope$Gradle +instanceKlass org/gradle/internal/service/scopes/Scope$Build +instanceKlass org/gradle/internal/service/scopes/Scope$BuildTree +instanceKlass org/gradle/internal/service/scopes/Scope$BuildSession +instanceKlass org/gradle/internal/service/scopes/Scope$CrossBuildSession +instanceKlass org/gradle/internal/service/scopes/Scope$UserHome +instanceKlass org/gradle/internal/service/ServiceScopeValidatorWorkarounds +instanceKlass org/gradle/api/internal/file/FileLookup +instanceKlass org/gradle/internal/remote/internal/inet/InetAddressFactory +instanceKlass org/gradle/api/internal/DocumentationRegistry +instanceKlass org/gradle/internal/operations/BuildOperationListener +instanceKlass org/gradle/cache/GlobalCache +instanceKlass org/gradle/api/internal/classpath/DefaultModuleRegistry +instanceKlass org/gradle/api/internal/classpath/GlobalCacheRootsProvider +instanceKlass org/gradle/internal/installation/CurrentGradleInstallation +instanceKlass org/gradle/internal/state/ManagedFactoryRegistry +instanceKlass org/gradle/api/internal/file/DefaultFilePropertyFactory +instanceKlass org/gradle/api/internal/file/FileFactory +instanceKlass org/gradle/api/internal/file/FileResolver +instanceKlass org/gradle/internal/file/PathToFileResolver +instanceKlass org/gradle/internal/file/RelativeFilePathResolver +instanceKlass org/gradle/api/internal/provider/PropertyHost +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSchemaAspectExtractionStrategy +instanceKlass org/gradle/model/internal/inspect/MethodModelRuleExtractor +instanceKlass org/gradle/internal/properties/annotations/AbstractPropertyAnnotationHandler +instanceKlass org/gradle/internal/properties/annotations/PropertyAnnotationHandler +instanceKlass org/gradle/internal/instantiation/InjectAnnotationHandler +instanceKlass sun/reflect/generics/tree/TypeVariableSignature +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSchemaExtractionStrategy +instanceKlass org/gradle/api/tasks/util/PatternSet +instanceKlass org/gradle/api/tasks/util/PatternFilterable +instanceKlass org/gradle/api/tasks/AntBuilderAware +instanceKlass sun/reflect/generics/tree/MethodTypeSignature +instanceKlass org/gradle/internal/operations/CurrentBuildOperationRef +instanceKlass org/gradle/internal/instantiation/InstanceGenerator +instanceKlass org/gradle/model/internal/inspect/ModelRuleSourceDetector +instanceKlass org/gradle/internal/instrumentation/agent/AgentInitializer +instanceKlass org/gradle/api/internal/classpath/ModuleRegistry +instanceKlass org/gradle/model/internal/inspect/ModelRuleExtractor +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSchemaAspectExtractor +instanceKlass org/gradle/model/internal/manage/instance/ManagedProxyFactory +instanceKlass org/gradle/api/internal/cache/StringInterner +instanceKlass com/google/common/collect/Interner +instanceKlass org/gradle/api/internal/model/NamedObjectInstantiator +instanceKlass org/gradle/internal/state/ManagedFactory +instanceKlass org/gradle/api/internal/tasks/TaskDependencyFactory +instanceKlass org/gradle/api/internal/file/FilePropertyFactory +instanceKlass org/gradle/internal/service/CachingServiceLocator +instanceKlass org/gradle/internal/scripts/ScriptFileResolvedListener +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$RegistrationWrapper +instanceKlass java/lang/Class$AnnotationData +instanceKlass org/gradle/internal/service/scopes/ServiceScope +instanceKlass org/gradle/internal/service/ServiceScopeValidator +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$CompositeServiceProvider +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ParentServices +instanceKlass org/gradle/cache/internal/Synchronizer +instanceKlass org/gradle/cache/internal/CacheSupport +instanceKlass org/gradle/cache/internal/CacheAccessSerializer +instanceKlass org/gradle/launcher/daemon/registry/DaemonRegistry +instanceKlass org/gradle/cache/Cache +instanceKlass org/gradle/launcher/daemon/registry/DaemonRegistryServices +instanceKlass org/gradle/launcher/daemon/server/DaemonServerConnector +instanceKlass org/gradle/launcher/daemon/server/expiry/DaemonExpirationStrategy +instanceKlass org/gradle/launcher/daemon/context/DaemonContext +instanceKlass org/gradle/launcher/daemon/server/scaninfo/DaemonScanInfo +instanceKlass org/gradle/launcher/daemon/server/DaemonServices +instanceKlass org/gradle/launcher/exec/BuildExecutor +instanceKlass org/gradle/launcher/exec/BuildActionExecutor +instanceKlass org/gradle/internal/buildprocess/BuildProcessScopeServices +instanceKlass org/gradle/internal/environment/GradleBuildEnvironment +instanceKlass org/gradle/api/internal/collections/DomainObjectCollectionFactory +instanceKlass org/gradle/internal/service/scopes/GradleUserHomeScopeServiceRegistry +instanceKlass org/gradle/internal/operations/BuildOperationProgressEventEmitter +instanceKlass org/gradle/process/internal/health/memory/OsMemoryInfo +instanceKlass org/gradle/internal/execution/history/changes/ExecutionStateChangeDetector +instanceKlass org/gradle/api/internal/classpath/PluginModuleRegistry +instanceKlass org/gradle/initialization/ClassLoaderRegistry +instanceKlass org/gradle/api/internal/ClassPathRegistry +instanceKlass org/gradle/cache/internal/InMemoryCacheDecoratorFactory +instanceKlass org/gradle/model/internal/manage/schema/ModelSchemaStore +instanceKlass org/gradle/internal/instantiation/InstantiatorFactory +instanceKlass org/gradle/internal/instantiation/PropertyRoleAnnotationHandler +instanceKlass org/gradle/model/internal/manage/schema/extract/ModelSchemaExtractor +instanceKlass org/gradle/api/tasks/util/internal/PatternSpecFactory +instanceKlass org/gradle/internal/file/excludes/FileSystemDefaultExcludesListener +instanceKlass org/gradle/process/internal/health/memory/JvmMemoryInfo +instanceKlass org/gradle/model/internal/manage/binding/StructBindingsStore +instanceKlass org/gradle/internal/execution/history/OverlappingOutputDetector +instanceKlass org/gradle/internal/problems/failure/FailureFactory +instanceKlass org/gradle/configuration/ImportsReader +instanceKlass org/gradle/api/model/ObjectFactory +instanceKlass org/gradle/internal/reflect/Instantiator +instanceKlass org/gradle/initialization/JdkToolsInitializer +instanceKlass org/gradle/internal/service/ServiceLocator +instanceKlass org/gradle/internal/scripts/ScriptFileResolver +instanceKlass org/gradle/process/internal/health/memory/MemoryManager +instanceKlass org/gradle/internal/operations/DefaultBuildOperationRunner$BuildOperationExecutionListener +instanceKlass org/gradle/internal/operations/BuildOperationListenerManager +instanceKlass org/gradle/cache/internal/CrossBuildInMemoryCacheFactory +instanceKlass org/gradle/cache/internal/CacheFactory +instanceKlass org/gradle/internal/hash/StreamHasher +instanceKlass org/gradle/internal/file/Deleter +instanceKlass org/gradle/api/internal/provider/PropertyFactory +instanceKlass org/gradle/internal/operations/BuildOperationIdFactory +instanceKlass org/gradle/initialization/LegacyTypesSupport +instanceKlass org/gradle/internal/operations/BuildOperationRunner +instanceKlass org/gradle/internal/classloader/ClassLoaderFactory +instanceKlass org/gradle/internal/logging/progress/ProgressLoggerFactory +instanceKlass org/gradle/internal/logging/progress/ProgressListener +instanceKlass org/gradle/process/internal/ExecFactory +instanceKlass org/gradle/api/internal/ProcessOperations +instanceKlass org/gradle/process/internal/JavaForkOptionsFactory +instanceKlass org/gradle/process/internal/JavaExecHandleFactory +instanceKlass org/gradle/process/internal/ExecHandleFactory +instanceKlass org/gradle/process/internal/ExecActionFactory +instanceKlass org/gradle/internal/jvm/inspection/JvmMetadataDetector +instanceKlass org/gradle/internal/jvm/inspection/JvmVersionDetector +instanceKlass org/gradle/internal/event/ScopedListenerManager +instanceKlass org/gradle/internal/event/ListenerManager +instanceKlass org/gradle/cache/internal/locklistener/FileLockContentionHandler +instanceKlass org/gradle/cache/internal/locklistener/InetAddressProvider +instanceKlass org/gradle/api/internal/file/collections/DirectoryFileTreeFactory +instanceKlass org/gradle/api/internal/file/FileCollectionFactory +instanceKlass org/gradle/cache/FileLockManager +instanceKlass org/gradle/cache/internal/ProcessMetaDataProvider +instanceKlass org/gradle/internal/concurrent/ExecutorFactory +instanceKlass org/gradle/internal/service/scopes/BasicGlobalScopeServices +instanceKlass org/gradle/internal/service/scopes/Scope$Global +instanceKlass org/gradle/internal/service/scopes/Scope +instanceKlass org/gradle/internal/instrumentation/agent/AgentControl +instanceKlass org/gradle/internal/lazy/LockingLazy +instanceKlass org/gradle/internal/lazy/Lazy$Factory +instanceKlass org/gradle/internal/lazy/Lazy +instanceKlass org/gradle/internal/instrumentation/agent/DefaultAgentStatus +instanceKlass org/gradle/internal/instrumentation/agent/AgentStatus +instanceKlass org/gradle/api/specs/Spec +instanceKlass org/gradle/internal/classpath/DefaultClassPath +instanceKlass org/gradle/internal/classpath/ClassPath +instanceKlass org/gradle/internal/buildprocess/BuildProcessState +instanceKlass org/gradle/launcher/daemon/server/DaemonProcessState +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$SingletonService$NonFactoryMarker +instanceKlass java/lang/reflect/WildcardType +instanceKlass sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator +instanceKlass java/lang/reflect/TypeVariable +instanceKlass sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl +instanceKlass sun/reflect/generics/tree/ClassSignature +instanceKlass sun/reflect/generics/tree/Signature +instanceKlass sun/reflect/generics/tree/FormalTypeParameter +instanceKlass sun/reflect/generics/repository/AbstractRepository +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManager$StartableLoggingSystem +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManager$StartableLoggingRouter +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManager +instanceKlass org/gradle/internal/logging/source/JavaUtilLoggingSystem +instanceKlass org/gradle/internal/logging/slf4j/Slf4jLoggingConfigurer +instanceKlass org/gradle/internal/logging/config/LoggingSystemAdapter +instanceKlass org/gradle/internal/logging/LoggingManagerInternal +instanceKlass org/gradle/internal/logging/StandardOutputCapture +instanceKlass org/gradle/api/logging/LoggingManager +instanceKlass org/gradle/internal/logging/source/StdErrLoggingSystem +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$SnapshotImpl +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$OutputEventDestination +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem$1 +instanceKlass org/gradle/internal/logging/events/operations/StyledTextBuildOperationProgressDetails +instanceKlass org/gradle/internal/operations/logging/StyledTextBuildOperationProgressDetails +instanceKlass org/gradle/internal/io/TextStream +instanceKlass org/gradle/internal/logging/source/PrintStreamLoggingSystem +instanceKlass org/gradle/internal/logging/source/StdOutLoggingSystem +instanceKlass org/gradle/internal/service/AnnotatedServiceLifecycleHandler +instanceKlass java/lang/reflect/ParameterizedType +instanceKlass java/lang/invoke/VarHandle$AccessDescriptor +instanceKlass org/gradle/internal/logging/services/DefaultLoggingManagerFactory +instanceKlass org/gradle/internal/logging/services/TextStreamOutputEventListener +instanceKlass org/gradle/internal/logging/sink/OutputEventListenerManager$1 +instanceKlass org/gradle/internal/logging/sink/OutputEventListenerManager +instanceKlass org/gradle/internal/logging/services/LoggingServiceRegistry$1 +instanceKlass org/gradle/internal/logging/config/LoggingConfigurer +instanceKlass org/gradle/internal/logging/config/LoggingSourceSystem +instanceKlass org/gradle/internal/logging/services/LoggingServiceRegistry +instanceKlass org/gradle/launcher/daemon/configuration/DefaultDaemonServerConfiguration +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiStorage +instanceKlass org/fusesource/jansi/Ansi +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiLibrary +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiLibraryFactory$1 +instanceKlass net/rubygrapefruit/platform/internal/jni/AbstractFileEventFunctions +instanceKlass jdk/internal/logger/DefaultLoggerFinder$1 +instanceKlass java/util/logging/Logger$SystemLoggerHelper$1 +instanceKlass java/util/logging/Logger$SystemLoggerHelper +instanceKlass java/util/logging/LogManager$4 +instanceKlass jdk/internal/logger/BootstrapLogger$BootstrapExecutors +instanceKlass jdk/internal/logger/BootstrapLogger$RedirectedLoggers +instanceKlass java/util/ServiceLoader$ProviderImpl +instanceKlass java/util/ServiceLoader$Provider +instanceKlass java/util/ServiceLoader$1 +instanceKlass java/util/concurrent/CopyOnWriteArrayList$COWIterator +instanceKlass java/util/ServiceLoader$3 +instanceKlass java/util/ServiceLoader$2 +instanceKlass java/util/ServiceLoader$LazyClassPathLookupIterator +instanceKlass java/util/Spliterators$1Adapter +instanceKlass java/util/Spliterators$ArraySpliterator +instanceKlass java/util/ServiceLoader$ModuleServicesLookupIterator +instanceKlass java/util/ServiceLoader +instanceKlass jdk/internal/logger/BootstrapLogger$DetectBackend$1 +instanceKlass jdk/internal/logger/BootstrapLogger$DetectBackend +instanceKlass jdk/internal/logger/BootstrapLogger +instanceKlass sun/util/logging/PlatformLogger$ConfigurableBridge +instanceKlass sun/util/logging/PlatformLogger$Bridge +instanceKlass java/lang/System$Logger +instanceKlass java/util/stream/Streams +instanceKlass java/util/stream/Stream$Builder +instanceKlass java/util/stream/Streams$AbstractStreamBuilderImpl +instanceKlass java/util/ArrayList$ArrayListSpliterator +instanceKlass java/util/Hashtable$Enumerator +instanceKlass java/util/Collections$SynchronizedCollection +instanceKlass java/util/Properties$EntrySet +instanceKlass java/util/Collections$3 +instanceKlass java/util/logging/LogManager$LoggerContext$1 +instanceKlass java/util/logging/LogManager$VisitedLoggers +instanceKlass java/util/logging/LogManager$2 +instanceKlass java/lang/System$LoggerFinder +instanceKlass java/util/logging/LogManager$LoggingProviderAccess +instanceKlass sun/util/logging/internal/LoggingProviderImpl$LogManagerAccess +instanceKlass java/lang/Shutdown$Lock +instanceKlass java/lang/Shutdown +instanceKlass java/lang/ApplicationShutdownHooks$1 +instanceKlass java/lang/ApplicationShutdownHooks +instanceKlass java/util/Collections$SynchronizedMap +instanceKlass java/util/logging/LogManager$LogNode +instanceKlass java/util/logging/LogManager$LoggerContext +instanceKlass java/util/logging/LogManager$1 +instanceKlass java/util/logging/LogManager +instanceKlass java/util/logging/Logger$ConfigurationData +instanceKlass java/util/logging/Logger$LoggerBundle +instanceKlass java/util/logging/Level +instanceKlass java/util/logging/Handler +instanceKlass java/util/logging/Logger +instanceKlass net/rubygrapefruit/platform/internal/jni/NativeLogger +instanceKlass net/rubygrapefruit/platform/file/FileEvents +instanceKlass java/util/RegularEnumSet$EnumSetIterator +instanceKlass net/rubygrapefruit/platform/internal/jni/NativeLibraryFunctions +instanceKlass jdk/internal/loader/NativeLibraries$Unloader +instanceKlass java/nio/channels/spi/AbstractInterruptibleChannel$1 +instanceKlass sun/nio/ch/Interruptible +instanceKlass sun/nio/ch/FileKey +instanceKlass sun/nio/ch/FileLockTable +instanceKlass sun/nio/ch/NativeThread +instanceKlass java/nio/channels/FileLock +instanceKlass sun/nio/ch/NativeDispatcher +instanceKlass sun/nio/ch/NativeThreadSet +instanceKlass sun/nio/ch/IOUtil +instanceKlass java/nio/file/attribute/FileAttribute +instanceKlass java/nio/channels/spi/AbstractInterruptibleChannel +instanceKlass java/nio/channels/InterruptibleChannel +instanceKlass java/nio/channels/ScatteringByteChannel +instanceKlass java/nio/channels/GatheringByteChannel +instanceKlass java/nio/channels/SeekableByteChannel +instanceKlass java/nio/channels/ByteChannel +instanceKlass java/nio/channels/WritableByteChannel +instanceKlass java/nio/channels/ReadableByteChannel +instanceKlass java/nio/channels/Channel +instanceKlass java/util/Formattable +instanceKlass java/util/Formatter$Flags +instanceKlass java/util/Formatter$FormatSpecifier +instanceKlass java/util/Formatter$Conversion +instanceKlass java/util/Formatter$FixedString +instanceKlass java/util/Formatter$FormatString +instanceKlass java/util/Formatter +instanceKlass net/rubygrapefruit/platform/internal/LibraryDef +instanceKlass net/rubygrapefruit/platform/internal/NativeLibraryLocator +instanceKlass net/rubygrapefruit/platform/internal/NativeLibraryLoader +instanceKlass net/rubygrapefruit/platform/Process +instanceKlass net/rubygrapefruit/platform/internal/Platform +instanceKlass net/rubygrapefruit/platform/Native +instanceKlass java/lang/ProcessEnvironment$CheckedEntry +instanceKlass java/lang/ProcessEnvironment$CheckedEntrySet$1 +instanceKlass java/lang/ProcessEnvironment$EntryComparator +instanceKlass java/lang/ProcessEnvironment$NameComparator +instanceKlass org/gradle/api/internal/file/temp/DefaultTemporaryFileProvider +instanceKlass java/lang/Class$EnclosingMethodInfo +instanceKlass jdk/internal/reflect/ClassDefiner$1 +instanceKlass jdk/internal/reflect/ClassDefiner +instanceKlass jdk/internal/reflect/MethodAccessorGenerator$1 +instanceKlass jdk/internal/reflect/Label$PatchInfo +instanceKlass jdk/internal/reflect/Label +instanceKlass jdk/internal/reflect/UTF8 +instanceKlass jdk/internal/reflect/ClassFileAssembler +instanceKlass jdk/internal/reflect/ByteVectorImpl +instanceKlass jdk/internal/reflect/ByteVector +instanceKlass jdk/internal/reflect/ByteVectorFactory +instanceKlass jdk/internal/reflect/AccessorGenerator +instanceKlass jdk/internal/reflect/ClassFileConstants +instanceKlass net/rubygrapefruit/platform/memory/Memory +instanceKlass org/gradle/internal/jvm/Jvm +instanceKlass org/gradle/internal/jvm/JavaInfo +instanceKlass net/rubygrapefruit/platform/SystemInfo +instanceKlass net/rubygrapefruit/platform/file/FileSystems +instanceKlass net/rubygrapefruit/platform/WindowsRegistry +instanceKlass org/gradle/internal/file/StatStatistics +instanceKlass org/gradle/internal/file/StatStatistics$Collector +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/GenericFileSystem +instanceKlass org/gradle/internal/service/InjectUtil +instanceKlass java/lang/invoke/MethodHandleImpl$ArrayAccessor +instanceKlass java/lang/invoke/MethodHandleImpl$2 +instanceKlass java/lang/invoke/MethodHandleImpl$LoopClauses +instanceKlass java/lang/invoke/MethodHandleImpl$CasesHolder +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$1 +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ClassInspector$ClassDetails +instanceKlass org/gradle/util/internal/CollectionUtils +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$SingletonService$1 +instanceKlass java/util/concurrent/ConcurrentLinkedQueue$Node +instanceKlass org/gradle/internal/service/PrivateService +instanceKlass org/gradle/internal/reflect/JavaMethod +instanceKlass org/gradle/util/internal/ArrayUtils +instanceKlass com/google/errorprone/annotations/Keep +instanceKlass java/lang/annotation/Target +instanceKlass sun/reflect/annotation/AnnotationInvocationHandler +instanceKlass sun/reflect/annotation/AnnotationParser$1 +instanceKlass java/lang/annotation/Inherited +instanceKlass java/lang/annotation/Retention +instanceKlass sun/reflect/annotation/ExceptionProxy +instanceKlass sun/reflect/annotation/AnnotationType$1 +instanceKlass sun/reflect/annotation/AnnotationType +instanceKlass java/lang/reflect/GenericArrayType +instanceKlass sun/reflect/generics/visitor/Reifier +instanceKlass sun/reflect/generics/visitor/TypeTreeVisitor +instanceKlass sun/reflect/generics/factory/CoreReflectionFactory +instanceKlass sun/reflect/generics/factory/GenericsFactory +instanceKlass sun/reflect/generics/scope/AbstractScope +instanceKlass sun/reflect/generics/scope/Scope +instanceKlass sun/reflect/generics/tree/ClassTypeSignature +instanceKlass sun/reflect/generics/tree/SimpleClassTypeSignature +instanceKlass sun/reflect/generics/tree/FieldTypeSignature +instanceKlass sun/reflect/generics/tree/BaseType +instanceKlass sun/reflect/generics/tree/TypeSignature +instanceKlass sun/reflect/generics/tree/ReturnType +instanceKlass sun/reflect/generics/tree/TypeArgument +instanceKlass sun/reflect/generics/tree/TypeTree +instanceKlass sun/reflect/generics/tree/Tree +instanceKlass sun/reflect/generics/parser/SignatureParser +instanceKlass org/gradle/internal/service/Provides +instanceKlass org/gradle/internal/service/AbstractServiceMethod +instanceKlass org/gradle/api/internal/file/temp/TemporaryFileProvider +instanceKlass net/rubygrapefruit/platform/file/PosixFiles +instanceKlass net/rubygrapefruit/platform/file/Files +instanceKlass org/gradle/internal/os/OperatingSystem +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/GenericFileSystem$Factory +instanceKlass org/gradle/internal/file/FileCanonicalizer +instanceKlass org/gradle/internal/service/TypeStringFormatter +instanceKlass org/gradle/internal/service/RelevantMethods$RelevantMethodsBuilder +instanceKlass org/gradle/internal/Cast +instanceKlass org/gradle/internal/service/ServiceMethod +instanceKlass org/gradle/internal/service/MethodHandleBasedServiceMethodFactory +instanceKlass org/gradle/internal/service/DefaultServiceMethodFactory +instanceKlass org/gradle/internal/service/ServiceMethodFactory +instanceKlass org/gradle/internal/service/RelevantMethods +instanceKlass org/gradle/internal/service/DefaultServiceAccessToken +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ClassInspector +instanceKlass org/gradle/internal/service/ServiceAccess$1 +instanceKlass org/gradle/internal/service/ServiceAccessToken +instanceKlass org/gradle/internal/service/ServiceAccessScope +instanceKlass org/gradle/internal/service/ServiceAccess +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ThisAsService +instanceKlass org/gradle/internal/concurrent/CompositeStoppable$1 +instanceKlass org/gradle/internal/concurrent/CompositeStoppable +instanceKlass org/gradle/internal/service/AnnotatedServiceLifecycleHandler$Registration +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$OwnServices +instanceKlass org/gradle/internal/service/ServiceRegistration +instanceKlass org/gradle/internal/service/ServiceProvider$Visitor +instanceKlass org/gradle/internal/InternalTransformer +instanceKlass org/gradle/internal/service/DefaultServiceRegistry$ManagedObjectServiceProvider +instanceKlass org/gradle/internal/service/Service +instanceKlass org/gradle/internal/service/ServiceProvider +instanceKlass org/gradle/internal/concurrent/Stoppable +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices$1 +instanceKlass org/gradle/internal/nativeintegration/filesystem/FileSystem +instanceKlass org/gradle/internal/file/FileSystem +instanceKlass org/gradle/internal/file/Stat +instanceKlass org/gradle/internal/file/Chmod +instanceKlass org/gradle/internal/file/FileModeMutator +instanceKlass org/gradle/internal/file/FileModeAccessor +instanceKlass org/gradle/internal/nativeintegration/filesystem/Symlink +instanceKlass org/gradle/internal/nativeintegration/filesystem/services/FileSystemServices +instanceKlass org/gradle/internal/service/DefaultServiceRegistry +instanceKlass org/gradle/internal/service/ContainsServices +instanceKlass org/gradle/internal/service/CloseableServiceRegistry +instanceKlass org/gradle/internal/service/ServiceRegistryBuilder +instanceKlass org/gradle/internal/nativeintegration/jansi/DefaultJansiRuntimeResolver +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiRuntimeResolver +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiLibraryFactory +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiStorageLocator +instanceKlass org/gradle/internal/nativeintegration/jansi/JansiBootPathConfigurer +instanceKlass org/gradle/internal/file/FileMetadataAccessor +instanceKlass org/gradle/initialization/GradleUserHomeDirProvider +instanceKlass org/gradle/internal/nativeintegration/NativeCapabilities +instanceKlass org/gradle/internal/nativeintegration/network/HostnameLookup +instanceKlass org/gradle/internal/nativeintegration/console/ConsoleDetector +instanceKlass net/rubygrapefruit/platform/ProcessLauncher +instanceKlass net/rubygrapefruit/platform/NativeIntegration +instanceKlass org/gradle/internal/nativeintegration/ProcessEnvironment +instanceKlass org/gradle/internal/service/ServiceRegistry +instanceKlass org/gradle/internal/service/ServiceLookup +instanceKlass org/gradle/internal/nativeintegration/services/NativeServices +instanceKlass org/gradle/internal/service/ServiceRegistrationProvider +instanceKlass org/gradle/internal/serialize/AbstractDecoder +instanceKlass org/gradle/internal/serialize/Decoder +instanceKlass org/gradle/launcher/bootstrap/EntryPoint$RecordingExecutionListener +instanceKlass org/gradle/internal/logging/events/operations/LogEventBuildOperationProgressDetails +instanceKlass org/gradle/internal/operations/logging/LogEventBuildOperationProgressDetails +instanceKlass org/gradle/internal/logging/slf4j/BuildOperationAwareLogger +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$2 +instanceKlass org/gradle/internal/dispatch/ReflectionDispatch +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$1 +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer$LazyListener +instanceKlass org/gradle/internal/logging/events/OutputEventListener$1 +instanceKlass java/lang/reflect/Proxy$ProxyBuilder$1 +instanceKlass jdk/internal/org/objectweb/asm/Edge +instanceKlass java/lang/reflect/ProxyGenerator$PrimitiveTypeInfo +instanceKlass java/util/StringJoiner +instanceKlass java/lang/reflect/ProxyGenerator$ProxyMethod +instanceKlass jdk/internal/module/Checks +instanceKlass java/lang/module/ModuleDescriptor$Builder +instanceKlass java/lang/PublicMethods +instanceKlass java/lang/reflect/Proxy$ProxyBuilder +instanceKlass java/lang/reflect/Proxy +instanceKlass org/gradle/internal/dispatch/ProxyDispatchAdapter$DispatchingInvocationHandler +instanceKlass java/lang/reflect/InvocationHandler +instanceKlass org/gradle/internal/dispatch/ProxyDispatchAdapter +instanceKlass org/gradle/internal/logging/events/operations/ProgressStartBuildOperationProgressDetails +instanceKlass org/gradle/internal/operations/logging/ProgressStartBuildOperationProgressDetails +instanceKlass org/gradle/internal/logging/sink/OutputEventTransformer +instanceKlass org/gradle/internal/exceptions/NonGradleCauseExceptionsHolder +instanceKlass org/gradle/internal/exceptions/MultiCauseException +instanceKlass org/gradle/internal/exceptions/ResolutionProvider +instanceKlass org/gradle/internal/event/AbstractBroadcastDispatch +instanceKlass org/gradle/internal/event/ListenerBroadcast +instanceKlass org/gradle/internal/dispatch/Dispatch +instanceKlass org/gradle/internal/logging/format/LogHeaderFormatter +instanceKlass org/gradle/internal/Factory +instanceKlass org/gradle/api/logging/StandardOutputListener +instanceKlass org/gradle/internal/logging/text/StyledTextOutput +instanceKlass org/gradle/internal/logging/console/ColorMap +instanceKlass org/gradle/internal/nativeintegration/console/ConsoleMetaData +instanceKlass org/gradle/internal/logging/config/LoggingSystem$Snapshot +instanceKlass org/gradle/internal/logging/events/InteractiveEvent +instanceKlass org/gradle/internal/logging/events/OutputEvent +instanceKlass org/gradle/internal/logging/sink/OutputEventRenderer +instanceKlass org/gradle/internal/logging/config/LoggingRouter +instanceKlass org/gradle/internal/logging/LoggingOutputInternal +instanceKlass org/gradle/api/logging/LoggingOutput +instanceKlass org/gradle/internal/logging/config/LoggingSystem +instanceKlass org/gradle/internal/logging/console/UserInputReceiver$Normalizer +instanceKlass org/gradle/internal/logging/console/DefaultUserInputReceiver +instanceKlass org/gradle/internal/logging/slf4j/OutputEventListenerBackedLoggerContext$NoOpLogger +instanceKlass org/gradle/api/logging/Logger +instanceKlass java/lang/invoke/VarForm +instanceKlass java/lang/invoke/VarHandleGuards +instanceKlass jdk/internal/util/Preconditions$1 +instanceKlass java/lang/invoke/VarHandle$1 +instanceKlass java/lang/ClassValue$Version +instanceKlass java/lang/ClassValue$Identity +instanceKlass java/lang/ClassValue +instanceKlass java/lang/invoke/VarHandles +instanceKlass java/util/concurrent/atomic/AtomicReference +instanceKlass org/gradle/internal/time/TimeSource$1 +instanceKlass org/gradle/internal/time/TimeSource +instanceKlass org/gradle/internal/time/MonotonicClock +instanceKlass org/gradle/internal/time/CountdownTimer +instanceKlass org/gradle/internal/time/Timer +instanceKlass org/gradle/internal/time/Clock +instanceKlass org/gradle/internal/time/Time +instanceKlass org/gradle/internal/logging/events/OutputEventListener +instanceKlass org/gradle/internal/logging/console/GlobalUserInputReceiver +instanceKlass org/gradle/internal/logging/slf4j/OutputEventListenerBackedLoggerContext +instanceKlass org/slf4j/impl/StaticLoggerBinder +instanceKlass org/slf4j/spi/LoggerFactoryBinder +instanceKlass java/net/URLClassLoader$3$1 +instanceKlass java/net/URLClassLoader$3 +instanceKlass jdk/internal/loader/URLClassPath$1 +instanceKlass java/lang/CompoundEnumeration +instanceKlass jdk/internal/loader/BuiltinClassLoader$1 +instanceKlass java/util/Collections$EmptyEnumeration +instanceKlass org/slf4j/helpers/Util +instanceKlass org/slf4j/helpers/NOPLoggerFactory +instanceKlass java/util/concurrent/LinkedBlockingQueue$Node +instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject +instanceKlass java/util/concurrent/locks/Condition +instanceKlass java/util/concurrent/BlockingQueue +instanceKlass org/slf4j/Logger +instanceKlass org/slf4j/helpers/SubstituteLoggerFactory +instanceKlass org/slf4j/event/LoggingEvent +instanceKlass org/slf4j/ILoggerFactory +instanceKlass org/slf4j/LoggerFactory +instanceKlass org/slf4j/helpers/BasicMarker +instanceKlass org/slf4j/Marker +instanceKlass org/slf4j/helpers/BasicMarkerFactory +instanceKlass org/slf4j/IMarkerFactory +instanceKlass org/slf4j/MarkerFactory +instanceKlass org/gradle/api/logging/Logging +instanceKlass org/gradle/launcher/daemon/configuration/DaemonServerConfiguration +instanceKlass org/gradle/launcher/bootstrap/ExecutionCompleter +instanceKlass org/gradle/api/Action +instanceKlass org/gradle/internal/logging/text/StyledTextOutputFactory +instanceKlass org/gradle/api/logging/configuration/LoggingConfiguration +instanceKlass org/gradle/initialization/BuildClientMetaData +instanceKlass org/gradle/launcher/bootstrap/ExecutionListener +instanceKlass org/gradle/launcher/bootstrap/EntryPoint +instanceKlass java/util/TreeMap$PrivateEntryIterator +instanceKlass java/util/TreeMap$Entry +instanceKlass java/util/NavigableMap +instanceKlass java/util/SortedMap +instanceKlass java/util/NavigableSet +instanceKlass java/util/SortedSet +instanceKlass java/io/FilePermissionCollection$1 +instanceKlass java/security/Security$2 +instanceKlass jdk/internal/access/JavaSecurityPropertiesAccess +instanceKlass java/util/concurrent/ConcurrentHashMap$MapEntry +instanceKlass java/io/FileInputStream$1 +instanceKlass java/security/Security$1 +instanceKlass java/security/Security +instanceKlass sun/security/util/SecurityProperties +instanceKlass sun/security/util/FilePermCompat +instanceKlass java/io/FilePermission$1 +instanceKlass jdk/internal/access/JavaIOFilePermissionAccess +instanceKlass sun/net/www/MessageHeader +instanceKlass java/net/URLConnection +instanceKlass java/util/LinkedList$Node +instanceKlass java/net/URLClassLoader$1 +instanceKlass org/gradle/internal/classloader/InstrumentingClassLoader +instanceKlass jdk/internal/jimage/ImageLocation +instanceKlass jdk/internal/jimage/decompressor/Decompressor +instanceKlass jdk/internal/jimage/ImageStringsReader +instanceKlass jdk/internal/jimage/ImageStrings +instanceKlass jdk/internal/jimage/ImageHeader +instanceKlass jdk/internal/jimage/NativeImageBuffer$1 +instanceKlass jdk/internal/jimage/NativeImageBuffer +instanceKlass jdk/internal/jimage/BasicImageReader$1 +instanceKlass jdk/internal/jimage/BasicImageReader +instanceKlass jdk/internal/jimage/ImageReader +instanceKlass jdk/internal/jimage/ImageReaderFactory$1 +instanceKlass java/nio/file/Paths +instanceKlass jdk/internal/jimage/ImageReaderFactory +instanceKlass jdk/internal/module/SystemModuleFinders$SystemImage +instanceKlass jdk/internal/module/SystemModuleFinders$SystemModuleReader +instanceKlass java/lang/module/ModuleReader +instanceKlass jdk/internal/loader/BuiltinClassLoader$5 +instanceKlass jdk/internal/loader/BuiltinClassLoader$2 +instanceKlass jdk/internal/module/Resources +instanceKlass java/io/RandomAccessFile$1 +instanceKlass org/gradle/api/Action +instanceKlass org/gradle/internal/IoActions +instanceKlass java/util/Properties$LineReader +instanceKlass java/util/regex/Pattern$BitClass +instanceKlass java/util/regex/Pattern$TreeInfo +instanceKlass org/gradle/internal/InternalTransformer +instanceKlass org/gradle/util/internal/GUtil +instanceKlass org/gradle/internal/classpath/TransformedClassPath +instanceKlass java/util/LinkedHashMap$LinkedHashIterator +instanceKlass java/util/Collections$EmptyIterator +instanceKlass java/util/Collections$1 +instanceKlass org/gradle/api/internal/classpath/DefaultModuleRegistry$DefaultModule +instanceKlass java/util/regex/IntHashSet +instanceKlass java/util/regex/Matcher +instanceKlass java/util/regex/MatchResult +instanceKlass java/util/regex/Pattern$BmpCharPredicate +instanceKlass java/util/regex/Pattern$CharPredicate +instanceKlass java/util/regex/CharPredicates +instanceKlass java/util/regex/ASCII +instanceKlass java/util/regex/Pattern$Node +instanceKlass java/util/regex/Pattern +instanceKlass org/gradle/internal/service/CachingServiceLocator +instanceKlass java/io/Reader +instanceKlass org/gradle/internal/service/DefaultServiceLocator +instanceKlass org/gradle/internal/service/ServiceLocator +instanceKlass org/gradle/internal/classloader/DefaultClassLoaderFactory +instanceKlass org/gradle/api/internal/DefaultClassPathProvider +instanceKlass org/gradle/api/internal/ClassPathProvider +instanceKlass org/gradle/api/internal/DefaultClassPathRegistry +instanceKlass org/gradle/api/internal/classpath/ManifestUtil +instanceKlass org/gradle/internal/Cast +instanceKlass java/util/AbstractList$Itr +instanceKlass org/gradle/internal/classpath/DefaultClassPath$ImmutableUniqueList$Builder +instanceKlass org/gradle/internal/classloader/ClassLoaderSpec +instanceKlass org/gradle/internal/classloader/ClassLoaderVisitor +instanceKlass org/gradle/internal/classpath/DefaultClassPath +instanceKlass org/gradle/internal/classpath/ClassPath +instanceKlass org/gradle/internal/installation/GradleInstallation$1 +instanceKlass java/io/FileFilter +instanceKlass org/gradle/internal/installation/GradleInstallation +instanceKlass org/gradle/internal/classloader/ClasspathUtil +instanceKlass org/gradle/internal/installation/CurrentGradleInstallationLocator +instanceKlass org/gradle/internal/installation/CurrentGradleInstallation +instanceKlass org/gradle/api/specs/Spec +instanceKlass org/gradle/api/internal/classpath/Module +instanceKlass org/gradle/api/internal/classpath/DefaultModuleRegistry +instanceKlass org/gradle/api/internal/classpath/GlobalCacheRootsProvider +instanceKlass org/gradle/internal/classloader/ClassLoaderHierarchy +instanceKlass org/gradle/internal/classloader/ClassLoaderFactory +instanceKlass org/gradle/api/internal/ClassPathRegistry +instanceKlass org/gradle/api/internal/classpath/ModuleRegistry +instanceKlass org/gradle/launcher/bootstrap/ProcessBootstrap +instanceKlass org/gradle/launcher/daemon/bootstrap/GradleDaemon +instanceKlass sun/security/util/ManifestEntryVerifier +instanceKlass sun/launcher/LauncherHelper +instanceKlass jdk/internal/vm/PostVMInitHook$1 +instanceKlass jdk/internal/util/EnvUtils +instanceKlass jdk/internal/vm/PostVMInitHook$2 +instanceKlass jdk/internal/vm/PostVMInitHook +instanceKlass java/lang/instrument/ClassFileTransformer +instanceKlass org/gradle/instrumentation/agent/Agent +instanceKlass java/security/SecureClassLoader$DebugHolder +instanceKlass java/security/PermissionCollection +instanceKlass java/security/SecureClassLoader$1 +instanceKlass java/security/SecureClassLoader$CodeSourceKey +instanceKlass java/util/zip/Checksum$1 +instanceKlass java/util/zip/CRC32 +instanceKlass java/util/zip/Checksum +instanceKlass sun/nio/ByteBuffered +instanceKlass java/lang/Package$VersionInfo +instanceKlass java/lang/NamedPackage +instanceKlass jdk/internal/loader/Resource +instanceKlass java/util/StringTokenizer +instanceKlass java/util/jar/Attributes$Name +instanceKlass java/util/jar/Attributes +instanceKlass java/security/CodeSigner +instanceKlass java/util/jar/JarVerifier +instanceKlass sun/security/action/GetIntegerAction +instanceKlass sun/security/util/Debug +instanceKlass sun/security/util/SignatureFileVerifier +instanceKlass java/util/zip/ZipFile$InflaterCleanupAction +instanceKlass java/util/zip/Inflater$InflaterZStreamRef +instanceKlass java/util/zip/Inflater +instanceKlass java/util/zip/ZipEntry +instanceKlass jdk/internal/util/jar/JarIndex +instanceKlass java/nio/Bits$1 +instanceKlass jdk/internal/misc/VM$BufferPool +instanceKlass java/nio/Bits +instanceKlass sun/nio/ch/DirectBuffer +instanceKlass jdk/internal/perf/PerfCounter$CoreCounters +instanceKlass jdk/internal/perf/Perf +instanceKlass jdk/internal/perf/Perf$GetPerfAction +instanceKlass jdk/internal/perf/PerfCounter +instanceKlass java/nio/file/attribute/FileTime +instanceKlass java/util/zip/ZipUtils +instanceKlass java/util/zip/ZipFile$Source$End +instanceKlass java/io/RandomAccessFile$2 +instanceKlass jdk/internal/access/JavaIORandomAccessFileAccess +instanceKlass java/io/RandomAccessFile +instanceKlass java/io/DataInput +instanceKlass java/io/DataOutput +instanceKlass sun/nio/fs/WindowsNativeDispatcher$CompletionStatus +instanceKlass sun/nio/fs/WindowsNativeDispatcher$AclInformation +instanceKlass sun/nio/fs/WindowsNativeDispatcher$Account +instanceKlass sun/nio/fs/WindowsNativeDispatcher$DiskFreeSpace +instanceKlass sun/nio/fs/WindowsNativeDispatcher$VolumeInformation +instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstStream +instanceKlass sun/nio/fs/WindowsNativeDispatcher$FirstFile +instanceKlass java/util/Enumeration +instanceKlass java/util/concurrent/ConcurrentHashMap$Traverser +instanceKlass java/util/concurrent/ConcurrentHashMap$CollectionView +instanceKlass sun/nio/fs/WindowsNativeDispatcher +instanceKlass sun/nio/fs/NativeBuffer$Deallocator +instanceKlass sun/nio/fs/NativeBuffer +instanceKlass java/lang/ThreadLocal$ThreadLocalMap +instanceKlass sun/nio/fs/NativeBuffers +instanceKlass sun/nio/fs/WindowsFileAttributes +instanceKlass java/nio/file/attribute/DosFileAttributes +instanceKlass sun/nio/fs/AbstractBasicFileAttributeView +instanceKlass sun/nio/fs/DynamicFileAttributeView +instanceKlass sun/nio/fs/WindowsFileAttributeViews +instanceKlass sun/nio/fs/Util +instanceKlass java/nio/file/attribute/BasicFileAttributeView +instanceKlass java/nio/file/attribute/FileAttributeView +instanceKlass java/nio/file/attribute/AttributeView +instanceKlass java/nio/file/Files +instanceKlass java/nio/file/CopyOption +instanceKlass java/nio/file/attribute/BasicFileAttributes +instanceKlass sun/nio/fs/WindowsPath +instanceKlass java/net/URI$Parser +instanceKlass sun/nio/fs/WindowsPathParser$Result +instanceKlass sun/nio/fs/WindowsPathParser +instanceKlass java/util/Arrays$ArrayItr +instanceKlass java/nio/file/FileSystem +instanceKlass java/nio/file/OpenOption +instanceKlass java/nio/file/spi/FileSystemProvider +instanceKlass sun/nio/fs/DefaultFileSystemProvider +instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder$1 +instanceKlass java/nio/file/FileSystems$DefaultFileSystemHolder +instanceKlass java/nio/file/FileSystems +instanceKlass java/util/zip/ZipFile$Source$Key +instanceKlass java/util/zip/ZipFile$Source +instanceKlass java/util/zip/ZipCoder +instanceKlass java/util/zip/ZipFile$CleanableResource +instanceKlass java/lang/Runtime$Version +instanceKlass java/util/jar/JavaUtilJarAccessImpl +instanceKlass jdk/internal/access/JavaUtilJarAccess +instanceKlass jdk/internal/loader/FileURLMapper +instanceKlass jdk/internal/loader/URLClassPath$JarLoader$1 +instanceKlass java/util/zip/ZipFile$1 +instanceKlass jdk/internal/access/JavaUtilZipFileAccess +instanceKlass java/util/zip/ZipFile +instanceKlass java/util/zip/ZipConstants +instanceKlass jdk/internal/loader/URLClassPath$Loader +instanceKlass jdk/internal/loader/URLClassPath$3 +instanceKlass java/security/PrivilegedExceptionAction +instanceKlass sun/util/locale/LocaleUtils +instanceKlass sun/util/locale/BaseLocale +instanceKlass java/util/Locale +instanceKlass sun/net/util/URLUtil +instanceKlass sun/instrument/TransformerManager$TransformerInfo +instanceKlass sun/instrument/TransformerManager +instanceKlass jdk/internal/loader/NativeLibraries$NativeLibraryImpl +instanceKlass jdk/internal/loader/NativeLibrary +instanceKlass java/util/ArrayDeque$DeqIterator +instanceKlass jdk/internal/loader/NativeLibraries$1 +instanceKlass java/nio/charset/CoderResult +instanceKlass java/lang/Readable +instanceKlass sun/nio/cs/MS949$EncodeHolder +instanceKlass sun/nio/cs/ArrayEncoder +instanceKlass jdk/internal/loader/NativeLibraries$LibraryPaths +instanceKlass sun/instrument/InstrumentationImpl +instanceKlass java/lang/instrument/Instrumentation +instanceKlass java/lang/invoke/StringConcatFactory$3 +instanceKlass java/lang/invoke/StringConcatFactory$2 +instanceKlass java/lang/invoke/StringConcatFactory$1 +instanceKlass java/lang/invoke/StringConcatFactory +instanceKlass jdk/internal/module/ModuleBootstrap$SafeModuleFinder +instanceKlass jdk/internal/org/objectweb/asm/ClassReader +instanceKlass java/lang/ModuleLayer$Controller +instanceKlass java/util/concurrent/CopyOnWriteArrayList +instanceKlass jdk/internal/module/ServicesCatalog$ServiceProvider +instanceKlass jdk/internal/loader/AbstractClassLoaderValue$Memoizer +instanceKlass jdk/internal/module/ModuleLoaderMap$Modules +instanceKlass jdk/internal/module/ModuleLoaderMap$Mapper +instanceKlass jdk/internal/module/ModuleLoaderMap +instanceKlass java/lang/module/ResolvedModule +instanceKlass java/util/Collections$UnmodifiableCollection$1 +instanceKlass java/lang/ModuleLayer +instanceKlass java/util/ImmutableCollections$ListItr +instanceKlass java/util/ListIterator +instanceKlass java/lang/module/ModuleFinder$1 +instanceKlass java/nio/file/Path +instanceKlass java/nio/file/Watchable +instanceKlass java/lang/module/Resolver +instanceKlass java/lang/module/Configuration +instanceKlass java/util/ImmutableCollections$Set12$1 +instanceKlass java/util/stream/FindOps$FindOp +instanceKlass java/util/stream/FindOps$FindSink +instanceKlass java/util/stream/FindOps +instanceKlass java/util/stream/Sink$ChainedReference +instanceKlass java/util/stream/ReduceOps$AccumulatingSink +instanceKlass java/util/stream/TerminalSink +instanceKlass java/util/stream/Sink +instanceKlass java/util/function/Consumer +instanceKlass java/util/stream/ReduceOps$Box +instanceKlass java/util/stream/ReduceOps$ReduceOp +instanceKlass java/util/stream/TerminalOp +instanceKlass java/util/stream/ReduceOps +instanceKlass java/util/function/BinaryOperator +instanceKlass java/util/function/BiFunction +instanceKlass java/util/function/BiConsumer +instanceKlass java/util/stream/Collectors$CollectorImpl +instanceKlass java/util/stream/Collector +instanceKlass java/util/Collections$UnmodifiableCollection +instanceKlass java/util/stream/Collectors +instanceKlass java/lang/ref/Cleaner$Cleanable +instanceKlass jdk/internal/ref/CleanerImpl +instanceKlass java/lang/ref/Cleaner$1 +instanceKlass java/lang/ref/Cleaner +instanceKlass jdk/internal/ref/CleanerFactory$1 +instanceKlass java/util/concurrent/ThreadFactory +instanceKlass jdk/internal/ref/CleanerFactory +instanceKlass java/lang/invoke/MethodHandles$Lookup$ClassDefiner +instanceKlass java/lang/invoke/MethodHandles$Lookup$ClassFile +instanceKlass jdk/internal/org/objectweb/asm/Handler +instanceKlass jdk/internal/org/objectweb/asm/Attribute +instanceKlass jdk/internal/org/objectweb/asm/FieldVisitor +instanceKlass java/util/ArrayList$Itr +instanceKlass java/lang/invoke/InvokerBytecodeGenerator$ClassData +instanceKlass jdk/internal/org/objectweb/asm/AnnotationVisitor +instanceKlass jdk/internal/org/objectweb/asm/Frame +instanceKlass jdk/internal/org/objectweb/asm/Label +instanceKlass jdk/internal/org/objectweb/asm/MethodVisitor +instanceKlass java/lang/invoke/LambdaFormBuffer +instanceKlass java/lang/invoke/LambdaFormEditor$TransformKey +instanceKlass java/lang/invoke/LambdaFormEditor +instanceKlass sun/invoke/util/Wrapper$1 +instanceKlass java/lang/invoke/DelegatingMethodHandle$Holder +instanceKlass java/lang/invoke/DirectMethodHandle$2 +instanceKlass sun/invoke/empty/Empty +instanceKlass sun/invoke/util/VerifyType +instanceKlass java/lang/invoke/ClassSpecializer$Factory +instanceKlass java/lang/invoke/ClassSpecializer$SpeciesData +instanceKlass java/lang/invoke/ClassSpecializer$1 +instanceKlass java/util/function/Function +instanceKlass java/lang/invoke/ClassSpecializer +instanceKlass java/lang/invoke/InnerClassLambdaMetafactory$1 +instanceKlass java/lang/invoke/LambdaProxyClassArchive +instanceKlass jdk/internal/org/objectweb/asm/ByteVector +instanceKlass jdk/internal/org/objectweb/asm/Symbol +instanceKlass jdk/internal/org/objectweb/asm/SymbolTable +instanceKlass jdk/internal/org/objectweb/asm/ClassVisitor +instanceKlass java/lang/invoke/InfoFromMemberName +instanceKlass java/lang/invoke/MethodHandleInfo +instanceKlass jdk/internal/org/objectweb/asm/ConstantDynamic +instanceKlass sun/invoke/util/BytecodeDescriptor +instanceKlass jdk/internal/org/objectweb/asm/Handle +instanceKlass sun/security/action/GetBooleanAction +instanceKlass jdk/internal/org/objectweb/asm/Type +instanceKlass java/lang/invoke/AbstractValidatingLambdaMetafactory +instanceKlass java/lang/invoke/MethodHandleImpl$1 +instanceKlass jdk/internal/access/JavaLangInvokeAccess +instanceKlass java/lang/invoke/Invokers$Holder +instanceKlass java/lang/invoke/BootstrapMethodInvoker +instanceKlass java/util/function/Predicate +instanceKlass java/lang/WeakPairMap$Pair$Lookup +instanceKlass java/lang/WeakPairMap$Pair +instanceKlass java/lang/WeakPairMap +instanceKlass java/lang/Module$ReflectionData +instanceKlass java/lang/invoke/InvokerBytecodeGenerator$2 +instanceKlass java/lang/invoke/InvokerBytecodeGenerator +instanceKlass java/lang/invoke/LambdaForm$Holder +instanceKlass java/lang/invoke/LambdaForm$Name +instanceKlass java/lang/reflect/Array +instanceKlass java/lang/invoke/Invokers +instanceKlass java/lang/invoke/MethodHandleImpl +instanceKlass sun/invoke/util/ValueConversions +instanceKlass java/lang/invoke/DirectMethodHandle$Holder +instanceKlass java/lang/invoke/LambdaForm$NamedFunction +instanceKlass sun/invoke/util/Wrapper$Format +instanceKlass java/lang/invoke/MethodTypeForm +instanceKlass java/lang/Void +instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet +instanceKlass java/lang/invoke/LambdaMetafactory +instanceKlass sun/reflect/annotation/AnnotationParser +instanceKlass java/lang/Class$3 +instanceKlass java/lang/PublicMethods$Key +instanceKlass java/lang/PublicMethods$MethodList +instanceKlass java/util/EnumMap$1 +instanceKlass java/util/stream/StreamOpFlag$MaskBuilder +instanceKlass java/util/stream/Stream +instanceKlass java/util/stream/BaseStream +instanceKlass java/util/stream/PipelineHelper +instanceKlass java/util/stream/StreamSupport +instanceKlass java/util/Spliterators$IteratorSpliterator +instanceKlass java/util/Spliterator$OfDouble +instanceKlass java/util/Spliterator$OfLong +instanceKlass java/util/Spliterator$OfInt +instanceKlass java/util/Spliterator$OfPrimitive +instanceKlass java/util/Spliterator +instanceKlass java/util/Spliterators$EmptySpliterator +instanceKlass java/util/Spliterators +instanceKlass jdk/internal/module/DefaultRoots +instanceKlass java/util/ImmutableCollections$SetN$SetNIterator +instanceKlass jdk/internal/loader/BuiltinClassLoader$LoadedModule +instanceKlass jdk/internal/loader/AbstractClassLoaderValue +instanceKlass jdk/internal/module/ServicesCatalog +instanceKlass jdk/internal/util/Preconditions +instanceKlass sun/net/util/IPAddressUtil +instanceKlass java/net/URLStreamHandler +instanceKlass java/util/HexFormat +instanceKlass sun/net/www/ParseUtil +instanceKlass java/net/URL$3 +instanceKlass jdk/internal/access/JavaNetURLAccess +instanceKlass java/net/URL$DefaultFactory +instanceKlass java/net/URLStreamHandlerFactory +instanceKlass jdk/internal/loader/URLClassPath +instanceKlass java/security/Principal +instanceKlass java/security/ProtectionDomain$Key +instanceKlass java/security/ProtectionDomain$JavaSecurityAccessImpl +instanceKlass jdk/internal/access/JavaSecurityAccess +instanceKlass java/lang/ClassLoader$ParallelLoaders +instanceKlass java/security/cert/Certificate +instanceKlass jdk/internal/loader/ArchivedClassLoaders +instanceKlass java/util/Deque +instanceKlass java/util/Queue +instanceKlass jdk/internal/loader/ClassLoaderHelper +instanceKlass jdk/internal/loader/NativeLibraries +instanceKlass jdk/internal/loader/BootLoader +instanceKlass java/util/Optional +instanceKlass jdk/internal/module/SystemModuleFinders$SystemModuleFinder +instanceKlass java/lang/module/ModuleFinder +instanceKlass jdk/internal/module/SystemModuleFinders$3 +instanceKlass jdk/internal/module/ModuleHashes$HashSupplier +instanceKlass jdk/internal/module/SystemModuleFinders$2 +instanceKlass java/util/function/Supplier +instanceKlass java/lang/module/ModuleReference +instanceKlass jdk/internal/module/ModuleResolution +instanceKlass java/util/Collections$UnmodifiableMap +instanceKlass jdk/internal/module/ModuleHashes$Builder +instanceKlass jdk/internal/module/ModuleHashes +instanceKlass jdk/internal/module/ModuleTarget +instanceKlass java/lang/Enum +instanceKlass java/lang/module/ModuleDescriptor$Version +instanceKlass java/lang/module/ModuleDescriptor$Provides +instanceKlass java/lang/module/ModuleDescriptor$Opens +instanceKlass java/lang/module/ModuleDescriptor$Exports +instanceKlass java/lang/module/ModuleDescriptor$Requires +instanceKlass jdk/internal/module/Builder +instanceKlass jdk/internal/module/SystemModules$all +instanceKlass jdk/internal/module/SystemModules +instanceKlass jdk/internal/module/SystemModulesMap +instanceKlass java/net/URI$1 +instanceKlass jdk/internal/access/JavaNetUriAccess +instanceKlass java/net/URI +instanceKlass jdk/internal/module/SystemModuleFinders +instanceKlass jdk/internal/module/ArchivedModuleGraph +instanceKlass jdk/internal/module/ArchivedBootLayer +instanceKlass jdk/internal/module/ModuleBootstrap$Counters +instanceKlass jdk/internal/module/ModulePatcher +instanceKlass jdk/internal/util/ArraysSupport +instanceKlass java/io/FileSystem +instanceKlass java/io/DefaultFileSystem +instanceKlass java/io/File +instanceKlass java/lang/module/ModuleDescriptor$1 +instanceKlass jdk/internal/access/JavaLangModuleAccess +instanceKlass sun/invoke/util/VerifyAccess +instanceKlass java/lang/module/ModuleDescriptor +instanceKlass jdk/internal/module/ModuleBootstrap +instanceKlass java/lang/invoke/MethodHandleStatics +instanceKlass java/util/Collections +instanceKlass sun/io/Win32ErrorMode +instanceKlass jdk/internal/misc/OSEnvironment +instanceKlass jdk/internal/misc/Signal$NativeHandler +instanceKlass java/util/Hashtable$Entry +instanceKlass jdk/internal/misc/Signal +instanceKlass java/lang/Terminator$1 +instanceKlass jdk/internal/misc/Signal$Handler +instanceKlass java/lang/Terminator +instanceKlass java/nio/ByteOrder +instanceKlass java/nio/Buffer$1 +instanceKlass jdk/internal/access/JavaNioAccess +instanceKlass jdk/internal/misc/ScopedMemoryAccess +instanceKlass java/nio/charset/CharsetEncoder +instanceKlass sun/security/action/GetPropertyAction +instanceKlass java/io/Writer +instanceKlass java/io/OutputStream +instanceKlass java/io/Flushable +instanceKlass java/io/FileDescriptor$1 +instanceKlass jdk/internal/access/JavaIOFileDescriptorAccess +instanceKlass java/io/FileDescriptor +instanceKlass jdk/internal/util/StaticProperty +instanceKlass java/util/HashMap$HashIterator +instanceKlass java/lang/Integer$IntegerCache +instanceKlass java/lang/CharacterData +instanceKlass java/lang/VersionProps +instanceKlass java/lang/StringConcatHelper +instanceKlass java/lang/StringCoding +instanceKlass java/nio/charset/CodingErrorAction +instanceKlass java/lang/StringUTF16 +instanceKlass sun/nio/cs/DoubleByte +instanceKlass sun/nio/cs/MS949$DecodeHolder +instanceKlass java/nio/charset/CharsetDecoder +instanceKlass sun/nio/cs/ArrayDecoder +instanceKlass sun/nio/cs/DelegatableDecoder +instanceKlass java/lang/reflect/Modifier +instanceKlass java/lang/Class$1 +instanceKlass java/lang/Class$Atomic +instanceKlass java/lang/Class$ReflectionData +instanceKlass java/nio/charset/StandardCharsets +instanceKlass sun/nio/cs/HistoricallyNamedCharset +instanceKlass java/util/Arrays +instanceKlass java/lang/ThreadLocal +instanceKlass java/nio/charset/spi/CharsetProvider +instanceKlass java/nio/charset/Charset +instanceKlass jdk/internal/misc/VM +instanceKlass jdk/internal/util/SystemProps$Raw +instanceKlass jdk/internal/util/SystemProps +instanceKlass java/lang/System$2 +instanceKlass jdk/internal/access/JavaLangAccess +instanceKlass java/lang/ref/Reference$1 +instanceKlass jdk/internal/access/JavaLangRefAccess +instanceKlass java/lang/ref/ReferenceQueue$Lock +instanceKlass java/lang/ref/ReferenceQueue +instanceKlass jdk/internal/reflect/ReflectionFactory +instanceKlass jdk/internal/reflect/ReflectionFactory$GetReflectionFactoryAction +instanceKlass java/security/PrivilegedAction +instanceKlass java/util/concurrent/locks/LockSupport +instanceKlass java/util/concurrent/ConcurrentHashMap$Node +instanceKlass java/util/concurrent/ConcurrentHashMap$CounterCell +instanceKlass java/util/concurrent/locks/ReentrantLock +instanceKlass java/util/concurrent/locks/Lock +instanceKlass java/lang/Runtime +instanceKlass java/util/HashMap$Node +instanceKlass java/util/KeyValueHolder +instanceKlass java/util/Map$Entry +instanceKlass java/util/ImmutableCollections$MapN$MapNIterator +instanceKlass java/lang/Math +instanceKlass jdk/internal/reflect/Reflection +instanceKlass java/lang/invoke/MethodHandles$Lookup +instanceKlass java/lang/StringLatin1 +instanceKlass java/security/Permission +instanceKlass java/security/Guard +instanceKlass java/lang/invoke/MemberName$Factory +instanceKlass java/lang/invoke/MethodHandles +instanceKlass jdk/internal/access/SharedSecrets +instanceKlass java/lang/reflect/ReflectAccess +instanceKlass jdk/internal/access/JavaLangReflectAccess +instanceKlass java/util/ImmutableCollections +instanceKlass java/util/Objects +instanceKlass java/util/Set +instanceKlass jdk/internal/misc/CDS +instanceKlass java/lang/Module$ArchivedData +instanceKlass java/lang/String$CaseInsensitiveComparator +instanceKlass java/util/Comparator +instanceKlass java/io/ObjectStreamField +instanceKlass jdk/internal/vm/vector/VectorSupport$VectorPayload +instanceKlass jdk/internal/vm/vector/VectorSupport +instanceKlass java/lang/reflect/RecordComponent +instanceKlass java/util/Iterator +instanceKlass java/lang/Number +instanceKlass java/lang/Character +instanceKlass java/lang/Boolean +instanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer +instanceKlass java/lang/LiveStackFrame +instanceKlass java/lang/StackFrameInfo +instanceKlass java/lang/StackWalker$StackFrame +instanceKlass java/lang/StackStreamFactory$AbstractStackWalker +instanceKlass java/lang/StackWalker +instanceKlass java/nio/Buffer +instanceKlass java/lang/StackTraceElement +instanceKlass java/util/RandomAccess +instanceKlass java/util/List +instanceKlass java/util/AbstractCollection +instanceKlass java/util/Collection +instanceKlass java/lang/Iterable +instanceKlass java/util/concurrent/ConcurrentMap +instanceKlass java/util/AbstractMap +instanceKlass java/security/CodeSource +instanceKlass jdk/internal/loader/ClassLoaders +instanceKlass java/util/jar/Manifest +instanceKlass java/net/URL +instanceKlass java/io/InputStream +instanceKlass java/io/Closeable +instanceKlass java/lang/AutoCloseable +instanceKlass jdk/internal/module/Modules +instanceKlass jdk/internal/misc/Unsafe +instanceKlass jdk/internal/misc/UnsafeConstants +instanceKlass java/lang/AbstractStringBuilder +instanceKlass java/lang/Appendable +instanceKlass java/lang/AssertionStatusDirectives +instanceKlass java/lang/invoke/MethodHandleNatives$CallSiteContext +instanceKlass jdk/internal/invoke/NativeEntryPoint +instanceKlass java/lang/invoke/CallSite +instanceKlass java/lang/invoke/MethodType +instanceKlass java/lang/invoke/TypeDescriptor$OfMethod +instanceKlass java/lang/invoke/LambdaForm +instanceKlass java/lang/invoke/MethodHandleNatives +instanceKlass java/lang/invoke/ResolvedMethodName +instanceKlass java/lang/invoke/MemberName +instanceKlass java/lang/invoke/VarHandle +instanceKlass java/lang/invoke/MethodHandle +instanceKlass jdk/internal/reflect/CallerSensitive +instanceKlass java/lang/annotation/Annotation +instanceKlass jdk/internal/reflect/FieldAccessor +instanceKlass jdk/internal/reflect/ConstantPool +instanceKlass jdk/internal/reflect/ConstructorAccessor +instanceKlass jdk/internal/reflect/MethodAccessor +instanceKlass jdk/internal/reflect/MagicAccessorImpl +instanceKlass java/lang/reflect/Parameter +instanceKlass java/lang/reflect/Member +instanceKlass java/lang/reflect/AccessibleObject +instanceKlass java/lang/Module +instanceKlass java/util/Map +instanceKlass java/util/Dictionary +instanceKlass java/lang/ThreadGroup +instanceKlass java/lang/Thread$UncaughtExceptionHandler +instanceKlass java/lang/Thread +instanceKlass java/lang/Runnable +instanceKlass java/lang/ref/Reference +instanceKlass java/lang/Record +instanceKlass java/security/AccessController +instanceKlass java/security/AccessControlContext +instanceKlass java/security/ProtectionDomain +instanceKlass java/lang/SecurityManager +instanceKlass java/lang/Throwable +instanceKlass java/lang/System +instanceKlass java/lang/ClassLoader +instanceKlass java/lang/Cloneable +instanceKlass java/lang/Class +instanceKlass java/lang/invoke/TypeDescriptor$OfField +instanceKlass java/lang/invoke/TypeDescriptor +instanceKlass java/lang/reflect/Type +instanceKlass java/lang/reflect/GenericDeclaration +instanceKlass java/lang/reflect/AnnotatedElement +instanceKlass java/lang/String +instanceKlass java/lang/constant/ConstantDesc +instanceKlass java/lang/constant/Constable +instanceKlass java/lang/CharSequence +instanceKlass java/lang/Comparable +instanceKlass java/io/Serializable +ciInstanceKlass java/lang/Object 1 1 92 7 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 8 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 3 8 1 100 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 7 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 +ciMethod java/lang/Object equals (Ljava/lang/Object;)Z 768 0 224963 0 96 +ciMethod java/lang/Object hashCode ()I 512 0 256 0 -1 +ciMethod java/lang/Object clone ()Ljava/lang/Object; 512 0 256 0 -1 +ciInstanceKlass java/lang/Class 1 1 1611 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 7 1 10 10 12 1 1 8 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 10 12 1 1 10 7 12 1 1 1 18 12 1 1 11 7 12 1 1 1 8 1 8 1 8 1 10 7 12 1 1 1 11 12 1 1 7 1 8 1 10 12 1 11 100 12 1 1 1 10 12 1 1 11 8 1 18 8 1 10 12 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 18 12 1 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 1 10 7 1 100 1 10 12 1 1 9 12 1 1 7 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 7 1 10 12 1 7 1 7 1 10 10 12 1 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 1 10 12 1 1 10 7 1 10 12 1 10 12 1 10 12 1 1 10 9 12 1 10 12 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 12 1 1 1 10 7 12 1 1 10 12 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 7 1 10 10 10 12 1 1 10 12 1 1 10 12 10 12 1 1 100 1 8 1 10 10 12 1 1 10 12 1 7 1 11 12 1 10 100 12 1 1 10 12 1 10 12 1 10 7 12 1 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 8 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 100 1 9 12 1 10 12 1 9 12 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 10 12 11 100 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 10 12 1 1 100 1 10 10 12 1 1 10 100 12 1 1 1 100 1 7 1 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 11 7 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 1 10 12 1 9 12 1 1 7 1 10 9 12 1 1 10 12 7 1 10 12 1 9 12 1 10 100 12 1 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 10 12 10 12 1 1 100 1 10 8 1 10 12 1 11 11 12 1 1 11 7 12 1 1 11 12 1 8 1 10 12 1 10 12 1 1 9 12 1 9 12 1 1 10 7 12 1 1 9 12 1 10 12 1 1 10 10 12 1 10 7 12 1 1 1 10 7 12 1 1 10 7 12 1 1 9 12 1 1 10 12 1 9 12 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 10 12 1 10 12 1 1 9 12 1 7 1 10 10 12 1 1 7 1 10 12 1 1 7 11 7 1 9 12 1 1 9 12 1 100 1 10 12 1 9 12 1 1 9 12 1 10 12 1 10 12 1 1 9 12 1 7 1 10 10 12 1 1 10 10 12 1 1 10 12 10 10 12 1 9 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 8 10 7 8 1 18 8 1 8 1 10 12 1 9 12 1 9 12 1 1 10 12 1 7 1 7 1 10 12 1 9 12 1 1 7 1 10 10 12 1 10 7 1 9 12 1 8 1 10 12 1 7 1 10 12 1 10 12 1 1 9 12 1 100 1 8 1 10 7 1 4 10 10 12 11 7 12 1 1 1 10 12 1 100 1 10 12 1 1 10 8 1 8 1 10 12 1 1 9 7 12 1 1 11 12 7 1 11 7 12 1 1 9 12 1 10 100 12 1 1 1 10 7 12 1 1 10 12 1 1 9 12 1 9 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 12 1 7 1 11 12 1 10 7 12 1 1 1 10 12 1 7 1 11 12 1 10 7 12 1 1 1 10 12 1 10 11 12 1 11 12 1 1 10 12 1 10 12 1 1 9 12 1 1 9 100 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 1 10 12 1 18 12 1 1 11 12 1 1 18 11 12 1 18 12 1 11 12 1 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 8 1 10 12 1 7 1 9 12 1 1 100 1 100 1 100 1 100 1 100 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 15 10 12 16 15 11 12 16 1 16 15 16 15 10 12 16 16 15 10 12 16 15 16 1 15 10 12 16 1 1 1 1 1 1 1 1 100 1 1 100 1 100 1 1 100 1 100 1 1 +staticfield java/lang/Class EMPTY_CLASS_ARRAY [Ljava/lang/Class; 0 [Ljava/lang/Class; +staticfield java/lang/Class serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField; +ciInstanceKlass java/lang/reflect/GenericDeclaration 1 0 30 100 1 100 1 100 1 1 1 1 1 1 1 1 100 1 8 1 1 12 10 1 1 1 8 1 1 1 8 1 +ciMethod java/lang/Class getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 834 0 17071 0 0 +ciInstanceKlass java/lang/reflect/Type 1 1 17 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/io/Serializable 1 0 7 100 1 100 1 1 1 +instanceKlass jdk/internal/vm/vector/VectorSupport$VectorShuffle +instanceKlass jdk/internal/vm/vector/VectorSupport$VectorMask +instanceKlass jdk/internal/vm/vector/VectorSupport$Vector +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$VectorPayload 0 0 32 10 100 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$VectorShuffle 0 0 28 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$VectorMask 0 0 28 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport$Vector 0 0 28 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass jdk/internal/vm/vector/VectorSupport 0 0 487 100 1 10 100 12 1 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 11 100 12 1 1 1 11 100 12 1 1 1 11 100 12 1 1 11 100 12 1 1 1 11 100 1 100 1 10 12 1 1 11 100 12 1 1 11 100 12 1 1 100 1 11 100 12 1 1 11 100 12 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 100 12 1 1 1 100 1 10 12 1 1 11 100 12 1 1 100 1 11 100 12 1 1 11 100 12 1 1 11 100 12 1 1 11 100 1 100 1 9 12 1 1 10 100 12 1 1 11 100 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 3 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/RecordComponent 0 0 196 10 100 12 1 1 1 9 100 12 1 1 1 9 12 1 1 9 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 10 100 12 1 1 9 12 1 1 10 100 12 1 1 1 11 100 12 1 1 1 10 9 100 12 1 1 1 10 100 12 1 1 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 10 100 12 1 1 100 1 9 12 1 9 12 1 1 9 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 9 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/util/Iterator 1 1 53 100 1 8 1 10 12 1 1 10 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 11 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/System 1 1 803 10 100 12 1 1 1 9 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 10 7 12 1 1 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 18 12 1 1 10 100 12 1 1 1 100 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 11 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 100 1 10 10 12 1 1 8 1 10 12 1 8 1 10 12 1 9 12 1 1 8 1 10 7 12 1 1 1 10 12 1 1 100 1 8 1 10 9 12 1 1 8 1 10 12 1 1 10 100 12 1 1 1 8 1 10 12 1 100 1 10 12 1 8 1 10 12 1 10 12 1 1 100 1 10 12 10 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 100 1 100 1 8 1 10 12 1 10 12 1 1 7 1 10 12 1 100 1 8 1 10 10 12 1 100 1 8 1 10 8 1 10 7 12 1 1 8 1 10 12 100 1 8 1 10 10 12 1 1 10 100 12 1 1 1 100 1 18 12 1 100 1 9 100 12 1 1 1 10 12 1 100 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 7 1 10 12 1 10 12 1 100 1 10 12 1 10 7 12 1 1 1 100 1 8 1 10 9 12 1 9 12 1 10 12 1 10 100 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 8 1 11 12 1 10 12 11 12 1 1 11 7 12 1 1 1 11 7 12 1 1 11 12 1 1 7 1 11 12 1 10 12 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 11 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 8 1 7 1 9 7 12 1 1 1 10 12 1 7 1 9 12 10 9 12 7 1 10 12 8 1 10 12 1 1 8 1 10 7 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 10 7 12 1 1 1 9 12 1 1 100 1 8 1 10 12 1 1 10 7 12 1 1 1 7 1 10 12 1 1 8 1 10 8 1 8 1 8 1 8 1 10 10 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 100 1 8 1 10 10 10 12 1 1 10 12 1 1 8 1 10 12 1 8 1 10 12 1 10 12 1 1 7 1 10 10 12 1 10 12 1 9 12 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 1 1 16 15 10 12 16 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/System in Ljava/io/InputStream; org/gradle/internal/daemon/clientinput/StdInStream +staticfield java/lang/System out Ljava/io/PrintStream; org/gradle/internal/io/LinePerThreadBufferingOutputStream +staticfield java/lang/System err Ljava/io/PrintStream; org/gradle/internal/io/LinePerThreadBufferingOutputStream +instanceKlass org/codehaus/groovy/reflection/ClassLoaderForClassArtifacts +instanceKlass org/codehaus/groovy/reflection/SunClassLoader +instanceKlass org/gradle/internal/classloader/CachingClassLoader +instanceKlass org/gradle/internal/classloader/MultiParentClassLoader +instanceKlass org/gradle/internal/classloader/FilteringClassLoader$RetrieveSystemPackagesClassLoader +instanceKlass org/gradle/internal/classloader/FilteringClassLoader +instanceKlass org/gradle/internal/classloader/FilteringClassLoader +instanceKlass jdk/internal/reflect/DelegatingClassLoader +instanceKlass java/security/SecureClassLoader +ciInstanceKlass java/lang/ClassLoader 1 1 1098 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 1 100 1 8 1 10 12 1 10 7 12 1 1 1 10 100 12 1 10 7 1 10 7 1 7 1 7 1 10 12 1 10 12 1 9 12 1 1 10 10 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 7 1 10 12 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 10 12 1 1 9 12 10 12 1 1 7 1 10 8 1 10 12 1 1 10 12 1 10 7 1 7 1 10 12 1 1 10 7 12 1 1 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 10 12 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 100 1 10 12 1 100 1 10 12 1 10 100 12 1 1 1 10 10 12 1 1 10 12 1 1 100 1 8 1 10 8 1 10 12 1 10 12 1 100 1 8 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 7 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 9 12 1 10 12 1 1 8 1 8 1 10 7 12 1 1 100 1 10 10 12 10 12 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 7 1 7 1 10 12 1 1 10 12 1 10 7 1 10 12 1 100 1 18 12 1 10 100 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 8 1 100 1 10 10 12 1 9 12 1 10 7 12 1 1 10 12 1 100 1 8 1 10 12 1 10 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 1 100 1 100 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 7 1 18 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 18 12 1 11 7 12 1 1 1 7 1 10 12 1 1 10 12 1 10 11 12 1 1 10 18 10 12 1 1 11 7 12 1 18 12 1 11 12 1 1 10 12 10 12 1 1 10 12 1 1 100 1 8 1 10 10 12 1 8 1 8 1 10 100 12 1 1 10 12 1 100 1 10 10 12 1 8 1 8 1 8 1 10 12 1 10 12 1 1 10 12 1 10 100 12 1 1 1 11 100 12 1 1 100 1 10 11 10 12 1 10 12 1 10 12 1 1 9 100 12 1 1 9 12 1 1 9 12 9 12 1 9 12 1 9 12 1 8 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 11 12 1 1 10 100 12 1 1 1 100 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 1 15 10 12 16 1 16 15 10 12 16 1 16 1 15 10 12 16 15 10 12 16 15 10 12 16 1 1 100 1 100 1 1 +staticfield java/lang/ClassLoader nocerts [Ljava/security/cert/Certificate; 0 [Ljava/security/cert/Certificate; +staticfield java/lang/ClassLoader $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/reflect/DelegatingClassLoader 1 1 18 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/loader/Loader +instanceKlass java/net/URLClassLoader +instanceKlass jdk/internal/loader/BuiltinClassLoader +ciInstanceKlass java/security/SecureClassLoader 1 1 102 10 7 12 1 1 1 7 1 10 12 1 9 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 7 1 10 7 1 10 12 1 7 1 10 12 1 11 7 12 1 1 1 7 1 11 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +instanceKlass jdk/internal/loader/ClassLoaders$BootClassLoader +instanceKlass jdk/internal/loader/ClassLoaders$PlatformClassLoader +instanceKlass jdk/internal/loader/ClassLoaders$AppClassLoader +ciInstanceKlass jdk/internal/loader/BuiltinClassLoader 1 1 737 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 7 1 10 12 1 9 12 1 10 12 1 9 12 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 100 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 7 1 10 12 1 10 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 7 1 8 1 8 1 10 9 12 1 1 10 7 12 1 1 11 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 1 10 7 12 1 1 100 1 10 7 12 1 1 1 10 12 1 100 1 8 1 10 12 1 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 1 11 7 12 1 1 11 12 1 7 1 10 11 12 1 1 11 10 12 1 1 7 1 10 12 1 10 7 12 1 10 12 1 7 1 10 12 1 10 7 12 1 1 1 100 1 10 12 1 1 11 12 1 7 1 100 1 10 12 1 10 12 1 1 100 1 100 1 10 12 1 10 12 1 18 12 1 1 10 12 1 10 12 1 1 18 100 1 10 7 12 1 1 1 7 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 100 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 18 12 1 7 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 10 12 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 11 12 1 7 1 10 12 1 7 1 100 1 10 12 1 10 12 1 11 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 1 10 7 12 1 1 10 12 1 100 1 8 1 8 1 10 10 12 1 8 1 8 1 10 7 12 1 1 1 11 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 10 7 12 1 1 1 8 1 10 12 1 7 1 10 12 1 1 10 12 1 7 1 10 11 12 1 1 10 12 10 12 1 10 12 1 100 1 10 12 1 10 12 1 10 10 12 1 10 7 12 1 1 8 1 10 7 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 16 15 10 12 16 15 10 12 16 1 1 1 100 1 1 1 1 1 100 1 100 1 1 +staticfield jdk/internal/loader/BuiltinClassLoader packageToModule Ljava/util/Map; java/util/concurrent/ConcurrentHashMap +staticfield jdk/internal/loader/BuiltinClassLoader $assertionsDisabled Z 1 +ciInstanceKlass java/security/AccessController 1 1 295 10 100 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 100 1 100 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 9 100 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 10 100 1 10 11 7 12 1 1 1 10 7 12 1 1 11 7 1 100 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 1 8 1 10 100 12 1 1 1 8 1 100 1 10 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 8 1 10 100 12 1 1 8 1 8 1 10 12 1 8 1 10 12 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 3 1 1 1 +staticfield java/security/AccessController $assertionsDisabled Z 1 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor38 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor33 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor32 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor31 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor30 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor29 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor28 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor27 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor26 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor25 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor24 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor23 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor22 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor21 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor20 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor19 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor18 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor17 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor16 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor15 +instanceKlass jdk/internal/reflect/SerializationConstructorAccessorImpl +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor14 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor13 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor12 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor11 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor10 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor9 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor8 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor7 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor6 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor5 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor4 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor3 +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor2 +instanceKlass jdk/internal/reflect/BootstrapConstructorAccessorImpl +instanceKlass jdk/internal/reflect/GeneratedConstructorAccessor1 +instanceKlass jdk/internal/reflect/DelegatingConstructorAccessorImpl +instanceKlass jdk/internal/reflect/NativeConstructorAccessorImpl +ciInstanceKlass jdk/internal/reflect/ConstructorAccessorImpl 1 1 27 10 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 +instanceKlass jdk/internal/reflect/FieldAccessorImpl +instanceKlass jdk/internal/reflect/ConstructorAccessorImpl +instanceKlass jdk/internal/reflect/MethodAccessorImpl +ciInstanceKlass jdk/internal/reflect/MagicAccessorImpl 1 1 16 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor49 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor48 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor47 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor46 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor45 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor44 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor43 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor42 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor41 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor40 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor39 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor38 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor37 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor36 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor35 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor34 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor33 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor32 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor31 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor30 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor29 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor28 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor27 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor26 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor25 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor24 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor23 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor22 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor21 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor20 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor19 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor18 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor17 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor16 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor15 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor14 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor13 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor12 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor11 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor10 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor9 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor8 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor7 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor6 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor5 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor4 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor3 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor2 +instanceKlass jdk/internal/reflect/GeneratedMethodAccessor1 +instanceKlass jdk/internal/reflect/DelegatingMethodAccessorImpl +instanceKlass jdk/internal/reflect/NativeMethodAccessorImpl +ciInstanceKlass jdk/internal/reflect/MethodAccessorImpl 1 1 25 10 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 +ciInstanceKlass java/lang/Module 1 1 959 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 7 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 8 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 9 12 1 1 11 12 1 9 7 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 100 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 10 12 1 9 12 1 1 11 7 12 1 1 10 12 1 1 9 12 1 9 12 1 10 12 1 10 12 1 100 1 8 1 10 10 12 1 1 10 12 1 8 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 18 12 1 1 10 12 1 1 11 12 1 9 12 1 11 12 10 100 12 1 1 100 1 8 1 10 7 1 11 12 1 1 10 12 1 10 12 1 10 12 1 1 11 12 1 1 11 7 12 1 1 11 12 1 1 9 12 1 11 12 1 10 12 1 1 10 12 1 1 9 12 1 10 12 10 7 12 1 1 10 7 12 1 1 10 7 1 18 12 1 1 11 100 12 1 1 1 18 12 1 11 12 1 1 10 100 12 1 1 1 11 12 1 1 10 7 12 1 1 4 7 1 11 12 1 7 1 7 1 10 10 7 12 1 1 1 10 11 7 12 1 8 1 10 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 7 1 10 12 1 10 11 12 1 1 10 12 10 12 1 1 9 12 1 100 1 10 10 12 1 1 11 100 1 10 12 1 1 11 12 1 10 10 12 1 11 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 1 10 10 12 1 1 10 12 1 18 12 1 11 12 1 18 12 1 10 12 1 10 12 1 10 12 7 1 10 12 1 10 12 1 10 12 1 9 12 1 7 1 10 10 10 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 18 12 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 1 10 12 1 1 10 100 12 1 1 100 1 10 12 1 1 100 1 8 1 100 1 10 100 1 100 1 3 10 12 1 100 1 10 12 1 10 12 1 1 10 12 1 1 100 1 10 12 1 10 12 1 1 100 1 100 1 10 12 8 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 10 12 1 1 7 1 10 10 12 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 1 10 100 12 1 1 8 1 10 12 1 8 1 10 12 1 10 12 10 12 1 8 1 10 10 100 12 1 1 7 1 10 10 12 1 10 7 12 1 1 9 12 1 9 12 1 9 12 1 9 12 1 10 12 11 12 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 15 10 12 16 16 15 10 12 16 16 15 10 16 1 15 10 12 16 1 15 10 12 16 1 16 15 10 12 16 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Module ALL_UNNAMED_MODULE Ljava/lang/Module; java/lang/Module +staticfield java/lang/Module ALL_UNNAMED_MODULE_SET Ljava/util/Set; java/util/ImmutableCollections$Set12 +staticfield java/lang/Module EVERYONE_MODULE Ljava/lang/Module; java/lang/Module +staticfield java/lang/Module EVERYONE_SET Ljava/util/Set; java/util/ImmutableCollections$Set12 +staticfield java/lang/Module $assertionsDisabled Z 1 +ciInstanceKlass java/util/ArrayList 1 1 492 10 7 12 1 1 1 7 1 9 7 12 1 1 1 9 12 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 11 7 12 1 1 1 9 12 1 1 10 12 1 1 7 10 7 12 1 1 1 9 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 100 1 10 12 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 10 12 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 100 1 10 11 12 1 1 11 100 12 1 1 1 11 12 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 10 10 12 1 1 10 12 1 8 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 11 12 1 100 1 10 7 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 100 1 8 1 10 7 1 10 12 1 7 1 10 12 1 10 12 1 1 7 1 10 12 1 10 12 1 1 11 7 12 1 1 7 1 10 12 1 10 12 1 1 11 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 10 12 1 1 100 1 100 1 100 1 1 1 1 5 0 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 +staticfield java/util/ArrayList EMPTY_ELEMENTDATA [Ljava/lang/Object; 0 [Ljava/lang/Object; +staticfield java/util/ArrayList DEFAULTCAPACITY_EMPTY_ELEMENTDATA [Ljava/lang/Object; 0 [Ljava/lang/Object; +ciInstanceKlass java/util/concurrent/ConcurrentHashMap 1 1 1210 7 1 7 1 3 10 12 1 1 3 100 1 10 7 12 1 1 1 100 1 10 100 12 1 1 1 100 1 11 12 1 1 11 12 1 11 12 1 1 9 12 1 1 9 12 1 1 9 12 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 4 10 12 1 9 12 1 10 12 1 1 100 1 10 5 0 10 12 1 10 12 1 1 5 0 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 9 12 1 9 12 1 1 10 12 1 1 9 12 1 10 12 1 1 9 12 1 1 10 12 1 1 100 1 10 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 7 1 100 1 8 1 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 10 12 1 1 11 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 7 1 11 12 1 11 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 9 10 12 1 1 9 12 1 10 12 1 1 5 0 9 12 1 1 7 1 10 12 1 9 12 1 1 7 1 10 12 1 9 12 1 7 1 10 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 11 100 1 10 12 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 8 1 10 12 1 8 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 10 12 1 9 12 1 9 10 12 1 9 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 100 1 10 12 11 100 12 1 1 10 11 7 12 1 10 12 1 100 1 10 12 1 100 1 10 10 9 7 12 1 1 1 10 12 3 10 100 12 1 1 9 12 1 10 12 1 1 9 12 1 1 9 12 1 10 12 1 1 10 7 12 1 1 9 12 1 9 7 12 1 1 10 12 1 1 10 12 1 3 9 12 1 9 12 1 10 12 1 1 7 1 9 3 9 12 1 100 1 10 12 1 9 12 1 10 12 1 9 12 1 10 12 1 9 12 1 10 100 12 1 1 1 100 10 12 1 100 1 5 0 10 100 12 1 1 100 1 10 12 1 1 10 12 1 10 12 1 100 1 10 12 1 10 100 1 100 1 10 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 1 100 1 10 12 1 10 10 12 1 100 1 10 12 1 10 10 12 1 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 10 100 1 10 10 100 1 10 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 10 100 1 10 10 100 1 10 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 100 1 10 12 1 10 10 12 1 10 7 12 1 1 1 10 12 1 7 1 7 1 10 12 1 9 12 1 1 9 12 1 1 10 12 1 1 8 10 12 1 1 8 8 8 8 7 10 12 1 1 10 12 1 100 1 8 1 10 7 1 100 1 100 1 1 1 5 0 1 1 3 1 3 1 1 1 1 3 1 3 1 3 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/util/concurrent/ConcurrentHashMap NCPU I 4 +staticfield java/util/concurrent/ConcurrentHashMap serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField; +staticfield java/util/concurrent/ConcurrentHashMap U Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield java/util/concurrent/ConcurrentHashMap SIZECTL J 20 +staticfield java/util/concurrent/ConcurrentHashMap TRANSFERINDEX J 32 +staticfield java/util/concurrent/ConcurrentHashMap BASECOUNT J 24 +staticfield java/util/concurrent/ConcurrentHashMap CELLSBUSY J 36 +staticfield java/util/concurrent/ConcurrentHashMap CELLVALUE J 144 +staticfield java/util/concurrent/ConcurrentHashMap ABASE I 16 +staticfield java/util/concurrent/ConcurrentHashMap ASHIFT I 2 +ciInstanceKlass java/lang/String 1 1 1396 10 7 12 1 1 1 8 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 10 7 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 12 1 1 10 12 9 7 12 1 1 3 10 7 12 1 1 1 7 1 11 12 1 1 11 12 1 11 12 1 1 10 7 12 1 1 1 10 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 11 12 1 1 10 12 1 1 10 12 10 12 1 1 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 12 1 1 100 1 7 1 10 12 1 1 10 12 1 1 10 12 1 100 1 100 1 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 7 1 11 10 12 1 10 12 11 12 1 11 12 1 10 12 1 1 10 12 1 1 10 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 100 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 10 12 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 3 3 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 10 12 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 10 100 1 10 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 100 1 10 10 12 1 100 1 10 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 10 12 1 1 10 100 1 10 10 12 1 10 12 1 1 10 12 1 1 10 100 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 11 7 1 11 12 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 10 12 1 9 12 1 1 11 7 12 1 1 1 10 10 12 1 10 12 1 1 10 10 12 1 10 12 1 10 12 1 1 9 12 1 10 12 1 1 10 10 12 1 1 10 12 10 10 12 1 10 12 10 10 12 10 10 12 1 10 12 1 10 12 10 10 12 10 12 1 10 12 10 12 10 10 12 1 10 12 1 1 10 12 1 10 10 12 1 10 7 12 1 1 1 10 12 1 1 10 10 7 12 1 1 1 11 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 100 12 1 1 10 12 1 100 1 100 1 8 1 10 10 10 12 1 8 1 10 12 1 3 3 7 1 10 10 12 1 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 7 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 11 7 12 1 1 1 11 7 12 1 1 11 12 1 1 10 12 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 10 12 1 10 10 12 10 12 1 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 12 1 1 10 10 12 1 8 1 10 12 1 1 18 12 1 1 11 100 12 1 1 1 7 1 3 18 12 1 18 12 1 8 1 10 100 12 1 1 1 11 12 1 1 10 12 10 10 12 1 10 11 12 1 1 10 12 1 1 11 12 1 18 3 11 10 12 1 11 11 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 11 100 12 1 7 1 100 1 10 12 1 7 1 10 10 7 12 1 1 1 100 1 10 7 1 10 10 12 1 10 10 12 1 8 1 10 10 12 1 8 1 8 1 10 12 1 10 12 1 10 10 12 10 100 12 1 1 10 100 12 1 1 10 100 12 1 1 8 1 10 12 1 10 12 1 1 10 10 12 8 1 8 1 10 8 1 8 1 8 1 8 1 10 12 1 10 12 1 8 1 10 100 12 1 1 1 10 12 10 12 1 1 10 12 10 10 12 10 12 7 1 9 12 1 1 7 1 10 100 1 100 1 100 1 100 1 1 1 1 1 1 5 0 1 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 12 16 15 10 12 15 10 12 15 10 12 1 1 1 1 100 1 100 1 1 1 +staticfield java/lang/String COMPACT_STRINGS Z 1 +staticfield java/lang/String serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField; +staticfield java/lang/String CASE_INSENSITIVE_ORDER Ljava/util/Comparator; java/lang/String$CaseInsensitiveComparator +ciInstanceKlass java/security/ProtectionDomain 1 1 324 10 7 12 1 1 1 9 7 12 1 1 1 7 1 10 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 7 1 9 12 1 9 12 1 1 7 1 9 12 1 1 9 12 1 10 100 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 9 12 1 9 100 12 1 1 10 12 1 1 10 100 1 10 12 1 1 8 1 100 1 8 1 10 12 1 10 10 100 12 1 1 1 10 12 1 1 8 1 11 8 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 8 1 8 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 10 100 12 1 1 1 10 100 1 10 12 1 10 12 1 1 11 100 12 1 1 11 12 1 100 1 11 100 12 1 1 1 10 12 1 10 11 12 1 1 11 12 1 1 10 12 1 10 7 12 1 1 10 100 12 1 1 11 12 1 10 12 8 1 8 1 10 7 12 1 1 1 7 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 +staticfield java/security/ProtectionDomain filePermCompatInPD Z 0 +ciInstanceKlass java/security/CodeSource 1 1 395 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 100 12 1 1 10 100 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 100 1 10 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 100 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 8 1 8 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 1 8 1 10 12 1 8 1 8 1 8 1 10 100 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 100 1 10 12 1 10 12 10 12 1 1 10 100 12 1 1 10 12 1 100 1 10 12 10 8 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 100 1 100 1 8 1 8 1 10 10 12 1 1 10 100 12 1 1 1 100 1 10 12 10 12 1 1 11 100 12 1 1 10 10 12 1 11 10 12 1 8 1 100 1 10 12 1 10 12 1 1 10 12 1 11 12 1 1 11 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StringBuilder 1 1 409 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 7 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 100 1 100 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 10 12 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 100 1 100 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/reflect/Reflection 1 1 376 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 11 100 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 9 12 1 11 7 12 1 1 100 1 8 1 10 7 1 10 12 1 11 7 12 1 1 1 11 12 1 1 10 12 1 1 7 1 7 1 10 12 1 8 1 11 12 1 1 10 100 12 1 1 1 100 1 11 7 12 1 1 10 7 12 1 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 11 100 12 1 1 1 10 12 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 10 12 1 8 1 8 1 8 1 8 1 100 1 10 8 1 11 12 1 1 9 12 1 1 7 1 8 1 8 1 11 12 1 7 1 7 1 7 1 7 1 8 1 11 12 1 11 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 +staticfield jdk/internal/reflect/Reflection ALL_MEMBERS Ljava/util/Set; java/util/ImmutableCollections$Set12 +ciInstanceKlass jdk/internal/loader/ClassLoaders 1 1 183 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 7 1 11 100 12 1 1 1 100 1 11 12 1 1 11 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 100 1 100 1 10 7 12 1 1 1 9 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 1 7 1 8 1 10 7 12 1 1 1 10 12 1 1 7 1 10 12 1 10 12 1 10 12 1 8 1 10 7 12 1 1 8 1 8 1 10 12 1 7 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/loader/ClassLoaders JLA Ljdk/internal/access/JavaLangAccess; java/lang/System$2 +staticfield jdk/internal/loader/ClassLoaders BOOT_LOADER Ljdk/internal/loader/ClassLoaders$BootClassLoader; jdk/internal/loader/ClassLoaders$BootClassLoader +staticfield jdk/internal/loader/ClassLoaders PLATFORM_LOADER Ljdk/internal/loader/ClassLoaders$PlatformClassLoader; jdk/internal/loader/ClassLoaders$PlatformClassLoader +staticfield jdk/internal/loader/ClassLoaders APP_LOADER Ljdk/internal/loader/ClassLoaders$AppClassLoader; jdk/internal/loader/ClassLoaders$AppClassLoader +ciInstanceKlass jdk/internal/misc/Unsafe 1 1 1285 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 10 10 12 1 1 10 12 1 1 5 0 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 5 0 5 0 5 0 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 100 1 8 1 10 100 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 7 12 1 1 9 12 1 100 1 10 10 12 1 1 8 1 10 8 1 8 1 10 12 1 1 9 7 12 1 1 1 9 100 1 9 7 1 9 100 1 9 9 100 1 9 7 1 9 100 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 5 0 5 0 9 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 8 1 3 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 10 100 1 10 9 12 1 5 0 10 12 1 1 5 0 10 12 1 5 0 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 5 0 5 0 5 0 10 12 1 1 10 12 1 10 12 1 10 12 10 100 12 1 1 8 1 100 1 11 12 1 1 8 1 11 12 1 1 10 100 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 1 10 12 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 7 1 9 12 1 10 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/misc/Unsafe theUnsafe Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield jdk/internal/misc/Unsafe ARRAY_BOOLEAN_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_BYTE_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_SHORT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_CHAR_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_INT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_LONG_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_FLOAT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_DOUBLE_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_OBJECT_BASE_OFFSET I 16 +staticfield jdk/internal/misc/Unsafe ARRAY_BOOLEAN_INDEX_SCALE I 1 +staticfield jdk/internal/misc/Unsafe ARRAY_BYTE_INDEX_SCALE I 1 +staticfield jdk/internal/misc/Unsafe ARRAY_SHORT_INDEX_SCALE I 2 +staticfield jdk/internal/misc/Unsafe ARRAY_CHAR_INDEX_SCALE I 2 +staticfield jdk/internal/misc/Unsafe ARRAY_INT_INDEX_SCALE I 4 +staticfield jdk/internal/misc/Unsafe ARRAY_LONG_INDEX_SCALE I 8 +staticfield jdk/internal/misc/Unsafe ARRAY_FLOAT_INDEX_SCALE I 4 +staticfield jdk/internal/misc/Unsafe ARRAY_DOUBLE_INDEX_SCALE I 8 +staticfield jdk/internal/misc/Unsafe ARRAY_OBJECT_INDEX_SCALE I 4 +staticfield jdk/internal/misc/Unsafe ADDRESS_SIZE I 8 +ciMethod java/lang/ClassLoader getClassLoader (Ljava/lang/Class;)Ljava/lang/ClassLoader; 0 0 1421 0 0 +ciInstanceKlass java/util/Map 1 1 259 11 7 12 1 1 1 11 12 1 1 10 7 12 1 1 11 12 1 1 11 7 12 1 1 1 11 100 12 1 1 1 11 12 1 1 7 1 11 12 1 11 12 1 100 1 100 1 10 12 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 1 11 12 1 10 12 1 1 11 12 1 11 7 12 1 9 7 12 1 1 1 100 1 10 12 7 1 7 1 10 12 1 7 1 10 7 1 11 12 1 1 7 1 11 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ThreadGroup 1 1 293 10 7 12 1 1 1 9 7 12 1 1 1 8 1 9 12 1 1 7 1 9 12 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 9 12 1 10 100 12 1 1 1 9 12 1 9 12 1 1 10 7 12 1 1 1 100 10 12 1 1 10 7 12 1 1 1 10 100 12 1 9 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 100 1 10 10 12 1 10 12 1 10 12 1 7 10 12 1 9 12 1 1 10 12 1 1 8 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 100 1 100 1 9 12 1 100 1 10 8 1 10 12 1 1 10 12 1 1 8 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 100 1 8 1 10 8 1 10 12 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass org/gradle/internal/configuration/inputs/AccessTrackingProperties +instanceKlass java/security/Provider +ciInstanceKlass java/util/Properties 1 1 651 10 7 12 1 1 1 100 1 10 7 12 1 1 7 1 10 12 1 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 8 1 10 7 12 1 1 1 7 1 10 12 1 10 12 1 1 8 1 10 12 1 7 1 10 12 10 12 1 1 9 12 1 1 10 12 1 1 7 1 10 12 1 10 12 1 10 12 1 1 7 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 100 1 3 10 10 100 12 1 1 1 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 1 8 1 10 100 12 1 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 12 1 10 12 1 1 100 1 9 100 12 1 1 1 10 12 1 10 12 1 1 100 1 10 10 10 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 7 1 11 12 1 11 12 1 10 12 1 1 8 1 10 12 1 10 12 1 100 1 10 10 12 1 1 10 100 12 1 1 9 100 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 100 1 10 8 1 8 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 1 10 12 1 1 7 1 10 10 12 1 11 7 12 1 1 10 7 12 1 1 1 8 1 10 100 12 1 1 11 8 1 10 100 1 11 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 1 7 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 100 1 10 11 100 12 1 1 4 11 10 12 1 1 10 100 12 1 1 11 12 1 10 12 1 1 10 100 12 1 1 10 12 1 100 1 8 1 10 12 1 10 10 100 12 1 1 1 100 1 6 0 10 12 1 1 11 100 12 1 1 1 10 12 1 10 12 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 100 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 +staticfield java/util/Properties UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +instanceKlass java/util/Hashtable +ciInstanceKlass java/util/Dictionary 1 1 36 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/util/Properties +ciInstanceKlass java/util/Hashtable 1 1 512 100 1 10 7 12 1 1 1 9 7 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 8 1 10 12 1 9 12 1 1 7 1 9 12 1 1 4 10 7 12 1 1 1 9 12 1 4 10 12 1 11 7 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 1 100 1 10 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 10 12 1 3 9 12 1 9 12 1 3 10 12 1 10 12 1 10 12 1 1 11 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 7 1 11 12 1 11 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 9 12 9 12 1 1 10 100 1 100 1 10 12 1 10 8 1 10 10 12 1 8 1 10 8 1 10 7 12 1 1 1 7 1 10 12 1 10 12 1 100 1 10 12 1 10 12 1 1 7 1 10 100 1 10 10 12 1 1 11 12 1 1 11 12 1 100 1 10 10 10 100 12 1 1 11 100 12 1 1 1 100 1 10 11 100 12 1 1 11 100 12 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 8 10 100 12 1 1 100 1 8 1 10 4 10 12 4 10 12 1 8 1 10 12 10 100 12 1 1 1 100 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 100 1 100 1 1 1 1 1 1 5 0 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/util/Set 1 1 140 100 1 10 7 12 1 1 1 9 7 12 1 1 1 7 1 10 12 1 1 10 12 1 7 1 7 1 10 12 1 7 1 7 1 7 1 10 12 1 10 12 1 1 11 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/util/Map$Entry 1 1 178 18 12 1 1 7 1 7 1 18 10 100 12 1 1 1 18 12 1 18 100 1 11 7 12 1 1 1 11 12 1 11 7 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 8 1 10 12 1 1 8 1 8 1 8 1 10 12 1 10 12 1 8 10 100 1 10 12 1 8 10 12 1 8 1 10 12 1 8 10 12 1 8 1 10 12 1 1 8 1 100 1 8 1 10 12 1 1 11 12 7 1 11 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 15 11 12 16 3 3 15 11 12 15 11 12 15 11 12 1 1 100 1 100 1 1 +instanceKlass org/apache/commons/compress/utils/BoundedArchiveInputStream +instanceKlass java/io/SequenceInputStream +instanceKlass org/apache/commons/compress/archivers/zip/ExplodingInputStream +instanceKlass org/apache/commons/compress/compressors/CompressorInputStream +instanceKlass org/apache/commons/io/input/ReaderInputStream +instanceKlass org/apache/commons/io/input/ClosedInputStream +instanceKlass org/apache/tools/ant/DemuxInputStream +instanceKlass sun/nio/ch/ChannelInputStream +instanceKlass jdk/nio/zipfs/ZipFileSystem$EntryInputStream +instanceKlass org/gradle/internal/io/StreamByteBuffer$StreamByteBufferInputStream +instanceKlass java/io/ObjectInputStream +instanceKlass com/google/common/io/BaseEncoding$StandardBaseEncoding$2 +instanceKlass org/gradle/util/internal/BulkReadInputStream +instanceKlass org/apache/tools/ant/util/FileUtils$1 +instanceKlass org/gradle/internal/remote/internal/inet/SocketConnection$SocketInputStream +instanceKlass org/gradle/internal/file/RandomAccessFileInputStream +instanceKlass org/gradle/internal/daemon/clientinput/StdInStream +instanceKlass com/esotericsoftware/kryo/io/Input +instanceKlass org/gradle/internal/serialize/kryo/KryoBackedDecoder$1 +instanceKlass org/gradle/internal/serialize/AbstractDecoder$DecoderStream +instanceKlass org/gradle/internal/stream/EncodedStream$EncodedInput +instanceKlass java/util/zip/ZipFile$ZipFileInputStream +instanceKlass java/io/FilterInputStream +instanceKlass java/io/FileInputStream +instanceKlass java/io/ByteArrayInputStream +ciInstanceKlass java/io/InputStream 1 1 184 100 1 10 7 12 1 1 1 100 1 10 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 7 1 3 10 12 1 1 100 1 8 1 10 12 1 10 7 12 1 1 1 3 100 1 8 1 10 10 7 12 1 1 1 7 1 10 11 7 12 1 1 1 10 12 1 1 11 12 1 1 11 7 12 1 1 1 11 12 1 1 7 1 10 7 12 1 1 1 5 0 10 12 1 10 12 1 1 100 1 10 8 1 10 8 1 8 1 10 12 1 1 10 100 12 1 1 1 100 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/io/ByteArrayInputStream 1 1 96 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass com/sun/tools/javac/file/BaseFileManager$1 +instanceKlass net/rubygrapefruit/platform/internal/jni/AbstractFileEventFunctions$AbstractFileWatcher$1 +instanceKlass org/gradle/launcher/daemon/server/exec/DaemonConnectionBackedEventConsumer$ForwardEvents +instanceKlass org/gradle/launcher/daemon/server/exec/LogToClient$AsynchronousLogDispatcher +instanceKlass java/util/concurrent/ForkJoinWorkerThread +instanceKlass java/util/logging/LogManager$Cleaner +instanceKlass jdk/internal/misc/InnocuousThread +instanceKlass java/lang/ref/Finalizer$FinalizerThread +instanceKlass java/lang/ref/Reference$ReferenceHandler +ciInstanceKlass java/lang/Thread 1 1 610 9 7 12 1 1 1 9 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 100 1 8 1 10 12 1 1 3 8 1 100 1 5 0 10 12 1 1 10 7 12 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 100 1 8 1 10 9 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 10 7 12 1 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 9 12 1 10 12 1 1 9 12 1 100 1 10 7 1 10 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 9 12 1 100 1 10 10 12 1 1 10 12 1 10 12 1 100 1 11 7 12 1 1 9 7 12 1 1 1 10 12 1 10 12 1 10 12 9 12 1 1 10 9 12 1 10 12 1 100 1 10 10 12 1 1 9 12 1 10 12 1 11 100 12 1 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 100 1 10 10 12 1 10 12 1 10 12 1 9 100 12 1 1 1 10 12 1 1 10 12 1 100 1 8 1 10 10 12 1 10 12 8 1 10 12 1 8 1 10 8 1 8 1 10 100 12 1 1 10 100 12 1 1 1 100 1 8 1 10 9 12 1 9 12 1 1 10 12 1 1 10 10 12 1 1 9 12 1 10 12 1 1 100 1 10 12 11 100 12 1 1 1 9 100 12 1 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 11 100 12 1 1 1 100 1 10 12 1 10 12 1 1 11 12 1 10 12 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 1 8 1 9 12 1 10 12 1 1 11 100 12 1 1 1 10 100 12 1 1 1 11 12 1 10 12 1 7 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 1 +staticfield java/lang/Thread EMPTY_STACK_TRACE [Ljava/lang/StackTraceElement; 0 [Ljava/lang/StackTraceElement; +ciMethod java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 288 0 137003 0 96 +ciMethod java/lang/System allowSecurityManager ()Z 288 0 137002 0 0 +ciInstanceKlass java/lang/StringLatin1 1 1 380 7 1 10 100 12 1 1 1 100 1 10 12 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 10 12 1 10 12 1 1 10 9 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 12 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 100 1 10 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 100 1 100 1 8 1 10 12 1 8 1 10 12 100 1 10 10 10 7 12 1 1 1 8 1 8 1 8 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 10 12 1 10 12 10 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +staticfield java/lang/StringLatin1 $assertionsDisabled Z 1 +ciMethod java/lang/StringLatin1 equals ([B[B)Z 412 486 10049 0 -1 +ciMethod java/lang/StringLatin1 hashCode ([B)I 246 4964 1130 0 352 +ciInstanceKlass java/lang/StringUTF16 1 1 598 100 1 7 1 10 100 12 1 1 1 100 1 10 7 1 3 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 100 1 8 1 10 12 1 9 12 1 1 9 12 1 10 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 100 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 3 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 10 12 10 12 10 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 10 12 1 100 1 8 1 8 1 10 12 1 1 100 1 10 10 100 12 1 1 1 10 100 12 1 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 10 12 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 5 0 5 0 10 12 1 10 12 10 12 10 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 +staticfield java/lang/StringUTF16 HI_BYTE_SHIFT I 0 +staticfield java/lang/StringUTF16 LO_BYTE_SHIFT I 8 +staticfield java/lang/StringUTF16 $assertionsDisabled Z 1 +ciMethod java/lang/StringUTF16 hashCode ([B)I 0 0 55 0 0 +ciMethod java/lang/StringUTF16 getChar ([BI)C 1024 0 27156 0 -1 +instanceKlass java/lang/Exception +instanceKlass java/lang/Error +ciInstanceKlass java/lang/Throwable 1 1 393 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 100 1 100 1 10 8 1 10 12 1 1 8 1 10 100 12 1 1 10 10 12 1 100 1 8 1 10 10 12 1 1 10 7 12 1 1 10 12 1 8 1 9 100 12 1 1 1 10 12 1 1 100 1 10 12 10 12 1 100 1 10 10 7 12 1 1 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 8 1 8 1 9 12 1 1 10 100 12 1 1 100 1 10 11 12 1 8 1 8 1 10 7 12 1 1 8 1 10 12 1 8 1 100 1 10 12 1 9 12 1 1 10 12 1 10 7 12 1 9 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 1 8 1 10 12 1 1 8 1 10 10 9 100 12 1 1 1 8 1 10 12 1 1 10 100 1 8 1 10 11 12 1 1 8 1 9 12 1 10 100 12 1 1 11 9 12 1 1 11 12 1 1 100 10 12 1 10 12 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Throwable UNASSIGNED_STACK [Ljava/lang/StackTraceElement; 0 [Ljava/lang/StackTraceElement; +staticfield java/lang/Throwable SUPPRESSED_SENTINEL Ljava/util/List; java/util/Collections$EmptyList +staticfield java/lang/Throwable EMPTY_THROWABLE_ARRAY [Ljava/lang/Throwable; 0 [Ljava/lang/Throwable; +staticfield java/lang/Throwable $assertionsDisabled Z 1 +instanceKlass com/sun/tools/javac/parser/ReferenceParser$ParseException +instanceKlass com/sun/tools/javac/jvm/JNIWriter$TypeSignature$SignatureException +instanceKlass com/sun/tools/javac/jvm/ModuleNameReader$BadClassFile +instanceKlass jdk/javadoc/internal/doclint/DocLint$BadArgs +instanceKlass com/sun/tools/javac/main/Option$InvalidValueException +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/reflection/MethodMap$AmbiguousException +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/util/xml/pull/XmlPullParserException +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/artifact/versioning/InvalidVersionSpecificationException +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/resolution/InvalidRepositoryException +instanceKlass io/spring/gradle/dependencymanagement/org/codehaus/plexus/interpolation/InterpolationException +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/resolution/UnresolvableModelException +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/building/ModelBuildingException +instanceKlass javax/xml/transform/TransformerException +instanceKlass javax/naming/NamingException +instanceKlass org/gradle/internal/declarativedsl/evaluator/DeclarativeDslNotEvaluatedException +instanceKlass sun/nio/fs/WindowsException +instanceKlass java/sql/SQLException +instanceKlass java/beans/PropertyVetoException +instanceKlass java/awt/AWTException +instanceKlass org/apache/maven/settings/building/SettingsBuildingException +instanceKlass com/jcraft/jsch/JSchException +instanceKlass java/util/concurrent/TimeoutException +instanceKlass javax/xml/xpath/XPathException +instanceKlass org/xml/sax/SAXException +instanceKlass javax/xml/parsers/ParserConfigurationException +instanceKlass org/gradle/api/internal/attributes/AttributeMergingException +instanceKlass java/lang/CloneNotSupportedException +instanceKlass com/google/common/collect/RegularImmutableMap$BucketOverflowException +instanceKlass java/security/PrivilegedActionException +instanceKlass sun/security/pkcs11/wrapper/PKCS11Exception +instanceKlass java/security/GeneralSecurityException +instanceKlass java/util/concurrent/ExecutionException +instanceKlass java/text/ParseException +instanceKlass java/lang/InterruptedException +instanceKlass java/net/URISyntaxException +instanceKlass java/io/IOException +instanceKlass java/lang/ReflectiveOperationException +instanceKlass java/lang/RuntimeException +ciInstanceKlass java/lang/Exception 1 1 40 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/InstantiationException +instanceKlass java/lang/reflect/InvocationTargetException +instanceKlass java/lang/IllegalAccessException +instanceKlass java/lang/NoSuchFieldException +instanceKlass java/lang/NoSuchMethodException +instanceKlass java/lang/ClassNotFoundException +ciInstanceKlass java/lang/ReflectiveOperationException 1 1 34 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass org/gradle/internal/dispatch/DispatchException +instanceKlass java/lang/LayerInstantiationException +instanceKlass javax/lang/model/UnknownEntityException +instanceKlass com/sun/tools/javac/jvm/Gen$CodeSizeOverflow +instanceKlass com/sun/tools/javac/code/Types$SignatureGenerator$InvalidSignatureException +instanceKlass com/sun/tools/javac/comp/Infer$GraphStrategy$NodeNotFoundException +instanceKlass com/sun/tools/javac/code/Types$AdaptFailure +instanceKlass com/sun/tools/javac/comp/Attr$BreakAttr +instanceKlass com/sun/tools/javac/code/Types$FunctionDescriptorLookupError +instanceKlass com/sun/tools/javac/comp/Resolve$InapplicableMethodException +instanceKlass com/sun/tools/javac/jvm/ClassWriter$StringOverflow +instanceKlass com/sun/tools/javac/jvm/ClassWriter$PoolOverflow +instanceKlass com/sun/tools/javac/code/Symbol$CompletionFailure +instanceKlass java/nio/file/ProviderNotFoundException +instanceKlass com/sun/tools/javac/util/ClientCodeException +instanceKlass com/sun/tools/javac/util/PropagatedException +instanceKlass org/gradle/api/internal/tasks/compile/CompilationFailedException +instanceKlass org/gradle/api/tasks/StopExecutionException +instanceKlass java/lang/annotation/IncompleteAnnotationException +instanceKlass org/gradle/internal/jvm/UnsupportedJavaRuntimeException +instanceKlass org/gradle/workers/internal/WorkSerializationException +instanceKlass org/gradle/api/internal/NullNamingPropertyException +instanceKlass org/gradle/api/internal/NoNamingPropertyException +instanceKlass org/gradle/api/internal/NoFactoryRegisteredForTypeException +instanceKlass org/gradle/util/internal/ConfigureUtil$IncompleteInputException +instanceKlass org/gradle/internal/resource/transport/http/HttpErrorStatusCodeException +instanceKlass org/gradle/internal/reflect/UnsupportedPropertyValueException +instanceKlass org/gradle/model/internal/manage/schema/extract/InvalidManagedModelElementTypeException +instanceKlass java/time/DateTimeException +instanceKlass java/nio/file/FileSystemNotFoundException +instanceKlass java/nio/file/FileSystemAlreadyExistsException +instanceKlass org/codehaus/groovy/vmplugin/v9/ClassFindFailedException +instanceKlass org/codehaus/groovy/control/ConfigurationException +instanceKlass org/w3c/dom/DOMException +instanceKlass groovy/lang/StringWriterIOException +instanceKlass java/lang/IllegalCallerException +instanceKlass java/lang/reflect/MalformedParameterizedTypeException +instanceKlass org/gradle/internal/execution/OutputSnapshotter$OutputFileSnapshottingException +instanceKlass org/gradle/cache/internal/btree/CorruptedCacheException +instanceKlass org/gradle/internal/execution/InputFingerprinter$InputFingerprintingException +instanceKlass org/gradle/internal/execution/InputFingerprinter$InputFileFingerprintingException +instanceKlass org/gradle/internal/locking/InvalidLockFileException +instanceKlass org/gradle/internal/locking/MissingLockStateException +instanceKlass org/gradle/api/internal/attributes/AttributeMatchException +instanceKlass org/gradle/cli/CommandLineArgumentException +instanceKlass org/gradle/internal/tools/api/ApiClassExtractionException +instanceKlass groovy/lang/GroovyRuntimeException +instanceKlass org/gradle/tooling/internal/protocol/InternalBuildActionFailureException +instanceKlass org/gradle/tooling/internal/protocol/test/InternalTestExecutionException +instanceKlass kotlin/NoWhenBranchMatchedException +instanceKlass kotlin/KotlinNothingValueException +instanceKlass org/gradle/internal/snapshot/impl/IsolationException +instanceKlass org/gradle/internal/snapshot/ValueSnapshottingException +instanceKlass org/apache/tools/ant/BuildException +instanceKlass org/gradle/api/internal/provider/AbstractProperty$PropertyQueryException +instanceKlass java/util/ConcurrentModificationException +instanceKlass java/lang/TypeNotPresentException +instanceKlass org/gradle/internal/reflect/NoSuchPropertyException +instanceKlass org/gradle/internal/typeconversion/TypeConversionException +instanceKlass com/google/common/util/concurrent/UncheckedExecutionException +instanceKlass com/google/common/cache/CacheLoader$InvalidCacheLoadException +instanceKlass groovy/json/JsonException +instanceKlass org/gradle/internal/work/NoAvailableWorkerLeaseException +instanceKlass org/gradle/launcher/daemon/server/BadlyFormedRequestException +instanceKlass java/security/ProviderException +instanceKlass org/gradle/internal/remote/internal/MessageIOException +instanceKlass org/gradle/cache/InsufficientLockModeException +instanceKlass org/gradle/cache/LockTimeoutException +instanceKlass org/gradle/cache/internal/locklistener/GracefullyStoppedException +instanceKlass org/gradle/launcher/daemon/registry/DaemonRegistry$EmptyRegistryException +instanceKlass org/gradle/cache/FileIntegrityViolationException +instanceKlass org/gradle/internal/file/FileException +instanceKlass java/io/UncheckedIOException +instanceKlass org/gradle/launcher/daemon/server/api/DaemonStoppedException +instanceKlass org/gradle/launcher/daemon/server/api/DaemonUnavailableException +instanceKlass java/util/MissingResourceException +instanceKlass org/gradle/internal/jvm/JavaHomeException +instanceKlass kotlin/UninitializedPropertyAccessException +instanceKlass org/gradle/api/reflect/ObjectInstantiationException +instanceKlass org/gradle/api/internal/classpath/UnknownModuleException +instanceKlass java/util/NoSuchElementException +instanceKlass org/gradle/internal/reflect/NoSuchMethodException +instanceKlass org/gradle/internal/nativeintegration/NativeIntegrationException +instanceKlass net/rubygrapefruit/platform/NativeException +instanceKlass org/gradle/internal/service/ServiceLookupException +instanceKlass com/esotericsoftware/kryo/KryoException +instanceKlass java/lang/reflect/UndeclaredThrowableException +instanceKlass org/gradle/internal/operations/BuildOperationInvocationException +instanceKlass org/gradle/internal/UncheckedException +instanceKlass org/gradle/api/GradleException +instanceKlass java/lang/UnsupportedOperationException +instanceKlass java/lang/SecurityException +instanceKlass org/gradle/api/UncheckedIOException +instanceKlass org/gradle/internal/service/ServiceLookupException +instanceKlass java/lang/IndexOutOfBoundsException +instanceKlass org/gradle/api/GradleException +instanceKlass org/gradle/api/UncheckedIOException +instanceKlass java/lang/IllegalStateException +instanceKlass org/gradle/api/internal/classpath/UnknownModuleException +instanceKlass java/lang/IllegalArgumentException +instanceKlass java/lang/ArithmeticException +instanceKlass java/lang/NullPointerException +instanceKlass java/lang/IllegalMonitorStateException +instanceKlass java/lang/ArrayStoreException +instanceKlass java/lang/ClassCastException +ciInstanceKlass java/lang/RuntimeException 1 1 40 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/nio/charset/UnsupportedCharsetException +instanceKlass java/nio/charset/IllegalCharsetNameException +instanceKlass org/apache/commons/lang/NullArgumentException +instanceKlass java/util/regex/PatternSyntaxException +instanceKlass java/nio/file/InvalidPathException +instanceKlass java/nio/file/ProviderMismatchException +instanceKlass java/security/InvalidParameterException +instanceKlass java/lang/NumberFormatException +instanceKlass org/gradle/internal/service/UnknownServiceException +instanceKlass org/gradle/internal/service/UnknownServiceException +ciInstanceKlass java/lang/IllegalArgumentException 1 1 35 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass com/sun/tools/javac/tree/Pretty$UncheckedIOException +instanceKlass com/sun/source/util/TreePath$1Result +instanceKlass com/sun/tools/javac/file/PathFileObject$CannotCreateUriError +instanceKlass com/sun/tools/javac/tree/TreeInfo$1Result +instanceKlass com/sun/tools/javac/processing/ServiceProxy$ServiceConfigurationError +instanceKlass com/sun/tools/javac/util/Abort +instanceKlass com/sun/tools/javac/processing/AnnotationProcessingError +instanceKlass com/sun/tools/javac/util/FatalError +instanceKlass java/util/ServiceConfigurationError +instanceKlass kotlin/NotImplementedError +instanceKlass com/google/common/util/concurrent/ExecutionError +instanceKlass java/lang/AssertionError +instanceKlass java/lang/VirtualMachineError +instanceKlass java/lang/LinkageError +instanceKlass java/lang/ThreadDeath +ciInstanceKlass java/lang/Error 1 1 40 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/StackOverflowError +instanceKlass java/lang/OutOfMemoryError +instanceKlass java/lang/InternalError +ciInstanceKlass java/lang/VirtualMachineError 1 1 34 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StackOverflowError 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/ClassFormatError +instanceKlass java/lang/UnsatisfiedLinkError +instanceKlass java/lang/IncompatibleClassChangeError +instanceKlass java/lang/BootstrapMethodError +instanceKlass java/lang/NoClassDefFoundError +ciInstanceKlass java/lang/LinkageError 1 1 31 10 7 12 1 1 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ArrayStoreException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ThreadDeath 0 0 21 10 100 12 1 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StackTraceElement 1 1 224 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 8 1 10 100 12 1 1 1 100 1 9 12 1 8 1 9 12 1 9 12 1 9 12 1 1 8 1 10 12 1 1 10 12 1 100 1 10 10 12 1 1 8 1 10 12 1 1 10 12 1 8 1 8 1 8 1 10 12 1 8 1 8 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 7 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 10 7 12 1 1 10 7 12 1 1 10 10 12 1 1 10 12 1 10 12 1 1 100 1 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 +instanceKlass it/unimi/dsi/fastutil/objects/AbstractObjectCollection +instanceKlass java/util/EnumMap$Values +instanceKlass com/sun/tools/javac/util/List +instanceKlass com/google/common/collect/Multimaps$Entries +instanceKlass com/google/common/collect/Collections2$FilteredCollection +instanceKlass org/gradle/execution/plan/DefaultExecutionPlan$NodeMapping +instanceKlass com/google/common/collect/AbstractMultimap$Values +instanceKlass org/gradle/tooling/provider/model/internal/DefaultToolingModelBuilderRegistry$1 +instanceKlass it/unimi/dsi/fastutil/ints/AbstractIntCollection +instanceKlass it/unimi/dsi/fastutil/objects/AbstractReferenceCollection +instanceKlass com/google/common/collect/AbstractMultiset +instanceKlass org/gradle/api/internal/DefaultDomainObjectCollection +instanceKlass com/google/common/collect/AbstractMapBasedMultimap$WrappedCollection +instanceKlass java/util/TreeMap$Values +instanceKlass com/google/common/collect/ImmutableCollection +instanceKlass java/util/IdentityHashMap$Values +instanceKlass java/util/LinkedHashMap$LinkedValues +instanceKlass java/util/AbstractQueue +instanceKlass java/util/HashMap$Values +instanceKlass java/util/ArrayDeque +instanceKlass java/util/AbstractSet +instanceKlass java/util/ImmutableCollections$AbstractImmutableCollection +instanceKlass java/util/AbstractList +ciInstanceKlass java/util/AbstractCollection 1 1 160 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 1 11 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 7 1 10 100 12 1 1 1 10 100 12 1 1 1 100 1 10 11 12 1 11 7 1 10 12 1 10 12 1 10 7 12 1 1 1 11 8 1 7 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/Boolean 1 1 151 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 8 1 10 7 12 1 1 9 12 1 1 9 12 1 8 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 100 1 100 1 10 12 1 1 9 100 12 1 1 9 12 10 100 12 1 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 +staticfield java/lang/Boolean TRUE Ljava/lang/Boolean; java/lang/Boolean +staticfield java/lang/Boolean FALSE Ljava/lang/Boolean; java/lang/Boolean +staticfield java/lang/Boolean TYPE Ljava/lang/Class; java/lang/Class +instanceKlass java/util/concurrent/locks/AbstractQueuedSynchronizer +ciInstanceKlass java/util/concurrent/locks/AbstractOwnableSynchronizer 1 1 32 10 7 12 1 1 1 9 7 12 1 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/LiveStackFrameInfo +ciInstanceKlass java/lang/StackFrameInfo 0 0 132 10 100 12 1 1 1 9 100 12 1 1 1 9 100 1 9 12 1 1 11 100 12 1 1 1 9 12 1 1 11 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 11 12 1 11 12 1 1 11 12 1 10 12 1 1 9 12 1 1 10 12 1 1 10 100 12 1 1 10 12 1 1 11 12 1 1 10 12 1 9 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 +ciInstanceKlass java/lang/LiveStackFrameInfo 0 0 97 10 100 12 1 1 1 9 100 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 1 100 1 10 12 1 1 10 12 1 8 1 10 12 1 1 8 1 8 1 8 1 10 100 1 10 12 1 100 1 10 12 1 100 1 100 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/lang/Character 1 1 576 7 1 100 1 100 1 9 12 1 1 8 1 9 12 1 1 100 1 9 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 3 3 3 3 3 10 12 1 1 10 12 1 3 11 7 12 1 1 1 11 12 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 3 10 12 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 10 10 12 1 10 10 12 1 10 12 1 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 10 12 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 10 10 12 1 1 10 10 12 1 10 5 0 10 12 1 10 12 1 10 10 12 1 10 10 12 1 1 10 10 12 1 10 10 12 1 9 12 1 1 100 1 10 10 12 1 10 12 1 1 3 10 100 12 1 1 1 10 12 1 10 100 12 1 1 100 1 10 10 12 1 1 10 12 1 1 10 12 1 1 8 1 10 12 1 9 100 12 1 1 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 10 10 12 1 1 10 10 12 1 1 100 1 8 1 10 12 1 1 10 7 12 1 1 1 8 1 10 12 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 3 1 3 1 3 1 3 1 1 1 1 1 3 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 3 1 1 3 1 1 1 1 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 +staticfield java/lang/Character TYPE Ljava/lang/Class; java/lang/Class +staticfield java/lang/Character $assertionsDisabled Z 1 +ciInstanceKlass java/lang/Float 1 1 223 7 1 100 1 10 100 12 1 1 1 10 100 12 1 1 1 4 100 1 10 12 1 1 10 12 1 1 8 1 8 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 4 4 4 10 7 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 3 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 1 4 1 1 1 4 1 1 3 1 3 1 3 1 3 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Float TYPE Ljava/lang/Class; java/lang/Class +instanceKlass com/google/common/cache/Striped64 +instanceKlass java/math/BigDecimal +instanceKlass java/util/concurrent/atomic/Striped64 +instanceKlass java/math/BigInteger +instanceKlass java/util/concurrent/atomic/AtomicLong +instanceKlass java/util/concurrent/atomic/AtomicInteger +instanceKlass java/lang/Long +instanceKlass java/lang/Integer +instanceKlass java/lang/Short +instanceKlass java/lang/Byte +instanceKlass java/lang/Double +instanceKlass java/lang/Float +ciInstanceKlass java/lang/Number 1 1 37 10 7 12 1 1 1 10 100 12 1 1 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/Double 1 1 285 7 1 100 1 10 7 12 1 1 1 10 12 1 1 10 12 1 100 1 10 12 1 1 10 100 12 1 1 1 6 0 8 1 10 12 1 1 8 1 10 12 1 1 8 1 6 0 10 12 1 1 100 1 5 0 5 0 8 1 8 1 10 100 12 1 1 1 10 100 12 1 1 1 8 1 10 12 1 1 8 1 8 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 6 0 6 0 6 0 10 7 12 1 1 9 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 5 0 10 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 1 6 0 1 1 1 6 0 1 1 3 1 3 1 3 1 3 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Double TYPE Ljava/lang/Class; java/lang/Class +ciInstanceKlass java/lang/Byte 1 1 215 7 1 100 1 10 100 12 1 1 1 9 12 1 1 8 1 9 12 1 1 100 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 1 100 1 100 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 8 1 8 1 10 7 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 5 0 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 1 1 3 1 3 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Byte TYPE Ljava/lang/Class; java/lang/Class +ciInstanceKlass java/lang/Short 1 1 224 7 1 100 1 100 1 10 100 12 1 1 1 10 12 1 1 100 1 100 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 8 1 9 12 1 1 100 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 10 12 1 1 10 8 1 8 1 10 100 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 3 3 5 0 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 1 1 3 1 3 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/Short TYPE Ljava/lang/Class; java/lang/Class +ciInstanceKlass java/lang/Integer 1 1 445 7 1 100 1 7 1 7 1 10 12 1 1 9 12 1 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 10 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 9 12 1 1 9 12 1 100 1 8 1 10 12 1 100 1 10 12 1 8 1 10 12 1 1 10 12 1 8 1 10 12 1 8 1 10 12 1 1 3 10 12 1 1 3 10 12 1 1 10 12 1 1 10 7 12 1 1 1 11 7 1 100 1 10 11 10 12 1 1 8 1 10 12 1 1 8 1 100 1 10 12 1 1 10 12 1 1 5 0 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 7 1 9 12 1 1 9 12 1 1 10 12 1 10 7 1 9 12 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 100 1 100 1 10 12 1 1 10 12 1 1 8 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 5 0 3 3 3 3 10 12 1 3 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 3 3 3 3 3 3 9 12 1 1 100 1 100 1 100 1 1 1 1 1 1 1 3 1 3 1 1 5 0 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Integer TYPE Ljava/lang/Class; java/lang/Class +staticfield java/lang/Integer digits [C 36 +staticfield java/lang/Integer DigitTens [B 100 +staticfield java/lang/Integer DigitOnes [B 100 +staticfield java/lang/Integer sizeTable [I 10 +ciInstanceKlass java/lang/Long 1 1 506 7 1 100 1 7 1 7 1 10 12 1 1 9 12 1 1 9 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 10 12 10 12 1 10 12 1 10 12 1 5 0 5 0 7 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 10 12 1 5 0 5 0 9 12 1 1 9 12 1 5 0 100 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 10 12 1 1 5 0 10 12 1 1 5 0 10 12 1 1 10 12 1 1 10 100 12 1 1 1 11 100 1 100 1 10 11 10 12 1 1 8 1 10 12 1 1 8 1 100 1 10 12 1 1 10 12 1 8 1 8 1 11 12 1 1 10 12 1 10 12 1 10 12 1 5 0 5 0 9 7 12 1 1 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 1 10 7 1 9 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 12 1 1 10 12 1 1 5 0 10 12 1 10 12 1 5 0 5 0 5 0 10 12 1 1 5 0 5 0 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 9 12 1 1 100 1 100 1 100 1 1 1 1 5 0 1 1 1 1 3 1 3 1 5 0 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/Long TYPE Ljava/lang/Class; java/lang/Class +instanceKlass java/lang/ref/PhantomReference +instanceKlass java/lang/ref/FinalReference +instanceKlass java/lang/ref/WeakReference +instanceKlass java/lang/ref/SoftReference +ciInstanceKlass java/lang/ref/Reference 1 1 195 9 7 12 1 1 1 9 7 12 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 7 1 10 12 1 10 7 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 10 12 1 1 10 12 1 10 12 1 9 12 1 100 1 100 1 10 12 1 9 12 1 9 12 1 100 1 10 10 12 1 10 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 7 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 7 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/ref/Reference processPendingLock Ljava/lang/Object; java/lang/Object +staticfield java/lang/ref/Reference $assertionsDisabled Z 1 +instanceKlass java/util/ResourceBundle$BundleReference +instanceKlass java/io/ClassCache$CacheRef +instanceKlass com/sun/beans/util/Cache$Kind$Soft +instanceKlass org/codehaus/groovy/util/ReferenceType$SoftRef +instanceKlass sun/util/locale/provider/LocaleResources$ResourceReference +instanceKlass sun/util/resources/Bundles$BundleReference +instanceKlass sun/util/locale/LocaleObjectCache$CacheEntry +instanceKlass java/lang/invoke/LambdaFormEditor$Transform +ciInstanceKlass java/lang/ref/SoftReference 1 1 47 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 +instanceKlass com/sun/tools/javac/util/UnsharedNameTable$HashEntry +instanceKlass java/util/ResourceBundle$KeyElementReference +instanceKlass com/google/common/cache/LocalCache$WeakEntry +instanceKlass com/google/common/cache/LocalCache$WeakValueReference +instanceKlass java/beans/WeakIdentityMap$Entry +instanceKlass org/codehaus/groovy/util/ReferenceType$WeakRef +instanceKlass com/google/common/collect/MapMakerInternalMap$WeakValueReferenceImpl +instanceKlass com/google/common/collect/MapMakerInternalMap$AbstractWeakKeyEntry +instanceKlass java/util/logging/LogManager$LoggerWeakRef +instanceKlass java/util/logging/Level$KnownLevel +instanceKlass sun/nio/ch/FileLockTable$FileLockReference +instanceKlass java/lang/ClassValue$Entry +instanceKlass java/lang/ThreadLocal$ThreadLocalMap$Entry +instanceKlass java/lang/WeakPairMap$WeakRefPeer +instanceKlass java/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry +instanceKlass java/util/WeakHashMap$Entry +ciInstanceKlass java/lang/ref/WeakReference 1 1 31 10 7 12 1 1 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciMethod java/lang/ref/Reference get ()Ljava/lang/Object; 0 0 1 0 -1 +ciMethod java/lang/ref/WeakReference (Ljava/lang/Object;)V 80 0 33511 0 -1 +instanceKlass java/lang/ref/Finalizer +ciInstanceKlass java/lang/ref/FinalReference 1 1 47 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 100 1 8 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ref/Finalizer 1 1 152 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 10 12 1 10 12 1 1 9 12 1 1 100 1 10 12 1 7 1 11 7 12 1 1 100 1 10 12 1 100 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 100 1 10 10 12 1 10 7 12 1 1 1 7 1 10 7 1 10 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/ref/Finalizer lock Ljava/lang/Object; java/lang/Object +staticfield java/lang/ref/Finalizer $assertionsDisabled Z 1 +instanceKlass jdk/internal/ref/PhantomCleanable +instanceKlass jdk/internal/ref/Cleaner +ciInstanceKlass java/lang/ref/PhantomReference 1 1 39 10 100 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/reflect/Executable +instanceKlass java/lang/reflect/Field +ciInstanceKlass java/lang/reflect/AccessibleObject 1 1 398 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 7 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 1 7 1 10 7 12 1 1 1 11 12 1 7 1 10 12 1 7 1 100 1 10 12 1 10 12 1 1 7 1 10 7 12 1 1 1 10 12 1 1 7 1 10 12 1 1 100 1 10 10 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 100 1 10 12 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 10 11 100 1 100 1 8 1 10 10 12 1 10 12 1 1 8 1 10 12 1 8 1 10 12 1 1 10 100 1 8 1 10 11 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 1 100 1 10 12 1 7 1 10 12 1 10 12 1 1 10 100 1 10 12 1 10 12 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 10 100 12 1 1 8 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 9 12 1 100 1 10 7 1 10 10 7 12 1 1 1 7 1 10 10 7 12 1 1 1 7 1 9 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/reflect/AccessibleObject reflectionFactory Ljdk/internal/reflect/ReflectionFactory; jdk/internal/reflect/ReflectionFactory +instanceKlass java/lang/reflect/Constructor +instanceKlass java/lang/reflect/Method +ciInstanceKlass java/lang/reflect/Executable 1 1 548 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 8 1 10 10 12 1 1 10 12 1 1 10 7 12 1 1 1 18 12 1 1 11 7 12 1 1 1 8 1 8 1 8 1 10 7 12 1 1 1 11 12 1 1 7 1 8 1 8 1 10 12 1 100 1 8 1 10 12 1 8 1 11 7 12 1 1 1 7 1 10 12 1 1 11 12 1 8 1 18 8 1 10 12 1 10 12 1 1 18 8 1 10 12 1 7 1 10 12 1 10 12 1 11 7 12 1 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 1 10 10 12 1 100 1 10 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 8 1 10 12 1 10 12 1 3 100 1 8 1 10 12 1 10 12 1 10 10 12 1 10 12 1 1 8 1 8 1 8 1 9 12 1 10 12 1 100 1 8 1 9 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 10 12 1 100 1 10 12 1 10 12 1 1 100 1 10 100 12 1 1 1 7 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 10 7 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 10 12 1 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 9 12 1 10 10 10 10 100 12 1 1 1 10 12 1 9 12 1 10 12 1 1 9 12 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 15 10 7 12 1 1 1 16 15 16 1 16 1 15 10 12 16 1 100 1 1 100 1 100 1 1 +ciInstanceKlass java/lang/reflect/Member 1 0 23 100 1 100 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/Constructor 1 1 429 10 7 12 1 1 1 10 7 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 100 1 8 1 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 7 1 100 1 8 1 10 10 12 1 10 12 1 10 12 1 1 10 12 1 1 7 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 8 1 10 10 12 1 100 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 8 1 10 12 1 1 11 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 100 12 1 1 10 12 1 10 12 1 10 12 1 100 1 8 1 10 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 1 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/lang/reflect/Method 1 1 446 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 9 12 1 1 8 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 7 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 10 8 1 10 12 1 10 12 1 7 1 8 1 8 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 11 7 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 10 7 12 1 1 1 7 1 100 1 100 1 10 12 1 10 12 1 1 10 12 1 100 1 8 1 10 12 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciMethod java/lang/reflect/Method hashCode ()I 512 0 700 0 0 +ciMethod java/lang/reflect/Method getName ()Ljava/lang/String; 300 0 150 0 0 +ciMethod java/lang/reflect/Method getDeclaringClass ()Ljava/lang/Class; 262 0 131 0 0 +ciInstanceKlass java/lang/reflect/Field 1 1 437 9 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 9 12 1 1 9 12 1 10 12 1 10 7 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 7 1 10 7 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 1 8 1 10 12 10 12 1 8 1 8 1 10 11 100 1 9 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 1 10 12 1 10 100 12 1 1 10 12 1 10 12 1 1 10 12 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 11 7 1 10 12 1 100 1 10 100 12 1 1 1 10 7 12 1 1 1 9 12 1 10 7 12 1 1 1 11 7 12 1 1 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass java/lang/reflect/Parameter 0 0 226 10 100 12 1 1 1 9 100 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 10 10 12 1 1 11 100 12 1 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 8 1 8 1 10 100 12 1 1 1 10 12 1 10 12 10 12 1 8 1 10 12 1 9 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 10 100 12 1 1 100 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 100 1 10 11 12 1 1 11 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass java/lang/reflect/Array 1 1 83 10 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciMethod java/lang/reflect/Array newArray (Ljava/lang/Class;I)Ljava/lang/Object; 514 0 257 0 -1 +ciMethod java/lang/reflect/Array newInstance (Ljava/lang/Class;I)Ljava/lang/Object; 20 0 12097 0 0 +ciInstanceKlass java/lang/StringBuffer 1 1 470 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 10 100 1 10 10 100 12 1 1 1 10 10 12 1 10 8 10 100 12 1 1 1 8 10 12 1 8 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 7 1 10 12 100 1 8 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 12 10 12 1 10 12 1 10 12 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 7 1 10 12 1 9 7 12 1 1 1 9 7 1 9 12 1 1 100 1 100 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/StringBuffer serialPersistentFields [Ljava/io/ObjectStreamField; 3 [Ljava/io/ObjectStreamField; +instanceKlass java/lang/StringBuilder +instanceKlass java/lang/StringBuffer +ciInstanceKlass java/lang/AbstractStringBuilder 1 1 547 7 1 7 1 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 3 3 10 12 1 10 12 1 1 11 7 1 100 1 100 1 10 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 10 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 8 1 10 10 12 1 1 100 1 10 12 10 12 1 1 10 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 10 12 1 1 10 12 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 10 12 1 1 18 12 1 1 100 1 10 100 12 1 1 1 18 10 12 1 1 10 12 1 10 12 1 1 11 12 1 10 12 1 10 12 1 10 10 12 1 10 8 1 8 1 8 1 10 10 100 1 10 12 1 100 1 10 100 1 10 100 1 1 1 3 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 7 1 1 1 1 1 100 1 1 1 1 1 1 15 10 100 12 1 1 1 16 1 15 10 12 16 15 10 12 1 1 1 1 100 1 100 1 1 +staticfield java/lang/AbstractStringBuilder EMPTYVALUE [B 0 +instanceKlass org/codehaus/groovy/reflection/ReflectionUtils$ClassContextHelper +ciInstanceKlass java/lang/SecurityManager 1 1 576 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 100 1 8 1 10 12 1 10 12 1 1 10 100 12 1 1 1 10 100 1 10 100 1 10 9 100 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 100 1 8 1 10 9 12 1 1 9 12 1 8 1 9 12 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 100 1 10 10 12 1 1 100 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 10 100 12 1 1 1 10 12 1 1 8 1 100 1 8 1 10 8 1 8 1 8 1 8 1 8 1 10 100 12 1 1 8 1 100 1 8 1 8 1 10 8 1 10 12 1 100 1 8 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 10 7 12 1 1 11 7 12 1 1 1 18 12 1 1 11 7 12 1 1 1 18 12 1 1 11 12 1 1 18 18 11 12 1 18 12 1 11 12 1 1 9 12 1 1 9 12 1 9 12 1 9 12 1 7 1 10 7 12 1 1 10 12 1 10 12 1 18 12 1 18 10 7 12 1 1 1 18 12 1 10 12 1 18 18 8 1 10 12 1 9 12 1 1 11 7 12 1 1 1 8 1 100 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 1 8 1 100 1 10 9 12 1 8 1 10 12 1 8 1 100 1 10 10 7 12 1 1 10 7 1 9 7 12 1 1 1 11 12 1 1 10 12 1 11 12 1 10 12 1 7 1 10 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 7 12 1 1 1 16 15 10 7 12 1 1 1 16 1 16 15 10 12 16 1 15 10 12 16 15 11 7 1 16 1 16 1 15 10 12 16 15 10 12 16 15 10 12 1 16 1 15 11 12 1 15 10 12 16 15 10 16 1 1 1 1 100 1 100 1 1 +staticfield java/lang/SecurityManager packageAccessLock Ljava/lang/Object; java/lang/Object +staticfield java/lang/SecurityManager packageDefinitionLock Ljava/lang/Object; java/lang/Object +staticfield java/lang/SecurityManager nonExportedPkgs Ljava/util/Map; java/util/concurrent/ConcurrentHashMap +ciMethod java/lang/SecurityManager checkPackageAccess (Ljava/lang/String;)V 0 0 1 0 -1 +ciInstanceKlass java/security/AccessControlContext 1 1 373 9 7 12 1 1 1 9 12 1 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 100 1 10 12 1 11 100 12 1 1 1 11 12 1 11 12 1 11 12 1 1 7 1 11 12 1 1 10 12 1 10 7 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 11 100 12 1 1 1 10 7 1 100 1 8 1 10 12 1 10 12 1 1 7 1 10 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 10 7 12 1 1 1 9 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 10 10 12 1 1 10 100 12 1 1 1 10 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 8 1 10 12 1 8 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 8 1 8 1 100 1 10 12 1 10 12 1 1 100 1 10 12 1 8 1 10 12 1 10 12 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 10 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 +ciInstanceKlass java/net/URL 1 1 743 10 7 12 1 1 1 10 12 1 10 7 12 1 1 9 12 1 1 9 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 8 1 10 12 1 1 100 1 10 10 12 1 1 8 1 10 12 1 1 9 12 1 100 1 8 1 10 12 1 10 12 1 8 1 9 12 1 10 12 1 1 9 12 1 10 12 1 10 12 1 9 12 1 9 12 1 8 1 9 12 1 10 12 1 1 8 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 8 1 10 12 1 7 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 8 1 9 12 1 8 1 10 12 1 10 7 12 1 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 1 100 1 8 1 10 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 8 1 10 12 1 10 10 7 12 1 1 1 10 12 1 9 100 12 1 1 1 10 100 12 1 1 1 9 12 1 1 10 12 1 10 100 12 1 1 1 100 1 100 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 10 10 10 12 1 100 1 10 12 1 10 12 1 1 8 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 100 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 9 12 1 1 9 12 1 1 100 1 8 1 10 10 12 1 9 12 1 1 10 7 12 1 1 8 1 10 7 12 1 1 8 1 10 12 1 1 10 12 1 8 1 8 1 10 7 12 1 1 1 100 1 10 100 12 1 1 1 10 12 1 10 12 1 100 1 10 9 12 1 1 10 7 12 1 1 8 1 10 12 1 1 100 1 10 10 100 12 1 1 1 8 9 100 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 11 7 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 1 8 10 100 12 1 1 100 1 10 8 8 10 12 1 8 8 8 100 1 10 12 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 10 12 1 1 10 12 1 1 10 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 10 12 1 100 1 8 1 10 10 10 12 1 1 10 12 1 10 12 1 1 8 1 7 1 10 10 10 7 1 10 12 1 9 7 12 1 1 1 9 12 1 1 7 1 10 10 7 12 1 1 1 100 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/net/URL defaultFactory Ljava/net/URLStreamHandlerFactory; java/net/URL$DefaultFactory +staticfield java/net/URL streamHandlerLock Ljava/lang/Object; java/lang/Object +staticfield java/net/URL serialPersistentFields [Ljava/io/ObjectStreamField; 7 [Ljava/io/ObjectStreamField; +ciInstanceKlass java/util/jar/Manifest 1 1 336 10 7 12 1 1 1 7 1 10 9 7 12 1 1 1 7 1 10 9 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 11 7 1 11 12 1 1 10 12 1 1 10 100 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 11 100 1 10 12 1 10 12 1 1 11 12 1 1 10 12 1 11 12 1 1 11 100 12 1 1 1 11 100 12 1 1 11 12 1 1 100 1 10 12 1 8 1 11 12 1 7 1 10 12 1 1 11 12 1 10 12 1 10 12 1 10 100 12 1 1 1 8 1 10 12 1 1 10 9 7 12 1 1 1 10 12 1 1 10 100 12 1 10 12 1 10 12 1 9 100 12 1 1 1 8 1 10 12 1 8 1 8 1 7 1 10 12 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 1 8 1 10 10 12 1 1 8 1 10 12 1 1 10 100 12 1 1 1 10 12 1 10 11 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 11 10 12 1 11 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/module/ModuleDescriptor 1 1 482 10 7 12 1 1 1 9 7 12 1 1 1 100 1 10 9 12 1 1 9 12 1 1 9 12 1 11 7 12 1 1 1 9 12 1 1 9 7 12 1 1 1 11 12 1 1 9 12 1 9 12 1 9 12 1 11 12 1 1 18 12 1 1 11 100 12 1 1 1 11 12 1 11 12 1 1 11 12 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 100 1 10 10 12 10 12 1 1 8 1 10 12 1 10 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 10 12 1 10 12 1 11 10 100 12 1 1 10 12 1 10 12 1 11 10 12 1 1 8 1 8 1 10 12 1 11 12 1 8 1 8 1 8 1 8 1 8 1 8 1 7 1 10 12 1 100 1 8 1 10 12 1 7 1 10 12 1 11 12 11 12 1 10 12 1 1 100 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 18 11 12 1 11 12 1 1 8 1 10 100 12 1 1 1 11 12 1 1 100 1 11 12 11 12 1 1 10 100 12 1 1 1 10 12 1 11 12 1 1 11 100 12 1 1 11 12 1 1 100 1 10 12 1 10 12 1 10 9 100 12 1 1 1 10 12 1 1 10 7 12 1 1 7 1 10 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 1 15 10 100 12 1 1 1 16 15 10 16 1 15 10 12 16 1 1 1 1 1 1 1 1 1 100 1 100 1 1 +staticfield java/lang/module/ModuleDescriptor $assertionsDisabled Z 1 +ciInstanceKlass java/util/Objects 1 1 151 10 7 12 1 1 1 100 1 8 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 11 100 12 1 1 1 100 1 10 10 12 1 8 1 10 7 12 1 1 1 8 1 100 1 11 12 1 1 8 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass com/google/common/collect/Maps$IteratorBasedAbstractMap +instanceKlass com/google/common/collect/Maps$ViewCachingAbstractMap +instanceKlass java/util/Collections$SingletonMap +instanceKlass com/google/common/collect/MapMakerInternalMap +instanceKlass com/google/common/cache/LocalCache +instanceKlass java/util/concurrent/ConcurrentSkipListMap +instanceKlass java/util/TreeMap +instanceKlass java/util/IdentityHashMap +instanceKlass java/util/EnumMap +instanceKlass java/util/WeakHashMap +instanceKlass java/util/Collections$EmptyMap +instanceKlass sun/util/PreHashedMap +instanceKlass java/util/HashMap +instanceKlass java/util/ImmutableCollections$AbstractImmutableMap +instanceKlass java/util/concurrent/ConcurrentHashMap +ciInstanceKlass java/util/AbstractMap 1 1 192 10 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 10 11 12 1 1 11 7 12 1 1 1 11 12 1 1 7 1 11 12 1 10 12 1 1 11 12 1 100 1 10 11 12 1 11 7 1 10 12 1 1 11 12 1 9 12 1 1 100 1 10 12 1 9 12 1 1 100 1 10 11 11 12 1 1 11 12 1 100 1 100 1 11 12 1 8 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 1 1 1 1 +instanceKlass com/sun/tools/javac/model/FilteredMemberList +instanceKlass com/google/common/collect/Lists$ReverseList +instanceKlass io/spring/gradle/dependencymanagement/org/apache/maven/model/merge/ModelMerger$MergingList +instanceKlass org/gradle/internal/collections/ImmutableFilteredList +instanceKlass com/google/common/primitives/Ints$IntArrayAsList +instanceKlass groovy/lang/Tuple +instanceKlass java/util/Collections$CopiesList +instanceKlass groovy/lang/EmptyRange +instanceKlass groovy/lang/ObjectRange +instanceKlass groovy/lang/IntRange +instanceKlass sun/security/jca/ProviderList$3 +instanceKlass org/gradle/internal/classpath/DefaultClassPath$ImmutableUniqueList +instanceKlass java/util/Collections$SingletonList +instanceKlass java/util/AbstractSequentialList +instanceKlass java/util/Vector +instanceKlass org/gradle/internal/classpath/DefaultClassPath$ImmutableUniqueList +instanceKlass java/util/Arrays$ArrayList +instanceKlass java/util/ArrayList$SubList +instanceKlass java/util/Collections$EmptyList +instanceKlass java/util/ArrayList +ciInstanceKlass java/util/AbstractList 1 1 218 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 100 1 10 10 12 1 1 11 100 12 1 1 1 11 12 1 1 11 12 1 10 7 12 1 1 1 10 12 1 11 12 1 11 12 1 11 12 1 10 12 1 1 10 12 1 1 11 100 12 1 1 1 11 7 1 11 7 1 10 12 1 100 1 10 12 1 10 12 1 1 100 1 100 1 10 12 1 100 1 10 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 8 1 100 1 8 1 8 1 8 1 10 100 1 11 10 10 12 1 11 12 1 10 12 1 1 8 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 +ciMethod java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 556 0 75962 0 128 +ciInstanceKlass java/lang/AssertionStatusDirectives 0 0 24 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/invoke/MethodHandleNatives$CallSiteContext 1 1 49 10 7 12 1 1 1 7 1 10 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass jdk/internal/invoke/NativeEntryPoint 0 0 92 10 100 12 1 1 1 9 100 12 1 1 1 10 100 12 1 1 1 100 1 9 12 1 9 12 1 9 12 1 1 9 12 1 1 9 12 1 1 100 1 8 1 10 12 1 11 100 12 1 1 1 10 12 1 1 10 12 1 11 100 12 1 1 11 12 1 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass java/lang/invoke/VolatileCallSite +instanceKlass java/lang/invoke/MutableCallSite +instanceKlass java/lang/invoke/ConstantCallSite +ciInstanceKlass java/lang/invoke/CallSite 1 1 302 10 7 12 1 1 1 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 100 1 10 12 1 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 10 12 1 1 100 1 100 1 10 10 100 12 1 1 1 10 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 10 100 12 1 1 10 12 1 1 9 12 1 9 100 12 1 1 1 8 1 10 7 12 1 1 1 10 12 1 1 100 1 10 12 1 1 9 12 1 8 1 100 1 10 12 1 10 12 1 100 1 8 1 10 10 12 1 10 12 1 1 100 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 8 10 12 1 1 9 12 1 1 100 1 10 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 100 1 8 1 10 10 12 10 12 1 1 100 1 100 1 100 1 8 1 10 12 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/CallSite $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/VolatileCallSite 0 0 37 10 100 12 1 1 1 10 12 1 10 100 12 1 1 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/invoke/MethodType 1 1 771 7 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 9 7 12 1 1 8 1 10 100 12 1 1 1 9 7 1 9 7 1 10 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 100 1 10 10 12 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 9 12 1 11 12 1 1 7 7 1 10 7 12 1 1 1 10 12 1 9 12 1 1 10 7 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 9 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 8 1 8 1 10 12 1 1 9 12 1 1 100 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 10 10 12 1 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 12 10 12 1 10 12 1 100 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 10 11 12 1 1 11 12 1 10 100 12 1 1 1 9 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 9 12 1 1 7 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 8 1 10 7 12 1 1 1 11 12 1 1 9 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 100 1 10 12 1 1 11 100 12 1 1 1 18 12 1 1 11 12 1 1 18 12 1 11 12 1 100 1 11 100 12 1 1 10 12 1 100 1 10 12 1 10 100 12 1 1 10 12 1 1 9 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 9 12 1 10 100 12 1 1 10 12 1 100 10 12 1 1 10 12 1 10 7 1 7 1 9 12 1 1 100 1 100 1 100 1 1 1 5 0 1 1 1 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 12 16 16 15 10 12 16 1 1 1 1 100 1 1 100 1 1 100 1 100 1 1 +staticfield java/lang/invoke/MethodType internTable Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet; java/lang/invoke/MethodType$ConcurrentWeakInternSet +staticfield java/lang/invoke/MethodType NO_PTYPES [Ljava/lang/Class; 0 [Ljava/lang/Class; +staticfield java/lang/invoke/MethodType objectOnlyTypes [Ljava/lang/invoke/MethodType; 20 [Ljava/lang/invoke/MethodType; +staticfield java/lang/invoke/MethodType METHOD_HANDLE_ARRAY [Ljava/lang/Class; 1 [Ljava/lang/Class; +staticfield java/lang/invoke/MethodType serialPersistentFields [Ljava/io/ObjectStreamField; 0 [Ljava/io/ObjectStreamField; +staticfield java/lang/invoke/MethodType $assertionsDisabled Z 1 +ciInstanceKlass java/lang/BootstrapMethodError 0 0 45 10 100 12 1 1 1 10 12 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +instanceKlass jdk/net/UnixDomainPrincipal +ciInstanceKlass java/lang/Record 0 0 22 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/ClassNotFoundException 1 1 96 7 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 8 1 10 100 12 1 1 1 10 7 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 7 1 10 12 1 9 12 1 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/ClassNotFoundException serialPersistentFields [Ljava/io/ObjectStreamField; 1 [Ljava/io/ObjectStreamField; +ciInstanceKlass jdk/internal/loader/ClassLoaders$AppClassLoader 1 1 119 8 1 10 7 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 7 1 8 1 10 12 10 7 12 1 1 1 10 7 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 +ciInstanceKlass jdk/internal/loader/ClassLoaders$PlatformClassLoader 1 1 42 8 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 +ciInstanceKlass java/lang/ArithmeticException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +instanceKlass kotlin/KotlinNullPointerException +ciInstanceKlass java/lang/NullPointerException 1 1 52 10 100 12 1 1 1 10 12 1 9 100 12 1 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 1 1 5 0 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 +ciInstanceKlass java/lang/IllegalMonitorStateException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/OutOfMemoryError 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/InternalError 1 1 34 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass com/google/common/collect/Ordering$IncomparableValueException +instanceKlass org/codehaus/groovy/runtime/typehandling/GroovyCastException +ciInstanceKlass java/lang/ClassCastException 1 1 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/NoClassDefFoundError 1 1 26 10 7 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +instanceKlass java/nio/DoubleBuffer +instanceKlass java/nio/FloatBuffer +instanceKlass java/nio/ShortBuffer +instanceKlass java/nio/IntBuffer +instanceKlass java/nio/LongBuffer +instanceKlass java/nio/CharBuffer +instanceKlass java/nio/ByteBuffer +ciInstanceKlass java/nio/Buffer 1 1 224 100 1 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 8 1 10 12 1 1 10 12 1 8 1 9 12 1 1 100 1 8 1 10 12 1 8 1 8 1 9 12 10 12 1 8 1 8 1 8 1 10 12 1 8 1 8 1 8 1 100 1 10 100 1 10 100 1 10 100 1 10 10 100 12 1 1 1 10 11 100 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 7 1 10 10 7 12 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/nio/Buffer UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield java/nio/Buffer SCOPED_MEMORY_ACCESS Ljdk/internal/misc/ScopedMemoryAccess; jdk/internal/misc/ScopedMemoryAccess +staticfield java/nio/Buffer $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/misc/UnsafeConstants 1 1 34 10 100 12 1 1 1 9 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/misc/UnsafeConstants ADDRESS_SIZE0 I 8 +staticfield jdk/internal/misc/UnsafeConstants PAGE_SIZE I 4096 +staticfield jdk/internal/misc/UnsafeConstants BIG_ENDIAN Z 0 +staticfield jdk/internal/misc/UnsafeConstants UNALIGNED_ACCESS Z 1 +staticfield jdk/internal/misc/UnsafeConstants DATA_CACHE_LINE_FLUSH_SIZE I 0 +instanceKlass java/lang/invoke/DelegatingMethodHandle +instanceKlass java/lang/invoke/BoundMethodHandle +instanceKlass java/lang/invoke/DirectMethodHandle +ciInstanceKlass java/lang/invoke/MethodHandle 1 1 644 100 1 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 7 1 7 1 10 12 1 1 9 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 1 10 12 1 1 10 12 1 10 12 1 9 12 1 1 10 12 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 7 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 10 7 12 1 1 1 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 8 1 10 12 1 1 8 1 10 12 1 8 1 10 100 12 1 1 1 9 12 1 1 100 1 10 9 100 12 1 1 1 9 100 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 8 1 10 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 11 12 1 10 12 1 10 12 1 1 10 100 12 1 1 1 100 1 11 12 1 10 100 1 11 12 1 100 1 10 12 1 11 12 1 9 100 12 1 1 1 11 12 1 1 11 100 12 1 1 1 10 12 1 1 9 12 1 11 12 1 9 12 1 9 12 1 9 12 1 11 12 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 8 1 10 12 1 10 12 1 8 1 10 12 1 10 12 1 10 10 7 12 1 1 10 12 1 1 100 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 10 100 12 1 1 1 10 12 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 8 1 9 12 1 9 12 1 1 9 12 1 1 10 12 1 7 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 11 7 12 1 1 9 12 1 10 12 1 1 10 12 1 9 12 1 10 12 1 8 10 12 1 1 8 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 100 1 1 1 1 +staticfield java/lang/invoke/MethodHandle FORM_OFFSET J 20 +staticfield java/lang/invoke/MethodHandle UPDATE_OFFSET J 13 +staticfield java/lang/invoke/MethodHandle $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/reflect/CallerSensitive 1 1 17 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/reflect/NativeConstructorAccessorImpl 1 1 126 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 9 12 1 1 9 12 1 1 10 7 12 1 1 1 7 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 10 12 1 1 8 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 +staticfield jdk/internal/reflect/NativeConstructorAccessorImpl U Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +staticfield jdk/internal/reflect/NativeConstructorAccessorImpl GENERATED_OFFSET J 16 +instanceKlass com/sun/tools/javac/comp/CompileStates +instanceKlass groovy/lang/SpreadMap +instanceKlass java/lang/ProcessEnvironment +instanceKlass java/util/LinkedHashMap +ciInstanceKlass java/util/HashMap 1 1 610 10 7 12 1 1 1 7 1 10 12 1 1 100 1 10 7 12 1 1 1 100 1 11 12 1 1 11 12 1 11 12 1 1 10 7 12 1 1 1 7 1 3 10 7 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 8 1 10 12 1 9 12 1 1 10 12 1 9 12 1 1 4 10 12 1 10 12 1 1 11 7 12 1 1 9 12 1 1 4 10 12 1 1 11 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 7 1 11 12 1 11 12 1 10 12 1 10 12 1 1 9 12 10 12 1 1 9 7 12 1 1 1 9 12 9 12 1 10 12 1 1 9 12 1 7 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 1 3 10 12 1 1 10 12 1 1 9 12 1 1 9 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 1 7 1 10 12 1 10 12 1 10 7 12 1 1 1 7 1 9 12 1 1 7 1 10 9 12 7 1 10 100 1 10 11 7 12 1 1 1 100 1 10 11 7 12 1 1 11 7 12 1 1 1 10 12 1 100 1 100 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 8 10 100 12 1 1 1 100 1 10 4 10 100 12 1 1 1 4 10 12 1 10 100 12 1 1 1 10 12 1 8 1 4 10 100 12 1 1 1 100 1 11 100 12 1 1 1 10 12 1 10 12 1 10 10 12 1 1 100 1 100 1 1 1 1 5 0 1 3 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciMethod java/util/HashMap get (Ljava/lang/Object;)Ljava/lang/Object; 524 0 38742 0 704 +instanceKlass java/lang/invoke/DirectMethodHandle$Special +instanceKlass java/lang/invoke/DirectMethodHandle$Interface +instanceKlass java/lang/invoke/DirectMethodHandle$Constructor +instanceKlass java/lang/invoke/DirectMethodHandle$Accessor +ciInstanceKlass java/lang/invoke/DirectMethodHandle 1 1 940 7 1 7 1 100 1 7 1 7 1 10 7 12 1 1 1 10 7 12 1 1 1 100 1 10 12 1 10 12 1 1 10 7 12 1 1 10 12 1 1 10 12 1 10 12 1 7 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 9 12 1 1 100 1 10 9 12 1 1 9 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 7 1 10 12 1 7 1 10 10 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 100 1 10 12 1 10 12 1 7 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 8 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 9 7 12 1 1 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 9 7 12 1 1 1 8 1 9 12 1 9 12 1 8 1 9 12 1 9 12 1 8 1 9 12 1 9 12 1 8 1 10 12 1 10 12 1 1 9 12 1 1 7 1 10 12 1 1 100 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 1 10 12 1 10 12 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 9 12 1 1 10 7 1 9 12 9 12 1 10 7 12 1 1 1 10 12 1 7 1 7 1 7 1 9 12 1 1 10 7 12 1 10 12 1 1 10 12 1 100 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 100 1 10 100 12 1 1 1 10 12 1 10 12 1 8 1 9 12 1 9 12 1 10 12 1 9 12 1 1 10 100 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 9 7 12 1 1 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 9 12 1 8 1 9 12 1 1 9 12 1 1 10 12 1 10 12 1 1 9 7 1 10 12 1 9 12 1 1 10 12 10 12 1 10 12 1 10 12 1 10 8 1 8 1 8 1 8 1 10 12 1 1 9 12 1 1 10 12 1 10 100 12 1 1 1 8 9 12 1 1 10 12 1 1 8 1 8 8 9 12 1 8 1 8 8 8 8 8 1 8 10 12 1 10 12 1 8 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 7 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 3 1 3 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/DirectMethodHandle IMPL_NAMES Ljava/lang/invoke/MemberName$Factory; java/lang/invoke/MemberName$Factory +staticfield java/lang/invoke/DirectMethodHandle FT_UNCHECKED_REF I 8 +staticfield java/lang/invoke/DirectMethodHandle ACCESSOR_FORMS [Ljava/lang/invoke/LambdaForm; 132 [Ljava/lang/invoke/LambdaForm; +staticfield java/lang/invoke/DirectMethodHandle ALL_WRAPPERS [Lsun/invoke/util/Wrapper; 10 [Lsun/invoke/util/Wrapper; +staticfield java/lang/invoke/DirectMethodHandle NFS [Ljava/lang/invoke/LambdaForm$NamedFunction; 12 [Ljava/lang/invoke/LambdaForm$NamedFunction; +staticfield java/lang/invoke/DirectMethodHandle OBJ_OBJ_TYPE Ljava/lang/invoke/MethodType; java/lang/invoke/MethodType +staticfield java/lang/invoke/DirectMethodHandle LONG_OBJ_TYPE Ljava/lang/invoke/MethodType; java/lang/invoke/MethodType +staticfield java/lang/invoke/DirectMethodHandle $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/LambdaForm 1 1 1052 100 1 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 9 12 1 1 10 12 1 1 100 1 10 9 12 1 10 12 1 1 9 12 1 10 7 12 1 1 1 9 12 1 9 12 1 9 12 1 1 9 12 1 10 12 1 1 7 1 10 12 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 1 9 100 12 1 1 1 10 12 1 1 9 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 7 1 10 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 1 7 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 9 12 1 1 10 12 1 9 12 1 10 100 12 1 1 1 10 12 1 1 10 12 1 9 12 1 1 10 100 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 8 1 8 1 9 12 1 9 12 1 9 12 1 1 10 12 1 1 10 12 1 9 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 9 12 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 9 12 1 7 1 10 12 1 1 9 12 1 10 12 1 10 12 1 1 10 12 10 12 1 10 12 1 1 10 12 1 1 10 10 12 1 1 10 12 1 1 7 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 8 1 10 12 1 1 8 1 8 1 8 1 10 12 1 9 12 1 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 9 12 1 1 8 1 10 100 12 1 1 1 10 7 12 1 1 10 12 10 10 12 1 1 9 12 1 8 10 12 1 1 100 1 10 12 1 1 10 12 1 9 7 12 1 1 9 12 1 1 8 1 10 100 12 1 1 10 12 1 1 100 1 100 1 10 10 12 1 1 10 12 1 1 8 1 8 1 100 1 8 1 10 12 10 12 1 10 12 1 10 12 1 1 8 1 8 1 9 100 12 1 1 1 10 12 1 10 12 1 1 8 1 8 1 8 1 100 1 8 1 100 1 8 1 100 1 8 1 10 12 1 8 1 9 10 7 12 1 1 1 10 12 1 9 12 1 1 10 12 1 10 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 100 10 12 1 10 12 1 9 12 1 1 10 7 12 1 1 8 1 8 1 100 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 8 1 8 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 9 12 1 1 8 1 10 12 1 1 9 12 1 1 10 12 1 1 9 12 1 9 12 1 1 9 12 1 9 12 1 1 7 1 10 7 12 1 1 1 9 12 1 10 12 1 10 12 1 8 1 10 12 1 9 12 1 1 7 1 10 7 12 1 1 1 8 1 100 1 10 12 1 9 12 1 9 12 1 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 9 7 12 1 1 10 12 1 1 10 12 1 10 12 1 9 12 10 12 1 10 10 12 1 9 9 12 1 7 9 12 1 1 10 12 1 1 9 12 1 10 12 1 10 7 1 9 1 1 1 1 3 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 100 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/LambdaForm COMPILE_THRESHOLD I 0 +staticfield java/lang/invoke/LambdaForm INTERNED_ARGUMENTS [[Ljava/lang/invoke/LambdaForm$Name; 5 [[Ljava/lang/invoke/LambdaForm$Name; +staticfield java/lang/invoke/LambdaForm IMPL_NAMES Ljava/lang/invoke/MemberName$Factory; java/lang/invoke/MemberName$Factory +staticfield java/lang/invoke/LambdaForm LF_identity [Ljava/lang/invoke/LambdaForm; 6 [Ljava/lang/invoke/LambdaForm; +staticfield java/lang/invoke/LambdaForm LF_zero [Ljava/lang/invoke/LambdaForm; 6 [Ljava/lang/invoke/LambdaForm; +staticfield java/lang/invoke/LambdaForm NF_identity [Ljava/lang/invoke/LambdaForm$NamedFunction; 6 [Ljava/lang/invoke/LambdaForm$NamedFunction; +staticfield java/lang/invoke/LambdaForm NF_zero [Ljava/lang/invoke/LambdaForm$NamedFunction; 6 [Ljava/lang/invoke/LambdaForm$NamedFunction; +staticfield java/lang/invoke/LambdaForm createFormsLock Ljava/lang/Object; java/lang/Object +staticfield java/lang/invoke/LambdaForm DEBUG_NAME_COUNTERS Ljava/util/HashMap; null +staticfield java/lang/invoke/LambdaForm DEBUG_NAMES Ljava/util/HashMap; null +staticfield java/lang/invoke/LambdaForm TRACE_INTERPRETER Z 0 +staticfield java/lang/invoke/LambdaForm $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/MethodHandleNatives 1 1 684 100 1 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 100 1 10 10 12 1 1 10 12 1 10 12 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 10 12 1 1 7 1 10 7 12 1 1 1 10 100 12 1 1 1 7 1 10 10 12 1 1 8 1 10 12 1 8 1 10 12 1 1 8 1 10 12 1 1 9 100 12 1 1 1 8 1 10 100 12 1 1 1 100 1 10 12 100 1 100 1 8 1 7 1 10 10 12 1 7 1 9 7 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 1 9 12 1 8 1 10 12 1 8 1 10 12 1 8 1 8 1 8 1 100 1 10 12 1 8 1 10 12 1 1 10 12 1 10 100 12 1 1 1 100 1 8 1 10 100 12 1 1 1 7 1 8 1 10 12 1 8 1 8 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 7 1 10 12 1 100 1 100 1 10 12 1 10 12 1 8 1 8 1 10 10 12 1 1 10 12 1 1 8 1 10 100 12 1 1 1 8 1 8 1 10 12 1 1 10 7 12 1 1 1 100 1 10 12 1 1 7 1 9 12 1 1 10 7 12 1 1 1 10 10 12 1 9 12 1 10 12 1 1 9 12 1 9 12 1 10 12 1 1 10 12 1 10 12 1 1 7 1 7 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 7 12 1 1 1 10 12 1 1 100 1 8 1 10 9 7 12 1 1 1 10 12 1 1 10 12 1 1 100 1 10 12 1 1 10 12 1 1 100 1 100 1 10 10 100 1 100 1 10 100 1 10 10 12 1 1 10 100 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 8 1 100 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 11 7 12 1 1 1 10 12 1 10 12 1 10 10 12 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 100 1 1 1 +staticfield java/lang/invoke/MethodHandleNatives JLA Ljdk/internal/access/JavaLangAccess; java/lang/System$2 +staticfield java/lang/invoke/MethodHandleNatives $assertionsDisabled Z 1 +ciInstanceKlass jdk/internal/reflect/ConstantPool 1 1 142 10 100 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 100 12 1 1 1 8 11 7 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/UnsafeStaticIntegerFieldAccessorImpl +instanceKlass jdk/internal/reflect/UnsafeQualifiedStaticFieldAccessorImpl +ciInstanceKlass jdk/internal/reflect/UnsafeStaticFieldAccessorImpl 1 1 47 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 8 11 7 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/UnsafeFieldAccessorImpl +ciInstanceKlass jdk/internal/reflect/FieldAccessorImpl 1 1 59 10 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/internal/reflect/UnsafeObjectFieldAccessorImpl +instanceKlass jdk/internal/reflect/UnsafeQualifiedFieldAccessorImpl +instanceKlass jdk/internal/reflect/UnsafeStaticFieldAccessorImpl +ciInstanceKlass jdk/internal/reflect/UnsafeFieldAccessorImpl 1 1 254 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 10 12 1 9 12 1 10 12 1 1 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 100 1 10 10 12 1 1 10 12 1 1 8 1 10 10 12 1 100 1 8 1 10 12 1 8 1 10 12 1 8 1 10 12 1 100 1 10 12 1 1 10 8 1 10 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 8 1 10 100 12 1 1 10 12 1 1 8 1 8 1 8 1 8 1 8 1 8 1 10 100 12 1 1 1 8 1 8 1 8 1 10 12 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield jdk/internal/reflect/UnsafeFieldAccessorImpl unsafe Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +ciInstanceKlass java/lang/invoke/ConstantCallSite 1 1 65 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 100 1 10 12 9 12 1 1 100 1 10 10 12 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/ConstantCallSite UNSAFE Ljdk/internal/misc/Unsafe; jdk/internal/misc/Unsafe +instanceKlass org/codehaus/groovy/vmplugin/v8/CacheableCallSite +ciInstanceKlass java/lang/invoke/MutableCallSite 0 0 63 10 100 12 1 1 1 10 12 1 9 100 12 1 1 1 10 12 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +instanceKlass java/lang/invoke/VarHandleReferences$Array +instanceKlass java/lang/invoke/VarHandleBooleans$FieldInstanceReadOnly +instanceKlass java/lang/invoke/VarHandleReferences$FieldStaticReadOnly +instanceKlass java/lang/invoke/VarHandleByteArrayAsLongs$ByteArrayViewVarHandle +instanceKlass java/lang/invoke/VarHandleByteArrayAsInts$ByteArrayViewVarHandle +instanceKlass java/lang/invoke/VarHandleInts$FieldStaticReadOnly +instanceKlass java/lang/invoke/VarHandleLongs$FieldInstanceReadOnly +instanceKlass java/lang/invoke/VarHandleInts$FieldInstanceReadOnly +instanceKlass java/lang/invoke/VarHandleReferences$FieldInstanceReadOnly +ciInstanceKlass java/lang/invoke/VarHandle 1 1 390 10 7 12 1 1 1 10 7 12 1 1 9 12 1 1 9 12 1 1 100 1 10 8 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 100 12 1 1 1 9 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 10 12 1 9 12 1 1 10 7 12 1 1 10 12 1 9 7 12 1 1 1 9 12 1 1 10 12 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 10 12 1 10 12 1 1 9 7 12 1 1 1 10 12 1 10 12 1 1 10 12 1 10 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 1 9 12 1 1 10 9 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 100 12 1 1 1 9 12 1 1 10 12 1 1 9 12 1 10 12 1 10 12 1 10 100 12 1 1 100 1 10 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 7 1 10 10 7 12 1 1 1 9 12 1 1 8 10 12 1 1 7 1 10 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 1 1 1 1 1 1 100 1 1 1 +staticfield java/lang/invoke/VarHandle AIOOBE_SUPPLIER Ljava/util/function/BiFunction; jdk/internal/util/Preconditions$1 +staticfield java/lang/invoke/VarHandle VFORM_OFFSET J 16 +staticfield java/lang/invoke/VarHandle $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/MemberName 1 1 757 7 1 7 1 100 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 7 12 1 1 1 10 12 1 9 100 12 1 1 10 12 1 100 1 100 1 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 9 12 1 1 8 1 10 100 12 1 1 1 7 1 10 10 12 1 1 100 1 100 1 10 12 1 1 9 12 1 1 100 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 8 1 8 1 8 1 10 100 12 1 1 1 10 12 1 9 12 1 1 3 10 12 1 10 12 1 10 12 1 10 10 7 12 1 1 1 10 12 1 10 12 1 10 12 1 10 12 1 7 1 8 10 12 1 1 10 12 1 1 8 1 9 100 1 8 9 100 1 10 12 1 1 10 12 1 10 12 1 8 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 1 100 1 10 12 1 1 10 12 1 8 1 10 12 1 10 12 1 8 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 10 12 8 1 8 1 100 1 10 12 1 10 100 12 1 1 1 100 1 10 12 10 12 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 10 12 1 3 10 12 1 3 10 12 1 3 3 3 3 3 3 3 100 1 10 12 1 10 7 12 1 1 1 10 12 1 3 9 12 1 10 12 1 1 3 10 12 1 10 10 7 12 1 1 1 10 12 1 1 10 7 1 10 10 12 1 10 12 1 10 12 1 10 10 12 1 1 10 12 1 10 12 1 10 12 1 100 1 10 10 10 12 100 1 10 10 10 12 1 1 10 12 1 1 10 10 12 1 8 10 100 1 10 12 1 10 100 1 10 12 1 10 12 1 10 12 1 10 10 12 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 12 1 100 1 10 12 1 1 100 1 8 1 10 7 1 10 12 1 10 12 10 12 1 1 10 12 1 10 12 1 8 1 8 1 8 1 8 1 10 12 1 10 12 1 10 12 1 1 8 1 8 1 10 12 1 8 1 10 10 12 1 10 12 1 8 1 8 1 10 10 12 1 8 1 10 100 12 1 1 1 8 1 10 12 1 10 12 1 1 10 12 1 8 1 8 1 8 1 8 1 100 1 10 8 1 8 1 8 1 8 1 10 12 1 100 1 100 1 100 1 10 100 1 10 100 1 10 100 12 1 1 1 9 7 12 1 1 1 100 1 100 1 1 1 1 1 1 1 3 1 3 1 3 1 3 1 3 1 3 1 1 1 1 1 1 1 1 3 1 3 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/lang/invoke/MemberName $assertionsDisabled Z 1 +ciInstanceKlass java/lang/invoke/ResolvedMethodName 1 1 16 10 100 12 1 1 1 100 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/StackWalker 0 0 235 9 100 12 1 1 1 10 100 12 1 1 1 100 1 10 100 12 1 1 1 10 12 1 1 11 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 8 1 10 12 1 10 12 1 10 12 1 10 100 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 11 12 1 1 100 1 8 1 10 10 100 12 1 1 9 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 18 12 1 1 100 1 8 1 10 10 12 1 1 10 100 12 1 1 1 9 100 12 1 1 11 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 100 12 1 1 1 16 15 10 12 16 1 1 1 1 1 1 1 100 1 100 1 1 +ciInstanceKlass java/lang/StackStreamFactory$AbstractStackWalker 1 0 306 100 1 100 1 3 10 100 12 1 1 1 10 100 12 1 1 10 100 12 1 1 1 9 12 1 1 10 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 9 12 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 9 100 12 1 1 1 100 1 10 8 1 10 12 1 1 10 12 1 8 1 10 12 1 1 10 100 12 1 1 1 100 1 8 1 10 12 1 8 1 10 12 9 100 12 1 1 1 10 100 12 1 1 9 12 1 8 1 5 0 8 1 8 1 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 9 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 1 8 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 10 100 12 1 1 1 9 12 1 8 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass jdk/internal/module/Modules 1 1 504 10 100 12 1 1 1 9 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 11 12 1 1 11 12 1 1 11 12 1 11 12 1 11 12 1 11 12 1 11 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 18 12 1 1 10 100 12 1 1 1 100 1 10 100 12 1 1 1 10 100 12 1 1 1 10 100 12 1 1 10 12 1 1 11 12 1 9 12 1 1 11 7 12 1 1 1 10 12 1 1 10 10 12 1 10 9 12 1 1 10 7 12 1 1 10 12 1 1 10 100 12 1 1 100 1 11 100 12 1 1 1 10 100 12 1 1 1 11 100 12 1 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 11 12 1 1 18 12 1 1 11 100 12 1 1 10 100 12 1 1 1 11 100 12 1 1 1 100 1 11 12 1 1 11 100 12 1 1 1 11 12 1 1 10 12 1 1 10 100 12 1 1 18 12 1 1 11 12 1 1 18 12 1 1 11 12 1 1 10 12 1 18 18 10 12 1 1 9 12 1 1 11 100 12 1 1 1 100 1 10 11 12 1 11 12 1 1 11 12 1 1 10 100 1 10 12 1 1 10 100 12 1 1 10 12 1 1 11 12 10 12 1 1 100 1 10 18 12 1 10 12 1 1 100 1 8 1 10 12 1 10 100 12 1 1 18 12 1 11 11 12 10 12 1 10 10 100 1 18 12 1 10 10 10 7 12 1 1 10 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 15 10 100 12 1 1 1 16 15 10 12 1 16 16 15 10 12 1 16 1 16 1 15 10 12 1 16 1 16 1 15 10 12 16 1 15 10 16 1 15 10 12 16 1 15 10 12 16 15 10 12 16 15 10 12 1 1 1 100 1 100 1 1 +staticfield jdk/internal/module/Modules JLA Ljdk/internal/access/JavaLangAccess; java/lang/System$2 +staticfield jdk/internal/module/Modules JLMA Ljdk/internal/access/JavaLangModuleAccess; java/lang/module/ModuleDescriptor$1 +staticfield jdk/internal/module/Modules $assertionsDisabled Z 1 +instanceKlass org/gradle/internal/reflect/ReflectionCache$WeaklyClassReferencingCache +instanceKlass java/lang/ClassValue$ClassValueMap +ciInstanceKlass java/util/WeakHashMap 1 1 376 7 1 10 7 12 1 1 1 7 1 10 9 7 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 3 10 7 12 1 1 1 8 1 10 12 1 10 12 1 1 9 12 1 1 9 12 1 1 9 12 1 1 4 10 12 1 11 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 10 12 1 1 9 12 1 10 12 1 9 12 1 1 9 12 1 9 12 10 12 1 10 10 12 1 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 9 12 1 10 12 1 10 12 1 1 100 1 3 10 12 1 1 11 12 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 100 1 11 12 1 11 12 1 10 12 1 1 10 10 7 12 1 1 1 10 12 1 9 12 1 1 7 1 10 12 1 9 12 1 1 100 1 10 9 12 7 1 10 10 100 12 1 1 10 12 1 11 100 12 1 1 1 100 1 10 11 100 12 1 1 10 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield java/util/WeakHashMap NULL_KEY Ljava/lang/Object; java/lang/Object +instanceKlass java/util/LinkedHashMap$Entry +ciInstanceKlass java/util/HashMap$Node 1 1 95 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 100 1 10 10 12 1 1 8 1 10 12 1 10 12 1 1 10 7 12 1 1 1 7 1 11 12 1 1 10 12 1 1 11 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 100 1 1 +instanceKlass java/util/HashMap$TreeNode +ciInstanceKlass java/util/LinkedHashMap$Entry 1 1 41 10 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 +ciInstanceKlass java/util/HashMap$TreeNode 1 1 250 7 1 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 9 12 1 1 9 12 1 1 10 12 1 1 100 1 10 12 1 9 12 1 9 12 1 9 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 9 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 9 7 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +staticfield java/util/HashMap$TreeNode $assertionsDisabled Z 1 +ciInstanceKlass java/util/zip/ZipFile$Source$Key 1 1 84 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 100 1 5 0 11 7 12 1 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 11 12 1 1 10 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 +ciMethod java/util/HashMap$TreeNode getTreeNode (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; 82 0 523 0 0 +ciMethod java/util/HashMap$TreeNode root ()Ljava/util/HashMap$TreeNode; 0 0 1 0 0 +ciMethod java/util/HashMap$TreeNode find (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode; 388 226 2017 0 0 +ciMethod java/util/HashMap getNode (Ljava/lang/Object;)Ljava/util/HashMap$Node; 522 22 28986 0 672 +ciMethod java/util/HashMap compareComparables (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I 0 0 1 0 -1 +ciMethod java/util/HashMap comparableClassFor (Ljava/lang/Object;)Ljava/lang/Class; 512 0 2184 0 -1 +ciMethod java/util/HashMap hash (Ljava/lang/Object;)I 524 0 121545 0 192 +ciMethod java/util/HashMap ()V 512 0 121132 0 64 +ciMethod java/util/AbstractMap ()V 514 0 327869 0 64 +ciMethod java/util/Map$Entry setValue (Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1 +ciMethod java/util/Map$Entry getValue ()Ljava/lang/Object; 0 0 1 0 -1 +ciMethod java/util/Set iterator ()Ljava/util/Iterator; 0 0 1 0 -1 +ciMethod java/util/Map entrySet ()Ljava/util/Set; 0 0 1 0 -1 +ciMethod java/util/Map put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1 +ciMethod java/util/Map get (Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1 +ciMethod java/util/Map remove (Ljava/lang/Object;)Ljava/lang/Object; 0 0 1 0 -1 +ciMethod jdk/internal/reflect/Reflection getCallerClass ()Ljava/lang/Class; 512 0 256 0 -1 +ciMethod java/lang/String isEmpty ()Z 512 0 227512 0 -1 +ciMethod java/lang/String equals (Ljava/lang/Object;)Z 552 0 17689 0 416 +ciMethod java/lang/String hashCode ()I 514 0 15496 0 512 +ciMethod java/lang/String isLatin1 ()Z 1024 0 6799661 0 96 +ciMethod java/util/Iterator hasNext ()Z 0 0 1 0 -1 +ciMethod java/util/Iterator next ()Ljava/lang/Object; 0 0 1 0 -1 +ciMethod java/lang/Class getDeclaringClass ()Ljava/lang/Class; 512 0 3717 0 0 +ciMethod java/lang/Class getGenericInterfaces ()[Ljava/lang/reflect/Type; 558 0 3296 0 -1 +ciMethod java/lang/Class getGenericSuperclass ()Ljava/lang/reflect/Type; 600 0 3349 0 -1 +ciMethod java/lang/Class getGenericSignature0 ()Ljava/lang/String; 514 0 257 0 -1 +ciMethod java/lang/Class getPackageName ()Ljava/lang/String; 768 0 13257 0 -1 +ciMethod java/lang/Class getDeclaringClass0 ()Ljava/lang/Class; 512 0 256 0 -1 +ciMethod java/lang/Class getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 90 0 357 0 0 +ciMethod java/lang/Class getInterfaces ()[Ljava/lang/Class; 512 0 10290 0 -1 +ciMethod java/lang/Class getGenericInfo ()Lsun/reflect/generics/repository/ClassRepository; 1024 0 5812 0 416 +ciMethod java/lang/Class initClassName ()Ljava/lang/String; 516 0 258 0 -1 +ciMethod java/lang/Class getClassLoader0 ()Ljava/lang/ClassLoader; 276 0 138 0 -1 +ciMethod java/lang/Class checkPackageAccess (Ljava/lang/SecurityManager;Ljava/lang/ClassLoader;Z)V 0 0 1 0 0 +ciMethod java/lang/Class getName ()Ljava/lang/String; 512 0 82795 0 96 +ciMethod java/lang/Object getClass ()Ljava/lang/Class; 512 0 256 0 -1 +ciMethod java/lang/Object ()V 1024 0 7866351 0 128 +instanceKlass org/codehaus/groovy/runtime/powerassert/PowerAssertionError +instanceKlass org/codehaus/groovy/GroovyBugError +ciInstanceKlass java/lang/AssertionError 0 0 79 10 100 12 1 1 1 10 12 1 10 100 12 1 1 1 10 100 1 100 1 10 12 1 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 10 12 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass jdk/proxy3/$Proxy123 +instanceKlass jdk/proxy3/$Proxy122 +instanceKlass jdk/proxy3/$Proxy121 +instanceKlass jdk/proxy3/$Proxy120 +instanceKlass jdk/proxy3/$Proxy119 +instanceKlass jdk/proxy3/$Proxy118 +instanceKlass com/sun/proxy/jdk/proxy2/$Proxy117 +instanceKlass jdk/proxy6/$Proxy110 +instanceKlass com/sun/proxy/jdk/proxy4/$Proxy106 +instanceKlass jdk/proxy1/$Proxy105 +instanceKlass jdk/proxy1/$Proxy104 +instanceKlass jdk/proxy1/$Proxy103 +instanceKlass jdk/proxy1/$Proxy102 +instanceKlass jdk/proxy1/$Proxy101 +instanceKlass jdk/proxy1/$Proxy100 +instanceKlass com/sun/proxy/jdk/proxy2/$Proxy99 +instanceKlass com/sun/proxy/jdk/proxy2/$Proxy98 +instanceKlass jdk/proxy1/$Proxy97 +instanceKlass jdk/proxy1/$Proxy96 +instanceKlass jdk/proxy1/$Proxy95 +instanceKlass jdk/proxy1/$Proxy94 +instanceKlass jdk/proxy1/$Proxy93 +instanceKlass jdk/proxy1/$Proxy92 +instanceKlass jdk/proxy1/$Proxy91 +instanceKlass jdk/proxy1/$Proxy90 +instanceKlass jdk/proxy1/$Proxy89 +instanceKlass jdk/proxy1/$Proxy88 +instanceKlass jdk/proxy1/$Proxy87 +instanceKlass jdk/proxy1/$Proxy86 +instanceKlass jdk/proxy1/$Proxy85 +instanceKlass jdk/proxy1/$Proxy84 +instanceKlass jdk/proxy1/$Proxy83 +instanceKlass jdk/proxy1/$Proxy82 +instanceKlass jdk/proxy1/$Proxy81 +instanceKlass jdk/proxy1/$Proxy80 +instanceKlass jdk/proxy1/$Proxy79 +instanceKlass jdk/proxy1/$Proxy78 +instanceKlass jdk/proxy1/$Proxy77 +instanceKlass jdk/proxy1/$Proxy76 +instanceKlass jdk/proxy1/$Proxy75 +instanceKlass jdk/proxy1/$Proxy74 +instanceKlass jdk/proxy1/$Proxy73 +instanceKlass jdk/proxy1/$Proxy72 +instanceKlass jdk/proxy1/$Proxy71 +instanceKlass jdk/proxy1/$Proxy70 +instanceKlass jdk/proxy1/$Proxy69 +instanceKlass jdk/proxy1/$Proxy68 +instanceKlass jdk/proxy1/$Proxy67 +instanceKlass jdk/proxy1/$Proxy66 +instanceKlass jdk/proxy1/$Proxy65 +instanceKlass jdk/proxy1/$Proxy64 +instanceKlass jdk/proxy1/$Proxy63 +instanceKlass jdk/proxy2/$Proxy62 +instanceKlass jdk/proxy1/$Proxy61 +instanceKlass jdk/proxy1/$Proxy60 +instanceKlass jdk/proxy1/$Proxy59 +instanceKlass jdk/proxy1/$Proxy58 +instanceKlass jdk/proxy1/$Proxy57 +instanceKlass jdk/proxy1/$Proxy56 +instanceKlass jdk/proxy2/$Proxy55 +instanceKlass jdk/proxy3/$Proxy54 +instanceKlass jdk/proxy3/$Proxy53 +instanceKlass jdk/proxy1/$Proxy52 +instanceKlass jdk/proxy1/$Proxy51 +instanceKlass jdk/proxy1/$Proxy50 +instanceKlass jdk/proxy1/$Proxy49 +instanceKlass jdk/proxy2/$Proxy48 +instanceKlass jdk/proxy1/$Proxy47 +instanceKlass jdk/proxy1/$Proxy46 +instanceKlass jdk/proxy1/$Proxy45 +instanceKlass jdk/proxy1/$Proxy44 +instanceKlass jdk/proxy1/$Proxy43 +instanceKlass jdk/proxy1/$Proxy42 +instanceKlass jdk/proxy1/$Proxy41 +instanceKlass jdk/proxy1/$Proxy40 +instanceKlass jdk/proxy1/$Proxy39 +instanceKlass jdk/proxy1/$Proxy38 +instanceKlass jdk/proxy1/$Proxy37 +instanceKlass jdk/proxy1/$Proxy36 +instanceKlass jdk/proxy1/$Proxy35 +instanceKlass jdk/proxy1/$Proxy34 +instanceKlass jdk/proxy1/$Proxy33 +instanceKlass jdk/proxy1/$Proxy32 +instanceKlass jdk/proxy1/$Proxy31 +instanceKlass jdk/proxy1/$Proxy30 +instanceKlass jdk/proxy1/$Proxy29 +instanceKlass jdk/proxy1/$Proxy28 +instanceKlass jdk/proxy1/$Proxy27 +instanceKlass jdk/proxy1/$Proxy26 +instanceKlass jdk/proxy1/$Proxy25 +instanceKlass jdk/proxy1/$Proxy24 +instanceKlass jdk/proxy1/$Proxy23 +instanceKlass jdk/proxy1/$Proxy22 +instanceKlass jdk/proxy1/$Proxy21 +instanceKlass jdk/proxy1/$Proxy20 +instanceKlass com/sun/proxy/jdk/proxy2/$Proxy19 +instanceKlass jdk/proxy2/$Proxy18 +instanceKlass jdk/proxy2/$Proxy17 +instanceKlass jdk/proxy1/$Proxy16 +instanceKlass jdk/proxy1/$Proxy15 +instanceKlass jdk/proxy2/$Proxy14 +instanceKlass jdk/proxy1/$Proxy13 +instanceKlass jdk/proxy1/$Proxy12 +instanceKlass com/google/common/collect/$Proxy11 +instanceKlass jdk/proxy1/$Proxy10 +instanceKlass jdk/proxy2/$Proxy9 +instanceKlass jdk/proxy1/$Proxy8 +instanceKlass jdk/proxy1/$Proxy7 +instanceKlass jdk/proxy1/$Proxy6 +instanceKlass jdk/proxy1/$Proxy5 +instanceKlass jdk/proxy1/$Proxy4 +instanceKlass jdk/proxy2/$Proxy3 +instanceKlass jdk/proxy1/$Proxy2 +instanceKlass jdk/proxy2/$Proxy1 +instanceKlass jdk/proxy1/$Proxy0 +ciInstanceKlass java/lang/reflect/Proxy 1 1 588 100 1 10 7 12 1 1 1 10 7 12 1 1 1 9 7 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 7 12 1 1 7 1 10 12 1 1 9 12 1 1 10 7 12 1 1 1 18 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 18 10 12 1 1 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 100 1 100 1 100 1 10 100 12 1 1 1 10 12 1 100 1 10 12 1 1 100 1 10 100 1 10 12 1 1 10 12 1 10 100 12 1 1 1 100 1 100 1 10 8 1 10 12 1 1 10 10 12 1 18 12 1 1 10 7 12 1 1 1 7 1 10 12 1 10 7 12 1 1 10 12 1 10 100 1 8 1 10 10 12 1 1 10 12 1 1 9 12 1 1 100 1 10 9 12 1 1 10 100 12 1 1 1 100 1 10 12 1 1 10 12 100 1 10 100 12 1 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 1 10 12 1 1 100 1 10 12 1 18 12 1 1 11 100 12 1 1 8 1 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 100 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 10 12 1 8 1 10 12 1 8 1 10 12 1 11 7 12 1 1 100 1 10 100 1 10 11 12 1 1 11 100 12 1 1 11 12 1 11 100 12 1 1 11 100 1 11 12 1 10 12 1 1 11 11 11 12 1 8 1 100 1 10 12 1 10 12 1 1 100 1 10 12 1 10 12 1 10 12 1 1 10 12 1 10 12 1 7 1 9 12 1 10 7 1 10 9 12 1 100 1 1 1 1 5 0 1 1 1 1 1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 15 10 7 12 1 1 1 16 15 10 12 16 15 10 12 16 15 10 7 1 16 16 15 10 12 1 100 1 1 1 1 1 +staticfield java/lang/reflect/Proxy constructorParams [Ljava/lang/Class; 1 [Ljava/lang/Class; +staticfield java/lang/reflect/Proxy proxyCache Ljdk/internal/loader/ClassLoaderValue; jdk/internal/loader/ClassLoaderValue +staticfield java/lang/reflect/Proxy DEFAULT_METHODS_MAP Ljava/lang/ClassValue; java/lang/reflect/Proxy$1 +staticfield java/lang/reflect/Proxy EMPTY_ARGS [Ljava/lang/Object; 0 [Ljava/lang/Object; +staticfield java/lang/reflect/Proxy $assertionsDisabled Z 1 +ciInstanceKlass sun/reflect/generics/parser/SignatureParser 1 1 426 7 1 10 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 9 12 1 1 10 7 12 1 1 1 100 1 10 10 12 1 1 10 12 1 1 10 12 1 100 1 100 1 10 8 1 10 12 1 1 8 1 10 12 1 1 10 12 1 10 12 1 8 1 10 12 1 1 10 10 12 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 7 1 7 1 10 12 1 8 1 10 12 1 10 12 1 1 11 7 12 1 1 1 10 12 1 11 12 1 11 12 1 1 7 1 10 12 1 10 12 1 1 10 12 1 10 12 10 12 1 10 12 1 10 7 12 1 1 1 10 12 1 1 10 12 1 1 10 12 1 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 8 1 10 12 1 8 1 10 7 12 1 1 10 12 1 1 7 1 10 7 12 1 1 10 12 1 1 8 1 8 1 8 1 10 12 1 1 10 12 1 1 7 1 7 1 10 12 1 10 7 12 1 1 10 7 12 1 1 8 1 8 1 10 7 12 1 1 8 1 10 12 1 8 1 10 7 12 1 1 10 12 1 1 10 100 12 1 1 10 100 12 1 1 10 100 12 1 1 10 100 12 1 1 10 7 12 1 1 10 7 12 1 1 10 100 12 1 1 10 7 12 1 1 8 1 8 1 7 1 7 1 10 12 1 1 10 12 1 1 10 12 1 10 7 12 1 1 8 1 10 12 1 8 1 10 7 1 7 1 10 7 12 1 1 10 12 1 8 1 10 7 12 1 1 1 1 1 1 3 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield sun/reflect/generics/parser/SignatureParser $assertionsDisabled Z 1 +ciInstanceKlass sun/reflect/generics/tree/Tree 1 0 7 100 1 100 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/TypeTree 1 0 13 100 1 100 1 100 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/FieldTypeSignature 1 0 13 100 1 100 1 100 1 100 1 100 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/SimpleClassTypeSignature 1 1 57 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 11 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/ClassTypeSignature 1 1 48 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 11 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/scope/Scope 1 0 11 100 1 100 1 1 1 1 1 1 1 +instanceKlass sun/reflect/generics/scope/ConstructorScope +instanceKlass sun/reflect/generics/scope/MethodScope +instanceKlass sun/reflect/generics/scope/ClassScope +ciInstanceKlass sun/reflect/generics/scope/AbstractScope 1 1 80 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 12 1 1 10 12 1 1 11 7 12 1 1 1 11 7 12 1 1 1 10 7 12 1 1 1 10 12 1 11 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 +ciInstanceKlass sun/reflect/generics/scope/ClassScope 1 1 79 10 7 12 1 1 1 10 7 12 1 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 10 12 1 10 100 12 1 1 10 12 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 100 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/factory/GenericsFactory 1 0 32 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/factory/CoreReflectionFactory 1 1 190 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 7 1 10 12 1 1 7 1 10 12 1 1 9 12 1 1 100 1 100 1 8 1 10 12 1 10 10 12 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 10 7 12 1 1 10 12 1 1 11 7 12 1 1 1 10 12 1 10 12 1 1 100 1 7 1 10 12 1 10 7 12 1 1 1 10 12 1 10 7 12 1 1 9 100 12 1 1 1 9 7 1 9 100 1 9 100 1 9 7 1 9 7 1 9 100 1 9 100 1 9 7 1 10 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield sun/reflect/generics/factory/CoreReflectionFactory $assertionsDisabled Z 1 +ciInstanceKlass sun/reflect/generics/visitor/TypeTreeVisitor 1 0 44 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/visitor/Reifier 1 1 286 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 7 1 11 7 12 1 1 1 9 12 1 1 9 12 1 1 100 1 10 10 12 1 1 10 7 12 1 1 1 10 12 1 1 11 7 12 1 1 1 10 7 12 1 1 1 11 7 12 1 1 1 11 12 1 1 11 7 12 1 1 1 7 1 7 1 10 10 12 1 10 12 1 11 12 1 10 12 1 1 8 1 8 1 10 12 1 1 10 12 1 11 12 1 1 10 12 1 1 11 12 1 1 10 7 12 1 1 1 11 7 1 11 12 1 1 10 7 12 1 1 11 12 1 1 10 7 12 1 1 10 12 1 11 12 1 1 11 12 1 1 11 12 1 11 12 1 11 12 1 11 12 1 11 12 1 11 12 1 11 12 1 11 12 1 10 12 1 10 7 12 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield sun/reflect/generics/visitor/Reifier $assertionsDisabled Z 1 +ciInstanceKlass java/lang/reflect/GenericArrayType 1 0 11 100 1 100 1 100 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/ParameterizedType 1 0 14 100 1 100 1 100 1 1 1 1 1 1 1 1 +instanceKlass sun/reflect/generics/repository/FieldRepository +instanceKlass sun/reflect/generics/repository/GenericDeclRepository +ciInstanceKlass sun/reflect/generics/repository/AbstractRepository 1 1 53 9 7 12 1 1 1 9 12 1 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +instanceKlass sun/reflect/generics/repository/ConstructorRepository +instanceKlass sun/reflect/generics/repository/ClassRepository +ciInstanceKlass sun/reflect/generics/repository/GenericDeclRepository 1 1 78 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 7 1 11 12 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +ciInstanceKlass sun/reflect/generics/repository/ClassRepository 1 1 113 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 7 1 10 9 12 1 1 10 12 1 1 9 12 1 1 10 12 1 1 10 7 12 1 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 10 7 12 1 1 1 10 7 12 1 1 10 12 1 1 7 1 11 7 1 10 12 1 8 1 10 12 1 9 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 +staticfield sun/reflect/generics/repository/ClassRepository NONE Lsun/reflect/generics/repository/ClassRepository; sun/reflect/generics/repository/ClassRepository +ciInstanceKlass sun/reflect/generics/tree/FormalTypeParameter 1 1 51 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 12 1 11 7 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/Signature 1 0 11 100 1 100 1 100 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/ClassSignature 1 1 58 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 10 12 1 11 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 1 1 178 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 10 12 1 1 100 1 8 1 10 12 1 1 10 100 12 1 1 1 10 100 12 1 1 1 10 12 1 10 12 1 10 7 12 1 1 7 1 11 12 1 1 11 12 1 10 7 12 1 1 1 11 12 1 1 10 7 12 1 1 10 12 1 1 10 12 1 7 1 10 11 7 12 1 1 10 12 1 1 8 1 10 12 1 8 1 10 12 1 1 10 12 1 7 1 8 1 8 1 8 1 10 12 1 10 12 1 1 10 12 1 10 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/TypeVariable 1 1 39 100 1 100 1 100 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 8 1 1 12 10 1 1 1 8 1 1 1 8 1 +instanceKlass sun/reflect/generics/reflectiveObjects/WildcardTypeImpl +instanceKlass sun/reflect/generics/reflectiveObjects/TypeVariableImpl +ciInstanceKlass sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator 1 1 61 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 1 10 7 12 1 1 1 7 1 10 12 1 1 11 7 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 +ciInstanceKlass sun/reflect/generics/reflectiveObjects/TypeVariableImpl 1 1 272 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 7 1 7 1 100 1 100 1 100 1 10 12 1 8 1 10 12 1 1 10 7 12 1 1 1 10 12 1 1 10 10 12 1 10 12 1 7 1 10 12 1 1 10 7 12 1 1 7 1 10 7 12 1 1 1 100 1 10 12 1 1 10 12 1 7 1 11 12 1 1 11 10 7 12 1 1 1 10 12 1 1 10 7 1 10 12 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 7 1 10 12 1 1 10 100 12 1 1 1 10 12 1 1 10 12 1 8 1 10 10 100 12 1 1 1 10 12 1 1 10 12 1 1 11 100 12 1 1 1 10 12 1 100 1 10 11 12 1 10 100 12 1 1 1 10 12 1 1 9 100 12 1 1 1 11 12 1 1 100 1 8 1 10 12 1 8 1 10 12 1 9 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 +staticfield sun/reflect/generics/reflectiveObjects/TypeVariableImpl EMPTY_ANNOTATION_ARRAY [Ljava/lang/annotation/Annotation; 0 [Ljava/lang/annotation/Annotation; +ciInstanceKlass java/lang/reflect/WildcardType 1 0 12 100 1 100 1 100 1 1 1 1 1 1 +instanceKlass sun/reflect/generics/repository/MethodRepository +ciInstanceKlass sun/reflect/generics/repository/ConstructorRepository 1 1 106 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 7 1 10 9 12 1 1 10 12 1 1 10 7 12 1 1 9 12 1 10 12 1 10 12 1 1 7 1 10 12 1 1 7 1 10 12 1 1 11 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 11 100 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 100 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/repository/MethodRepository 1 1 62 10 7 12 1 1 1 7 1 10 9 12 1 1 10 12 1 1 10 12 1 1 10 12 1 1 7 1 10 12 1 1 11 7 12 1 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/tree/MethodTypeSignature 1 1 65 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 1 9 12 1 1 9 12 1 1 10 12 1 11 100 12 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 1 1 135 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 10 12 1 7 1 10 12 1 1 10 7 12 1 1 7 1 10 12 1 1 7 1 10 12 1 8 1 10 12 1 1 10 12 1 7 1 10 12 1 1 8 1 8 1 9 12 1 1 100 1 10 7 1 8 1 10 12 1 11 7 12 1 1 1 10 12 1 1 10 12 1 10 100 1 11 10 7 12 1 1 11 10 12 1 1 10 7 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +staticfield sun/reflect/generics/reflectiveObjects/WildcardTypeImpl $assertionsDisabled Z 1 +ciInstanceKlass sun/reflect/misc/ReflectUtil 1 1 258 10 100 12 1 1 1 10 7 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 7 12 1 1 1 11 100 12 1 1 10 12 1 1 11 12 1 1 10 100 12 1 1 1 10 9 100 12 1 1 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 1 10 10 12 1 1 10 12 1 10 12 1 1 8 1 10 12 1 1 10 12 1 1 10 12 1 10 12 1 1 10 12 1 10 12 1 100 1 10 100 12 1 1 1 10 12 1 1 10 100 12 1 1 10 12 1 1 10 12 1 10 12 1 100 1 8 1 10 12 10 100 1 10 12 1 8 1 10 10 12 1 8 1 10 12 1 1 8 8 1 10 12 1 1 100 1 10 8 1 10 12 1 1 10 12 1 10 12 1 1 1 8 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass java/lang/reflect/MalformedParameterizedTypeException 0 0 26 10 100 12 1 1 1 10 12 1 100 1 1 1 1 5 0 1 1 1 1 1 1 1 1 1 +ciInstanceKlass org/gradle/internal/reflect/MethodSet$MethodKey 1 1 85 10 10 9 10 9 10 7 10 10 10 10 7 10 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 12 12 12 7 12 12 12 100 1 12 7 12 12 7 12 1 7 12 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass com/sun/beans/TypeResolver 1 1 272 10 7 12 1 1 1 10 7 12 1 1 1 10 12 1 1 10 12 1 7 1 7 1 11 12 1 1 10 100 12 1 1 1 10 12 1 1 10 7 12 1 1 1 7 1 11 12 1 1 11 12 1 11 12 1 10 7 12 1 1 7 1 11 12 1 11 12 1 7 1 10 12 1 7 1 9 12 1 1 10 7 12 1 1 1 7 1 7 1 10 10 12 1 1 10 12 1 1 11 7 1 10 12 1 1 10 12 1 1 100 1 18 12 1 1 10 12 1 11 12 1 10 12 1 1 18 10 12 1 1 9 12 1 1 100 1 10 11 12 1 10 12 1 10 12 1 11 12 1 1 11 100 12 1 1 1 11 100 12 1 1 1 11 12 1 1 100 1 11 12 1 11 12 1 10 12 1 10 12 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 1 1 100 1 1 1 1 1 1 1 15 10 100 12 1 1 8 1 8 1 1 1 100 1 100 1 1 +staticfield com/sun/beans/TypeResolver CACHE Lcom/sun/beans/WeakCache; com/sun/beans/WeakCache +staticfield com/sun/beans/TypeResolver $assertionsDisabled Z 1 +ciInstanceKlass com/sun/beans/WeakCache 1 1 66 10 7 12 1 1 1 7 1 10 9 7 12 1 1 1 11 7 12 1 1 1 7 1 10 12 1 11 12 1 7 1 10 12 1 11 12 1 1 11 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass com/sun/beans/WildcardTypeImpl 1 1 89 10 7 12 1 1 1 9 7 12 1 1 1 9 12 1 10 100 12 1 1 100 1 11 12 1 1 10 100 12 1 1 1 11 12 1 10 12 1 1 8 1 100 1 8 1 10 12 1 8 1 8 1 10 12 1 1 100 1 10 12 1 1 10 12 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 1 1 1 +ciInstanceKlass sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl 1 1 68 10 7 12 1 1 1 9 7 12 1 1 1 10 12 1 7 1 10 10 12 1 1 11 7 12 1 1 1 10 12 1 1 8 1 10 12 1 100 1 11 10 100 12 1 1 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciInstanceKlass com/sun/tools/javac/comp/ArgumentAttr$UniquePos 1 1 90 9 7 12 1 1 1 10 7 12 1 1 1 9 7 12 1 1 1 9 9 7 12 1 1 1 10 7 12 1 1 1 9 12 1 1 10 12 1 1 100 1 10 10 100 12 1 1 1 11 100 12 1 1 1 10 12 1 1 8 1 10 12 1 1 10 12 1 10 12 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +ciMethodData java/lang/Object ()V 2 7866351 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 4 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String isLatin1 ()Z 2 6799661 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x30007 0x0 0x58 0x67bf5f 0x80000006000a0007 0x1f9 0x38 0x67bd63 0xe0003 0x67bd82 0x18 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String hashCode ()I 2 15496 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 42 0x60007 0x2e63 0x108 0xd24 0xd0007 0x4 0xe8 0xd20 0x110005 0xd20 0x0 0x0 0x0 0x0 0x0 0x140007 0x1 0x48 0xd20 0x1b0002 0xd20 0x1e0003 0xd20 0x28 0x250002 0x1 0x2a0007 0xd20 0x38 0x1 0x320003 0x1 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xe oops 0 methods 0 +ciMethodData java/lang/StringLatin1 hashCode ([B)I 2 29045 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0xd0007 0x3ef 0x38 0x67c3 0x250003 0x67c3 0xffffffffffffffe0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/StringUTF16 hashCode ([B)I 1 1036 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0xb0007 0x37 0x48 0x40c 0x140002 0x40c 0x1c0003 0x40c 0xffffffffffffffd0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/String equals (Ljava/lang/Object;)Z 2 17689 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 49 0x20007 0x413a 0x20 0x2cb 0x400080104 0xffffffffffffffff 0x0 0x1ff7e6d43c0 0x3477 0x1ff7e6d4450 0x1 0xb0007 0xcc4 0xe0 0x3477 0xf0004 0x0 0x0 0x1ff7e6d43c0 0x3477 0x0 0x0 0x160007 0x0 0x40 0x3477 0x8000000600210007 0x12 0x68 0x3466 0x2c0002 0x3466 0x2f0007 0x2c09 0x38 0x85d 0x330003 0x85d 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 3 7 java/lang/String 9 java/lang/Class 18 java/lang/String methods 0 +ciMethodData java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 2 75962 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 32 0x20007 0xeb11 0x98 0x3c93 0x60007 0x0 0x90 0x3c93 0xb0005 0x3908 0x0 0x1ff7e6d43c0 0x2e9 0x1ff2c634ea0 0xa2 0xe0007 0x18c0 0x38 0x23d3 0x120003 0x10ee4 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 2 11 java/lang/String 13 java/lang/module/ModuleDescriptor methods 0 +ciMethodData java/util/HashMap hash (Ljava/lang/Object;)I 2 121545 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 23 0x8000000600010007 0x1d8f2 0x38 0xd3 0x50003 0xd3 0x50 0x90005 0x14d6f 0x0 0x1ff7e6d43c0 0x8994 0x1ff2c634ea0 0x1ef 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xffffffffffffffff oops 2 10 java/lang/String 12 java/lang/module/ModuleDescriptor methods 0 +ciMethodData java/util/HashMap getNode (Ljava/lang/Object;)Ljava/util/HashMap$Node; 2 28986 orig 80 3 0 0 0 1 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 103 0x60007 0x68a 0x2e8 0x69ab 0xe0007 0x0 0x2c8 0x69ab 0x170002 0x69ab 0x210007 0x2904 0x298 0x40a8 0x2a0007 0xff8 0xb8 0x30b0 0x350007 0x2377 0x98 0xd39 0x390007 0x1 0x78 0xd38 0x3f0005 0x7e7 0x0 0x1ff7e6d43c0 0x543 0x1ff2c621cc0 0xe 0x8000000600420007 0x27d 0x20 0xabd 0x4e0007 0x980 0x1c0 0x8f6 0x520004 0xfffffffffffff78a 0x0 0x1ff2c61cd00 0x4 0x1ff2c621d70 0x84 0x8000000600550007 0x876 0x90 0x82 0x590004 0x0 0x0 0x1ff2c61fee0 0x82 0x0 0x0 0x5f0005 0x82 0x0 0x0 0x0 0x0 0x0 0x6a0007 0x42d 0xb8 0x74c 0x760007 0x1f5 0x98 0x557 0x7a0007 0x0 0x78 0x557 0x800005 0x3f1 0x0 0x1ff7e6d43c0 0x163 0x1ff2c621cc0 0x3 0x8000000600830007 0x1c5 0x20 0x393 0x910007 0x303 0xffffffffffffff48 0x2ef 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0xffffffffffffffff oops 7 29 java/lang/String 31 java/util/zip/ZipFile$Source$Key 44 java/util/HashMap$Node 46 java/util/LinkedHashMap$Entry 55 java/util/HashMap$TreeNode 81 java/lang/String 83 java/util/zip/ZipFile$Source$Key methods 0 +ciMethodData java/util/HashMap get (Ljava/lang/Object;)Ljava/lang/Object; 2 38742 orig 80 1 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 24 0x20005 0x9650 0x0 0x0 0x0 0x0 0x0 0x70007 0x3352 0x38 0x62ff 0xb0003 0x62ff 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0xffffffffffffffff oops 0 methods 0 +ciMethodData java/lang/Object equals (Ljava/lang/Object;)Z 2 224963 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 17 0x20007 0x12973 0x38 0x243d1 0x60003 0x243d3 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData java/util/AbstractMap ()V 2 327869 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 7 0x10002 0x4ffba 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/util/HashMap ()V 2 121132 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 9 0x10002 0x1d82c 0x0 0x0 0x0 0x0 0x9 0x1 0x10 oops 0 methods 0 +ciMethodData java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 2 137003 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 14 0x2 0x2169b 0x30007 0x0 0x20 0x2169d 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x0 oops 0 methods 0 +ciMethodData java/lang/System allowSecurityManager ()Z 2 137002 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 11 0x40007 0x0 0x38 0x2169a 0x80003 0x2169a 0x18 0x0 0x0 0x9 0x0 oops 0 methods 0 +ciMethodData java/lang/ClassLoader getClassLoader (Ljava/lang/Class;)Ljava/lang/ClassLoader; 2 1421 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 20 0x10007 0x58d 0x20 0x0 0x70005 0x58d 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethod java/lang/AssertionError (Ljava/lang/Object;)V 0 0 1 0 -1 +ciMethodData java/lang/Class getName ()Ljava/lang/String; 2 82795 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 23 0x60007 0x15d5 0x38 0x12c96 0xa0003 0x12c97 0x50 0xe0005 0x15d5 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xffffffffffffffff oops 0 methods 0 +ciMethodData java/lang/reflect/Array newInstance (Ljava/lang/Class;I)Ljava/lang/Object; 2 12097 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 12 0x20002 0x2f37 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethod java/lang/reflect/Proxy isProxyClass (Ljava/lang/Class;)Z 0 0 170 0 -1 +ciMethod sun/reflect/generics/parser/SignatureParser ()V 528 0 5398 0 0 +ciMethod sun/reflect/generics/parser/SignatureParser init (Ljava/lang/String;)V 768 0 4273 0 288 +ciMethod sun/reflect/generics/parser/SignatureParser make ()Lsun/reflect/generics/parser/SignatureParser; 528 0 5398 0 0 +ciMethod sun/reflect/generics/parser/SignatureParser parseClassSig (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 92 0 354 0 0 +ciMethod sun/reflect/generics/parser/SignatureParser parseClassSignature ()Lsun/reflect/generics/tree/ClassSignature; 92 0 358 0 0 +ciMethod sun/reflect/generics/parser/SignatureParser parseZeroOrMoreFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 512 0 2020 0 -1 +ciMethod sun/reflect/generics/parser/SignatureParser parseClassTypeSignature ()Lsun/reflect/generics/tree/ClassTypeSignature; 512 0 8112 0 -1 +ciMethod sun/reflect/generics/parser/SignatureParser parseSuperInterfaces ()[Lsun/reflect/generics/tree/ClassTypeSignature; 512 438 358 0 -1 +ciMethod sun/reflect/generics/tree/TypeTree accept (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V 0 0 1 0 -1 +ciMethod sun/reflect/generics/scope/ClassScope (Ljava/lang/Class;)V 520 0 4057 0 0 +ciMethod sun/reflect/generics/scope/ClassScope make (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope; 520 0 4057 0 0 +ciMethod sun/reflect/generics/scope/AbstractScope (Ljava/lang/reflect/GenericDeclaration;)V 538 0 5719 0 0 +ciMethod sun/reflect/generics/factory/GenericsFactory makeTypeVariable (Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable; 0 0 1 0 -1 +ciMethod sun/reflect/generics/factory/CoreReflectionFactory (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)V 768 0 5397 0 0 +ciMethod sun/reflect/generics/factory/CoreReflectionFactory getDecl ()Ljava/lang/reflect/GenericDeclaration; 234 0 117 0 0 +ciMethod sun/reflect/generics/factory/CoreReflectionFactory make (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory; 768 0 5397 0 0 +ciMethod sun/reflect/generics/factory/CoreReflectionFactory makeTypeVariable (Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable; 228 0 253 0 0 +ciMethod sun/reflect/generics/visitor/TypeTreeVisitor visitFormalTypeParameter (Lsun/reflect/generics/tree/FormalTypeParameter;)V 0 0 1 0 -1 +ciMethod sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 536 0 7833 0 0 +ciMethod sun/reflect/generics/visitor/Reifier getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 258 0 129 0 0 +ciMethod sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 536 0 7833 0 0 +ciMethod sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 866 0 7832 0 0 +ciMethod sun/reflect/generics/visitor/Reifier visitFormalTypeParameter (Lsun/reflect/generics/tree/FormalTypeParameter;)V 228 0 253 0 0 +ciMethod java/lang/reflect/GenericArrayType getGenericComponentType ()Ljava/lang/reflect/Type; 0 0 1 0 -1 +ciMethod java/lang/reflect/ParameterizedType getActualTypeArguments ()[Ljava/lang/reflect/Type; 0 0 1 0 -1 +ciMethod java/lang/reflect/ParameterizedType getRawType ()Ljava/lang/reflect/Type; 0 0 1 0 -1 +ciMethod java/lang/reflect/ParameterizedType getOwnerType ()Ljava/lang/reflect/Type; 0 0 1 0 -1 +ciMethod sun/reflect/generics/repository/ClassRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 92 0 354 0 0 +ciMethod sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 92 0 354 0 0 +ciMethod sun/reflect/generics/repository/ClassRepository make (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository; 92 0 354 0 0 +ciMethod sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree; 92 0 354 0 0 +ciMethod sun/reflect/generics/repository/GenericDeclRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 82 0 2016 0 0 +ciMethod sun/reflect/generics/repository/GenericDeclRepository getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 770 0 10424 0 0 +ciMethod sun/reflect/generics/repository/GenericDeclRepository computeTypeParameters ()[Ljava/lang/reflect/TypeVariable; 114 96 1077 0 0 +ciMethod sun/reflect/generics/repository/AbstractRepository getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 264 0 132 0 0 +ciMethod sun/reflect/generics/repository/AbstractRepository getTree ()Lsun/reflect/generics/tree/Tree; 266 0 133 0 0 +ciMethod sun/reflect/generics/repository/AbstractRepository getReifier ()Lsun/reflect/generics/visitor/Reifier; 210 0 3572 0 0 +ciMethod sun/reflect/generics/repository/AbstractRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 82 0 2025 0 0 +ciMethod sun/reflect/generics/repository/AbstractRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree; 0 0 1 0 -1 +ciMethod sun/reflect/generics/tree/FormalTypeParameter getBounds ()[Lsun/reflect/generics/tree/FieldTypeSignature; 234 0 117 0 0 +ciMethod sun/reflect/generics/tree/FormalTypeParameter getName ()Ljava/lang/String; 234 0 117 0 0 +ciMethod sun/reflect/generics/tree/FormalTypeParameter accept (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V 228 0 253 0 0 +ciMethod sun/reflect/generics/tree/Signature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 0 0 1 0 -1 +ciMethod sun/reflect/generics/tree/ClassSignature make ([Lsun/reflect/generics/tree/FormalTypeParameter;Lsun/reflect/generics/tree/ClassTypeSignature;[Lsun/reflect/generics/tree/ClassTypeSignature;)Lsun/reflect/generics/tree/ClassSignature; 512 0 358 0 -1 +ciMethod sun/reflect/generics/tree/ClassSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 256 0 128 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V 512 0 3726 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl validateConstructorArguments ()V 512 552 3726 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl make (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lsun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl; 34 0 3726 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getActualTypeArguments ()[Ljava/lang/reflect/Type; 36 0 5113 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/Class; 278 0 139 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getOwnerType ()Ljava/lang/reflect/Type; 314 0 157 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/reflect/Type; 10 0 5914 0 0 +ciMethod java/lang/reflect/TypeVariable getGenericDeclaration ()Ljava/lang/reflect/GenericDeclaration; 0 0 1 0 -1 +ciMethod java/lang/reflect/TypeVariable getName ()Ljava/lang/String; 0 0 1 0 -1 +ciMethod sun/reflect/generics/reflectiveObjects/TypeVariableImpl (Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;Lsun/reflect/generics/factory/GenericsFactory;)V 506 0 253 0 -1 +ciMethod sun/reflect/generics/reflectiveObjects/TypeVariableImpl make (Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/reflectiveObjects/TypeVariableImpl; 228 0 253 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/TypeVariableImpl getGenericDeclaration ()Ljava/lang/reflect/GenericDeclaration; 612 0 7581 0 224 +ciMethod sun/reflect/generics/reflectiveObjects/TypeVariableImpl getName ()Ljava/lang/String; 264 0 132 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/TypeVariableImpl equals (Ljava/lang/Object;)Z 516 0 324 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/TypeVariableImpl hashCode ()I 768 0 3303 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 258 0 129 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getReifier ()Lsun/reflect/generics/visitor/Reifier; 278 0 888 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator reifyBounds ([Lsun/reflect/generics/tree/FieldTypeSignature;)[Ljava/lang/reflect/Type; 164 82 1244 0 0 +ciMethod java/lang/reflect/WildcardType getUpperBounds ()[Ljava/lang/reflect/Type; 0 0 1 0 -1 +ciMethod java/lang/reflect/WildcardType getLowerBounds ()[Ljava/lang/reflect/Type; 0 0 1 0 -1 +ciMethod sun/reflect/generics/tree/MethodTypeSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 256 0 128 0 0 +ciMethodData sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 2 7833 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 8 0x50002 0x1d8d 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 2 7833 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 10 0x10002 0x1d8d 0x0 0x0 0x0 0x0 0x9 0x2 0x4 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/reflect/Type; 2 5914 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 16 0x10005 0x0 0x0 0x1ff292b3040 0x1715 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 1 3 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl methods 0 +ciMethodData sun/reflect/generics/parser/SignatureParser make ()Lsun/reflect/generics/parser/SignatureParser; 2 5398 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 6 0x40002 0x140e 0x0 0x0 0x9 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/parser/SignatureParser ()V 2 5398 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 7 0x10002 0x140e 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/scope/ClassScope make (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope; 2 4057 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 8 0x50002 0xed5 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/scope/ClassScope (Ljava/lang/Class;)V 2 4057 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 8 0x20002 0xed5 0x0 0x0 0x9 0x2 0x6 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/scope/AbstractScope (Ljava/lang/reflect/GenericDeclaration;)V 2 5719 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 10 0x10002 0x154a 0x0 0x0 0x0 0x0 0x9 0x2 0x6 0x0 oops 0 methods 0 +ciMethodData java/lang/ref/WeakReference (Ljava/lang/Object;)V 2 33511 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 8 0x20002 0x82bf 0x0 0x0 0x9 0x2 0x6 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/parser/SignatureParser init (Ljava/lang/String;)V 2 4273 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 8 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/factory/CoreReflectionFactory make (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory; 2 5397 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 9 0x60002 0x1395 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/factory/CoreReflectionFactory (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)V 2 5397 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 11 0x10002 0x1395 0x0 0x0 0x0 0x0 0x9 0x3 0x6 0x0 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 2 7832 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 19 0x30007 0x1ce7 0x50 0x0 0xa0007 0x0 0x30 0x0 0x110002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl make (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lsun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl; 2 3726 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 10 0x70002 0xe7d 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethod sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getUpperBounds ()[Ljava/lang/reflect/Type; 512 0 1272 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getLowerBounds ()[Ljava/lang/reflect/Type; 514 0 1593 0 0 +ciMethodData sun/reflect/generics/repository/GenericDeclRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 2 2016 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 9 0x30002 0x7b7 0x0 0x0 0x9 0x3 0xffffffffffffffff 0xffffffffffffffff 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/repository/AbstractRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 2 2025 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 20 0x10002 0x7c0 0x70005 0xc1 0x0 0x1ff28f9a510 0x60f 0x1ff28f9a5c0 0x52 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0xffffffffffffffff 0xffffffffffffffff 0x0 oops 2 5 sun/reflect/generics/repository/MethodRepository 7 sun/reflect/generics/repository/ConstructorRepository methods 0 +ciMethodData sun/reflect/generics/repository/AbstractRepository getReifier ()Lsun/reflect/generics/visitor/Reifier; 2 3572 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x10005 0xd8b 0x0 0x0 0x0 0x0 0x0 0x40002 0xd8b 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getActualTypeArguments ()[Ljava/lang/reflect/Type; 2 5113 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 23 0x40005 0x0 0x0 0x1ff29647480 0x12f1 0x1ff2cecd210 0xf6 0x70004 0x0 0x0 0x1ff29647480 0x12f1 0x1ff2cecd210 0xf6 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 4 3 [Ljava/lang/reflect/Type; 5 [Ljava/lang/reflect/TypeVariable; 10 [Ljava/lang/reflect/Type; 12 [Ljava/lang/reflect/TypeVariable; methods 0 +ciMethod sun/reflect/misc/ReflectUtil conservativeCheckMemberAccess (Ljava/lang/reflect/Member;)V 0 0 2 0 -1 +ciMethod sun/reflect/misc/ReflectUtil checkPackageAccess (Ljava/lang/Class;)V 654 0 13849 0 -1 +ciMethod sun/reflect/misc/ReflectUtil needsPackageAccessCheck (Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)Z 0 0 1 0 -1 +ciMethod sun/reflect/misc/ReflectUtil checkProxyPackageAccess (Ljava/lang/ClassLoader;[Ljava/lang/Class;)V 0 0 1 0 -1 +ciMethod sun/reflect/misc/ReflectUtil isNonPublicProxyClass (Ljava/lang/Class;)Z 0 0 1 0 -1 +ciMethodData sun/reflect/generics/reflectiveObjects/TypeVariableImpl getGenericDeclaration ()Ljava/lang/reflect/GenericDeclaration; 2 7581 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 68 0x40004 0xfffffffffffffffe 0x0 0x1ff7e6d4450 0x1c69 0x0 0x0 0x70007 0x2 0x80 0x1c69 0xe0004 0x0 0x0 0x1ff7e6d4450 0x1c69 0x0 0x0 0x110002 0x1c69 0x140003 0x1c69 0x138 0x1b0004 0x0 0x0 0x1ff7e6d5c30 0x2 0x0 0x0 0x1e0007 0x2 0x78 0x0 0x250004 0x0 0x0 0x0 0x0 0x0 0x0 0x280007 0x0 0x80 0x0 0x2f0004 0x0 0x0 0x1ff7e6d5c30 0x2 0x0 0x0 0x320002 0x2 0x350003 0x2 0x28 0x3e0002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 4 3 java/lang/Class 14 java/lang/Class 26 java/lang/reflect/Method 48 java/lang/reflect/Method methods 0 +ciMethodData java/lang/Class getGenericInfo ()Lsun/reflect/generics/repository/ClassRepository; 2 5812 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 43 0x60007 0x13f8 0xd8 0xbd 0xa0005 0xbd 0x0 0x0 0x0 0x0 0x0 0xf0007 0x6b 0x38 0x52 0x160003 0x52 0x60 0x1b0005 0x6b 0x0 0x0 0x0 0x0 0x0 0x1e0002 0x6b 0x2b0007 0x876 0x38 0xc3f 0x2f0003 0xc3f 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xffffffffffffffff oops 0 methods 0 +ciMethodData java/lang/Class getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 1 357 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 13 0x20002 0x138 0x50002 0x138 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/repository/ClassRepository make (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository; 1 354 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 9 0x60002 0x134 0x0 0x0 0x0 0x9 0x2 0xffffffffffffffff 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/repository/ClassRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 1 354 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 9 0x30002 0x134 0x0 0x0 0x9 0x3 0xffffffffffffffff 0xffffffffffffffff 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree; 1 354 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 17 0x20005 0x0 0x0 0x1ff2b50bb70 0x134 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 1 3 sun/reflect/generics/repository/ClassRepository methods 0 +ciMethodData sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 1 354 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 19 0x2 0x134 0x40005 0x0 0x0 0x1ff28f9dfb0 0x134 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 1 5 sun/reflect/generics/parser/SignatureParser methods 0 +ciMethodData sun/reflect/generics/parser/SignatureParser parseClassSig (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 1 354 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 24 0x20005 0x134 0x0 0x0 0x0 0x0 0x0 0x60005 0x134 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/parser/SignatureParser parseClassSignature ()Lsun/reflect/generics/tree/ClassSignature; 1 358 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 42 0x30007 0x138 0x50 0x0 0xa0007 0x0 0x30 0x0 0x110002 0x0 0x160005 0x138 0x0 0x0 0x0 0x0 0x0 0x1a0005 0x138 0x0 0x0 0x0 0x0 0x0 0x1e0005 0x138 0x0 0x0 0x0 0x0 0x0 0x210002 0x138 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xffffffffffffffff oops 0 methods 0 +ciMethodData sun/reflect/generics/repository/GenericDeclRepository getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 2 10424 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 34 0x60007 0x233b 0x58 0x3fc 0xa0005 0x3fc 0x0 0x0 0x0 0x0 0x0 0x140005 0x0 0x0 0x1ff2cecd210 0x2737 0x0 0x0 0x170004 0x0 0x0 0x1ff2cecd210 0x2737 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 2 14 [Ljava/lang/reflect/TypeVariable; 21 [Ljava/lang/reflect/TypeVariable; methods 0 +ciMethodData sun/reflect/generics/repository/GenericDeclRepository computeTypeParameters ()[Ljava/lang/reflect/TypeVariable; 2 1077 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 72 0x10005 0x96 0x0 0x1ff28f9a510 0x335 0x1ff28f9a5c0 0x31 0x40004 0x0 0x0 0x1ff29a6eda0 0x366 0x1ff28f9d290 0x96 0x70005 0x0 0x0 0x1ff29a6eda0 0x366 0x1ff28f9d290 0x96 0x1b0007 0x3fc 0x150 0xc9 0x1f0005 0x0 0x0 0x1ff2b50bb70 0x7d 0x1ff28f9a510 0x4c 0x2a0005 0x0 0x0 0x1ff2998a5c0 0xc9 0x0 0x0 0x320005 0x0 0x0 0x1ff2998e0a0 0xc9 0x0 0x0 0x350004 0x0 0x0 0x1ff292b4fd0 0xc9 0x0 0x0 0x380004 0x0 0x0 0x1ff292b4fd0 0xc9 0x0 0x0 0x3c0003 0xc9 0xfffffffffffffec8 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 12 3 sun/reflect/generics/repository/MethodRepository 5 sun/reflect/generics/repository/ConstructorRepository 10 sun/reflect/generics/tree/MethodTypeSignature 12 sun/reflect/generics/tree/ClassSignature 17 sun/reflect/generics/tree/MethodTypeSignature 19 sun/reflect/generics/tree/ClassSignature 28 sun/reflect/generics/repository/ClassRepository 30 sun/reflect/generics/repository/MethodRepository 35 sun/reflect/generics/tree/FormalTypeParameter 42 sun/reflect/generics/visitor/Reifier 49 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 56 sun/reflect/generics/reflectiveObjects/TypeVariableImpl methods 0 +ciMethodData java/lang/Class getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 2 17071 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 27 0x10005 0x410e 0x0 0x0 0x0 0x0 0x0 0x60007 0x231e 0x58 0x1df0 0xa0005 0x0 0x0 0x1ff2b50bb70 0x1df0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 1 14 sun/reflect/generics/repository/ClassRepository methods 0 +ciMethod com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 512 0 8953 0 0 +ciMethod com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type; 346 436 8369 0 0 +ciMethod com/sun/beans/TypeResolver erase (Ljava/lang/reflect/Type;)Ljava/lang/Class; 522 0 6749 0 -1 +ciMethod com/sun/beans/TypeResolver prepare (Ljava/util/Map;Ljava/lang/reflect/Type;)V 0 0 1101 0 0 +ciMethod com/sun/beans/TypeResolver fixGenericArray (Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 0 0 207 0 0 +ciMethod com/sun/beans/WeakCache get (Ljava/lang/Object;)Ljava/lang/Object; 0 0 442 0 0 +ciMethod com/sun/beans/WeakCache put (Ljava/lang/Object;Ljava/lang/Object;)V 0 0 34 0 0 +ciMethod com/sun/beans/WildcardTypeImpl ([Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V 10 0 585 0 0 +ciMethodData com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 2 8956 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 260 0x10004 0xfffffffffffff766 0x0 0x1ff292b3040 0x1 0x1ff292b4f20 0x1 0x40007 0x89a 0x20 0x1962 0xa0004 0xfffffffffffff779 0x0 0x1ff292b3040 0x1 0x1ff292b4f20 0x1 0xd0007 0x887 0x1a0 0x13 0x110004 0x0 0x0 0x1ff292b3cb0 0x13 0x0 0x0 0x140005 0x0 0x0 0x1ff292b3cb0 0x13 0x0 0x0 0x1c0002 0x13 0x210004 0xffffffffffffffed 0x0 0x0 0x0 0x0 0x0 0x240007 0x13 0xb8 0x0 0x280004 0x0 0x0 0x0 0x0 0x0 0x0 0x2c0002 0x0 0x2f0005 0x0 0x0 0x0 0x0 0x0 0x0 0x320003 0x0 0x28 0x360002 0x0 0x3b0004 0xfffffffffffffc01 0x0 0x1ff292b3040 0x488 0x1ff292b4f20 0x1 0x3e0007 0x3ff 0x158 0x488 0x420004 0x0 0x0 0x1ff292b3040 0x488 0x0 0x0 0x480005 0x0 0x0 0x1ff292b3040 0x488 0x0 0x0 0x4d0002 0x488 0x520005 0x0 0x0 0x1ff292b3040 0x488 0x0 0x0 0x570004 0x0 0x0 0x1ff7e6d4450 0x488 0x0 0x0 0x5c0005 0x0 0x0 0x1ff292b3040 0x488 0x0 0x0 0x610002 0x488 0x660004 0xfffffffffffffe46 0x0 0x1ff292b4f20 0x245 0x0 0x0 0x690007 0x1ba 0xf8 0x245 0x6d0004 0x0 0x0 0x1ff292b4f20 0x245 0x0 0x0 0x730005 0x0 0x0 0x1ff292b4f20 0x245 0x0 0x0 0x780002 0x245 0x7e0005 0x0 0x0 0x1ff292b4f20 0x245 0x0 0x0 0x830002 0x245 0x8f0002 0x245 0x940004 0x0 0x0 0x1ff292b4fd0 0x1ba 0x0 0x0 0x970007 0x0 0x228 0x1ba 0xa40005 0x1ba 0x0 0x0 0x0 0x0 0x0 0xa70104 0x0 0x0 0x1ff292b1f00 0x198 0x0 0x0 0xac0007 0x198 0x78 0x22 0xb30002 0x22 0xb90002 0x22 0xc10005 0x22 0x0 0x0 0x0 0x0 0x0 0xc60003 0x1ba 0x18 0xd20005 0x0 0x0 0x1ff292b1f00 0x1ba 0x0 0x0 0xd70104 0x0 0x0 0x1ff292b4fd0 0xf6 0x1ff7e6d4450 0x30 0xdc0007 0x94 0x78 0x126 0xe10005 0x0 0x0 0x1ff292b4fd0 0xf6 0x1ff7e6d4450 0x30 0xe40007 0xcf 0x20 0x57 0xea0002 0xcf 0xf00002 0xcf 0xf90005 0x0 0x0 0x0 0x0 0x0 0x0 0xfc000a 0x0 0x3 0x0 0x0 0x1ff7e6d43c0 0x1010002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 25 3 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 5 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 14 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 16 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 25 sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl 32 sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl 73 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 75 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 84 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 91 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 100 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 107 java/lang/Class 114 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 123 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 134 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 141 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 150 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 161 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 179 java/util/HashMap 204 java/util/HashMap 211 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 213 java/lang/Class 222 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 224 java/lang/Class 246 java/lang/String methods 0 +ciMethodData com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type; 2 8373 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 26 0xe0007 0x2008 0x80 0x1250 0x190002 0x1250 0x1c0004 0x0 0x0 0x1ff7e6d4450 0xd3c 0x1ff29647ec0 0x243 0x200003 0x1250 0xffffffffffffff98 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0xffffffffffffffff 0x0 oops 2 9 java/lang/Class 11 com/sun/beans/WildcardTypeImpl methods 0 +ciMethodData com/sun/beans/WildcardTypeImpl ([Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V 1 585 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 11 0x10002 0x244 0x0 0x0 0x0 0x0 0x9 0x3 0x6 0x0 0x0 oops 0 methods 0 +ciMethodData com/sun/beans/WeakCache get (Ljava/lang/Object;)Ljava/lang/Object; 1 442 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 46 0x50005 0x0 0x0 0x1ff2b0cbac0 0x1ba 0x0 0x0 0xa0104 0x0 0x0 0x1ff7e6d54c0 0x198 0x0 0x0 0xf0007 0x198 0x20 0x22 0x150005 0x0 0x0 0x1ff7e6d54c0 0x198 0x0 0x0 0x1a0007 0x198 0x58 0x0 0x220005 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0xffffffffffffffff oops 3 3 java/util/WeakHashMap 10 java/lang/ref/WeakReference 21 java/lang/ref/WeakReference methods 0 +ciMethodData com/sun/beans/TypeResolver prepare (Ljava/util/Map;Ljava/lang/reflect/Type;)V 2 1752 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 213 0x10004 0xfffffffffffffccb 0x0 0x1ff7e6d4450 0x118 0x1ff292b3040 0xbc 0x40007 0x335 0x38 0x118 0x80003 0x118 0x88 0xc0004 0x0 0x0 0x1ff292b3040 0x335 0x0 0x0 0xf0005 0x0 0x0 0x1ff292b3040 0x335 0x0 0x0 0x140004 0x0 0x0 0x1ff7e6d4450 0x44d 0x0 0x0 0x190005 0x44d 0x0 0x0 0x0 0x0 0x0 0x1e0004 0xfffffffffffffccb 0x0 0x1ff7e6d4450 0x118 0x1ff292b3040 0xbc 0x210007 0x335 0x38 0x118 0x250003 0x118 0x88 0x290004 0x0 0x0 0x1ff292b3040 0x335 0x0 0x0 0x2c0005 0x0 0x0 0x1ff292b3040 0x335 0x0 0x0 0x360007 0x44d 0x50 0x0 0x3e0007 0x0 0x30 0x0 0x450002 0x0 0x500007 0x44d 0x70 0x335 0x5d0005 0x0 0x0 0x1ff292b1f00 0x335 0x0 0x0 0x660003 0x335 0xffffffffffffffa8 0x6a0005 0x44d 0x0 0x0 0x0 0x0 0x0 0x710007 0x3c5 0x30 0x88 0x770002 0x88 0x7b0005 0x44d 0x0 0x0 0x0 0x0 0x0 0x8c0007 0x44d 0x48 0x3a3 0x990002 0x3a3 0x9f0003 0x3a3 0xffffffffffffffd0 0xa30004 0xfffffffffffffccb 0x0 0x1ff7e6d4450 0x118 0x1ff292b3040 0xbc 0xa60007 0x335 0x248 0x118 0xab0007 0x118 0x228 0x0 0xaf0005 0x0 0x0 0x0 0x0 0x0 0x0 0xb40005 0x0 0x0 0x0 0x0 0x0 0x0 0xbd0005 0x0 0x0 0x0 0x0 0x0 0x0 0xc20007 0x0 0x160 0x0 0xc70005 0x0 0x0 0x0 0x0 0x0 0x0 0xcc0004 0x0 0x0 0x0 0x0 0x0 0x0 0xd50005 0x0 0x0 0x0 0x0 0x0 0x0 0xda0004 0x0 0x0 0x0 0x0 0x0 0x0 0xdd0002 0x0 0xe00005 0x0 0x0 0x0 0x0 0x0 0x0 0xe60003 0x0 0xfffffffffffffe80 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 12 3 java/lang/Class 5 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 17 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 24 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 31 java/lang/Class 45 java/lang/Class 47 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 59 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 66 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl 87 java/util/HashMap 126 java/lang/Class 128 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl methods 0 +ciMethodData com/sun/beans/WeakCache put (Ljava/lang/Object;Ljava/lang/Object;)V 1 34 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 34 0x10007 0x0 0x80 0x22 0xe0002 0x22 0x110005 0x0 0x0 0x1ff2b0cbac0 0x22 0x0 0x0 0x170003 0x22 0x50 0x1f0005 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0xffffffffffffffff 0x0 oops 1 9 java/util/WeakHashMap methods 0 +ciMethodData com/sun/beans/TypeResolver fixGenericArray (Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 1 207 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 63 0x10004 0xffffffffffffff31 0x0 0x1ff292b4fd0 0x9f 0x1ff7e6d4450 0x30 0x40007 0xcf 0x178 0x0 0x80004 0x0 0x0 0x0 0x0 0x0 0x0 0xb0005 0x0 0x0 0x0 0x0 0x0 0x0 0x120002 0x0 0x170004 0x0 0x0 0x0 0x0 0x0 0x0 0x1a0007 0x0 0xa0 0x0 0x1e0004 0x0 0x0 0x0 0x0 0x0 0x0 0x220002 0x0 0x250005 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0xffffffffffffffff oops 2 3 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 5 java/lang/Class methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator reifyBounds ([Lsun/reflect/generics/tree/FieldTypeSignature;)[Ljava/lang/reflect/Type; 2 1244 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 45 0xe0007 0x48a 0x118 0x34f 0x120005 0x0 0x0 0x1ff292b4f20 0x2e3 0x1ff292b4fd0 0x6c 0x1d0005 0x6b 0x0 0x1ff28fc0e90 0x1c4 0x1ff2998a880 0x120 0x270005 0x0 0x0 0x1ff2998e0a0 0x34f 0x0 0x0 0x2a0004 0x0 0x0 0x1ff7e6d4450 0x2d7 0x1ff292b3040 0xd 0x2e0003 0x34f 0xffffffffffffff00 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 7 7 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 9 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 14 sun/reflect/generics/tree/SimpleClassTypeSignature 16 sun/reflect/generics/tree/ClassTypeSignature 21 sun/reflect/generics/visitor/Reifier 28 java/lang/Class 30 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V 2 3726 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 35 0x10002 0xd8e 0x100007 0xd85 0x38 0x9 0x140003 0x9 0x50 0x180005 0xd85 0x0 0x0 0x0 0x0 0x0 0x1f0005 0xd8e 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x4 0xe 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData java/lang/Class getDeclaringClass ()Ljava/lang/Class; 2 3717 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 37 0x10005 0xd85 0x0 0x0 0x0 0x0 0x0 0x60007 0xd81 0xa8 0x4 0x90002 0x4 0xe0007 0x4 0x78 0x0 0x130002 0x0 0x160002 0x0 0x1a0005 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl validateConstructorArguments ()V 2 3933 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 63 0x40005 0xd8e 0x0 0x0 0x0 0x0 0x0 0xf0007 0xd8e 0x140 0x0 0x220005 0x0 0x0 0x0 0x0 0x0 0x0 0x250004 0x0 0x0 0x0 0x0 0x0 0x0 0x2a0002 0x0 0x2d0004 0x0 0x0 0x0 0x0 0x0 0x0 0x350002 0x0 0x380004 0x0 0x0 0x0 0x0 0x0 0x0 0x390002 0x0 0x3c0002 0x0 0x480007 0xd8e 0x38 0xe49 0x4e0003 0xe49 0xffffffffffffffe0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/lang/Class checkPackageAccess (Ljava/lang/SecurityManager;Ljava/lang/ClassLoader;Z)V 1 0 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 81 0x10005 0x0 0x0 0x0 0x0 0x0 0x0 0x90002 0x0 0xc0007 0x0 0x148 0x0 0x100005 0x0 0x0 0x0 0x0 0x0 0x0 0x170005 0x0 0x0 0x0 0x0 0x0 0x0 0x1a0007 0x0 0xb8 0x0 0x1e0002 0x0 0x210007 0x0 0x50 0x0 0x250002 0x0 0x280007 0x0 0x58 0x0 0x2e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x320007 0x0 0x98 0x0 0x360002 0x0 0x390007 0x0 0x68 0x0 0x3e0005 0x0 0x0 0x0 0x0 0x0 0x0 0x410002 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x4 0xffffffffffffffff 0xffffffffffffffff 0x0 0x0 oops 0 methods 0 +ciMethodData java/util/HashMap$TreeNode getTreeNode (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; 1 523 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 32 0x40007 0x1e2 0x70 0x0 0x80005 0x0 0x0 0x0 0x0 0x0 0x0 0xb0003 0x0 0x18 0x120005 0x1e2 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0xffffffffffffffff 0x0 0xffffffffffffffff oops 0 methods 0 +ciMethodData java/util/HashMap$TreeNode root ()Ljava/util/HashMap$TreeNode; 1 0 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 16 0x80007 0x0 0x20 0x0 0xf0003 0x0 0xffffffffffffffe0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData java/util/HashMap$TreeNode find (ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode; 2 2017 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 100 0x1a0007 0xbfc 0x38 0xb9 0x210003 0xb9 0x280 0x270007 0xb68 0x38 0x94 0x2e0003 0x94 0x248 0x3a0007 0x0 0x98 0xb68 0x3e0007 0x0 0x78 0xb68 0x440005 0x0 0x0 0x1ff291f65b0 0xb4e 0x1ff291f6660 0x1a 0x470007 0x9db 0x20 0x18d 0x4f0007 0x562 0x38 0x479 0x560003 0x479 0x178 0x5b0007 0x4cc 0x38 0x96 0x620003 0x96 0x140 0x660007 0x0 0x50 0x4cc 0x6a0002 0x4cc 0x6f0007 0x4cc 0xa0 0x0 0x760002 0x0 0x7c0007 0x0 0x70 0x0 0x810007 0x0 0x38 0x0 0x860003 0x0 0x18 0x8d0003 0x0 0x70 0x950005 0x4cc 0x0 0x0 0x0 0x0 0x0 0x9b0007 0x36f 0x20 0x15d 0xa70007 0x596 0xfffffffffffffd60 0x435 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x4 0x0 0x0 0x0 0x0 oops 2 25 org/gradle/internal/reflect/MethodSet$MethodKey 27 com/sun/tools/javac/comp/ArgumentAttr$UniquePos methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/TypeVariableImpl hashCode ()I 2 3303 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 23 0x40005 0x0 0x0 0x1ff7e6d4450 0xadf 0x1ff7e6d5c30 0x88 0xb0005 0xb67 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 2 3 java/lang/Class 5 java/lang/reflect/Method methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getReifier ()Lsun/reflect/generics/visitor/Reifier; 1 888 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 18 0x10005 0x2ed 0x0 0x0 0x0 0x0 0x0 0x40002 0x2ed 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getLowerBounds ()[Ljava/lang/reflect/Type; 2 1593 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 48 0x60004 0xfffffffffffffc92 0x0 0x1ff29647480 0x1 0x1ff2a0e8cc0 0x1ca 0x90007 0x36e 0x90 0x1ca 0xe0004 0x0 0x0 0x1ff2a0e8cc0 0x1ca 0x0 0x0 0x110005 0x0 0x0 0x1ff292b4f20 0x1ca 0x0 0x0 0x1b0005 0x0 0x0 0x1ff29647480 0x538 0x0 0x0 0x1e0004 0x0 0x0 0x1ff29647480 0x538 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 6 3 [Ljava/lang/reflect/Type; 5 [Lsun/reflect/generics/tree/FieldTypeSignature; 14 [Lsun/reflect/generics/tree/FieldTypeSignature; 21 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 28 [Ljava/lang/reflect/Type; 35 [Ljava/lang/reflect/Type; methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getUpperBounds ()[Ljava/lang/reflect/Type; 2 1272 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 48 0x60004 0xfffffffffffffdb7 0x0 0x1ff2a0e8cc0 0x1af 0x0 0x0 0x90007 0x249 0x90 0x1af 0xe0004 0x0 0x0 0x1ff2a0e8cc0 0x1af 0x0 0x0 0x110005 0x0 0x0 0x1ff292b4f20 0x1af 0x0 0x0 0x1b0005 0x0 0x0 0x1ff29647480 0x3f8 0x0 0x0 0x1e0004 0x0 0x0 0x1ff29647480 0x3f8 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 5 3 [Lsun/reflect/generics/tree/FieldTypeSignature; 14 [Lsun/reflect/generics/tree/FieldTypeSignature; 21 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl 28 [Ljava/lang/reflect/Type; 35 [Ljava/lang/reflect/Type; methods 0 +ciMethodData sun/reflect/generics/tree/FormalTypeParameter accept (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V 1 253 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 17 0x20005 0x0 0x0 0x1ff2998e0a0 0x8b 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0xffffffffffffffff 0xffffffffffffffff oops 1 3 sun/reflect/generics/visitor/Reifier methods 0 +ciMethodData sun/reflect/generics/visitor/Reifier visitFormalTypeParameter (Lsun/reflect/generics/tree/FormalTypeParameter;)V 1 253 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 38 0x20005 0x8b 0x0 0x0 0x0 0x0 0x0 0x60005 0x0 0x0 0x1ff2998a5c0 0x8b 0x0 0x0 0xa0005 0x0 0x0 0x1ff2998a5c0 0x8b 0x0 0x0 0xd0005 0x0 0x0 0x1ff2b13c830 0x8b 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0x0 oops 3 10 sun/reflect/generics/tree/FormalTypeParameter 17 sun/reflect/generics/tree/FormalTypeParameter 24 sun/reflect/generics/factory/CoreReflectionFactory methods 0 +ciMethodData sun/reflect/generics/factory/CoreReflectionFactory makeTypeVariable (Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable; 1 253 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 20 0x10005 0x8b 0x0 0x0 0x0 0x0 0x0 0x70002 0x8b 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x3 0x0 0x0 0x0 oops 0 methods 0 +ciMethodData sun/reflect/generics/reflectiveObjects/TypeVariableImpl make (Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/reflectiveObjects/TypeVariableImpl; 1 253 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 86 0x10004 0xffffffffffffffb9 0x0 0x1ff7e6d4450 0x44 0x1ff7e6d5c30 0x47 0x40007 0x44 0x208 0x47 0x80004 0x0 0x0 0x1ff7e6d5c30 0x47 0x0 0x0 0xb0007 0x47 0x1b0 0x0 0xf0004 0x0 0x0 0x0 0x0 0x0 0x0 0x120007 0x0 0x158 0x0 0x1d0002 0x0 0x220005 0x0 0x0 0x0 0x0 0x0 0x0 0x260005 0x0 0x0 0x0 0x0 0x0 0x0 0x290005 0x0 0x0 0x0 0x0 0x0 0x0 0x2c0005 0x0 0x0 0x0 0x0 0x0 0x0 0x2f0005 0x0 0x0 0x0 0x0 0x0 0x0 0x320002 0x0 0x3e0002 0x8b 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x4 0x0 0x0 0x0 0x0 oops 3 3 java/lang/Class 5 java/lang/reflect/Method 14 java/lang/reflect/Method methods 0 +ciMethodData java/lang/reflect/Method hashCode ()I 1 700 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 44 0x10005 0x1bc 0x0 0x0 0x0 0x0 0x0 0x40005 0x1bc 0x0 0x0 0x0 0x0 0x0 0x70005 0x1bc 0x0 0x0 0x0 0x0 0x0 0xb0005 0x1bc 0x0 0x0 0x0 0x0 0x0 0xe0005 0x1bc 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x1 0x0 oops 0 methods 0 +ciMethod sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl (Ljava/lang/reflect/Type;)V 88 0 44 0 -1 +ciMethod sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl make (Ljava/lang/reflect/Type;)Lsun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl; 88 0 44 0 0 +ciMethod sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl getGenericComponentType ()Ljava/lang/reflect/Type; 156 0 78 0 0 +ciMethodData sun/reflect/generics/reflectiveObjects/TypeVariableImpl equals (Ljava/lang/Object;)Z 1 324 orig 80 0 0 0 0 0 0 0 0 0 0 0 0 251 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 data 68 0x10004 0xfffffffffffffff8 0x0 0x1ff292b4fd0 0x3a 0x0 0x0 0x40007 0x8 0x198 0x3a 0x80005 0x3a 0x0 0x0 0x0 0x0 0x0 0xd0007 0x0 0x140 0x3a 0x110004 0x0 0x0 0x1ff292b4fd0 0x3a 0x0 0x0 0x160005 0x0 0x0 0x1ff292b4fd0 0x3a 0x0 0x0 0x1d0005 0x0 0x0 0x1ff292b4fd0 0x3a 0x0 0x0 0x290002 0x3a 0x2c0007 0x2b 0x68 0xf 0x350002 0xf 0x380007 0x0 0x38 0xf 0x3c0003 0xf 0x18 0x0 0x0 0x0 0x0 0x0 0x0 0x9 0x2 0x0 0xffffffffffffffff oops 4 3 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 25 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 32 sun/reflect/generics/reflectiveObjects/TypeVariableImpl 39 sun/reflect/generics/reflectiveObjects/TypeVariableImpl methods 0 +compile com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type; -1 4 inline 229 0 -1 com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type; 1 25 com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 2 20 sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl getGenericComponentType ()Ljava/lang/reflect/Type; 2 44 java/lang/reflect/Array newInstance (Ljava/lang/Class;I)Ljava/lang/Object; 2 72 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getActualTypeArguments ()[Ljava/lang/reflect/Type; 2 77 com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type; 3 25 com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 4 20 sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl getGenericComponentType ()Ljava/lang/reflect/Type; 4 44 java/lang/reflect/Array newInstance (Ljava/lang/Class;I)Ljava/lang/Object; 4 72 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getActualTypeArguments ()[Ljava/lang/reflect/Type; 4 82 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/reflect/Type; 5 1 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/Class; 4 92 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getOwnerType ()Ljava/lang/reflect/Type; 4 97 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl make (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lsun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl; 5 7 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V 6 1 java/lang/Object ()V 6 24 java/lang/Class getDeclaringClass ()Ljava/lang/Class; 7 9 java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 8 0 java/lang/System allowSecurityManager ()Z 6 31 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl validateConstructorArguments ()V 7 4 java/lang/Class getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 8 1 java/lang/Class getGenericInfo ()Lsun/reflect/generics/repository/ClassRepository; 9 27 java/lang/Class getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 10 2 sun/reflect/generics/scope/ClassScope make (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope; 11 5 sun/reflect/generics/scope/ClassScope (Ljava/lang/Class;)V 12 2 sun/reflect/generics/scope/AbstractScope (Ljava/lang/reflect/GenericDeclaration;)V 13 1 java/lang/Object ()V 10 5 sun/reflect/generics/factory/CoreReflectionFactory make (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory; 11 6 sun/reflect/generics/factory/CoreReflectionFactory (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)V 12 1 java/lang/Object ()V 9 30 sun/reflect/generics/repository/ClassRepository make (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository; 10 6 sun/reflect/generics/repository/ClassRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 11 3 sun/reflect/generics/repository/GenericDeclRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 12 3 sun/reflect/generics/repository/AbstractRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 13 1 java/lang/Object ()V 13 7 sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree; 14 2 sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 15 0 sun/reflect/generics/parser/SignatureParser make ()Lsun/reflect/generics/parser/SignatureParser; 16 4 sun/reflect/generics/parser/SignatureParser ()V 15 4 sun/reflect/generics/parser/SignatureParser parseClassSig (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 16 2 sun/reflect/generics/parser/SignatureParser init (Ljava/lang/String;)V 8 10 sun/reflect/generics/repository/GenericDeclRepository getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 9 10 sun/reflect/generics/repository/GenericDeclRepository computeTypeParameters ()[Ljava/lang/reflect/TypeVariable; 10 1 sun/reflect/generics/repository/AbstractRepository getTree ()Lsun/reflect/generics/tree/Tree; 10 7 sun/reflect/generics/tree/MethodTypeSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 10 7 sun/reflect/generics/tree/ClassSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 10 31 sun/reflect/generics/repository/AbstractRepository getReifier ()Lsun/reflect/generics/visitor/Reifier; 11 1 sun/reflect/generics/repository/AbstractRepository getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 11 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 12 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 13 1 java/lang/Object ()V 10 42 sun/reflect/generics/tree/FormalTypeParameter accept (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V 11 2 sun/reflect/generics/visitor/Reifier visitFormalTypeParameter (Lsun/reflect/generics/tree/FormalTypeParameter;)V 12 2 sun/reflect/generics/visitor/Reifier getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 12 6 sun/reflect/generics/tree/FormalTypeParameter getName ()Ljava/lang/String; 12 10 sun/reflect/generics/tree/FormalTypeParameter getBounds ()[Lsun/reflect/generics/tree/FieldTypeSignature; 12 13 sun/reflect/generics/factory/CoreReflectionFactory makeTypeVariable (Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable; 13 1 sun/reflect/generics/factory/CoreReflectionFactory getDecl ()Ljava/lang/reflect/GenericDeclaration; 10 50 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 4 115 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getUpperBounds ()[Ljava/lang/reflect/Type; 5 17 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator reifyBounds ([Lsun/reflect/generics/tree/FieldTypeSignature;)[Ljava/lang/reflect/Type; 6 18 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getReifier ()Lsun/reflect/generics/visitor/Reifier; 7 1 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 7 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 8 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 9 1 java/lang/Object ()V 6 39 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 4 126 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getLowerBounds ()[Ljava/lang/reflect/Type; 5 17 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator reifyBounds ([Lsun/reflect/generics/tree/FieldTypeSignature;)[Ljava/lang/reflect/Type; 6 18 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getReifier ()Lsun/reflect/generics/visitor/Reifier; 7 1 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 7 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 8 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 9 1 java/lang/Object ()V 6 39 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 4 143 com/sun/beans/WildcardTypeImpl ([Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V 5 1 java/lang/Object ()V 4 164 com/sun/beans/WeakCache get (Ljava/lang/Object;)Ljava/lang/Object; 4 179 java/util/HashMap ()V 5 1 java/util/AbstractMap ()V 6 1 java/lang/Object ()V 4 210 java/util/HashMap get (Ljava/lang/Object;)Ljava/lang/Object; 5 2 java/util/HashMap getNode (Ljava/lang/Object;)Ljava/util/HashMap$Node; 6 23 java/util/HashMap hash (Ljava/lang/Object;)I 7 9 sun/reflect/generics/reflectiveObjects/TypeVariableImpl hashCode ()I 8 4 java/lang/reflect/Method hashCode ()I 9 1 java/lang/reflect/Method getDeclaringClass ()Ljava/lang/Class; 9 4 java/lang/Class getName ()Ljava/lang/String; 9 11 java/lang/reflect/Method getName ()Ljava/lang/String; 8 11 java/lang/String hashCode ()I 9 17 java/lang/String isLatin1 ()Z 9 27 java/lang/StringLatin1 hashCode ([B)I 6 63 sun/reflect/generics/reflectiveObjects/TypeVariableImpl equals (Ljava/lang/Object;)Z 7 29 sun/reflect/generics/reflectiveObjects/TypeVariableImpl getName ()Ljava/lang/String; 7 41 java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 7 53 java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 8 11 java/lang/String equals (Ljava/lang/Object;)Z 6 95 java/util/HashMap$TreeNode getTreeNode (ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; 6 128 sun/reflect/generics/reflectiveObjects/TypeVariableImpl equals (Ljava/lang/Object;)Z 7 29 sun/reflect/generics/reflectiveObjects/TypeVariableImpl getName ()Ljava/lang/String; 7 41 java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 7 53 java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 8 11 java/lang/String equals (Ljava/lang/Object;)Z 4 225 sun/reflect/generics/reflectiveObjects/TypeVariableImpl equals (Ljava/lang/Object;)Z 5 29 sun/reflect/generics/reflectiveObjects/TypeVariableImpl getName ()Ljava/lang/String; 5 41 java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 5 53 java/util/Objects equals (Ljava/lang/Object;Ljava/lang/Object;)Z 6 11 java/lang/String equals (Ljava/lang/Object;)Z 4 225 java/lang/Object equals (Ljava/lang/Object;)Z 2 82 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/reflect/Type; 3 1 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/Class; 2 92 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getOwnerType ()Ljava/lang/reflect/Type; 2 97 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl make (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lsun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl; 3 7 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V 4 1 java/lang/Object ()V 4 24 java/lang/Class getDeclaringClass ()Ljava/lang/Class; 5 9 java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 6 0 java/lang/System allowSecurityManager ()Z 4 31 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl validateConstructorArguments ()V 5 4 java/lang/Class getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 6 1 java/lang/Class getGenericInfo ()Lsun/reflect/generics/repository/ClassRepository; 7 27 java/lang/Class getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 8 2 sun/reflect/generics/scope/ClassScope make (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope; 9 5 sun/reflect/generics/scope/ClassScope (Ljava/lang/Class;)V 10 2 sun/reflect/generics/scope/AbstractScope (Ljava/lang/reflect/GenericDeclaration;)V 11 1 java/lang/Object ()V 8 5 sun/reflect/generics/factory/CoreReflectionFactory make (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory; 9 6 sun/reflect/generics/factory/CoreReflectionFactory (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)V 10 1 java/lang/Object ()V 7 30 sun/reflect/generics/repository/ClassRepository make (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository; 8 6 sun/reflect/generics/repository/ClassRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 9 3 sun/reflect/generics/repository/GenericDeclRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 10 3 sun/reflect/generics/repository/AbstractRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 11 1 java/lang/Object ()V 11 7 sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree; 12 2 sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 13 0 sun/reflect/generics/parser/SignatureParser make ()Lsun/reflect/generics/parser/SignatureParser; 14 4 sun/reflect/generics/parser/SignatureParser ()V 15 1 java/lang/Object ()V 13 4 sun/reflect/generics/parser/SignatureParser parseClassSig (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 14 2 sun/reflect/generics/parser/SignatureParser init (Ljava/lang/String;)V 6 10 sun/reflect/generics/repository/GenericDeclRepository getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 7 10 sun/reflect/generics/repository/GenericDeclRepository computeTypeParameters ()[Ljava/lang/reflect/TypeVariable; 8 1 sun/reflect/generics/repository/AbstractRepository getTree ()Lsun/reflect/generics/tree/Tree; 8 7 sun/reflect/generics/tree/MethodTypeSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 8 7 sun/reflect/generics/tree/ClassSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 8 31 sun/reflect/generics/repository/AbstractRepository getReifier ()Lsun/reflect/generics/visitor/Reifier; 9 1 sun/reflect/generics/repository/AbstractRepository getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 9 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 10 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 11 1 java/lang/Object ()V 8 42 sun/reflect/generics/tree/FormalTypeParameter accept (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V 9 2 sun/reflect/generics/visitor/Reifier visitFormalTypeParameter (Lsun/reflect/generics/tree/FormalTypeParameter;)V 10 2 sun/reflect/generics/visitor/Reifier getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 10 6 sun/reflect/generics/tree/FormalTypeParameter getName ()Ljava/lang/String; 10 10 sun/reflect/generics/tree/FormalTypeParameter getBounds ()[Lsun/reflect/generics/tree/FieldTypeSignature; 10 13 sun/reflect/generics/factory/CoreReflectionFactory makeTypeVariable (Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable; 11 1 sun/reflect/generics/factory/CoreReflectionFactory getDecl ()Ljava/lang/reflect/GenericDeclaration; 8 50 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 2 115 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getUpperBounds ()[Ljava/lang/reflect/Type; 3 17 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator reifyBounds ([Lsun/reflect/generics/tree/FieldTypeSignature;)[Ljava/lang/reflect/Type; 4 18 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getReifier ()Lsun/reflect/generics/visitor/Reifier; 5 1 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 5 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 6 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 7 1 java/lang/Object ()V 4 39 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 2 120 com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)[Ljava/lang/reflect/Type; 3 25 com/sun/beans/TypeResolver resolve (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; 4 20 sun/reflect/generics/reflectiveObjects/GenericArrayTypeImpl getGenericComponentType ()Ljava/lang/reflect/Type; 4 44 java/lang/reflect/Array newInstance (Ljava/lang/Class;I)Ljava/lang/Object; 4 72 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getActualTypeArguments ()[Ljava/lang/reflect/Type; 4 82 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/reflect/Type; 5 1 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getRawType ()Ljava/lang/Class; 4 92 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl getOwnerType ()Ljava/lang/reflect/Type; 4 97 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl make (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lsun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl; 5 7 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl (Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V 6 1 java/lang/Object ()V 6 24 java/lang/Class getDeclaringClass ()Ljava/lang/Class; 7 9 java/lang/System getSecurityManager ()Ljava/lang/SecurityManager; 8 0 java/lang/System allowSecurityManager ()Z 6 31 sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl validateConstructorArguments ()V 7 4 java/lang/Class getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 8 1 java/lang/Class getGenericInfo ()Lsun/reflect/generics/repository/ClassRepository; 9 27 java/lang/Class getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 10 2 sun/reflect/generics/scope/ClassScope make (Ljava/lang/Class;)Lsun/reflect/generics/scope/ClassScope; 11 5 sun/reflect/generics/scope/ClassScope (Ljava/lang/Class;)V 12 2 sun/reflect/generics/scope/AbstractScope (Ljava/lang/reflect/GenericDeclaration;)V 13 1 java/lang/Object ()V 10 5 sun/reflect/generics/factory/CoreReflectionFactory make (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)Lsun/reflect/generics/factory/CoreReflectionFactory; 11 6 sun/reflect/generics/factory/CoreReflectionFactory (Ljava/lang/reflect/GenericDeclaration;Lsun/reflect/generics/scope/Scope;)V 12 1 java/lang/Object ()V 9 30 sun/reflect/generics/repository/ClassRepository make (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/repository/ClassRepository; 10 6 sun/reflect/generics/repository/ClassRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 11 3 sun/reflect/generics/repository/GenericDeclRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 12 3 sun/reflect/generics/repository/AbstractRepository (Ljava/lang/String;Lsun/reflect/generics/factory/GenericsFactory;)V 13 1 java/lang/Object ()V 13 7 sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/Tree; 14 2 sun/reflect/generics/repository/ClassRepository parse (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 15 0 sun/reflect/generics/parser/SignatureParser make ()Lsun/reflect/generics/parser/SignatureParser; 16 4 sun/reflect/generics/parser/SignatureParser ()V 15 4 sun/reflect/generics/parser/SignatureParser parseClassSig (Ljava/lang/String;)Lsun/reflect/generics/tree/ClassSignature; 16 2 sun/reflect/generics/parser/SignatureParser init (Ljava/lang/String;)V 8 10 sun/reflect/generics/repository/GenericDeclRepository getTypeParameters ()[Ljava/lang/reflect/TypeVariable; 9 10 sun/reflect/generics/repository/GenericDeclRepository computeTypeParameters ()[Ljava/lang/reflect/TypeVariable; 10 1 sun/reflect/generics/repository/AbstractRepository getTree ()Lsun/reflect/generics/tree/Tree; 10 7 sun/reflect/generics/tree/MethodTypeSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 10 7 sun/reflect/generics/tree/ClassSignature getFormalTypeParameters ()[Lsun/reflect/generics/tree/FormalTypeParameter; 10 31 sun/reflect/generics/repository/AbstractRepository getReifier ()Lsun/reflect/generics/visitor/Reifier; 11 1 sun/reflect/generics/repository/AbstractRepository getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 11 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 12 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 13 1 java/lang/Object ()V 10 42 sun/reflect/generics/tree/FormalTypeParameter accept (Lsun/reflect/generics/visitor/TypeTreeVisitor;)V 11 2 sun/reflect/generics/visitor/Reifier visitFormalTypeParameter (Lsun/reflect/generics/tree/FormalTypeParameter;)V 12 2 sun/reflect/generics/visitor/Reifier getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 12 6 sun/reflect/generics/tree/FormalTypeParameter getName ()Ljava/lang/String; 12 10 sun/reflect/generics/tree/FormalTypeParameter getBounds ()[Lsun/reflect/generics/tree/FieldTypeSignature; 12 13 sun/reflect/generics/factory/CoreReflectionFactory makeTypeVariable (Ljava/lang/String;[Lsun/reflect/generics/tree/FieldTypeSignature;)Ljava/lang/reflect/TypeVariable; 13 1 sun/reflect/generics/factory/CoreReflectionFactory getDecl ()Ljava/lang/reflect/GenericDeclaration; 10 50 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; 4 115 sun/reflect/generics/reflectiveObjects/WildcardTypeImpl getUpperBounds ()[Ljava/lang/reflect/Type; 5 17 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator reifyBounds ([Lsun/reflect/generics/tree/FieldTypeSignature;)[Ljava/lang/reflect/Type; 6 18 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getReifier ()Lsun/reflect/generics/visitor/Reifier; 7 1 sun/reflect/generics/reflectiveObjects/LazyReflectiveObjectGenerator getFactory ()Lsun/reflect/generics/factory/GenericsFactory; 7 4 sun/reflect/generics/visitor/Reifier make (Lsun/reflect/generics/factory/GenericsFactory;)Lsun/reflect/generics/visitor/Reifier; 8 5 sun/reflect/generics/visitor/Reifier (Lsun/reflect/generics/factory/GenericsFactory;)V 9 1 java/lang/Object ()V 6 39 sun/reflect/generics/visitor/Reifier getResult ()Ljava/lang/reflect/Type; diff --git a/src/main/java/server/poptato/auth/application/service/AuthService.java b/src/main/java/server/poptato/auth/application/service/AuthService.java index e7b5b8a..10e68af 100644 --- a/src/main/java/server/poptato/auth/application/service/AuthService.java +++ b/src/main/java/server/poptato/auth/application/service/AuthService.java @@ -11,10 +11,16 @@ import server.poptato.external.oauth.SocialServiceProvider; import server.poptato.external.oauth.SocialUserInfo; import server.poptato.global.dto.TokenPair; +import server.poptato.todo.constant.TutorialMessage; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.validator.UserValidator; +import java.time.LocalDate; import java.util.Optional; import static server.poptato.external.oauth.SocialPlatform.KAKAO; @@ -26,6 +32,7 @@ public class AuthService { private final SocialServiceProvider socialServiceProvider; private final UserRepository userRepository; private final UserValidator userValidator; + private final TodoRepository todoRepository; public LoginResponseDto login(final KakaoLoginRequestDto loginRequestDto) { //TODO: ๋‚˜์ค‘์— ์—†์•จ ์ฝ”๋“œ @@ -36,11 +43,12 @@ public LoginResponseDto login(final KakaoLoginRequestDto loginRequestDto) { SocialUserInfo userInfo = socialService.getUserData(accessToken); Optional user = userRepository.findByKakaoId(userInfo.socialId()); if (user.isEmpty()) { - return createNewUserResponse(userInfo); + LoginResponseDto response = createNewUserResponse(userInfo); + createTutorialData(response.userId()); + return response; } return createOldUserResponse(user.get()); } - public void logout(final Long userId) { userValidator.checkIsExistUser(userId); jwtService.deleteRefreshToken(String.valueOf(userId)); @@ -66,7 +74,6 @@ private void checkIsValidToken(String refreshToken) { throw e; } } - private LoginResponseDto createNewUserResponse(SocialUserInfo userInfo) { User newUser = User.builder() .kakaoId(userInfo.socialId()) @@ -86,4 +93,35 @@ private LoginResponseDto createLoginResponse(User user, boolean isNewUser) { TokenPair tokenPair = jwtService.generateTokenPair(String.valueOf(user.getId())); return AuthDtoConverter.toLoginDto(tokenPair, user, isNewUser); } + + private void createAndSaveTodo(Type type, Long userId, int order, String tutorialMessage) { + Todo todo = null; + if(type.equals(Type.TODAY)){ + todo = Todo.builder() + .userId(userId) + .type(type) + .content(tutorialMessage) + .todayDate(LocalDate.now()) + .todayStatus(TodayStatus.COMPLETED) + .todayOrder(order) + .build(); + } + if(type.equals(Type.BACKLOG)){ + todo = Todo.builder() + .userId(userId) + .type(type) + .content(tutorialMessage) + .backlogOrder(order) + .build(); + } + todoRepository.save(todo); + } + + public void createTutorialData(Long userId) { + createAndSaveTodo(Type.TODAY,userId,1, TutorialMessage.TODAY_COMPLETE); + for(int i=0;i<4;i++){ + createAndSaveTodo(Type.BACKLOG,userId,4-i, TutorialMessage.BACKLOG_MESSAGES.get(i)); + } + } + } diff --git a/src/main/java/server/poptato/todo/constant/TutorialMessage.java b/src/main/java/server/poptato/todo/constant/TutorialMessage.java new file mode 100644 index 0000000..48e7c01 --- /dev/null +++ b/src/main/java/server/poptato/todo/constant/TutorialMessage.java @@ -0,0 +1,20 @@ +package server.poptato.todo.constant; + +import java.util.Arrays; +import java.util.List; + +public class TutorialMessage { + public static final String BACKLOG_NEW_TODO = "'์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ'๋ฅผ ๋ˆŒ๋Ÿฌ ํ•  ์ผ์„ ์ƒ์„ฑํ•ด ๋ณด์„ธ์š”."; + public static final String BACKLOG_BOOKMARK_DDAY = "... ์„ ๋ˆŒ๋Ÿฌ '์ค‘์š”'์™€ '๋งˆ๊ฐ๊ธฐํ•œ'์„ ์„ค์ •ํ•ด ๋ณด์„ธ์š”."; + public static final String BACKLOG_DRAG_AND_DROP = "ํ•  ์ผ์„ ๊พน ๋ˆŒ๋Ÿฌ ์œ„ ์•„๋ž˜๋กœ ์˜ฎ๊ฒจ ๋ณด์„ธ์š”."; + public static final String BACKLOG_LEFT_SWIPE = "ํ•  ์ผ์„ ์™ผ์ชฝ์œผ๋กœ ๋„˜๊ฒจ๋ณด์„ธ์š”. '์˜ค๋Š˜'๋กœ ํ•  ์ผ์ด ์ด๋™ํ•ด์š”."; + public static final String TODAY_COMPLETE = "์˜ค๋Š˜์˜ ํ•  ์ผ์„ ๋ชจ๋‘ ์ฒดํฌํ•ด ๋ณด์„ธ์š”!"; + + public static final List BACKLOG_MESSAGES = Arrays.asList( + BACKLOG_NEW_TODO, + BACKLOG_BOOKMARK_DDAY, + BACKLOG_DRAG_AND_DROP, + BACKLOG_LEFT_SWIPE + ); + +} diff --git a/src/test/java/server/poptato/auth/application/AuthServiceTest.java b/src/test/java/server/poptato/auth/application/AuthServiceTest.java index 6bf3681..a378add 100644 --- a/src/test/java/server/poptato/auth/application/AuthServiceTest.java +++ b/src/test/java/server/poptato/auth/application/AuthServiceTest.java @@ -10,6 +10,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -24,11 +26,20 @@ import server.poptato.external.oauth.SocialService; import server.poptato.external.oauth.SocialServiceProvider; import server.poptato.global.dto.TokenPair; +import server.poptato.todo.constant.TutorialMessage; +import server.poptato.todo.domain.entity.Todo; +import server.poptato.todo.domain.repository.TodoRepository; +import server.poptato.todo.domain.value.TodayStatus; +import server.poptato.todo.domain.value.Type; +import server.poptato.user.domain.entity.User; import server.poptato.user.domain.repository.UserRepository; import server.poptato.user.exception.UserException; import server.poptato.user.validator.UserValidator; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.groups.Tuple.tuple; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static server.poptato.auth.exception.errorcode.AuthExceptionErrorCode.INVALID_TOKEN; @@ -45,6 +56,8 @@ public class AuthServiceTest { @Autowired private UserRepository userRepository; @Autowired + private TodoRepository todoRepository; + @Autowired private JwtService jwtService; @Autowired private UserValidator userValidator; @@ -137,4 +150,37 @@ void refresh_InvalidTokenException() { .getMessage() .equals(INVALID_TOKEN); } + + @DisplayName("ํšŒ์›๊ฐ€์ž… ์‹œ, ํŠœํ† ๋ฆฌ์–ผ ํ•  ์ผ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.") + @Test + void createTutorialData_Success() { + // given + String kakaoId = "kakaoId"; + String email = "email"; + String name = "name"; + + User user = User.builder() + .kakaoId(kakaoId) + .email(email) + .name(name) + .build(); + + //when + User newUser = userRepository.save(user); + authService.createTutorialData(newUser.getId()); + + //then + List todays = todoRepository.findByType(Type.TODAY); + List backlogs = todoRepository.findByType(Type.BACKLOG); + + assertThat(todays.size()).isEqualTo(1); + assertThat(backlogs).hasSize(4) + .extracting("content","backlogOrder") + .containsExactlyInAnyOrder( + tuple(4, TutorialMessage.BACKLOG_NEW_TODO), + tuple(3, TutorialMessage.BACKLOG_BOOKMARK_DDAY), + tuple(2, TutorialMessage.BACKLOG_DRAG_AND_DROP), + tuple(1, TutorialMessage.BACKLOG_LEFT_SWIPE) + ); + } } From bc761e9a21bf4945e8890dde0068c4e9f2f1a46e Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 6 Nov 2024 18:20:27 +0900 Subject: [PATCH 176/177] =?UTF-8?q?chore:=20=ED=8A=9C=ED=86=A0=EB=A6=AC?= =?UTF-8?q?=EC=96=BC=20test=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todo/domain/repository/TodoRepository.java | 1 + .../poptato/auth/application/AuthServiceTest.java | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java index 4b1f4ce..9452ee0 100644 --- a/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java +++ b/src/main/java/server/poptato/todo/domain/repository/TodoRepository.java @@ -60,4 +60,5 @@ default Page findHistories(Long userId, LocalDate today, Pageable pageable } List findByType(Type type); + List findByTypeAndUserId(Type type, Long userId); } diff --git a/src/test/java/server/poptato/auth/application/AuthServiceTest.java b/src/test/java/server/poptato/auth/application/AuthServiceTest.java index a378add..3db66fd 100644 --- a/src/test/java/server/poptato/auth/application/AuthServiceTest.java +++ b/src/test/java/server/poptato/auth/application/AuthServiceTest.java @@ -170,17 +170,17 @@ void createTutorialData_Success() { authService.createTutorialData(newUser.getId()); //then - List todays = todoRepository.findByType(Type.TODAY); - List backlogs = todoRepository.findByType(Type.BACKLOG); + List todays = todoRepository.findByTypeAndUserId(Type.TODAY, newUser.getId()); + List backlogs = todoRepository.findByTypeAndUserId(Type.BACKLOG, newUser.getId()); assertThat(todays.size()).isEqualTo(1); assertThat(backlogs).hasSize(4) .extracting("content","backlogOrder") .containsExactlyInAnyOrder( - tuple(4, TutorialMessage.BACKLOG_NEW_TODO), - tuple(3, TutorialMessage.BACKLOG_BOOKMARK_DDAY), - tuple(2, TutorialMessage.BACKLOG_DRAG_AND_DROP), - tuple(1, TutorialMessage.BACKLOG_LEFT_SWIPE) + tuple(TutorialMessage.BACKLOG_NEW_TODO, 4), + tuple(TutorialMessage.BACKLOG_BOOKMARK_DDAY, 3), + tuple(TutorialMessage.BACKLOG_DRAG_AND_DROP,2), + tuple(TutorialMessage.BACKLOG_LEFT_SWIPE,1) ); } } From 672f79aa4766245932b1f7ea9730f3e6477c4e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=97=B0=EC=A3=BC?= <96986782+yeonjookang@users.noreply.github.com> Date: Sun, 17 Nov 2024 02:46:31 +0900 Subject: [PATCH 177/177] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a1cbfda..84fb9eb 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,15 @@ ### ๐Ÿ“˜ ERD (Entity-Relationship Diagram) -ERD Diagram +![image](https://github.com/user-attachments/assets/5004c004-bfd3-40b9-ad44-71f362333e9a) + --- ### ๐Ÿ›  System Architecture -System Architecture Diagram +![image](https://github.com/user-attachments/assets/925ffd06-90b6-4f00-95db-faa5cbd31956) + ---