diff --git a/.gradle/9.2.1/checksums/checksums.lock b/.gradle/9.2.1/checksums/checksums.lock new file mode 100644 index 0000000..4a65c89 Binary files /dev/null and b/.gradle/9.2.1/checksums/checksums.lock differ diff --git a/.gradle/9.2.1/checksums/md5-checksums.bin b/.gradle/9.2.1/checksums/md5-checksums.bin new file mode 100644 index 0000000..322be45 Binary files /dev/null and b/.gradle/9.2.1/checksums/md5-checksums.bin differ diff --git a/.gradle/9.2.1/checksums/sha1-checksums.bin b/.gradle/9.2.1/checksums/sha1-checksums.bin new file mode 100644 index 0000000..672f079 Binary files /dev/null and b/.gradle/9.2.1/checksums/sha1-checksums.bin differ diff --git a/.gradle/9.2.1/executionHistory/executionHistory.bin b/.gradle/9.2.1/executionHistory/executionHistory.bin new file mode 100644 index 0000000..025fcd7 Binary files /dev/null and b/.gradle/9.2.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/9.2.1/executionHistory/executionHistory.lock b/.gradle/9.2.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000..c553574 Binary files /dev/null and b/.gradle/9.2.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/9.2.1/fileChanges/last-build.bin b/.gradle/9.2.1/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/.gradle/9.2.1/fileChanges/last-build.bin differ diff --git a/.gradle/9.2.1/fileHashes/fileHashes.bin b/.gradle/9.2.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000..0ce207f Binary files /dev/null and b/.gradle/9.2.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/9.2.1/fileHashes/fileHashes.lock b/.gradle/9.2.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000..36bc842 Binary files /dev/null and b/.gradle/9.2.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/9.2.1/fileHashes/resourceHashesCache.bin b/.gradle/9.2.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000..c083419 Binary files /dev/null and b/.gradle/9.2.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/9.2.1/gc.properties b/.gradle/9.2.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..1397548 Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..58a231c --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Nov 26 12:38:23 KST 2025 +gradle.version=9.2.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000..6b78404 Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe new file mode 100644 index 0000000..24e50b1 Binary files /dev/null and b/.gradle/file-system.probe differ diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..c3f502a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 디폴트 무시된 파일 +/shelf/ +/workspace.xml +# 에디터 기반 HTTP 클라이언트 요청 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b86273d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7d3b3e8 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..fdc392f --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f6eb85c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/HELP.md b/HELP.md new file mode 100644 index 0000000..07cdf57 --- /dev/null +++ b/HELP.md @@ -0,0 +1,14 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Gradle documentation](https://docs.gradle.org) +* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/4.0.0/gradle-plugin) +* [Create an OCI image](https://docs.spring.io/spring-boot/4.0.0/gradle-plugin/packaging-oci-image.html) + +### Additional Links +These additional references should also help you: + +* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle) + diff --git a/build/classes/java/main/hello/core/CoreApplication.class b/build/classes/java/main/hello/core/CoreApplication.class new file mode 100644 index 0000000..115439c Binary files /dev/null and b/build/classes/java/main/hello/core/CoreApplication.class differ diff --git a/build/classes/java/main/hello/core/MemberApp.class b/build/classes/java/main/hello/core/MemberApp.class new file mode 100644 index 0000000..8af31e4 Binary files /dev/null and b/build/classes/java/main/hello/core/MemberApp.class differ diff --git a/build/classes/java/main/hello/core/OrderApp.class b/build/classes/java/main/hello/core/OrderApp.class new file mode 100644 index 0000000..1332dad Binary files /dev/null and b/build/classes/java/main/hello/core/OrderApp.class differ diff --git a/build/classes/java/main/hello/core/discount/DiscountPolicy.class b/build/classes/java/main/hello/core/discount/DiscountPolicy.class new file mode 100644 index 0000000..da3e9b2 Binary files /dev/null and b/build/classes/java/main/hello/core/discount/DiscountPolicy.class differ diff --git a/build/classes/java/main/hello/core/discount/FixDiscountPolicy.class b/build/classes/java/main/hello/core/discount/FixDiscountPolicy.class new file mode 100644 index 0000000..1f89e39 Binary files /dev/null and b/build/classes/java/main/hello/core/discount/FixDiscountPolicy.class differ diff --git a/build/classes/java/main/hello/core/discount/RateDiscountPolicy.class b/build/classes/java/main/hello/core/discount/RateDiscountPolicy.class new file mode 100644 index 0000000..dc9f610 Binary files /dev/null and b/build/classes/java/main/hello/core/discount/RateDiscountPolicy.class differ diff --git a/build/classes/java/main/hello/core/member/Grade.class b/build/classes/java/main/hello/core/member/Grade.class new file mode 100644 index 0000000..b1d34f0 Binary files /dev/null and b/build/classes/java/main/hello/core/member/Grade.class differ diff --git a/build/classes/java/main/hello/core/member/Member.class b/build/classes/java/main/hello/core/member/Member.class new file mode 100644 index 0000000..124e13a Binary files /dev/null and b/build/classes/java/main/hello/core/member/Member.class differ diff --git a/build/classes/java/main/hello/core/member/MemberRepository.class b/build/classes/java/main/hello/core/member/MemberRepository.class new file mode 100644 index 0000000..7c2b3c8 Binary files /dev/null and b/build/classes/java/main/hello/core/member/MemberRepository.class differ diff --git a/build/classes/java/main/hello/core/member/MemberService.class b/build/classes/java/main/hello/core/member/MemberService.class new file mode 100644 index 0000000..9761acd Binary files /dev/null and b/build/classes/java/main/hello/core/member/MemberService.class differ diff --git a/build/classes/java/main/hello/core/member/MemberServiceImpl.class b/build/classes/java/main/hello/core/member/MemberServiceImpl.class new file mode 100644 index 0000000..c62de98 Binary files /dev/null and b/build/classes/java/main/hello/core/member/MemberServiceImpl.class differ diff --git a/build/classes/java/main/hello/core/member/MemoryMemberRepository.class b/build/classes/java/main/hello/core/member/MemoryMemberRepository.class new file mode 100644 index 0000000..0c35373 Binary files /dev/null and b/build/classes/java/main/hello/core/member/MemoryMemberRepository.class differ diff --git a/build/classes/java/main/hello/core/order/Order.class b/build/classes/java/main/hello/core/order/Order.class new file mode 100644 index 0000000..00e0cbb Binary files /dev/null and b/build/classes/java/main/hello/core/order/Order.class differ diff --git a/build/classes/java/main/hello/core/order/OrderService.class b/build/classes/java/main/hello/core/order/OrderService.class new file mode 100644 index 0000000..3f9345a Binary files /dev/null and b/build/classes/java/main/hello/core/order/OrderService.class differ diff --git a/build/classes/java/main/hello/core/order/OrderServiceImpl.class b/build/classes/java/main/hello/core/order/OrderServiceImpl.class new file mode 100644 index 0000000..2ac7da5 Binary files /dev/null and b/build/classes/java/main/hello/core/order/OrderServiceImpl.class differ diff --git a/build/classes/java/test/hello/core/CoreApplicationTests.class b/build/classes/java/test/hello/core/CoreApplicationTests.class new file mode 100644 index 0000000..ad9b633 Binary files /dev/null and b/build/classes/java/test/hello/core/CoreApplicationTests.class differ diff --git a/build/classes/java/test/hello/core/discount/RateDiscountTest.class b/build/classes/java/test/hello/core/discount/RateDiscountTest.class new file mode 100644 index 0000000..1fc9d24 Binary files /dev/null and b/build/classes/java/test/hello/core/discount/RateDiscountTest.class differ diff --git a/build/classes/java/test/hello/core/member/MemberServiceTest.class b/build/classes/java/test/hello/core/member/MemberServiceTest.class new file mode 100644 index 0000000..8011945 Binary files /dev/null and b/build/classes/java/test/hello/core/member/MemberServiceTest.class differ diff --git a/build/classes/java/test/hello/core/order/OrderServiceTest.class b/build/classes/java/test/hello/core/order/OrderServiceTest.class new file mode 100644 index 0000000..ad9e75d Binary files /dev/null and b/build/classes/java/test/hello/core/order/OrderServiceTest.class differ diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html new file mode 100644 index 0000000..ac34a4b --- /dev/null +++ b/build/reports/problems/problems-report.html @@ -0,0 +1,659 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/build/reports/tests/test/classes/Gradle-Test-Executor-1.html b/build/reports/tests/test/classes/Gradle-Test-Executor-1.html new file mode 100644 index 0000000..f5f5af4 --- /dev/null +++ b/build/reports/tests/test/classes/Gradle-Test-Executor-1.html @@ -0,0 +1,148 @@ + + + + + +Test results - Class Gradle Test Executor 1 + + + + + +
+

Class Gradle Test Executor 1

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
1
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.131s
+

duration

+
+
+
+
+
+
0%
+

successful

+
+
+
+
+ +
+

Failed tests

+
+ +

failed to execute tests

+ +
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'hello.core.discount.RateDiscountTest'.
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:56)
+	at java.base@21.0.4/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
+	at java.base@21.0.4/java.lang.reflect.Method.invoke(Method.java:580)
+	at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88)
+	at jdk.proxy1/jdk.proxy1.$Proxy4.processTestClass(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:177)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+Caused by: org.gradle.internal.UncheckedException: java.lang.ClassNotFoundException: hello.core.discount.RateDiscountTest
+	at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:69)
+	at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:42)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:186)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$100(JUnitPlatformTestClassProcessor.java:62)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:120)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:110)
+	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:61)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:54)
+	... 17 more
+Caused by: java.lang.ClassNotFoundException: hello.core.discount.RateDiscountTest
+	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
+	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
+	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
+	at java.base/java.lang.Class.forName0(Native Method)
+	at java.base/java.lang.Class.forName(Class.java:534)
+	at java.base/java.lang.Class.forName(Class.java:513)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:184)
+	... 22 more
+
+ +
+
+
+
+

Tests

+ + + + + + + + + + + + + +
TestDurationResult
failed to execute tests1.131sfailed
+
+
+ +
+ + diff --git a/build/reports/tests/test/css/base-style.css b/build/reports/tests/test/css/base-style.css new file mode 100644 index 0000000..3ae6c58 --- /dev/null +++ b/build/reports/tests/test/css/base-style.css @@ -0,0 +1,174 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding: 30px 50px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +.tab-container .tab-container { + margin-left: 8px; +} + +ul.tabLinks { + padding: 0; + margin-bottom: 0; + overflow: auto; + min-width: 800px; + width: auto; + border-bottom: solid 1px #aaa; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding: 5px 10px; + border-radius: 7px 7px 0 0; + border: solid 1px transparent; + border-bottom: none; + margin-right: 6px; + background-color: #f0f0f0; +} + +ul.tabLinks li.deselected > a { + color: #6d6d6d; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #aaa; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid 1px #d0d0d0; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} diff --git a/build/reports/tests/test/css/style.css b/build/reports/tests/test/css/style.css new file mode 100644 index 0000000..ccb271c --- /dev/null +++ b/build/reports/tests/test/css/style.css @@ -0,0 +1,97 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} + +.code { + position: relative; +} + +.clipboard-copy-btn { + position: absolute; + top: 8px; + right: 8px; + padding: 4px 8px; + font-size: 0.9em; + cursor: pointer; +} diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html new file mode 100644 index 0000000..ee07859 --- /dev/null +++ b/build/reports/tests/test/index.html @@ -0,0 +1,145 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
1
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.131s
+

duration

+
+
+
+
+
+
0%
+

successful

+
+
+
+
+ + +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+default-package +1101.131s0%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+Gradle Test Executor 1 +1101.131s0%
+
+
+ +
+ + diff --git a/build/reports/tests/test/js/report.js b/build/reports/tests/test/js/report.js new file mode 100644 index 0000000..e658217 --- /dev/null +++ b/build/reports/tests/test/js/report.js @@ -0,0 +1,243 @@ +(function (window, document) { + "use strict"; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + const codeBlocks = []; + const tabContainers = getTabContainers(); + for (let i = 0; i < tabContainers.length; i++) { + const spans = tabContainers[i].getElementsByTagName("span"); + for (let i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + const codeBlocks = findCodeBlocks(); + + for (let i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + const checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initClipboardCopyButton() { + document.querySelectorAll(".clipboard-copy-btn").forEach((button) => { + const copyElementId = button.getAttribute("data-copy-element-id"); + const elementWithCodeToSelect = document.getElementById(copyElementId); + + button.addEventListener("click", () => { + const text = elementWithCodeToSelect.innerText.trim(); + navigator.clipboard + .writeText(text) + .then(() => { + button.textContent = "Copied!"; + setTimeout(() => { + button.textContent = "Copy"; + }, 1500); + }) + .catch((err) => { + alert("Failed to copy to the clipboard: '" + err.message + "'. Check JavaScript console for more details.") + console.warn("Failed to copy to the clipboard", err); + }); + }); + }); + } + + function initControls() { + if (findCodeBlocks().length > 0) { + const checkBox = getCheckBox(); + const label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + + initClipboardCopyButton() + } + + class TabManager { + baseId; + tabs; + titles; + headers; + + constructor(baseId, tabs, titles, headers) { + this.baseId = baseId; + this.tabs = tabs; + this.titles = titles; + this.headers = headers; + } + + select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + const a = document.createElement("a"); + + a.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(a); + } + + deselectAll() { + for (let i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + const a = document.createElement("a"); + + const id = this.baseId + "-tab" + i; + a.setAttribute("id", id); + a.setAttribute("href", "#tab" + i); + a.onclick = () => { + this.select(i); + return false; + }; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + } + + function getTabContainers() { + const tabContainers = Array.from(document.getElementsByClassName("tab-container")); + + // Used by existing TabbedPageRenderer users, which have not adjusted to use TabsRenderer yet. + const legacyContainer = document.getElementById("tabs"); + if (legacyContainer) { + tabContainers.push(legacyContainer); + } + + return tabContainers; + } + + function initTabs() { + let tabGroups = 0; + + function createTab(num, container) { + const tabElems = findTabs(container); + const tabManager = new TabManager("tabs" + num, tabElems, findTitles(tabElems), findHeaders(container)); + tabManager.select(0); + } + + const tabContainers = getTabContainers(); + + for (let i = 0; i < tabContainers.length; i++) { + createTab(tabGroups, tabContainers[i]); + tabGroups++; + } + + return true; + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + const owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + const titles = []; + + for (let i = 0; i < tabs.length; i++) { + const tab = tabs[i]; + const header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + const elements = []; + const children = container.childNodes; + + for (let i = 0; i < children.length; i++) { + const child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); diff --git a/build/reports/tests/test/packages/default-package.html b/build/reports/tests/test/packages/default-package.html new file mode 100644 index 0000000..603dc90 --- /dev/null +++ b/build/reports/tests/test/packages/default-package.html @@ -0,0 +1,115 @@ + + + + + +Test results - Default package + + + + + +
+

Default package

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
1
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.131s
+

duration

+
+
+
+
+
+
0%
+

successful

+
+
+
+
+ + +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+Gradle Test Executor 1 +1101.131s0%
+
+
+ +
+ + diff --git a/build/resources/main/application.properties b/build/resources/main/application.properties new file mode 100644 index 0000000..061bbe4 --- /dev/null +++ b/build/resources/main/application.properties @@ -0,0 +1 @@ +spring.application.name=core diff --git a/build/test-results/test/TEST-Gradle-Test-Executor-1.xml b/build/test-results/test/TEST-Gradle-Test-Executor-1.xml new file mode 100644 index 0000000..aea4733 --- /dev/null +++ b/build/test-results/test/TEST-Gradle-Test-Executor-1.xml @@ -0,0 +1,47 @@ + + + + + org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'hello.core.discount.RateDiscountTest'. + at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:56) + at java.base@21.0.4/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base@21.0.4/java.lang.reflect.Method.invoke(Method.java:580) + at org.gradle.internal.dispatch.MethodInvocation.invokeOn(MethodInvocation.java:77) + at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:28) + at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:19) + at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) + at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:88) + at jdk.proxy1/jdk.proxy1.$Proxy4.processTestClass(Unknown Source) + at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:177) + at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:126) + at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) + at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) + at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) + at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122) + at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72) + at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) + at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) +Caused by: org.gradle.internal.UncheckedException: java.lang.ClassNotFoundException: hello.core.discount.RateDiscountTest + at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:69) + at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:42) + at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:186) + at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$100(JUnitPlatformTestClassProcessor.java:62) + at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:120) + at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:110) + at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:61) + at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:54) + ... 17 more +Caused by: java.lang.ClassNotFoundException: hello.core.discount.RateDiscountTest + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:534) + at java.base/java.lang.Class.forName(Class.java:513) + at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:184) + ... 22 more + + + + + diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin new file mode 100644 index 0000000..e69de29 diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/build/test-results/test/binary/output.bin.idx differ diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin new file mode 100644 index 0000000..9a32b91 Binary files /dev/null and b/build/test-results/test/binary/results.bin differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000..57d368d Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin new file mode 100644 index 0000000..fb24246 Binary files /dev/null and b/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/out/production/classes/hello/core/CoreApplication.class b/out/production/classes/hello/core/CoreApplication.class new file mode 100644 index 0000000..b684112 Binary files /dev/null and b/out/production/classes/hello/core/CoreApplication.class differ diff --git a/out/production/classes/hello/core/MemberApp.class b/out/production/classes/hello/core/MemberApp.class new file mode 100644 index 0000000..8320f51 Binary files /dev/null and b/out/production/classes/hello/core/MemberApp.class differ diff --git a/out/production/classes/hello/core/OrderApp.class b/out/production/classes/hello/core/OrderApp.class new file mode 100644 index 0000000..c829d14 Binary files /dev/null and b/out/production/classes/hello/core/OrderApp.class differ diff --git a/out/production/classes/hello/core/discount/DiscountPolicy.class b/out/production/classes/hello/core/discount/DiscountPolicy.class new file mode 100644 index 0000000..a414af8 Binary files /dev/null and b/out/production/classes/hello/core/discount/DiscountPolicy.class differ diff --git a/out/production/classes/hello/core/discount/FixDiscountPolicy.class b/out/production/classes/hello/core/discount/FixDiscountPolicy.class new file mode 100644 index 0000000..d6d9f54 Binary files /dev/null and b/out/production/classes/hello/core/discount/FixDiscountPolicy.class differ diff --git a/out/production/classes/hello/core/discount/RateDiscountPolicy.class b/out/production/classes/hello/core/discount/RateDiscountPolicy.class new file mode 100644 index 0000000..3b581ff Binary files /dev/null and b/out/production/classes/hello/core/discount/RateDiscountPolicy.class differ diff --git a/out/production/classes/hello/core/member/Grade.class b/out/production/classes/hello/core/member/Grade.class new file mode 100644 index 0000000..98ff752 Binary files /dev/null and b/out/production/classes/hello/core/member/Grade.class differ diff --git a/out/production/classes/hello/core/member/Member.class b/out/production/classes/hello/core/member/Member.class new file mode 100644 index 0000000..32cf285 Binary files /dev/null and b/out/production/classes/hello/core/member/Member.class differ diff --git a/out/production/classes/hello/core/member/MemberRepository.class b/out/production/classes/hello/core/member/MemberRepository.class new file mode 100644 index 0000000..9a0e8c1 Binary files /dev/null and b/out/production/classes/hello/core/member/MemberRepository.class differ diff --git a/out/production/classes/hello/core/member/MemberService.class b/out/production/classes/hello/core/member/MemberService.class new file mode 100644 index 0000000..9b45a9f Binary files /dev/null and b/out/production/classes/hello/core/member/MemberService.class differ diff --git a/out/production/classes/hello/core/member/MemberServiceImpl.class b/out/production/classes/hello/core/member/MemberServiceImpl.class new file mode 100644 index 0000000..e93c329 Binary files /dev/null and b/out/production/classes/hello/core/member/MemberServiceImpl.class differ diff --git a/out/production/classes/hello/core/member/MemoryMemberRepository.class b/out/production/classes/hello/core/member/MemoryMemberRepository.class new file mode 100644 index 0000000..09bc612 Binary files /dev/null and b/out/production/classes/hello/core/member/MemoryMemberRepository.class differ diff --git a/out/production/classes/hello/core/order/Order.class b/out/production/classes/hello/core/order/Order.class new file mode 100644 index 0000000..f0338a7 Binary files /dev/null and b/out/production/classes/hello/core/order/Order.class differ diff --git a/out/production/classes/hello/core/order/OrderService.class b/out/production/classes/hello/core/order/OrderService.class new file mode 100644 index 0000000..a23b90d Binary files /dev/null and b/out/production/classes/hello/core/order/OrderService.class differ diff --git a/out/production/classes/hello/core/order/OrderServiceImpl.class b/out/production/classes/hello/core/order/OrderServiceImpl.class new file mode 100644 index 0000000..660b893 Binary files /dev/null and b/out/production/classes/hello/core/order/OrderServiceImpl.class differ diff --git a/out/production/resources/application.properties b/out/production/resources/application.properties new file mode 100644 index 0000000..061bbe4 --- /dev/null +++ b/out/production/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=core diff --git a/out/test/classes/hello/core/CoreApplicationTests.class b/out/test/classes/hello/core/CoreApplicationTests.class new file mode 100644 index 0000000..ad9b633 Binary files /dev/null and b/out/test/classes/hello/core/CoreApplicationTests.class differ diff --git a/out/test/classes/hello/core/discount/RateDiscountTest.class b/out/test/classes/hello/core/discount/RateDiscountTest.class new file mode 100644 index 0000000..1fc9d24 Binary files /dev/null and b/out/test/classes/hello/core/discount/RateDiscountTest.class differ diff --git a/out/test/classes/hello/core/member/MemberServiceTest.class b/out/test/classes/hello/core/member/MemberServiceTest.class new file mode 100644 index 0000000..8011945 Binary files /dev/null and b/out/test/classes/hello/core/member/MemberServiceTest.class differ diff --git a/out/test/classes/hello/core/order/OrderServiceTest.class b/out/test/classes/hello/core/order/OrderServiceTest.class new file mode 100644 index 0000000..ad9e75d Binary files /dev/null and b/out/test/classes/hello/core/order/OrderServiceTest.class differ