From 9f0a0c1d1e1cc90a6aa147f41d2999d703ec8e1a Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Thu, 13 Aug 2026 14:05:48 +0200 Subject: [PATCH] Revert "Update Vaadin and Spring Boot version" This reverts commit 7555cfd51d4896a12997a111a7567c33ec799b30. --- kontor-spring/.gitattributes | 12 +- kontor-spring/.gitignore | 59 +- kontor-spring/Containerfile | 4 +- kontor-spring/Makefile | 8 + kontor-spring/README.md | 3 + kontor-spring/build.gradle | 220 +- .../themes/kontor}/styles.css | 0 .../frontend/themes/kontor/theme.json | 3 + kontor-spring/gradle.properties | 1 - kontor-spring/gradle/libs.versions.toml | 43 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 48462 -> 43462 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 +- kontor-spring/gradlew | 15 +- kontor-spring/gradlew.bat | 34 +- kontor-spring/logs/spring-boot-logger.log | 2904 - kontor-spring/settings.gradle | 24 + .../kontor/comics/views/ArtistViewTest.java | 43 + .../kontor/comics/views/ArtistformTest.java | 64 + .../kontor/comics/views/ComicViewTest.java | 45 + .../comics/views/ComicWorkViewTest.java | 45 + .../kontor/comics/views/IssueViewTest.java | 45 + .../comics/views/PublisherViewTest.java | 43 + .../kontor/comics/views/StoryArcViewTest.java | 45 + .../comics/views/TradePaperbackViewTest.java | 48 + .../kontor/comics/views/VolumeViewTest.java | 52 + .../kontor/comics/views/WorktypeViewTest.java | 51 + .../kontor/views/tysc/CardSetViewTest.java | 45 + .../kontor/views/tysc/CardViewTest.java | 45 + .../views/tysc/FieldPositionViewTest.java | 45 + .../kontor/views/tysc/PlayerViewTest.java | 46 + .../kontor/views/tysc/RoosterViewTest.java | 45 + .../kontor/views/tysc/SportViewTest.java | 45 + .../kontor/views/tysc/TeamViewTest.java | 45 + .../kontor/views/tysc/VendorViewTest.java | 45 + .../resources/application.properties | 30 + .../frontend/generated/app-shell-imports.d.ts | 1 - .../frontend/generated/app-shell-imports.js | 0 .../frontend/generated/css.generated.d.ts | 1 - .../src/main/frontend/generated/flow/Flow.tsx | 707 - .../frontend/generated/flow/ReactAdapter.tsx | 329 - .../flow/generated-flow-imports.d.ts | 1 - .../generated/flow/generated-flow-imports.js | 105 - .../generated-flow-webcomponent-imports.js | 107 - .../generated/generated-flow-files.txt | 132 - .../src/main/frontend/generated/index.tsx | 26 - .../generated/jar-resources/Clipboard.d.ts | 1 - .../generated/jar-resources/Clipboard.js | 199 - .../generated/jar-resources/Clipboard.js.map | 1 - .../generated/jar-resources/Download.d.ts | 1 - .../generated/jar-resources/Download.js | 57 - .../generated/jar-resources/Download.js.map | 1 - .../jar-resources/ElementResize.d.ts | 1 - .../generated/jar-resources/ElementResize.js | 45 - .../jar-resources/ElementResize.js.map | 1 - .../generated/jar-resources/Flow.d.ts | 83 - .../frontend/generated/jar-resources/Flow.js | 538 - .../generated/jar-resources/Flow.js.map | 1 - .../jar-resources/FlowBootstrap.d.ts | 1 - .../generated/jar-resources/FlowBootstrap.js | 236 - .../generated/jar-resources/FlowClient.d.ts | 1 - .../generated/jar-resources/FlowClient.js | 1106 - .../generated/jar-resources/FlowShortcut.js | 123 - .../generated/jar-resources/Fullscreen.d.ts | 7 - .../generated/jar-resources/Fullscreen.js | 127 - .../generated/jar-resources/Fullscreen.js.map | 1 - .../generated/jar-resources/Geolocation.d.ts | 1 - .../generated/jar-resources/Geolocation.js | 154 - .../jar-resources/Geolocation.js.map | 1 - .../jar-resources/PageVisibility.d.ts | 7 - .../generated/jar-resources/PageVisibility.js | 69 - .../jar-resources/PageVisibility.js.map | 1 - .../ReactRouterOutletElement.tsx | 17 - .../jar-resources/ScreenOrientation.d.ts | 12 - .../jar-resources/ScreenOrientation.js | 92 - .../jar-resources/ScreenOrientation.js.map | 1 - .../generated/jar-resources/WakeLock.d.ts | 1 - .../generated/jar-resources/WakeLock.js | 120 - .../generated/jar-resources/WakeLock.js.map | 1 - .../generated/jar-resources/WebShare.d.ts | 6 - .../generated/jar-resources/WebShare.js | 24 - .../generated/jar-resources/WebShare.js.map | 1 - .../jar-resources/comboBoxConnector.js | 244 - .../jar-resources/contextMenuConnector.js | 124 - .../contextMenuTargetConnector.js | 67 - .../jar-resources/copilot-version.js | 1 - .../generated/jar-resources/copilot.d.ts | 3 - .../generated/jar-resources/copilot.js | 1415 - .../copilot/base-panel-Fr0D1ZcU.js | 99 - .../jar-resources/copilot/chunk-DiqZc92J.js | 16 - .../jar-resources/copilot/consts-CSALuSsm.js | 10 - ...t-development-setup-user-guide-Db31eO1T.js | 402 - ...lopment-setup-user-guide-utils-DzEVQbWO.js | 52 - .../copilot/copilot-devtools-CYwy4U79.js | 345 - .../copilot/copilot-error-handler-9OpssAH1.js | 205 - .../copilot-features-plugin-DwQSwtbQ.js | 184 - .../copilot-feedback-plugin-JMYrBCmQ.js | 209 - .../copilot/copilot-focus-trap-CaZw1c70.js | 34 - .../copilot-global-vars-later-CWkvR40X.js | 344 - .../copilot-impersonator-plugin-iN25IekB.js | 120 - .../copilot/copilot-info-plugin-9l6uSELy.js | 175 - .../copilot/copilot-init-step2-tqpZOWcn.js | 3920 - .../copilot/copilot-log-plugin-CmwIHcBw.js | 222 - .../copilot/copilot-message-box-CVAh5PSs.js | 48 - .../copilot/copilot-modes-wJyMqHUb.js | 123 - .../copilot/copilot-notification-CCNJdNg4.js | 40 - .../copilot/copilot-notification-UcomqPI8.js | 3 - ...pilot-server-communicator-impl-B7YDzJpM.js | 52 - .../copilot-settings-panel-qUN2f6RH.js | 430 - .../copilot/copilot-shortcuts-BzZuUtjW.js | 99 - .../copilot-stored-machine-state-D6qB_Peh.js | 7 - .../copilot/copilot-tree-impl-DxBvMTRa.js | 402 - .../copilot/copilot-ui-state-Dc6l_5DA.js | 30 - .../copilot/copilot-userinfo-C0s6T_kB.js | 68 - .../copilot-vaadin-versions-CkxDkDmp.js | 141 - .../copilot/copy-to-clipboard-4Y12mBRr.js | 118 - .../copilot/directive-DWLihZIi.js | 31 - .../copilot/directive-helpers-BTt8P8-5.js | 33 - .../copilot/dom-utils-Cuv93-tQ.js | 166 - .../copilot/early-project-state-LGwavSyI.js | 7 - .../copilot/figma-public/figma-api.d.ts | 108 - .../jar-resources/copilot/icons-CwakCZgK.js | 5772 - .../copilot/lit-renderer-fa_B9boC.js | 99 - .../section-panel-ui-state-hOj_RfX_.js | 159 - .../shared/copilot-plugin-support.d.ts | 130 - .../copilot/shared/flow-utils.d.ts | 41 - .../jar-resources/copilot/stats-CRkPKCLQ.js | 29 - .../track-active-mode-event-DkX0nsC6.js | 12 - .../copilot/typescript-BkEBjsia.js | 111931 --------------- .../jar-resources/datepickerConnector.js | 179 - .../jar-resources/disableOnClickFunctions.js | 6 - .../generated/jar-resources/dndConnector.js | 131 - .../jar-resources/flow-component-directive.js | 68 - .../jar-resources/flow-component-renderer.js | 47 - .../generated/jar-resources/gridConnector.ts | 725 - .../generated/jar-resources/index.d.ts | 2 - .../frontend/generated/jar-resources/index.js | 2 - .../generated/jar-resources/index.js.map | 1 - .../generated/jar-resources/lit-renderer.ts | 112 - .../jar-resources/menubarConnector.js | 110 - .../jar-resources/messageListConnector.js | 129 - .../jar-resources/selectConnector.js | 19 - .../generated/jar-resources/theme-util.js | 175 - .../generated/jar-resources/tooltip.ts | 23 - .../jar-resources/treeGridConnector.ts | 83 - .../jar-resources/vaadin-big-decimal-field.js | 69 - .../vaadin-dev-tools/License.d.ts | 44 - .../vaadin-dev-tools/connection.d.ts | 15 - .../vaadin-dev-tools/hotswap-scroll.d.ts | 27 - .../live-reload-connection.d.ts | 8 - .../pre-trial-splash-screen.d.ts | 4 - .../vaadin-dev-tools/vaadin-dev-tools.d.ts | 102 - .../vaadin-dev-tools/vaadin-dev-tools.js | 807 - .../vaadin-dev-tools/vaadin-dev-tools.js.map | 1 - .../websocket-connection.d.ts | 13 - .../vaadin-grid-flow-selection-column.js | 98 - .../jar-resources/vaadin-popover/popover.ts | 26 - .../vaadin-time-picker/helpers.js | 183 - .../vaadin-time-picker/timepickerConnector.js | 181 - .../vaadin-upload-manager-connector.ts | 106 - .../jar-resources/virtualListConnector.js | 152 - .../generated/jsx-dev-transform/index.ts | 3 - .../jsx-dev-transform/jsx-dev-runtime.ts | 29 - .../jsx-dev-transform/jsx-runtime.ts | 7 - .../src/main/frontend/generated/layouts.json | 1 - .../src/main/frontend/generated/routes.tsx | 19 - .../frontend/generated/vaadin-featureflags.js | 22 - .../main/frontend/generated/vaadin-react.tsx | 18 - .../src/main/frontend/generated/vaadin.ts | 59 - kontor-spring/src/main/frontend/index.html | 39 - ...ontorApplication.java => Application.java} | 16 +- .../thpeetz/kontor/data/admin/Permission.java | 2 +- .../de/thpeetz/kontor/data/admin/Profile.java | 10 +- .../kontor/data/bookshelf/Article.java | 7 +- .../thpeetz/kontor/data/bookshelf/Book.java | 9 +- .../de/thpeetz/kontor/data/comics/Artist.java | 2 +- .../thpeetz/kontor/data/comics/Publisher.java | 2 +- .../thpeetz/kontor/data/comics/StoryArc.java | 4 +- .../thpeetz/kontor/data/comics/Worktype.java | 2 +- .../kontor/data/common/AbstractEntity.java | 8 +- .../data/common/AbstractLinkEntity.java | 55 + .../thpeetz/kontor/data/media/MediaActor.java | 6 +- .../kontor/data/media/MediaActorFile.java | 7 +- .../thpeetz/kontor/data/media/MediaFile.java | 5 +- .../thpeetz/kontor/data/media/MediaLofi.java | 33 - .../services/AddLinkProcessor.java | 9 +- .../integration/services/AddLinkService.java | 22 + .../repository/media/MediaLofiRepository.java | 17 - .../kontor/security/SecurityConfig.java | 82 +- .../kontor/setup/SetupModuleAdmin.java | 127 + .../kontor/setup/SetupModuleMedia.java | 12 +- .../de/thpeetz/kontor/views/ImportArea.java | 80 +- .../kontor/views/common/MainLayout.java | 4 - .../thpeetz/kontor/views/common/MainView.java | 3 - .../{application.yaml => application.yml} | 11 +- .../de/thpeetz/kontor/ApplicationTests.java | 32 + .../kontor/constants/ComicConstantsTest.java | 14 + .../constants/TestBookshelfConstants.java | 19 + .../kontor/constants/TestComicConstants.java | 67 + .../kontor/constants/TestMediaConstants.java | 5 + .../kontor/constants/TestTyscConstants.java | 39 + .../data/bookshelf/ArticleAuthorTest.java | 81 + .../kontor/data/bookshelf/ArticleTest.java | 47 + .../kontor/data/bookshelf/AuthorTest.java | 46 + .../kontor/data/bookshelf/BookAuthorTest.java | 87 + .../kontor/data/bookshelf/BookTest.java | 57 + .../bookshelf/BookshelfPublisherTest.java | 46 + .../kontor/data/comics/ArtistTest.java | 49 + .../thpeetz/kontor/data/comics/ComicTest.java | 75 + .../kontor/data/comics/ComicWorkTest.java | 24 + .../thpeetz/kontor/data/comics/IssueTest.java | 63 + .../kontor/data/comics/PublisherTest.java | 46 + .../kontor/data/comics/StoryArcTest.java | 60 + .../data/comics/TradePaperbackTest.java | 60 + .../kontor/data/comics/VolumeTest.java | 60 + .../kontor/data/comics/WorktypeTest.java | 83 + .../kontor/data/media/MediaArticleTest.java | 33 + .../kontor/data/media/MediaFileTest.java | 39 + .../thpeetz/kontor/data/tysc/CardSetTest.java | 22 + .../de/thpeetz/kontor/data/tysc/CardTest.java | 22 + .../kontor/data/tysc/FieldPositionTest.java | 45 + .../thpeetz/kontor/data/tysc/PlayerTest.java | 54 + .../thpeetz/kontor/data/tysc/RoosterTest.java | 48 + .../thpeetz/kontor/data/tysc/SportTest.java | 45 + .../de/thpeetz/kontor/data/tysc/TeamTest.java | 54 + .../thpeetz/kontor/data/tysc/VendorTest.java | 45 + .../KontorSpringApplicationTests.java | 13 - .../ArticleAuthorRepositoryTest.java | 78 + .../bookshelf/ArticleRepositoryTest.java | 63 + .../bookshelf/AuthorRepositoryTest.java | 71 + .../bookshelf/BookAuthorRepositoryTest.java | 99 + .../bookshelf/BookRepositoryTest.java | 90 + .../BookshelfPublisherRepositoryTest.java | 73 + .../comics/ArtistRepositoryTest.java | 75 + .../comics/ComicRepositoryTest.java | 56 + .../comics/ComicWorkRepositoryTest.java | 87 + .../comics/IssueRepositoryTest.java | 47 + .../comics/PublisherRepositoryTest.java | 69 + .../comics/StoryArcRepositoryTest.java | 47 + .../comics/TradePaperbackRepositoryTest.java | 61 + .../comics/VolumeRepositoryTest.java | 60 + .../comics/WorktypeRepositoryTest.java | 42 + .../repository/tysc/CardRepositoryTest.java | 40 + .../tysc/CardSetRepositoryTest.java | 44 + .../tysc/FieldPositionRepositoryTest.java | 61 + .../repository/tysc/PlayerRepositoryTest.java | 33 + .../tysc/RoosterRepositoryTest.java | 34 + .../repository/tysc/SportRepositoryTest.java | 41 + .../repository/tysc/TeamRepositoryTest.java | 38 + .../repository/tysc/VendorRepositoryTest.java | 42 + .../kontor/services/BookshelfServiceTest.java | 103 + .../kontor/services/CardServiceTest.java | 126 + .../kontor/services/ComicServiceTest.java | 348 + .../services/MediaArticleServiceTest.java | 50 + .../kontor/services/MediaFileServiceTest.java | 52 + .../services/MediaVideoServiceTest.java | 47 + .../kontor/services/SportServiceTest.java | 200 + .../src/test/resources/application.properties | 30 + 257 files changed, 5293 insertions(+), 139798 deletions(-) create mode 100644 kontor-spring/Makefile create mode 100644 kontor-spring/README.md rename kontor-spring/{src/main/frontend => frontend/themes/kontor}/styles.css (100%) create mode 100644 kontor-spring/frontend/themes/kontor/theme.json delete mode 100644 kontor-spring/logs/spring-boot-logger.log create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistformTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicWorkViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/IssueViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/PublisherViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/StoryArcViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/TradePaperbackViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/VolumeViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/WorktypeViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardSetViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/FieldPositionViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/PlayerViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/RoosterViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/SportViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/TeamViewTest.java create mode 100644 kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/VendorViewTest.java create mode 100644 kontor-spring/src/integrationTest/resources/application.properties delete mode 100644 kontor-spring/src/main/frontend/generated/app-shell-imports.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/app-shell-imports.js delete mode 100644 kontor-spring/src/main/frontend/generated/css.generated.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/flow/Flow.tsx delete mode 100644 kontor-spring/src/main/frontend/generated/flow/ReactAdapter.tsx delete mode 100644 kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.js delete mode 100644 kontor-spring/src/main/frontend/generated/flow/generated-flow-webcomponent-imports.js delete mode 100644 kontor-spring/src/main/frontend/generated/generated-flow-files.txt delete mode 100644 kontor-spring/src/main/frontend/generated/index.tsx delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Download.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Download.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Download.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ElementResize.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ElementResize.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ElementResize.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Flow.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Flow.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Flow.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/FlowBootstrap.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/FlowBootstrap.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/FlowClient.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/FlowClient.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/FlowShortcut.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Fullscreen.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Fullscreen.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Fullscreen.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Geolocation.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Geolocation.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/Geolocation.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/PageVisibility.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/PageVisibility.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/PageVisibility.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ReactRouterOutletElement.tsx delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ScreenOrientation.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ScreenOrientation.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/ScreenOrientation.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/WakeLock.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/WakeLock.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/WakeLock.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/WebShare.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/WebShare.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/WebShare.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/comboBoxConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/contextMenuConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/contextMenuTargetConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot-version.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/base-panel-Fr0D1ZcU.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/chunk-DiqZc92J.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/consts-CSALuSsm.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-development-setup-user-guide-Db31eO1T.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-development-setup-user-guide-utils-DzEVQbWO.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-devtools-CYwy4U79.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-error-handler-9OpssAH1.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-features-plugin-DwQSwtbQ.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-feedback-plugin-JMYrBCmQ.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-focus-trap-CaZw1c70.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-global-vars-later-CWkvR40X.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-impersonator-plugin-iN25IekB.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-info-plugin-9l6uSELy.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-init-step2-tqpZOWcn.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-log-plugin-CmwIHcBw.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-message-box-CVAh5PSs.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-modes-wJyMqHUb.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-notification-CCNJdNg4.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-notification-UcomqPI8.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-server-communicator-impl-B7YDzJpM.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-settings-panel-qUN2f6RH.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-shortcuts-BzZuUtjW.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-stored-machine-state-D6qB_Peh.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-tree-impl-DxBvMTRa.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-ui-state-Dc6l_5DA.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-userinfo-C0s6T_kB.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copilot-vaadin-versions-CkxDkDmp.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/copy-to-clipboard-4Y12mBRr.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/directive-DWLihZIi.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/directive-helpers-BTt8P8-5.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/dom-utils-Cuv93-tQ.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/early-project-state-LGwavSyI.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/figma-public/figma-api.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/icons-CwakCZgK.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/lit-renderer-fa_B9boC.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/section-panel-ui-state-hOj_RfX_.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/shared/copilot-plugin-support.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/shared/flow-utils.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/stats-CRkPKCLQ.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/track-active-mode-event-DkX0nsC6.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/copilot/typescript-BkEBjsia.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/datepickerConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/disableOnClickFunctions.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/dndConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/flow-component-directive.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/flow-component-renderer.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/gridConnector.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/index.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/index.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/index.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/lit-renderer.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/menubarConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/messageListConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/selectConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/theme-util.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/tooltip.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/treeGridConnector.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-big-decimal-field.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/License.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/connection.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/hotswap-scroll.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/live-reload-connection.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/pre-trial-splash-screen.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/vaadin-dev-tools.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/vaadin-dev-tools.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/vaadin-dev-tools.js.map delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-dev-tools/websocket-connection.d.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-grid-flow-selection-column.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-popover/popover.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-time-picker/helpers.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-time-picker/timepickerConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/vaadin-upload-manager-connector.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jar-resources/virtualListConnector.js delete mode 100644 kontor-spring/src/main/frontend/generated/jsx-dev-transform/index.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jsx-dev-transform/jsx-dev-runtime.ts delete mode 100644 kontor-spring/src/main/frontend/generated/jsx-dev-transform/jsx-runtime.ts delete mode 100644 kontor-spring/src/main/frontend/generated/layouts.json delete mode 100644 kontor-spring/src/main/frontend/generated/routes.tsx delete mode 100644 kontor-spring/src/main/frontend/generated/vaadin-featureflags.js delete mode 100644 kontor-spring/src/main/frontend/generated/vaadin-react.tsx delete mode 100644 kontor-spring/src/main/frontend/generated/vaadin.ts delete mode 100644 kontor-spring/src/main/frontend/index.html rename kontor-spring/src/main/java/de/thpeetz/kontor/{KontorApplication.java => Application.java} (70%) create mode 100644 kontor-spring/src/main/java/de/thpeetz/kontor/data/common/AbstractLinkEntity.java delete mode 100644 kontor-spring/src/main/java/de/thpeetz/kontor/data/media/MediaLofi.java create mode 100644 kontor-spring/src/main/java/de/thpeetz/kontor/integration/services/AddLinkService.java delete mode 100644 kontor-spring/src/main/java/de/thpeetz/kontor/repository/media/MediaLofiRepository.java create mode 100644 kontor-spring/src/main/java/de/thpeetz/kontor/setup/SetupModuleAdmin.java rename kontor-spring/src/main/resources/{application.yaml => application.yml} (93%) create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/ApplicationTests.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/constants/ComicConstantsTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/constants/TestBookshelfConstants.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/constants/TestComicConstants.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/constants/TestMediaConstants.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/constants/TestTyscConstants.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/bookshelf/ArticleAuthorTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/bookshelf/ArticleTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/bookshelf/AuthorTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/bookshelf/BookAuthorTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/bookshelf/BookTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/bookshelf/BookshelfPublisherTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/ArtistTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/ComicTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/ComicWorkTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/IssueTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/PublisherTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/StoryArcTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/TradePaperbackTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/VolumeTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/comics/WorktypeTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/media/MediaArticleTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/media/MediaFileTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/CardSetTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/CardTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/FieldPositionTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/PlayerTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/RoosterTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/SportTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/TeamTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/data/tysc/VendorTest.java delete mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/kontor_spring/KontorSpringApplicationTests.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/bookshelf/ArticleAuthorRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/bookshelf/ArticleRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/bookshelf/AuthorRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/bookshelf/BookAuthorRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/bookshelf/BookRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/bookshelf/BookshelfPublisherRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/ArtistRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/ComicRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/ComicWorkRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/IssueRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/PublisherRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/StoryArcRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/TradePaperbackRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/VolumeRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/comics/WorktypeRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/CardRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/CardSetRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/FieldPositionRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/PlayerRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/RoosterRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/SportRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/TeamRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/repository/tysc/VendorRepositoryTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/BookshelfServiceTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/CardServiceTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/ComicServiceTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/MediaArticleServiceTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/MediaFileServiceTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/MediaVideoServiceTest.java create mode 100644 kontor-spring/src/test/java/de/thpeetz/kontor/services/SportServiceTest.java create mode 100644 kontor-spring/src/test/resources/application.properties diff --git a/kontor-spring/.gitattributes b/kontor-spring/.gitattributes index 8af972c..097f9f9 100644 --- a/kontor-spring/.gitattributes +++ b/kontor-spring/.gitattributes @@ -1,3 +1,9 @@ -/gradlew text eol=lf -*.bat text eol=crlf -*.jar binary +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/kontor-spring/.gitignore b/kontor-spring/.gitignore index ac0ef07..9896012 100644 --- a/kontor-spring/.gitignore +++ b/kontor-spring/.gitignore @@ -1,38 +1,33 @@ -node_modules -HELP.md -.gradle +.gradle/ +.settings/ build/ -!gradle/wrapper/gradle-wrapper.jar -!**/src/main/**/build/ -!**/src/test/**/build/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache bin/ -!**/src/main/**/bin/ -!**/src/test/**/bin/ -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ +# Ignore Gradle GUI config +gradle-app.setting -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar -### VS Code ### +.project +.classpath .vscode/ +.idea/ +*.lock +logs/ +frontend/generated +frontend/index.html +package*.json +tsconfig.json +types.d.ts +node_modules/ +vite.* +kontor*Db +tags* +kontorHSQLDB* +.vs/ +.winget +src/main/resources/application-local.properties +src/main/resources/application-prod.properties +src/main/resources/application-*.yml +/uploaded-files/ diff --git a/kontor-spring/Containerfile b/kontor-spring/Containerfile index cc3c763..34017e6 100644 --- a/kontor-spring/Containerfile +++ b/kontor-spring/Containerfile @@ -1,5 +1,5 @@ # ----------------------------------------------------------------------- # -FROM docker.io/library/gradle:9.5-jdk AS builder +FROM docker.io/library/gradle:8.7-jdk AS builder WORKDIR / COPY ./src/main/ ./src/main/ COPY ./frontend/ ./frontend/ @@ -10,7 +10,7 @@ COPY ./gradle/libs.versions.toml ./gradle/ RUN gradle bootJar --no-daemon # ----------------------------------------------------------------------- # -FROM docker.io/alpine/java:25-jdk AS run +FROM docker.io/alpine/java:21-jdk AS run RUN mkdir -p /logs diff --git a/kontor-spring/Makefile b/kontor-spring/Makefile new file mode 100644 index 0000000..55728ed --- /dev/null +++ b/kontor-spring/Makefile @@ -0,0 +1,8 @@ +.PYHONY: all + +all: + ./gradlew build + +docker: + ./gradlew dockerImage + diff --git a/kontor-spring/README.md b/kontor-spring/README.md new file mode 100644 index 0000000..f24bbcd --- /dev/null +++ b/kontor-spring/README.md @@ -0,0 +1,3 @@ +# kontor-spring + +Kontor Anwendung mit Spring Boot und Vaadin \ No newline at end of file diff --git a/kontor-spring/build.gradle b/kontor-spring/build.gradle index a399437..e49cbac 100644 --- a/kontor-spring/build.gradle +++ b/kontor-spring/build.gradle @@ -1,61 +1,104 @@ -plugins { - id 'java' - id 'maven-publish' - alias(libs.plugins.spring.boot) - alias(libs.plugins.spring.dependencies) - alias(libs.plugins.vaadin) +buildscript { + configurations.classpath { + resolutionStrategy.eachDependency { DependencyResolveDetails details -> + if (details.requested.group == 'com.burgstaller' && details.requested.name == 'okhttp-digest' && details.requested.version == '1.10') { + details.useTarget "io.github.rburgst:${details.requested.name}:1.21" + details.because 'Dependency has moved' + } + } + } + repositories { + mavenCentral() + maven { setUrl("https://nexus.thpeetz.de/repository/maven-central") } + maven { setUrl("https://maven.vaadin.com/vaadin-prereleases") } + maven { setUrl("https://repo.spring.io/milestone") } + } } -java { - toolchain { - languageVersion = JavaLanguageVersion.of(25) - } +plugins { + id 'java' + id 'application' + id 'maven-publish' + id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.0" + id 'jvm-test-suite' + id 'jacoco' + id 'test-report-aggregation' + id 'jacoco-report-aggregation' + alias(libs.plugins.spring.boot) + alias(libs.plugins.spring.dependencies) + alias(libs.plugins.vaadin) + alias(libs.plugins.lombok) + //alias(libs.plugins.asciidoctorPdf) + //alias(libs.plugins.asciidoctorConvert) + //alias(libs.plugins.asciidoctorGems) + //id "de.infolektuell.typst" version "0.8.0" } repositories { maven { setUrl("https://nexus.thpeetz.de/repository/maven-central") } - mavenCentral() + mavenCentral() + //ruby.gems() + maven { setUrl("https://maven.vaadin.com/vaadin-prereleases") } + maven { setUrl("https://repo.spring.io/milestone") } + maven { setUrl("https://maven.vaadin.com/vaadin-addons") } } -ext { - set('vaadinVersion', "25.2.6") +java { + sourceCompatibility = JavaVersion.VERSION_21 +} + +configurations { + developmentOnly + runtimeClasspath { + extendsFrom developmentOnly + } } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-actuator' - implementation 'org.springframework.boot:spring-boot-starter-artemis' - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-security' - developmentOnly 'com.vaadin:vaadin-dev' - implementation 'com.vaadin:vaadin-spring-boot-starter' - implementation 'org.apache.camel.springboot:camel-spring-boot-starter:4.22.0' + implementation 'com.vaadin:vaadin-core' + implementation 'com.vaadin:vaadin-spring-boot-starter' + implementation 'org.springframework.boot:spring-boot-starter-artemis' + implementation 'org.springframework.boot:spring-boot-starter-security' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-validation' + implementation 'org.apache.camel.springboot:camel-spring-boot-starter' implementation 'org.apache.camel.springboot:camel-jms-starter' implementation 'org.apache.activemq:artemis-jakarta-client' - implementation libs.hypersistence - implementation libs.mail - compileOnly 'org.projectlombok:lombok' - developmentOnly 'org.springframework.boot:spring-boot-devtools' - runtimeOnly 'io.micrometer:micrometer-registry-prometheus' + //implementation libs.artemis + implementation 'org.springframework.boot:spring-boot-starter-actuator' + developmentOnly 'org.springframework.boot:spring-boot-devtools' + implementation 'io.micrometer:micrometer-registry-prometheus' implementation 'org.springframework.security:spring-security-oauth2-jose' implementation 'org.springframework.security:spring-security-oauth2-resource-server' - runtimeOnly 'org.postgresql:postgresql' - runtimeOnly 'org.xerial:sqlite-jdbc' - //implementation 'org.hibernate.orm:hibernate-community-dialects' - annotationProcessor 'org.projectlombok:lombok' - annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' - testImplementation 'org.springframework.boot:spring-boot-starter-artemis-test' - testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test' - testImplementation 'org.springframework.boot:spring-boot-starter-security-test' - testCompileOnly 'org.projectlombok:lombok' - testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testAnnotationProcessor 'org.projectlombok:lombok' + implementation 'com.h2database:h2' + implementation libs.hsqldb + implementation 'org.postgresql:postgresql' + //runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' + implementation libs.hypersistence + implementation libs.mail + implementation libs.jackson + implementation libs.gson + implementation libs.json + implementation 'org.hibernate.orm:hibernate-community-dialects' + testImplementation('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } + testImplementation 'org.springframework.security:spring-security-test' + testImplementation 'com.vaadin:vaadin-testbench-junit5' + testImplementation 'io.projectreactor:reactor-test' + testImplementation 'org.apache.camel:camel-test-spring-junit5' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + //asciidoctorGems libs.rouge + //asciidoctorGems libs.diagram } dependencyManagement { - imports { + imports { mavenBom libs.vaadin.bom.get().toString() mavenBom libs.camel.bom.get().toString() - } + } } publishing { @@ -74,15 +117,112 @@ publishing { password = project.findProperty('nexusPassword') } } +// maven { +// name = "gitlabPackageRegistry" +// url = uri("https://gitlab.com/api/v4/projects/64726715/packages/maven") +// credentials(PasswordCredentials) +// } } } +application { + mainClass = 'de.thpeetz.kontor.Application' +} + bootRun { args = ["--spring.profiles.active=${project.properties['profile'] ?: 'prod'}"] } -tasks.named('test') { - useJUnitPlatform() +task dockerImage(type: Exec) { + dependsOn(bootJar) + commandLine "docker", "build", ".", "-t", "kontor:${project.version}" +} + +vaadin { + productionMode = true +} + +testing { + suites { + configureEach { + useJUnitJupiter() + dependencies { + implementation project() + implementation 'com.vaadin:vaadin-core' + implementation 'com.vaadin:vaadin-spring-boot-starter' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'com.h2database:h2' + implementation libs.hsqldb + implementation libs.sqlite.jdbc + //runtimeOnly 'com.mysql:mysql-connector-j' + runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' + implementation('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } + implementation 'org.springframework.security:spring-security-test' + implementation 'com.vaadin:vaadin-testbench-junit5' + implementation 'io.projectreactor:reactor-test' + runtimeOnly 'org.junit.platform:junit-platform-launcher' + } + } + test(JvmTestSuite) { + testType = TestSuiteType.UNIT_TEST + targets { + all { + testTask.configure { + reports { + junitXml { + outputPerTestCase = true // defaults to false + mergeReruns = true // defaults to false + } + } + finalizedBy(jacocoTestReport) + } + } + } + } + integrationTest(JvmTestSuite) { + testType = "view-test" + targets { + all { + testTask.configure { + shouldRunAfter(test) + finalizedBy(jacocoTestReport) + } + } + } + } + } +} + +tasks.named('check') { + dependsOn(testing.suites.integrationTest) + dependsOn(testing.suites.test) + dependsOn tasks.named('testAggregateTestReport', TestReport) + dependsOn tasks.named('integrationTestAggregateTestReport', TestReport) +} + + +jacocoTestReport { + dependsOn test, integrationTest + reports { + xml.required = true + csv.required = false + } +} + +reporting { + reports { + testAggregateTestReport(AggregateTestReport) { + testType = TestSuiteType.UNIT_TEST + } + integrationTestAggregateTestReport(AggregateTestReport) { + testType = "view-test" + } + integrationTestCodeCoverageReport(JacocoCoverageReport) { + testType = "view-test" + } + } } wrapper { diff --git a/kontor-spring/src/main/frontend/styles.css b/kontor-spring/frontend/themes/kontor/styles.css similarity index 100% rename from kontor-spring/src/main/frontend/styles.css rename to kontor-spring/frontend/themes/kontor/styles.css diff --git a/kontor-spring/frontend/themes/kontor/theme.json b/kontor-spring/frontend/themes/kontor/theme.json new file mode 100644 index 0000000..0f7a81f --- /dev/null +++ b/kontor-spring/frontend/themes/kontor/theme.json @@ -0,0 +1,3 @@ +{ + "lumoImports" : [ "typography", "color", "spacing", "badge", "utility" ] +} \ No newline at end of file diff --git a/kontor-spring/gradle.properties b/kontor-spring/gradle.properties index ab5afd3..9a561e0 100644 --- a/kontor-spring/gradle.properties +++ b/kontor-spring/gradle.properties @@ -3,4 +3,3 @@ version=0.3.0-SNAPSHOT group=de.thpeetz nexusUser=kontor nexusPassword=kontorNexus -profile=local \ No newline at end of file diff --git a/kontor-spring/gradle/libs.versions.toml b/kontor-spring/gradle/libs.versions.toml index fdd8742..c6b06d2 100644 --- a/kontor-spring/gradle/libs.versions.toml +++ b/kontor-spring/gradle/libs.versions.toml @@ -1,15 +1,24 @@ [versions] -gradle = "9.5.1" -springdependencies = "1.1.7" -springboot = "4.1.0" -vaadin = "25.2.6" +gradle = "8.6" +args4j = "2.33" +commonscli = "1.5.0" junit = "5.8.2" logback = "1.1.2" +mockito = "1.9.5" +picoli = "4.7.0" slf4j = "1.7.22" hsqldb = "2.7.1" sqlite = "3.25.2" spotbugs = "6.0.7" +#asciidoctor = "4.0.2" +#rouge = "3.15.0" +#diagram = "2.2.2" +#diagram = "2.3.1" sonarqube = "3.3" +cimtConventions = "1.0.0-SNAPSHOT" +springboot = "3.2.5" +springdependencies = "1.1.4" +vaadin = "24.4.23" camel = "4.10.6" artemis = "2.41.0" lombok = "8.11" @@ -17,15 +26,16 @@ gson = "2.9.0" jackson = "2.16.1" json_simple = "1.1.1" mail = "1.6.2" -hypersistence = "3.15.4" +hypersistence = "3.9.10" [libraries] -vaadin-bom = { group = "com.vaadin", name = "vaadin-bom", version.ref = "vaadin" } -camel-bom = { module = "org.apache.camel.springboot:camel-spring-boot-bom", version.ref = "camel"} -artemis = { module = "org.apache.activemq:artemis-jms-server", version.ref = "artemis" } +args4j = { module = "args4j:args4j", version.ref = "args4j" } +commonscli = { module = "commons-cli:commons-cli", version.ref = "commonscli" } junit = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" } logbackCore = { module = "ch.qos.logback:logback-core", version.ref = "logback" } logbackClassic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } +mockito = { module = "org.mockito:mockito-all", version.ref = "mockito" } +picocli = { module = "info.picocli:picocli", version.ref = "picoli" } slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } hsqldb = { module = "org.hsqldb:hsqldb", version.ref = "hsqldb" } gson = { module = "com.google.code.gson:gson", version.ref = "gson" } @@ -33,7 +43,15 @@ jackson = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref json = { module = "com.googlecode.json-simple:json-simple", version.ref ="json_simple" } mail = { module = "com.sun.mail:javax.mail", version.ref ="mail" } sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version.ref = "sqlite" } -hypersistence = { module = "io.hypersistence:hypersistence-utils-hibernate-73", version.ref = "hypersistence" } +hypersistence = { module = "io.hypersistence:hypersistence-utils-hibernate-63", version.ref = "hypersistence" } +vaadin-bom = { module = "com.vaadin:vaadin-bom", version.ref = "vaadin" } +camel-bom = { module = "org.apache.camel.springboot:camel-spring-boot-bom", version.ref = "camel"} +artemis = { module = "org.apache.activemq:artemis-jms-server", version.ref = "artemis" } +#asciidoctorGradleJvmGems = { module = "org.asciidoctor:asciidoctor-gradle-jvm-gems", version.ref= "asciidoctor" } +#asciidoctorGradleJvm = { module = "org.asciidoctor:asciidoctor-gradle-jvm", version.ref= "asciidoctor" } +#asciidoctorGradleJvmPdf = { module = "org.asciidoctor:asciidoctor-gradle-jvm-pdf", version.ref= "asciidoctor" } +#rouge = { module = "rubygems:rouge", version.ref = "rouge" } +#diagram = { module = "rubygems:asciidoctor-diagram", version.ref = "diagram" } [bundles] logback = ["logbackCore", "logbackClassic"] @@ -41,6 +59,13 @@ logback = ["logbackCore", "logbackClassic"] [plugins] spotbugs = { id = "com.github.spotbugs", version.ref = "spotbugs" } sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" } +#asciidoctorPdf = { id = "org.asciidoctor.jvm.pdf", version.ref = "asciidoctor" } +#asciidoctorConvert = { id = "org.asciidoctor.jvm.convert", version.ref = "asciidoctor" } +#asciidoctorGems = { id = "org.asciidoctor.jvm.gems", version.ref = "asciidoctor" } +javaConvention = { id = "de.cimt.java-conventions", version.ref = "cimtConventions" } +applicationConvention = { id = "de.cimt.application-conventions", version.ref = "cimtConventions" } +libraryConvention = { id = "de.cimt.library-conventions", version.ref = "cimtConventions" } +#asciidoctorConvention = { id = "de.cimt.asciidoctor-conventions", version.ref = "cimtConventions" } spring-boot = { id = "org.springframework.boot", version.ref = "springboot"} spring-dependencies = { id = "io.spring.dependency-management", version.ref = "springdependencies" } vaadin = { id = "com.vaadin", version.ref = "vaadin" } diff --git a/kontor-spring/gradle/wrapper/gradle-wrapper.jar b/kontor-spring/gradle/wrapper/gradle-wrapper.jar index b1b8ef56b44f16b14dc800fa8103a6d89abb526f..d64cd4917707c1f8861d8cb53dd15194d4248596 100644 GIT binary patch delta 34981 zcmX7vV`E)i*M-xtv2EM7ZQHih;50h1ZM(6J6Q?m7n~m+a_w)XN{bB7f*PQbjV@p&_+ z^zX)?GRZ%tYb1;J;3OAR4#zHr@(s9M?_&VOl9K(B;Gl?5vJF3JQ6F-eg;|sIXXC-A zP>sU>+<+b_V4sm=zEQ%rn4Rp7O2w`m(7_{AX0s2IFXuQNsh%&QcOs@dTH0i^Vd43K zf{%*7t06#dSjhOfkd2U~y>_~nHL!bgKf}jd)x@NH*)(wSHqf41WO*_>gh30d&|bt>F@WIMJ!Hpd3rnG zF-Pf?_-RMyerE7qZ#@(;q#&110RSJ-^e-eM^( z-~9Bp-5)NfVCa>}1Gtr>T9jT7#;8j;VG_nDZL1?Ix=vcJmNp0zgvzXyTf`fcwP4eU zyPBj!_XR9UP+F`Z|VD}c-dr)K1* z7R|-HIT42)S&3A|Mw?!o3#es9F=;}BpJ9><89cZ|5f!I5#urDb6Qzaa^}A?N+Eq&y zKAQu}{dRIK!d0?Kt$YJrhzo7s^lbKIT{Vsv6%-VCiBAr4U0 zu2XKtnkqNuZ!~;vMWDl_hf@h#d{~8Oo2?=PYHce_j^IuFbOicjGa!maT^K{}3zALM z_;jQQIIJ~{+n8D5XyHf07HZ0eJziZ%++#tkh|Oh8WOC2nm<@xoJvwA4?h7L@Xyfi(3!0CO zk0Zu{B}M}-1jiER?nTrvfdJEUdVnRf`tmlw=)T<}DqGc{NiHzklp^74r`2!g2g{6n zw@#8$KYLgqyU^L>55^~pYb7HR`wR<|p5})dO+cl!q?a5YpvD|d`-BLhgJ>*yP2fTk z^aVe|vY=cK#7EG*5mNKlInhIR9W+BcR zNN0@@)RZM!O9VS~s>lcz8>0gD?~Tub8!gOL$X+_mv-=Ngo%7Hr#^XMRG-_Nz z8^YSc%nd%~r!&i4BOE$&zwm0kWy7479SWsl$TxJK<6gMS339tbIFu7DFRo!JzQF&} zoBIAauR*d1mIJ_EdBFrD&`1QXg#`O*MKx%kmF?T`00xwXj0CHaA~5pE@TpPrhwd5@ zhZF!98TbfeQ)EVA)SLNS98-QCLn8CCm(>z5^OobD=kBWvcz?f#>i>R(V2T(0wc?c&b<@rW_6z2k+yE@xH_oQ_R2^2L%WvFE$kn89 zL~C=9*Q*NX69{puk^IVjsp-?;R7CT!tVLW8bvz zn9=LUIml7>^mLtKfdXahr_EEQV=E>uE0PQD>tMA--&veuc?<47Dn(O{QZ}Ezbl4U4 zG8abf`U6TX#V8}Z?NYluWv7pO6J~$U{!K@$dqN1|BetZHKY<52J|`nILCjtEp>n#q zLNM|BD2u}D={LYcf#dpF%Gg-jxI37gyplQthl5_E{lm%?ozmxdg=HMQsx4TO)C5uS z-9%VzyB6VkWKPT?uHt5TNXkCgI$eK~VjW5ik^+DMN>l0F9~2yevxIoHufWW_eWMrX zItxsKfjKRL5mw+d<2srW3rAY$%xquciP&!9Y=GPXR${Pv#5hl69-%MLH^C)K$92I& z>uPPXwaG5rEk1~m?nE5W&oIqGl)0+-n$72)U|RPH)2Ha?bU_6rTcTGP!U5f27)Hh@ z0pOk;S%y8&PD=#K%|Gb#EZMt^DG7UXJ21kZNPb^1jAZb#_WTGf*gN^iYiaw43}=kT)(_W4S8bulFF^A86wDenKjG#HOBqrJXWvv+<%Xpsdo2Pc*Rp; zMdeP9PPV<;89Xne)K8eT6dAR_L4^P2oa{;vLpH}JMn%B9xl0B|Yk%wKi1B~rLu_>2 z#s~ohW(f1Y$%_h40buKmZuzf{ve+E?iWu#6Exv<0W^puDv`9ABRLIPeRn~|alx4P^ z_FGU*E9g}Pzx7`2^^&wluSp)Z``?Bb3%XZZc*{05yXfJo!8sxWy+vXf_akrnj z@DXU`+Wg2Uf8u}ng>FZzh8Qj_)}g>reN@zWUFbN+Wz=k&;BnDf^r5oFBC~@~Jr{dF zJ{9BS=5%faEFs_UI$=s`YjJXNjJETq@TiB5A<8DE7~vqor2xzr8uo(N=GqS<*0Ur>Uu$FJd8}P?Vmu2&Mzh2 zE(kI0z4}RdPh8fEXuDEs9g3;YP2Y?r&Q|FKsRLa8QBmdv)(K@OjJ?Ou-F-Xp`?eF zB4{f1nwg_a)*FoYR@6yyYE4v#*7)!nOQCq~DJGKc6Wm}WHGmyQwZT`gF*YqsA2e-v z;C5#DLnAKz9)iQ*nBgRxaLAFhDf*!S-}V@LNOSr?iS3PFweKDuRU}gZFQn zhoTsLB49Cnt;KL8OpF#7i*THaWH@Lw(IYB&hUBMlk>HBTgk%QKROqa^P+=iQeo447 zy5J;zM}(VRWT>*XizTMCC4%L1aBpUbW#g$6M)S**0#r8+i05GRM-N&9*M3tUX^ks zPk-<>0vDQMKi-bF@}0^%XT-F@uDfvqR|0zvA-iklr}P}dB~95OU2SJReHAYuI_X8> zP_&YUV_P_}OC&k8taoelYLCBKUMl(SYv z1{etf_3`05LoBS(MVs&A8f$jlhfZW;!vZ^pj`k+Sk92IxS37~rPx`=EQGk+S3 z*s$cdg^sZ;PfD}}LB9@4aeJY0hIk61qq!Kyq7Un+qJ6UDepDUuQ!QqxVX)$qB!9AtV|i=a3=%@M78ru(IN& z@80MU3{C8fJurMY-eG`RCAM5V@xm57FKCK4j;sa!@(QEo44tZLE!i1pwPL&{9^gvY7Cu4??)tdrnM(SASL;#L^RWSfIOkx0IU*>S z-Df- zGuA2$R}YQ@tMz&ZThwLzjdy>w`ABWy_7-eIL!QL87vNKBs2Y45Y=mEj(?O#!zcw9=l| z1tF*^zMK$Bw(_LH=$FTK#)m@E%e_Jx-jm{fCzrz9DE=c=mE>Q+U|^MgQV^1wP*Aq| zMG)-Uu7&Gxble07FRX^ad;}pd0v|90eN!! zJ`8~Z<>0-ivIoHvAXfU=w7=^kvS!~WiHP0_kwDb`n-OS1n)M4uOM7g*X*lP3$2g|V zKUN#JMcX`dYs=#KoBoe6OO1o~)$#3s_$!6I9@{CO_KH6WI4h45GEWdkk$BJfI)sW3UHBQ|U3Fxk zmfc1MW$hr(PdWdXxBNKg?QZ3X7%a_%#ea1hFy~+1($PU*Qd(nUC0%V>cI8Q!E*-~= zIMW9C0-Be@5CHSL7OUz&9#m`-S#{Uz!nF_Eh9U0E*qqm+`RK7 z@{QdQGQzNCLRyI(ne1*qvhTE5FWC?J4`rs2f)@cuF{InKenGT(JhdkO{-zfQsr@ht zc*+;cxqa8(yexali!6rvTiAUtfr7is^$Z!J3-d;X2FJ335HL=dk&kIRS9#=vQ2khlOlqm|DPnekAtqM` zo!KA}2${M4pXTPNTo)AnEywA}rg?F84Rp!eA!{O9M-T zP=#P1B+NIm0p^2Wf+=F_i3>=iQh^bD1ITvm|MuhmG}eZYqTk5Hd*Qov9I!R%yS@zw zdTHltqfPsN7E3lPV}#<)W9B;hECN^-Prqmp&gL0|;5%Ivt+EP7wi~*83;kBT2ciDr zPPV-30=Xk6?k9GWugoHfn1by%SVGaGzoCe$W5DgPE|Q^T=;34$1ZtpYRNPM@n%l@T zT--wBHFVfpEx+#=lqFx`rVQnzFG8!g_=p6y(ZcaX?z!Y24Mgvft`(n%aRXXvPmZE5 zQ=hBfhUm5YKLjdt1yj$oXF;m?8^d9+q=;GkxG#1TQP2yHB4Vwfu##A6m zwcBKtj*GudQFRjLh<1$aemisgjhYEqNkb({jgeQboLk7sawxAPI_7CqFWH`6rc_9* zgt<3>0mzO7v#=3=qr8K))tpn8 z<@CDS6c!TCrp8XO0xrnQVPi^xaw;Ri@;P5_la0He) z&3gBcuZC@_x!@P-e=b{?nsiQ5a!e+5Qj|0Mzx9H7(qwogd5hW^kRO`VEOHtNQB9OY zm+h#QP}Eu_L9a<7X}eTF^yBVQiA$+xEA=8a0p)}A9bQR>;Q8A-&7x~o)dq^tv+q{6 zZ(im|oB3e&@RE!w*fV4o7}i5R)VO9rG3dr%EYCYFCJ6hFyX9 zA^Be4wvGSF%G6!wX@Y>4{A(694>l43I#VfF;!ej5MHV&3%639ifUF$87V#|iZsWn9 zSb?EUCxk5|me=@N#4Q!_c$a`&KZGviEKy~Uh@GZ|U;A7I5KfI)AsQmu@zLPE^fStj zn_W_9E$*f%pbj0{?_&BS-|>B^pL8mLmX1+PBW*y|?|yY^s1u6dv(21c^ere`S{rZo z#|x_F5gH?7wZB}n^{gA!J{h7aV6SlK79Z~y^rc2nN9E~Okxg;}s+Jd^f8k1L+vWCE zE>N+(H7TE$I&+{p6{g2_T+wF0?a#r%HE*}hp8Tk~R^%lo&F23|GW4^UW=ZlTtpz~& zKWHaz-?q3k53VIDsh!g5@sHYZnD{3QQIkm^l=WtuUV8A?8)t4l4v&4!3hz`?sh}yo zfBU4_-)tRKs1+0Mm0IV2NZ3jJDwv-TKzUYqtR^5{Rh27@_q8#Hum7W*bc zCOS0QWtuGJS-J*q)%VfB+GJAI-Vk&n);K>MMT*OFoqjX48djFG>cNDq!bp=b>b?uf z8T)_Ot<5k98nzv@_fgQunI^zo*f%blj z$CcPN>ZjEMMwprHPkrM0dqn!0vvspmf)Uyy7#|jq7j!xE_E+k6{LFR)&NcRX!kWeU zoJHpU8dngy%{bz}#wGrb>JlbrF^B+Er{o}5QSw&T>{|4`l!*)kn&&-lkfWktBt>cH zv;=%6FO}Nn9Ml@ugCm3@oOflfcOafs_DYt8X>eqEGhe8-DcGH_nCrmmk>C-Ch>51{ zz2jy=@HGmXE+7@l&mj4n;K$VqQ}NGHXq{BZloQ6Vls5{(1{CKb(XG42ErS7?<%Auq z&Rv6cq1n4@%bm&{WsjbHe-e|xWuv?74~n8f#W=(yF)oT^E3k&`tMRKjxrb`qg~4M) z3k&(F`pHQXMK!a>q7jfOe*|G{1;v@y4)W3Fx+WLseuhd-sQ(sE6FtrH?x607>Q?{4 z3*kWKh3+scl;|8KQLid={_B zT zhsfgdoDKR&(HPJ@OxFE=NKTt$v8{AE`#_?suwQlX5^IAzjX zC(4Cr2ToPU&7#)GgUH_V>(3S3aGr8kxsnxdnsm(nfBxE^g0A42~ImI9?D}8KUBL7 zI@Rg$TUQr^pMJ7hEDv@z523H1BOoVFGSh$SO@3m&0b~?wmYi}@Cun+$8fk5+FU&J0 zDh6Sg|LmpYQ=H?K^=hxb;ktncVTZwCA~IRz>3{Yvi0lfTtT_w(=RIiO+S7YOq1PC+ zrpjX?xnAhg3x=ILp4Kj$jss5KN^}ZG;qdVhV}zU&ilCkP_(N~Xf?T0YShCU3IFJ;T z9K;n>(8OTH_Wq}Euo!DY_kRi>{WqF1{Bs{MlRH__0DkC_7=huCT!^Y`DaavVwTWvS zj(F?ADQU>!G-~TqrL-nAI^|sp7VA?^tD9h$yMv?l`Qh^I_dtD2g=&GKl`WrL72Vf_N&jEnSbKHFCMwRpDV5$fVttVWrUNDM;>l@@liHtqSpi+ zNi2I+9qP~uEe$9`z@Fy%@<4r~Q&4Wuw#jt~R;aR#Bfj%@ZCP2r%I zyyQ-kK%VL)oC`A67jj|xuROk42XXWSP@+J<5maFMKMtHa|Iz_f=nMDA+I&P^E`8VW z$H2?OvJR(VALP(2U9t@yUZX+PI^rTa2M1Pri7oV=c9heR`6A?Nvd#DW26 zW@&b~D=grQ39*SJ32w`(#}3C8v!;CjhCtwFS}DS5iN@^KGZ}zTe^@a-2aon-ofCVr z2Yb(9ji?etlf-HT8gUBPovLuUaLA*Wn zQUb-ZL+m_;>Mh8^jAWg%?6TkruY_Y4coYY~JPXcUN8O!qjC`Z(S`x-qX#FupWOJz4 z=r)SicUce|Myw_`Xe0PJO>NC!2Tl87Ch#YR~OL99o({7aASaZuV0}`{+rg z<sDdp*$9rzEvBisH+PaO z1}5@XG?-}fNuHEKdoq7~P*;*41-2FbshGVY=WvA8hsNu*_2?l2V z{eNWtzhuBU7ZqUL3tbcE(<|9){#3`NKt+T?LT;S^&u?%RVs)8pwnVaMQAAL|%4^=1 zn%&iE9%_7nrjHJmigj0{?E%LMXU^2!7kCHx#;yE&9kLEwyceG_dfci_baMECnj}|3 z-Ud~Yp9crOE!b-BKCV~3u|V^hrxV6*vnWiXH0FvG?NoG*qi5MtTvo(QK4^C7XfO&& zzEC{l#sRLX-s}c7YQ)Ug+a@`c#fU+yT@)j(+C-KDs;RpYRnQE6z|8i_PJY{#=6)6( zxAsX!=O(19P|J2|6C~!fHv<3^{sFR}w4oQ=A(>>dc{`=kAJ;``S`cPpKs3e7xbO(JD{MCxQAymsK^3sdW?r&g$)|=Oc6?M z^GEd2*?eATLQFK-9wGwV#yY|`(0<(6pSTmBqS8Zs#IN9BRRgTl5uD)MZAt|enUXBT zwW2kTCrk-cd=W@j=sr#Ne1{_^(l|Ei>$rYJ&!lZJzg$RIc7*gVc{0VnIWhER?uX!j zDZqov`cFkA3<_7x5r(7nARNh{y-qw%{uc5ACIrG|bi{xSqF6N&@0Obdo(oZ)cBWSI( zhCRr@;o7(BFAVACXBoSaSth#Esz~MnIK=~;K}HAEJE$dxOVFBlEH|X0K>Ag&u$d&^hT|>_YQwsw`Q&f@(E)`~(Su0I0jDVY zl_&5DZ2sYtY-PAcX01{5e>|YBhyZ3mVE8wDJ16ln-9b88PsAn%F~VLEhc)H@E*s>V zb8Im?kF-*yfaWrC&0m%)^zFOG{z3W(r#i(Oiyb=b`e(2QGAyP*W#uU!^KXo zSouUBM7%?zGj^81P&a%_EE|8}8rUfQ{+HubJ>h;zJvEqi5&6z5YMDP5h|0zk`|(yk z%ri~6J_+)<&;x)o_>o66s>n6ysCY4U_RO}(%K%B|16@pkb8Oq?fH{SFl)`5?FF<9f zNeijp&Kv%J>%g6}bO-;xyJh$PUBfPZe!!F*NCf3`*-qVlsr7709I2?3b&;5cE*PU* zM+E~ie%&Igc9X)An>Jz<=7v!~Msxt?x^T#LAUoZ(H~+)Rst+L43r1j~zT?T(;V9fC zh>JiAyNS+y(xu2Pv!6K6rf$18Y%B8{f1ZM|fhS=Z9vTC|kx2ikgt?`(j6bSd2M{N~ zIr%+)aQQ|wzNhTtsW;z#DwI&BZa5)HhEhU`61B;kEzO#BdrNr3*^e}KGaW5d5eg?nBHj^CDGlH#x1)`LxJV~AwXSuugU@g&7UrgjhbW1zMQW%2x*)ptUKYuo3*kEGHkeOA=7GzL_siEujgVJqrX_)PO z8R73uy;fjxf$zxg5GVHGFzG=-y-(7f?P#FTcn$U>ubG~w4fm(5kEgzLXE26>ah8pZ zZe76NX5VX(5<=^7*v{!3bPHMGsE)YC<}?dJ(RPf69k~QR!>A_XN#srt9>s+2*{x0_ zZ#nTY+E$$;uk^8n_2;5kw!h^^fWJ4&C}agu-PD3siD?QPX)y|!03MK;{m!h>9$XVt1O1>e8k;|Ipao!;`dIpL$R2001P69|5n zcbu1_0*D^~`-?ZSS?Cemswi(sBKK74AwU1Jj>F~oj*7!SGllW1Tc*%-2vQ|l$-P@9 zG*iE~YKo!^G5-!>BmCxW2#-?9lCN=+?i_V7>9WAEG&Lq_$uGLh%&@?@6F@g+%@9qq zBPxyBoegh@B}!+!aUq!(!9XzHSDALn@Yt9%?<>>+*x4nv!MzcFVdx6Rv-wNI3w!fx zk(793sWE3}lt!@~mU?hdDft`R1Lw(DRm@j$;Q|b;0!SaEFome-uCG7*u7cvs`ZA#e zu%NLj(zf*wwC>c`-7u+L?ZBg-gK#{Te=mnQ%w{+~9Ee{z{!o)7w7%_3lX>`&;??MB zX%;pB_~X`tF-mrDC%4Ffu2JCU>>q_XZX zwVuCRs91donsxmcV%eIq7~}+HI{tW(zFSCKH+q_}Ip}0Y*_2C>dj0zqGjgSAFvN_R z1FAzfgx;hAZYp*PXv4_rkLh<4M&Dw1^^1H0SQPq8(s$V|@=%4Oz7)MfH^m`qTf9Rd z#5X)^n4^agSNM1a6G=zDhMMgI_=DMpqU;G7`z2TSj7Vzjr!dA+>`|8z%QKpfj7&ax zmE!9iK6F;S+5tU-9sGwYESDVePLq6qJt(cOkx~Ghq4o*C><^m>8;wyJV_0rgDIF7Z z%Eq|Dd#wL1pVc(mz;FK|3pxLT=*n^m098ZfMG*`^a`@p=y6@53WQUe>7g{RGK+awh z1qBv7E}KW!)}D3345jQ-596436abX6JXvHN)jwX90>x>wN0B@(=sqp@^xOaI=8*oU z;x9ITA%P7<;U57+gb7hSjLdjGjLZ}B1~N_(W$zr(<9k^YH^F}o6R-n0N=^!B01Jcb zcrLmslmE{ctB7tEeD?oXZM%8;)Dowt=@sC(0YGUbXoV5YDv^@XCGh8#H}xMSgs-fz z-O5cS2oFwLXAwrQvIwSS$s}_EX&5O|V8hGziq5{k3+TJR2vLUmwD=ry^}W9hQB}i@;hrdu{K8hp zzP8pVTb_!vsUY1hT%y&gSiG{or@1DzD}Hw;I4dJM@4#VnjvvVS<{JVdxvW}odeYWs zQ30^(!v7(F8QuekXBvt1Z{N_;Z9P3TJ*R#@5o@o2AzjPtPQJXX50v{z{J~up z5Q=GX-H2_f`qffcK%bqWIUUT;rI2UILz-`aK0W>Z>;7gpBj(u209#hpvj~7q^wQM* z^=?98!2Mi9JQIW3uS|0)KiN8)_QzKLJD>HjW%^FY*1{IaxGxdFNraXoeCfC4yBxmO ziAJpqymZIzeQ|N8ReGL==Cx?nO34LF0{q{+d-7j&4hptPm8AM5&Qj{rVxgX4o0L`6 z9=o=c20qbLV&bMBVXb@w^uGYj{8xH5drIi2dTa#@`+PJ4PWhiT!h9c1<~Uewyl36o zt6i{}I9a;Bbm{kx!uMqdc&pFU%dr%LX<`~`C{^04wqG;NVKA$g|jGU-_z%)Vo5DY_-(ImJjE4KUjuBzxFTtZpM4eN>y+BJNieaG)SbDP>XBy{|asf zDYhd%*;UCEpz6G!h4FbgzgTmemcpe{K~gQPi~U=h(l)Rk6XKwLDNkSOg}Ts;@4 z9Y0In@iNS8`7duN(^aZLDoDt2CSTVERZD9t&v`UYI;b8bf7guByZVzp~%Y{cnJ=uAeN|mQM3uFZY6cEpf~!{uHN?iTpwkMT0cTWLow4E%-;Ht|d;R zEhJKWMZz61_~*79&C);~MgVsN2*47Ybx#hhRs3VRqZdD5*oEUOF&OR~q0--Uv!CX_ zC@3z@;5ExU4tK%6`k^Hv4vy-UDDc+@um%-yLxYsg&jDk~UUElIANDW+uSkImI_Y9H zJXDnip%$IpX2a=KW74GWHJwV+U^m&`Qa7F&=By6* zTUoJw@XP(VM^ZAT9vsE#xW&iH9xi{rm2`UD3W%Y3{-iUlqi;M)O~+w6D)Z)Z`GkGo z4coWbv!@g@o7rfjg$_uyY?qOYpI3-W5ElP%N>KhXXNz6@pW#a-Z5U7cuU8%X zuUBcR$pWAg7)!?_q5d(K>NGL^etjs3`UvdWWqAjGmW9ni!_CX(Ka4W}denZ?j7`0S zVvKUuzkI4SqyjwTpYZWK_HEwdZ1>(w=|9RKTRC8Pp2K!T-G8=FDTG-(&FmVcK*6pVw=$Ho>_%Z1)Cm<`ITeP`3q=5zz#i z7FF9mwtTB167!6Chy@(AHSa&OcRbNsRwmvqQ5d%mM|nh{p`;J?Co3dzJEd&|?Iae0 ztM(BZ@3^8qMH(eDR+xf9=VaW48+$j&rZzn~r7$zWHe36Z9HJ+}#mozuGS8s$-_>e> zb;Z+N8a9#1KlDU>_x+nRTo_(HaL&6I62E z1+-@;*hFgWNR}74PW7T0&3fF{tpp#ztK%qxc#_5Z4aCaWD2e6;79w`1Thgi_D5#ad>n~bCtdnfU^L)C~+C8 zaZOd8hy-WqK0s^%T2DwMpoZ=V>xl5|J5+a6+T15<`4%Y7YT|@8d2nT}IqtJA!umDO zkwkT5xOK8QCGkC`0ndNb$LbMAs@QMG>9Sw(OCn(X;9gt7vSPL;aBzygR+5{guk3kW zsK#-qB=?g)@(#x}izNHwP%C6j_`hzWQSMVo{I6t+q5j9MhBcW1+OYlvnz&zm7Tisn z4)TqT5c0H0q(KHO2GP}c$H1!LNWMYD zWDnFH+GegrjF_9miEKd=gsu8Kt|I^JtQ`b;5ArP>?i3wBFn1iD9Nlp22;*x-+H7hD zB)0e;AxjBc1sc8Xo3)?-0Xtb5QySTm8y@b6zNVi)mHZmQGSq=Y-0ikrRb|7R11^@N zz?_jPMt>Dq>R$xC?nqrIws8yINm>zeY8~S)M&*v?Yij7RhH_C{jC1XrRrsJDyQFj5 z=%5z%9O5Ma=WP^b9(6%4mGa=9u(UOSTclwEx6t$%a=Ghd`C1jurL`dy1NHSQ5F5jj z87&=78fFsXE;uyu3WK@8@A3ZIEPqQ0yPI9HU)N+mqj9ii^padyZ>q4kG32S!wSMn8 z&dkgHjFFeSA=6-cKCY9mFiW7h>wL+u)DP%EPT#!+sA&`f2TK1OSn~ey#T7|9S7CnS zWMRlXe5)nMU~Ac=n(myL%&j(w9%q-92WY}oWA;&Dv|Ye zZ6+;(j+==#;82z6Jnt_j+Lb*=R^$c+%F2RbYZKX6w|@(>#1!(Ww?W-#UxOjWimuZF zrhSnEDk&XI+kHsgbNttihP51?2BOspTQ`sps7#I_p=w4Q4Z7a zTHa!j4asmfPs)B~Pmo-(Yv>mT$kC;a^yWS0^tsW5FcYWGg6bp8(8`2TOA79zWWwg8 z$s#+&xfzMQc$?FCnsYmM4={Cq2zo`Q3jVl56noE(D7*19kM5?mN{AfPZZhL0p-oFn$~{peJ*CFVSAYZwCEPPGQ3)H;=F5jYrSACMR>N$+&h@S~z+?aw zZL0VE<7JBD*JKj}$+-vlWE53()_Cz^@4-pTj3nxC;|nQza`&cJ1wnDIZ3TpF12x4} zvo+0tRh0(|uV66?!R-zNLeST$Hl=?AT?kbsFZD$AJMz8|bKDNOhQ^@Friydp#p6!k zZMZubvJjKolhE#1u?DL(R0|~y-~>%b)>3Y(r9p`=1}6l(>9VhzGU|5-&(Sc%m<2mM z1s$(M=QGfgh=AH0o=wgtg0I;nP0^y_lR4AencOpf5M-pVk4neb=vIwYdYXjx7P@fN z#Y32Vdwm8z?=_R0#=N}~0vlyfOdf<00G*F{%s1{bu;H#bRUs%jy~i~V$R@-RcqR~^ zyVQb>x8{W(PrsIoil~Y`0eQ$eFeDUq%{06O;41svQ2K|t_0@Un*N=zP@o8(Ew^No4 zM~MY)Zk~bEpF3r~oK>38@khkW$0ck;mdpwnqe^x5X}69P3ifigi!zxdyVLf6YH6y+ zxFYu^Z@*i$kic%2Vo6K^>cS@yvbDU@N{9kpcsC=+a{J<~yPt^y`(4Cq@1pEzRdmV( zs`SL+F>385vYf`P_)?4f@@fT&Vi!PSy=8sTa97eDcfH7?`v?qC`jyqeG$S3w# zMP}ur^K+L>3}9AcQ!0|th~ZxCT!|W{eU9EK;8)qHLJ>>}{GnNINu3+(@t=e;1^oGD z>H1Ku$?xXR*rt8}RRsZ&b|*Y}a>8UD;gD4I_LRb=K)4nJZ*%ehNL-}?RZlBEMlq2F++t2s5yxXr>)lq z8_9#$_78KVxK<)opPK&Tn`E(rx*@FzS2zP%oiKApZDlU%sJhEd$o<2R~iG(CDsVD|!lkJ;nuHfEMosRE{yxo61;g-I= zCYHNuQ?z@dIgjs{=(Ag(|LJiKi;afdt+1LG|m9|0^O z@vp+mq|f{x`58l@`5RogksMv`>bL@DUmiCg9}+;wXx8TE0{B;V^tDXG7rZGM^hQit zDMB7a6$UJpv&&mw+5mTY*VFuMvIS|SaTop0EkOTTD0gPEks;e5E|nKZZk=aSQH{(u zVtoyQr8b-4L)8!cI4DkjhIJYh#U~mRRRyh2%JcGoHI56lI1 zLO!k&EHl<`=Obo|eDQ>IP6`ZSQv@oz%Qk#<)K7k;*Yo2r!L|>o^%FiWhE2+yfh^U; zSHJuV4tPE@=_}1%8O3h?|9Npt7pNZE3Kk5E6YbwPMxVT0@;#YEoDQHe>4eUTAy_6` zE{nc~l7)=J<+ylC6Ck5nNmp3)OXPdP#M*vGCeMR_g*7lcaruMsgj{@y_yjCaq?uj`ddFoAvzGJFy^!&%5G_RpP7gTc3@B zuz@F)Nkv_4rB)#qzz0Yind>#C5T%P2(Z;=T72xBIS+ySpY%9x|XSk^2#^9)>oy3ft zF_?OZF1s=xjs6R(?vs>-eK|si6@0KV*A%U+C5R-fQz-n3K@7{UVSsDgJ;b(@E5~j* zOjSGB(9awX{S^-Ee^g+yu(3!By(+@3>=rW4${#99 zU{iVD_bzg9bAyL$a(hNhgY*&-3)B6y9X{h9uQduP=~f50^s-mQlncI`zZ0cL+0_xf zg2%!eAxYV|J)H>zRRDMW!d2s|ch(5DOz&E`nrB75Df@KB^+DSwNLM!sJ1}_pPMHq% zmC?rxx7g#uM;Bct@u0k2xKhPCm7)0!`nHWVHjhp zqnwW8E%&S6ZCCky;H&+O{ayR}Ui-0I>B|w|`rC^&LA_=Ag~T0s3L7je@3T}#n7$O| zdy|DRi1spoWg4Xqooxac<}yw}Hw0rTVD@1>@#;A;_bWj)Uf+Gl;$22W_`Hs_Owc~G z!~`ON)o6)X?XZ7wVBZ#t1Kzna=l38rYK2tEu3Bku`a(AaY1wu1yOtzXiHVKuekTPx z;rmKVU@-?B2{Vfy&FK8S#ZCsyhj?QWco`IyS5_BbeRDZ_%gE2KeCe+z|CE>W*N(1w z!P;xh2}Nd;H27NDVMkE50M^)&mNDG#FT#5YPr+=BZKw%h`2}1OC_9uqS0VS490@Gf&N^8=OI2_gS4x<}JQvP}5!eF8 ze`$Yu<`h?PEon2l$eo(?)6r_U!6*q&Lj~q)|15qBw=?BZ1saM)oWmV~{8N7H{1Sr# ze=xz>`EGL3P(qpadyG~v#V26#3uaz@#B8!zUP9j2r;v__lEt`apLm?1f zNu0<|uoHrEV8+te7LhbYM-tN(wzRZ`E(=|Hg|a>9VY;P-(nL165K19HOE20&>D}#3 zPkOR+m-PS5NVa9mAPy!20ye#&h~Jk>B(RVf(1WY-YNYz(DZ@y|Q~g*yVx%)T3+o#iE^gQm zj2TC2-lP&UY29Wn9W}Op#uEn9ax>lE*q_#838V37S|1!V(v91!*M0U|haOKUBs0yu zRzIRQCiGN)r5=|M|#=Tu(5L!q+jTX>(OrFU*3Z2j7 z%$j?<+NYtl18oUipwVLTm!h>RRKw)PnceV_B*d6kM4hZ{4=tw^8ZDy>VU<1@SEWFS z)oeJ0Rx!DZ>vHgaF{bK3c&b@9)$aFDJq0zYqXyW@<|J-53Yv|(_3QwQcoCBW48eZ_ zr9u>CnhX!t*3iWot){h1RnzwsS_hW0rtOjAdI5-70rm#kSV8M4RMbmhN1;oZ6yZxC z;-SlI@h=ChOXI0{_OdDBjeDhsny6W$&D3J6b+?{2QdtjwwFv^7X{$}NQ%@Qm+HSAG zUao@;*XrrzD(!>=Gz_Lq1V=V*WK`+^Uuk17p^KnOXP}i0WzH?bNjW3#qTNFCS1_$S zHzJle-Ga$Iw!_=v2nBiQO4=xP_A&V<1$s0Qhf61udMXx1$^b&fNGlY9Q3E!;0~+n8 zgRs7yNSH@|_ofb~%%iDYgTmqAH4G2AntI%Txdw0jD)qu{Ht}E%w1NX>68?u|=rRZG zC|O@NLxgAM%03Mm>7#zZ&A?e@u%Q*Y7PipS{kbGmuxDrx{!|&Bl7c`oK}k0qCa}fV zsWgb7ye=0vvMQyq(y9_nSdkgZWQ}A{7+R$xOtUS2GP!I#(HM?rko}H9sBR@L{H?5+6I-b#|beb6HUhp`l%}C3~!`2 z2|jNq#<6vJQ#!2=AqM{q+SN0H7p4^@+ARihxRhlOyouhT(VOY5({*V%L2Qyn6?z+# zH$h>4yPg?3j3rg_L_6^;@vh3wD=aonx+PT?f~K8+Bz75WbdU?~JHwJ`kEliAXHSRWUN0DyHyeFs z+79RLTyJ4tp}Uy21O{&~F0Cg8 z@A1&5=sp4WX{P$u)tCL~&gxlken0#*sSouUcu!|{6+FCbG6p-Jr3W>7fIi101%oPo zon#8W?r}|h5U`Ms6dDl$aIQLkNTX4D7+MJi4_v+ZP@PJj$4gSrqPS)}^r+ybj!vO8 zWOBWkf_qm7+RJ9^FVN!x`iscCW~xNm{pVN$URP9`;3WOx*eB_SKk!A+&+^!zb!zXN0Vx%nhI&0skxlz{Hxr4hh7xieisG8;#M$g@%nvaujQx< zqMXB>TH_fJe=!gJ&@OR5LaHuc1P=*>pA`E;i=U<@+0~tvAd-{VQ z@kiv3tZ8q0=ue`Nd5QiEW1&YtS}dy9Lw}`vg=YR{X&q`DOc+`84zJke{ajjjKhj=FKWEm?0;MSYZqhb&LUmRL0QY7|cy=D+_6Vdd9L}lFNAs zW3;%PFIi)>c?D1`oGE|HDH#r<~c(V%ij9KTZEe~c-qW+KtEn~I z*0Z;}t*dAIu8uYjH=(uTE!;fbI5&vKxxs3jxz(OA3-%d;Yo1eo3V_nL@-`70+d+2f znJVvqjX~B(9r1A32E^=ASvY^vNW;6BmIX@3uo*@Vz5)XVcQLIhqZm8BC){j10x5x1 z$9wEcfT{b_PpvK2SMrs-PvgCO6FcWR*Yi_Q;#W}DDRTxs49%UWHu)Cqh|W>o_NwQMN;8*4-fKn zZZ;Wh<^u3~1X4`5OkH3GS<6}|%Q=mcjJat|pq$jUjW(5k!ELvdcTAwe^Uo`T+@8v0 zF_Lz!<6yot5FU7^CcF2``0{ZqoRT z{1!AKvAAe3dvkWnID5){5Z}yi6J~ikjMS*|El3KOU$gCYU*+L<+C>7>6(cucno=@) zpRqR`XIe6U!?nyf={xvcLctiSW@XK$?w0oULZiU%wyseagOsDA^%9le2M;X04eKy6 z8NJ_VjrSX(q#d`Dm1UHaxMf>CbFwN=1N?k|@7DM(#w?_QR`XC+xSSlQJ<#mo5AlbE zoF73X1XKE~p;78Lt?`rmlx=S7S_T!N zWDG6b)$lX?C5;sRGTfmd5k0Ij<_%Z!a15ilhrecL@vp-LORu_85ppPBY2%;;gixUuxB`~uS) zaNX3KF%!A0VcYUW>!OgqtMT)qmrzrB$`m=)YMOU=_y_z$QEz|bB=KiX^A-p3w;n4_ z5>R&+YNMI7Eot3u^3O04r;n=q3yps+Dy$|{HK3VD0C zFA3D&FfBeSsKUR4TV~TkVMr;G$4sQfKIr~||ETfr`Q_3{{q;RlVT>P@*3Cdm!ps;~ zh)cJ`(8QGu&a*be0A@9vf91bv{1^Uv$<(lC0ER;8!(`&jBn)FvWQrXE{2z?Q@m0oT zB1hqq9zH{e?8N{7HUJysXvujIZETt!fa4{p)-o%Yo9*9W!8CVJB3&BR4Xh5%tG#2@j4B5Asb0` zQoYav<`-|7`)oyOR57qwUllrkjO>63Nw<`td|(>o$!DdFK5?_zXj8zUYov=cs*u)} z+&h#)DU$ex5>Fj54JrbHz02jzrpqN-tqfYV^bRz<11lRF7u?WaazudhFM&4Cc?8 zR{9Ttx)`HGQ5V0%INBf2_;dCr5>@KN(Gyz2z&QY2V6gVvSBVgQH)f@?Uk)N1%%jB| zh#=}hQIWct>I?PMKQXF**)>V1bz*F_MjRZpm+7(=HrQ{^VDyWD#Qt^+a zULyCO@vDMJ^;S9aG$&8hd0LdGrIB!+R#w&Ksqwh-V%;cR@(^ue3J+7&zA@Sy>8Q)o zmJw>L53i~#zHh_79aZ6~&OCLE(B3>yJoZn?_n z&QrXq?j)JT)$6c-nh~q}iYqy+92F~(sv!VYz2PL?I7&B<(c2>-d5ms}1W(XydAf6i z-aA6a$LIr*kTd9$N9cnO(Z`rVE}!cmLL+;ePy3wW_h*Bu{|)6xRgU?g#0|chN!s|BnUi8m5Xd`dMUz zets$lG(d(_NbOVe^sD1EPtX#-i@ePZ7HEgu0?KVcy~XDoqn9E+cTd%CN9cEXdO1&j z5qnQV=sf*@{Wy7xg4%4n_KXiNuZEn?b!xThgSuY3=e3hQXSFI{BP6X>Em1?NMOG~# zYcum|2p~Q+1OmfnPQgxkDYLJNQ=&8SRRCxf7GYcMBW(R0FutS5q@)Ugx?DI zNaqQDhoDbez_6EZ>)Mb;{ksv1j{S)wa%mh3&k2dvQ;LOv*6L^0^$a#j^qINK^ZbD2TMAx33(pcq)5|@! zkA)OrJoN;h02S!fN&=eC8FCN9N3de01?fF?A$QQH`rLw2P!Kx74~^3jVIhb?p@N!! z`viYJ64Hv)+&*Vmh^Q5bt*rOC>n0I8RZ6Jv(=|@>1b=aipNxck5Ys2uL!VFQ`B^Ik zM><51Tvdo2OTHZziLZ`hV>{BB=WpCatAoOrGz*V!S^302#?MCtZheoJza!#~zgNWj z{weO{5Mu1d^Y|x8FaPvreZ7-IicfieiuM*(=R4nhH*Fu|pGU0V`ei*h_*I^NYkAS1 zBArjs5`;Nuyn?@#^z_Z6{Ms;SJAF#$FwaMR>V$F6Jg{?^-9F_seWxxjF?P-Jt_R0g7CD|G z$yLR53mKRPPSHHH3$sn7!LJa2N{X2IWo;kr{imCKbK z*0V#|Z9Th`nDy*eZWK>6F;V>2Ks&9*W+O?on;f*CWHQk3#K}cNXnSr%!}BgQI`@!9 zsHOBt^3Z)Wi|(h{^fj78&(U1gsFJIwO8PW;rH5&rbc(8_$7#M}F)eWTX`y2U`5d)$ zo?{&?anl73Ov5OCrZV0Z>Z^2&?ZpApaBq0F5b=ffF17B9qai z7Jo@@b97;BY$P!*V{Bn_b5&FY009610050w3w&E;75{%p(|dcHJ=(6@(!H{7gRX7b zy;?>XkF5hKlrq+hl5J9MliT)gNp88hSvOuHA|i?cg4%&7s8nekCSg#q?9n*>jVphbUb=!yuEidjlr(h%AdNZdlSuXYJ)#`mSU&N(+e|J+PQiBi?Ps4Z}9$-L$&ZuoEPU)_<4R zEv;J~h!|TdFIOQ1v^FbghmAALs39=Zvb*cMZ9Nh->icZHx7V=io8t*bk4EP&R!|@? zd9%J%uaD~S?)q~(HydF`L7~7bxtes$XnojyP+9~J%DvD~%wN;I@TR|fUQED5{+i*%BuwV7Spx1VrYpl74GR1M1%Kpv^52xI zg)QS_NY;6CjZiROU_!UytkF4;>1a*P5@s#+;y4_yVF9WHrX6P4=5WrfN}AD#VJoQC zP{ZOCV%Mt2jPV+zj}x;1>X=zQd76C?j|c>+jy!lIZAKKaSd1ksZ7CUFXKhi@AfP%{ z`ji(Zuz(sY7nqkff@7pe*M9|BA~>sidx%U@l&)OfRhx zm_){|>`YkEq+_hnogOb%r>#3(pyKE$q2Ob5A@y+BNKi&DqMYom`p69We^z`1@%#*I z;zC2dYsOg`&cxXQ#~&k+f^$gQ^uaT&7&+ivPRLfQ8B-?OwkI4Trhi~9dCsuuUYC!m zy@s@ONLNFTkp}Cqz6fnNpYC{9|uwJwW`vf+e#1m@&T*KCPlE8?&?c)etWv5j~q zys*<&km}`!i*u6|jZzwu)P#bhK#>vab+)$<1^GB@p*+cJWMCh*Y1j(N`l2YUuz2EF zQnhg7_*!r&E@OF@XQLsxth8-ivRCj44OemX}SY z@Exk^j27?FJW4Zy*|mMO)fbOidZZ~cfCx0?xjM&EKfjM3uzvSY zHYekkn7u9B{EwE+qlOXTeb~i>KTJ1`bp70&)-y$Gb$khMM=_RC8H64+;aR~eEt2Dtv!A! z2b4`erGIqHlSA2%DR_oFlF+-1^)^+R*;V5T#dvT00?%srIes~=(PppXM>g7Db51`e zAnH`SK*o{D2`e5XC4ZBx0FrWDk8Sm(hrr)*w=kScQTO6y_QFeeg><$Ob#a;vRJ=yb zmSb*PWSB!`=eT1U0Z66S@rFj-Nrj3hZV}@kyoL=;%^$>!MkK$pBax>eF+u+AWzY#>gZ;i%IJ(- z+nRcGyUn;bX~e_n>-`@7#q|FsuXUR7Ow3ihFEITu6*-EBh0$s2Lr$q4dJ(8NNEPLT zhJOYcy~!|cWP03+o20M2P{Jh#65-}jy74Fjknm{uub}zfLtWo?xNPT|nh}1ISE!|X?kk*iiu*9CMJlDKSNqGta5ypsKt_(l$-kM49l7X@66sSWI^u7CA!`Gv&0rAh95>irLf&y5z3F ziae>f@u>G^EMrp7FXj?&QON?9kI6Nj7W(O0#mof11ruCU=)#IR7E6pBqkq-t zlas7iB!>sFn5Nak($^;Aju|sf-xfA{K(#1Z_M_-?AzuGGX4!z>jf~rrw zAD%xT$FQ?;y?}=!Jg12rg)UJ8^Vu=urG!EK{bV^eQHn{Kr8#H$j1wNYC~B=l#bG$ zks-tQRSM6SzBp=4c30@eOSX8G3QNK!< zDq&zR=K2bwR&mgzt%!t{Yu9OPnF&x48Nx&XDojTz5;HA>%t;_eh)} zFG-vs7V>3ZA+y^#Dc18$lElK|$~`-JNcu*#pV8UWk(ieI0*b zPT=w3;kB>cTd{C8PsOQpMpPRUvsF)?-W>vEA7w`FR0PbDhf7g$*S zYw#alxfCcZuUtBCFi}AnRR<#&9mNo84k{Qcs%e421AZkmxGD3`44_s}T-7WJhO^*s zFwW~Nck?K50M*s2s~1eJJ!7i=jF~5(kCyrtrB6^x2MCiS?Eq?%O@2;)rC1AmQ|EO* z2T7KE5f9rKA|8oiaF8X-<`FP438`&JVk{oT5UM~zuBB`Hf^@HY?-k%=q1{II>b9IEZgF2OS`gx?35PvYO-ZryKY^(XSX$3w{@?sdp}b8Kc6I9wq??7{P^kI@B7Yo zzVn^)KabC^ee09giD(Od=a?>@J9lWulPyDf=9FP&Te@2^!!7MC89P5_=5)`rtz_QL z8kl#CoT0l07DshAnHe=Qr`$r`ZRsA?bFR_eGB%RT>tjh%WMuEoZr-+K2)xdY%KqU( zE{6$sR8MZk(6B~K%P<_%8o}&o!*OvI=67^#?bwmb8mC*H3K27ZX@hpb$rulqIfH4n z?TmDeIC?f`be?hau`$Ex?6+J`&*g&TXIg$zKdpD>bZeyZz|ct};{~aXsV--aj2I5n znpBPbDYdwhDU`L(SUFqIGOeq{xVyXz*44(@Os?RXrI0x)VxyJX**NOVW!HO1PhWU0xWVY;1v?vQ&&nZnh_2B`%uFwUB; z=PDCD5~dB*s?mD7i>X<$7CbZ8*=Of+z!Y%m1}Vl=Z{)|k@f7wkHC9ekoHB<4;;_Z0yW4c2gzb!nXFCB*cVjeb8*bFHy=ca^Jl(XSx-|~Al1`@Kc0~7_9mBxLMm;+^Y+Bi|8aJHJ6{bD(fJVFNL8gu0A%cR` z&$K@FmWWgVG@#L5N-_Ce^9e(Nraw&k>42E;AmVsI^OddU!Z>y`|9`dJAsh*`i^u!h z=3698hv|r@A|anMheGrY!3p$jt6_{@+xDQQKDG~v4SKrc8P0~yK{}?24v$w7USGNXFm0=WlDBpu zU_ba!Pjbt)?ID5#*C-a($P^sY8}HnQ^o5MK+Z-_@NJbENFtz(a8fTXMP+JB} zW70{DM(GsOs%q`}t+9d!5r&=*QeLvdY~@RTc(XOKXsnVQur_NOijE&&$N+)Zv0j0q zM+J>sI*n*5jAeBXItQ`T-!J0M(zs~y1lTh<+cm=UT~ZNTdJ61Wr7r{`OZA57UG#3@ z{qBm^RX6S}n7OP}h40nqya1(PhNIu|3{^3{52o|%hm5nOJ@XJd9k4$@Kd907(+^31 zxkhi`jfUxm>43!Wk6=omV&Q&kV}0{?mlc7K_tKAvF7HESTi8Pj?EHZ2d=@Dj_L@6!9spxbj-1_(HoB<8pq|VQnE;vlSM~) z9mxv$2|AcAg4dDEghG&&Em7TpYUMD6!PIf(?a^V!&Lhe_r{GGKb5(EGAs35(?ykPg z5hvFjZFO6%O1wu?cF9Ji>FGRK=|j6!Zh@F+PsW2!<}HNir_i^}c=J%f^31$}ZpRoC zxk37wIR$i9!k^IS1$q&MyyRXK;Toa(2*M_(+JWZj8b2F4FVV-u@gEP<&(Y6oXqP^L zAS_rC-fGEhb5v86uhd; z`+H2cRl8~S>hEjxCGksS#gk(5|2j1%Zx4*SeD^+ z9y!#n0&5AxA4J}=ywW>!d8}%pf;Hea}8}C{=aQ z(qak+uHa^kn|S4a>}{za-v)>x`AaRaO3xr9)H(ZS)*xv$uhBTdYmox*Jn7Y4Gt*N* zH9+Dmq7M4jQ` z-l39XVZxk0bROh^RuXy7CAJlk1za5!uy7xGvyHRuI)*T@p)aXrm z5jqi~ffE53pAa8^2kOc#U3b(gxjGsP@nh27)@Y8a zBl>ZPXuO7edABXZ8K(HHp*o#KOSOg#=*`1OiPIr5Xrqc&FgcS%8F|y+XJ?TNm!(Y0 z*k8yG8O~u5MVnC-g7CJF8szUk_-c^9{wNxzC7?mTU@0v_&OC|HM)3PV*TmDuC#mro ztw;}lOj2|FDy>RfrAYf#T60;!r=Hf*y3!_o5L@a%7boIHy7Op}HeMucijo5pbbq2q zo6`fYQr*POZ^WbgK$B7%>dN6-6t;^ym# zf%wbxHl_;{^?#az=>cE+U}JB5iXIxcMtjqLDUMIlz6tsexPSovrE0dpd2C~G-^+A# z5qh2Vm|vexr{az2NqPjzUZ7Y)oquQI8XXq}AI13bbm|pambmVJj_MP>EfeJDSF4X0 zns>w!HHb3?iBG^p%%|`hhrR1yghOyoYD?f|b30VJi_~n~0=S}d{Q--pC zWuw+%T|D=>_E*V&xp8=ka{I55mG1T@Ch46G%jr|0?m)yZ7CV#PUiU0DCL;k~b6t_1 zoPf3I1I=}dE{WN{l8pF^bgoF>gZ<~Rf0CZ|Z4WdDlGmT7j%0ISYXjXpH%0GBcVqL9 z;=YR`{^gsB^!}p|kEstHJs*HWzR)gzaxSFz7wIQ1K&3>wNSEO3=Tkv3O8R)W-xnYB zCk6xUgLTQl#-EP(OBQ+|4g37;4W-2mSfH6!(>B~}Ey}adHvDdzw%1Z{1YocC!CtT7 zyI$JwGCF&);sf0tSN=+Z{DQb?gYUkz3EXC_cs8C`y9JJ&qRSU4;Ct!(BIy2q1~@Oh zR0b}ZrLv8;m!sqPYjic8-Ul^{Mf#-R?uOv*JU)Jn0h!OF_lsnhK3SySn4-@q;C%i9 zEt5xpP!&(?a6EOMdAEXT0ApJUycMO>5q!^m2Q87e~!OCLdz=tdVS*N*OTe8 zlitApiJR{ph~uO;ZnPKaFE7h~&kaPVhIs8&7Fwa`DvB!FLamC%XuG2K&@M&y&|XDT zbU@KVbX?KnbOP2T(rH-HQL+^+(0de>U*UT{eOS?wUo`jw*u?502s_$`}U| z?NjvEm(%;>=_?cwq$N%?etnYu76<``8vheA8jLG34+ zIE0g?cxjOvDmtv$FXl$(VxPE^yZzi9P%Ntu6ynwHptuzP`LcMF*9qDYSMonCalv;M zc|#N5b)v}aS9nvA?^eHmT}AHh4m8Bz{C!2fZ@a&~D^%a5MFQ;#1z|*}H^qHLe&8ZK zzEWEmY7Reryep)4;Zw)Q3VtwO|I9}zyi#lSKmE)_T9sTWlSWtQ3a2o&QY-SINU+`4 z90rg?LYLMRnz;GgKqT1hpCGqPyRXrk=_Wor$wzJ^BEd)?d4(T;ZsK>~`W4tA4~7zA zsyNJf?C51=?`;FJP3#7{Hu0mdC=voUH1P?1Ce;;(nmAjsbbOLWZd6Ntg+c=Na}mFM z!7FdXZ%~9r=p+xZspw9QIN zm9a#xjD^bh75c178Vi;2SLthNEL6sCq5+h#P>k8f4Kh|##_imt#zJMB;b)YdrMPGW z`ri($K1Pc;MLy18%qmMQBHy(;KmqFbTgc0HN6VPN>7 zO&pKNBN-DleJOxjNeT?j{|W_ z8WkQ=;J5)%=!=S*#o;;MMCj-ZP)!ZX1(J(A9eI9+mL}1INM;d=d1cnY$ml6T7BQX5T z4cz3pz+iEwv@I}DENy3z#q|s{dEQ2%_EA&Zg*7xj#tHcv zW|#?6_L=D*ZfL${eZmw;zm~-f%#C6e^8!;n1R4qgT3ZFYAd5vzXRv@Z^26~~&q~8U5XNUs|HN8FpFr7DD@{YIg-}Hh!IPjU^uF0llWjMfu$$I{ z*az_~JP96r03S-6h#s7U`S^bO%`E%*_5J|>W7uQxvf126PdpZKi6-GwF6Vr}Ws#Rk zi%JzH$cqGtThu5V(q$%GATyLpx5^!#&V_b3;AI-*q6~jjy(2kIMw4+&SsVS$&sSO# zaG3~3WYMI`AX;ToqHDB{-Xb0iPli#D;F>@Cz!-EMij|dktu!(?Dr_32RwNq3M=Qz_ zZFncD?9w^RV~w^A4F>xQu@<2gCJk@n1bYLiiZ9RVX+gsK4vi|+ax z`Y)QE>yX5GbXw0?()rHgp2v6Y?|;Ai6~Hta44Y4$EEhLYRc@>br(frOjAV;0o1acsC^@*n3r)y+I>hF1TIxce;hk#yN!}<5g)5iP-2MryPTMe;_5#3 zY?~{f39EjFts-NL=6`$fd!<&A)>c385EL}b_hc7TIt#4AVZQ2VN zn8;C%V-97h_=;pxPGBN^xZEQv^u1TyF>`Dd|Y+WNVk^$vUz2S`^>>OG|rn zzOP~h-%^w0;yXlW?LXSFFAFN=d;B0nJdh6>c=m{s`j9&f&t2!$-EFF>xC?`>kKH9& z>Z_j?I&y<UPbvwDX$1ozA=}>edT_lqch{0=l=KnAu5e7d~MWj}}oT0Cc(B(8|X zk~k+8tCgCfQd6mF$x2mXIIlC6QG;Qye@u;JvCN9+M!jN)D53-fY=h|ru7&g2`GxsxQeqA9qYnrHf4*AR zi|o0gG6K=6E~jLjN-9fT=(JX2dg`5Jx2jr6k?VSE&tC8l2%gafO{r9qQ~QN8e^xZT z&`&^+6vNb&LY?af1om1gjhU%~-0mt;?eR@KFoE#izf5_P@3>R{_W6zWe}NUTma!w& zAcT?E9qq-QVS__Pcf=Fh<%gO;=e<6rLf80(Gh93L_^e1MUFzdwUAZf=#X!!ztiEj}3Vu$A;<%UNb z{Gls8>ELO1eA2-)uK1#ZFS+B34!-P)PdWG_cYMmhv#$8GgFkl1ryYC+R$cI!&vtkX zo^;_6?2d!4!&4VL>fp~{!wt6^i}w=0J<$6HP)i30Y2wu_?*ae-0#F8%VW?DpcN0|< z{+>;n5W><>cF-6F+B9j{Et?7jw9<_RiYWq4lb2-ZWG2o`S{A`wL2+L}Tu~53ElQ^q zM1Jrbe(;a-c;8IYByH;9oSfWw@7?b%-+k}C_s_pK{{pZUw;3*+KHb}TGB_Y52DzFH zZVo0=!Ei94WplD3nX;xvvRaaV)4a|VE*YE_Gm;TWWO!oG$Y+h<=9HuuJRHoWBUvdI zk%f)q`sA7oYX?YIZ!O|ec}1ZKBO^uD(2%QXS>;@p)ilixaor$aG~e2?uBA1SR2q_^ilnBa z-2+E?!gQmKOyzWqG)*RHtLjl?Yzgd)4D;>SL&BZ0hr2Hs*TaMm-_#(VH9dyl6nZ4?fJA zfm$r^!Gjs%YmpCL%oJaLOBj6Rak#OJg5<|!!!&Hy{XX1}2fSF00CAvbQnD1D4?)cF zl9h)TX6al??j)G5?bj8ChQ_9j68$k#RCtRIE3i@kRuLf0%^peTs_F1Mw+JXQ;zJWc z!f`W0Ygx`VN3v>iU6qt#=C)^fATJUp|3n1sB~o!CLPbtE!%0ei46Caap*-S3Oe!~{ z`+M6drYKf>(SkJ$a|~W#k)gh^Qd`t*9oCB~Y@h^_Wy(9~40-Sf!@P8*6|vyMCP7mJ zHZ#l=G&zhPCmtH7hB$4|mCSF&Ho-h?y?Mq|mkjf(m=*~^~-mXX$O*ci)aJ?LOqG|BYDst;X`{ceU$_e4qmG@R@e zob-|_V_H}HoKW}ENjV|sV$@u?Q@sP!ODMvAIp-8D?!?qj(?;3!GYENkE^`za!&0$R++$U$bmN)Gq+U`Rd8KEP8Gq@Vt#l%(&ip*$_*Beto zLWxSNLKCPQ!xFOGCn<7LGWn!a;)5>Ee*+AG>lY1SEAqnl5aEnzagH{5Ifml`euA`1 zCFsqoCPlOBSc2!AX7xNnxJ}C|$$+Yv0numzh3*z8wc

yb%-OYcg6{P)b3;TV;9l88> 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

Igj3NXa_|8<`c7r$X{#UWi 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[sex+d!zoXF=a?l-EdR8AUn8#-&A&o?v{ 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 /dev/null && printf '%s\n' "$PWD" ) || exit +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -114,6 +112,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -171,6 +170,7 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -203,14 +203,15 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ "$@" # Stop when "xargs" is not available. diff --git a/kontor-spring/gradlew.bat b/kontor-spring/gradlew.bat index 24c62d5..25da30d 100644 --- a/kontor-spring/gradlew.bat +++ b/kontor-spring/gradlew.bat @@ -13,8 +13,6 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -23,8 +21,8 @@ @rem @rem ########################################################################## -@rem Set local scope for the variables, and ensure extensions are enabled -setlocal EnableExtensions +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. @@ -51,7 +49,7 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -"%COMSPEC%" /c exit 1 +goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% @@ -65,18 +63,30 @@ echo. 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo location of your Java installation. 1>&2 -"%COMSPEC%" /c exit 1 +goto fail :execute @rem Setup the command line +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -@rem endlocal doesn't take effect until after the line is parsed and variables are expanded -@rem which allows us to clear the local environment before executing the java command -endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* -:exitWithErrorLevel -@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts -"%COMSPEC%" /c exit %ERRORLEVEL% +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/kontor-spring/logs/spring-boot-logger.log b/kontor-spring/logs/spring-boot-logger.log deleted file mode 100644 index aa3a532..0000000 --- a/kontor-spring/logs/spring-boot-logger.log +++ /dev/null @@ -1,2904 +0,0 @@ -2026-08-13 09:56:33,394 INFO o.s.b.StartupInfoLogger [Test worker] Starting KontorSpringApplicationTests using Java 25.0.2 with PID 1663976 (started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 09:56:33,398 INFO o.s.b.SpringApplication [Test worker] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 09:56:35,117 INFO o.s.d.r.c.RepositoryConfigurationDelegate [Test worker] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 09:56:35,157 INFO o.s.d.r.c.RepositoryConfigurationDelegate [Test worker] Finished Spring Data repository scanning in 21 ms. Found 0 JPA repository interfaces. -2026-08-13 09:56:36,179 INFO o.h.j.i.u.LogHelper [Test worker] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 09:56:36,241 INFO o.h.Version [Test worker] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 09:56:36,935 INFO o.s.o.j.p.SpringPersistenceUnitInfo [Test worker] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 09:56:36,992 INFO c.z.h.HikariDataSource [Test worker] HikariPool-1 - Starting... -2026-08-13 09:56:37,273 INFO c.z.h.p.HikariPool [Test worker] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@be9bf2e -2026-08-13 09:56:37,277 INFO c.z.h.HikariDataSource [Test worker] HikariPool-1 - Start completed. -2026-08-13 09:56:37,361 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [Test worker] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 09:56:37,599 INFO o.h.v.i.u.Version [Test worker] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 09:56:37,955 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [Test worker] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 09:56:38,007 INFO o.s.o.j.AbstractEntityManagerFactoryBean [Test worker] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 09:56:38,148 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [Test worker] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 09:56:39,715 DEBUG o.a.a.a.u.UUIDGenerator [Test worker] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 09:56:40,158 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [Test worker] - -Using generated security password: e3296083-cd14-4a2c-b536-dfffa38120e7 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 09:56:40,189 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [Test worker] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 09:56:40,437 INFO o.s.b.a.e.w.EndpointLinksResolver [Test worker] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 09:56:40,818 INFO o.a.c.i.e.AbstractCamelContext [Test worker] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 09:56:40,836 INFO o.a.c.i.e.AbstractCamelContext [Test worker] Routes startup (total:0) -2026-08-13 09:56:40,837 INFO o.a.c.i.e.AbstractCamelContext [Test worker] Apache Camel 4.10.6 (camel-1) started in 16ms (build:0ms init:0ms start:16ms boot:2s54ms) -2026-08-13 09:56:40,843 INFO o.s.b.StartupInfoLogger [Test worker] Started KontorSpringApplicationTests in 8.084 seconds (process running for 9.848) -2026-08-13 09:56:41,654 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 09:56:41,658 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:0) -2026-08-13 09:56:41,663 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 9ms (uptime:0s) -2026-08-13 09:56:41,672 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 09:56:41,675 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 09:56:41,680 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 09:56:43,166 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 1666082 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 09:56:43,170 INFO o.s.b.SpringApplication [restartedMain] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 09:56:43,227 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 09:56:44,292 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 09:56:44,309 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 8 ms. Found 0 JPA repository interfaces. -2026-08-13 09:56:45,083 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 09:56:45,096 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 09:56:45,098 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 09:56:45,098 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 09:56:45,137 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1909 ms -2026-08-13 09:56:45,549 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 09:56:45,593 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 09:56:45,967 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 09:56:45,994 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 09:56:46,104 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@5a940c65 -2026-08-13 09:56:46,106 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 09:56:46,156 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 09:56:46,336 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 09:56:46,754 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 09:56:46,833 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 09:56:46,875 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 09:56:47,623 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 09:56:47,773 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: 1c49f0f4-3a70-4576-b59e-30f0a9b9b6c2 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 09:56:47,799 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 09:56:47,912 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 09:56:48,104 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 09:56:48,105 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 09:56:48,135 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 09:56:48,141 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 09:56:48,146 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 09:56:48,150 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 09:56:48,160 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 09:56:48,161 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 09:56:48,162 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 09:56:48,162 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 09:56:48,163 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 09:56:48,163 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 09:56:48,164 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 09:56:48,164 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 09:56:48,165 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 09:56:48,165 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 09:56:48,166 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 09:56:48,166 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 09:56:48,166 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 09:56:48,166 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 09:56:48,167 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 09:56:48,167 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 09:56:48,168 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 09:56:48,169 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 09:56:48,169 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 09:56:48,169 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 09:56:48,169 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 09:56:48,170 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 09:56:48,170 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 09:56:48,170 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 09:56:48,170 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 09:56:48,170 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 09:56:48,171 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 09:56:48,172 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 09:56:48,174 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 09:56:48,175 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 09:56:48,175 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 09:56:48,175 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 09:56:48,176 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 09:56:48,180 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 09:56:48,222 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 09:56:48,247 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] Vaadin is running in production mode. -2026-08-13 09:56:48,356 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 09:56:48,423 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 09:56:48,431 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:0) -2026-08-13 09:56:48,431 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 7ms (build:0ms init:0ms start:7ms boot:1s226ms) -2026-08-13 09:56:48,434 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 6.075 seconds (process running for 6.603) -2026-08-13 09:57:07,922 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 09:57:07,924 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 09:57:07,927 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 09:57:07,930 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:0) -2026-08-13 09:57:07,932 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 5ms (uptime:19s) -2026-08-13 09:57:07,937 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 09:57:07,939 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 09:57:07,942 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 10:00:33,716 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 1701183 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 10:00:33,718 INFO o.s.b.SpringApplication [restartedMain] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 10:00:33,753 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 10:00:34,526 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 10:00:34,540 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 7 ms. Found 0 JPA repository interfaces. -2026-08-13 10:00:35,123 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 10:00:35,132 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 10:00:35,134 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 10:00:35,134 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 10:00:35,162 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1407 ms -2026-08-13 10:00:37,685 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2339 ms -2026-08-13 10:00:37,744 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 10:00:37,773 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 16 ms. -2026-08-13 10:00:37,775 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 10:00:37,897 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 10:00:37,920 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 10:00:37,973 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 53 ms. -2026-08-13 10:00:38,003 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 10:00:38,035 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 10:00:38,298 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 10:00:38,319 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 10:00:38,400 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@4b540e7b -2026-08-13 10:00:38,401 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 10:00:38,444 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 10:00:38,554 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 10:00:38,826 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 10:00:38,873 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:00:38,931 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 10:00:39,510 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 10:00:39,597 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: 8e8f195a-7cb8-4de8-bcbc-a240206ecbb3 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 10:00:39,616 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 10:00:39,709 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 10:00:39,835 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 10:00:39,836 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 10:00:39,855 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 10:00:39,859 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 10:00:39,862 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 10:00:39,865 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 10:00:39,872 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 10:00:39,873 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 10:00:39,873 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 10:00:39,874 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 10:00:39,874 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 10:00:39,875 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 10:00:39,875 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 10:00:39,875 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 10:00:39,876 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 10:00:39,876 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 10:00:39,876 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 10:00:39,877 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 10:00:39,877 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 10:00:39,877 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 10:00:39,877 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 10:00:39,878 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:00:39,878 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:00:39,878 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 10:00:39,878 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:00:39,878 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:00:39,878 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:00:39,878 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 10:00:39,879 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 10:00:39,879 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 10:00:39,879 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 10:00:39,879 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 10:00:39,879 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 10:00:39,879 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 10:00:39,880 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 10:00:39,881 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 10:00:39,881 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 10:00:39,882 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 10:00:39,882 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 10:00:39,882 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 10:00:39,884 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 10:00:39,911 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 10:00:39,927 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 10:00:39,964 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 10:00:39,997 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 10:00:40,003 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:0) -2026-08-13 10:00:40,003 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 5ms (build:0ms init:0ms start:5ms boot:825ms) -2026-08-13 10:00:40,005 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 6.68 seconds (process running for 6.973) -2026-08-13 10:00:40,059 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 10:00:49,700 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 10:00:49,702 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 10:00:49,705 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 10:00:49,708 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:0) -2026-08-13 10:00:49,711 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 6ms (uptime:9s) -2026-08-13 10:00:49,717 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:00:49,720 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 10:00:49,722 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 10:04:34,354 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 1726511 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 10:04:34,357 INFO o.s.b.SpringApplication [restartedMain] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 10:04:34,407 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 10:04:35,289 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 10:04:35,302 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 7 ms. Found 0 JPA repository interfaces. -2026-08-13 10:04:35,842 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 10:04:35,851 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 10:04:35,852 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 10:04:35,853 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 10:04:35,880 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1472 ms -2026-08-13 10:04:38,713 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2664 ms -2026-08-13 10:04:38,788 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 10:04:38,820 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 18 ms. -2026-08-13 10:04:38,822 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 10:04:38,951 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 10:04:38,978 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 10:04:39,072 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 94 ms. -2026-08-13 10:04:39,081 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 10:04:39,118 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 10:04:39,456 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 10:04:39,478 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 10:04:39,576 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@4954ed7d -2026-08-13 10:04:39,577 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 10:04:39,621 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 10:04:39,742 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 10:04:39,995 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 10:04:40,038 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:04:40,102 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 10:04:40,679 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 10:04:40,822 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: 3ef90a9f-2c7c-4111-82b2-99d2b8cc9cc2 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 10:04:40,852 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 10:04:40,980 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 10:04:41,136 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 10:04:41,137 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 10:04:41,162 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 10:04:41,167 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 10:04:41,171 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 10:04:41,175 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 10:04:41,184 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 10:04:41,185 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 10:04:41,185 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 10:04:41,185 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 10:04:41,186 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 10:04:41,186 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 10:04:41,187 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 10:04:41,187 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 10:04:41,188 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 10:04:41,188 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 10:04:41,188 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 10:04:41,189 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 10:04:41,189 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 10:04:41,189 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 10:04:41,189 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 10:04:41,190 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:04:41,190 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:04:41,190 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 10:04:41,190 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:04:41,190 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:04:41,191 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:04:41,191 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 10:04:41,191 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 10:04:41,191 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 10:04:41,191 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 10:04:41,192 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 10:04:41,192 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 10:04:41,192 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 10:04:41,192 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 10:04:41,192 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 10:04:41,193 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 10:04:41,193 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 10:04:41,193 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 10:04:41,193 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 10:04:41,193 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 10:04:41,193 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 10:04:41,195 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 10:04:41,195 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 10:04:41,195 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 10:04:41,195 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 10:04:41,195 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 10:04:41,198 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 10:04:41,236 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 10:04:41,254 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 10:04:41,297 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 10:04:41,334 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 10:04:41,340 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:0) -2026-08-13 10:04:41,340 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 6ms (build:0ms init:0ms start:6ms boot:972ms) -2026-08-13 10:04:41,343 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 7.507 seconds (process running for 7.902) -2026-08-13 10:04:41,395 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 10:04:49,400 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-2] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 10:04:49,401 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-2] Initializing Servlet 'dispatcherServlet' -2026-08-13 10:04:49,404 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-2] Completed initialization in 3 ms -2026-08-13 10:05:46,135 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 10:05:46,139 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 10:05:46,143 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 10:05:46,151 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:0) -2026-08-13 10:05:46,155 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 12ms (uptime:1m4s) -2026-08-13 10:05:46,162 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:05:46,166 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 10:05:46,170 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 10:07:18,092 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 1754166 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 10:07:18,095 INFO o.s.b.SpringApplication [restartedMain] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 10:07:18,145 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 10:07:18,913 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 10:07:18,930 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 10 ms. Found 0 JPA repository interfaces. -2026-08-13 10:07:19,560 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 10:07:19,571 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 10:07:19,572 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 10:07:19,573 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 10:07:19,612 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1466 ms -2026-08-13 10:07:22,846 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2948 ms -2026-08-13 10:07:22,944 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 10:07:22,985 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 25 ms. -2026-08-13 10:07:22,987 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 10:07:23,170 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 10:07:23,203 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 10:07:23,282 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 79 ms. -2026-08-13 10:07:23,319 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 10:07:23,395 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 10:07:23,742 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 10:07:23,768 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 10:07:23,888 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@1c2b5f2b -2026-08-13 10:07:23,890 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 10:07:23,947 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 10:07:24,086 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 10:07:24,443 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 10:07:24,513 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:07:24,589 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 10:07:25,392 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 10:07:25,522 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: 763bffb8-5405-4545-b39d-999c0d99dd8e - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 10:07:25,546 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 10:07:25,651 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 10:07:25,794 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 10:07:25,794 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 10:07:25,817 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 10:07:25,823 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 10:07:25,826 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 10:07:25,830 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 10:07:25,841 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 10:07:25,842 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 10:07:25,842 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 10:07:25,843 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 10:07:25,843 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 10:07:25,844 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 10:07:25,844 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 10:07:25,844 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 10:07:25,845 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 10:07:25,845 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 10:07:25,846 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 10:07:25,846 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 10:07:25,855 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 10:07:25,856 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 10:07:25,856 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 10:07:25,857 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:07:25,857 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:07:25,857 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 10:07:25,857 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:07:25,857 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:07:25,857 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:07:25,858 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 10:07:25,858 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 10:07:25,858 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 10:07:25,858 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 10:07:25,859 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 10:07:25,859 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 10:07:25,859 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 10:07:25,859 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 10:07:25,859 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 10:07:25,859 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 10:07:25,860 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 10:07:25,860 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 10:07:25,860 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 10:07:25,860 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 10:07:25,860 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 10:07:25,862 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 10:07:25,862 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 10:07:25,862 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 10:07:25,862 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 10:07:25,862 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 10:07:25,865 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 10:07:25,898 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 10:07:25,919 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 10:07:25,960 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 10:07:26,000 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 10:07:26,007 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:0) -2026-08-13 10:07:26,008 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 6ms (build:0ms init:0ms start:6ms boot:993ms) -2026-08-13 10:07:26,010 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 8.431 seconds (process running for 9.0) -2026-08-13 10:07:26,068 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 10:08:11,297 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 10:08:11,297 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 10:08:11,299 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 2 ms -2026-08-13 10:25:42,025 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 10:25:42,028 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 10:25:42,031 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 10:25:42,035 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:0) -2026-08-13 10:25:42,038 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 7ms (uptime:18m16s) -2026-08-13 10:25:42,044 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:25:42,047 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 10:25:42,049 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 10:25:52,965 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 1917820 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 10:25:52,968 INFO o.s.b.SpringApplication [restartedMain] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 10:25:53,003 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 10:25:53,693 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 10:25:53,777 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 78 ms. Found 5 JPA repository interfaces. -2026-08-13 10:25:54,293 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 10:25:54,302 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 10:25:54,304 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 10:25:54,304 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 10:25:54,344 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1340 ms -2026-08-13 10:25:57,260 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2699 ms -2026-08-13 10:25:57,339 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 10:25:57,365 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 14 ms. -2026-08-13 10:25:57,366 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 10:25:57,467 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 10:25:57,491 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 10:25:57,561 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 69 ms. -2026-08-13 10:25:57,592 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 10:25:57,625 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 10:25:57,986 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 10:25:58,016 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 10:25:58,129 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@33d48759 -2026-08-13 10:25:58,132 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 10:25:58,189 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 10:25:58,475 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 10:25:59,277 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 10:25:59,366 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:25:59,449 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 10:26:00,239 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 10:26:00,651 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 10:26:00,800 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: 377b0862-d125-484b-a233-9496393a1ade - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 10:26:00,831 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 10:26:00,983 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 10:26:01,131 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 10:26:01,132 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 10:26:01,154 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 10:26:01,159 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 10:26:01,163 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 10:26:01,166 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 10:26:01,174 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 10:26:01,175 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 10:26:01,176 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 10:26:01,176 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 10:26:01,176 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 10:26:01,177 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 10:26:01,177 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 10:26:01,177 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 10:26:01,178 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 10:26:01,178 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 10:26:01,179 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 10:26:01,179 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 10:26:01,179 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 10:26:01,180 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 10:26:01,180 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 10:26:01,181 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:26:01,181 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:26:01,181 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 10:26:01,181 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:26:01,181 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:26:01,182 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:26:01,182 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 10:26:01,182 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 10:26:01,182 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 10:26:01,182 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 10:26:01,183 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 10:26:01,183 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 10:26:01,183 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 10:26:01,183 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 10:26:01,183 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 10:26:01,183 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 10:26:01,184 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 10:26:01,184 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 10:26:01,184 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 10:26:01,184 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 10:26:01,184 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 10:26:01,185 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 10:26:01,186 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 10:26:01,186 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 10:26:01,186 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 10:26:01,186 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 10:26:01,189 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 10:26:01,217 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 10:26:01,232 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 10:26:01,277 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 10:26:01,384 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.apache.camel.FailedToCreateRouteException: Failed to create route read-queue-media-link-add: Route(read-queue-media-link-add)[From[jms:queue:media.link.a... because of No endpoint could be found for: jms://queue:media.link.add, please check your classpath contains the needed Camel component jar. -2026-08-13 10:26:01,386 INFO o.s.b.t.GracefulShutdown [restartedMain] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 10:26:01,387 INFO o.a.j.l.DirectJDKLog [tomcat-shutdown] Pausing ProtocolHandler ["http-nio-8085"] -2026-08-13 10:26:01,388 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 10:26:01,389 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping ProtocolHandler ["http-nio-8085"] -2026-08-13 10:26:01,394 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:26:01,396 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 10:26:01,398 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 10:26:01,408 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 10:26:01,418 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.apache.camel.FailedToCreateRouteException: Failed to create route read-queue-media-link-add: Route(read-queue-media-link-add)[From[jms:queue:media.link.a... because of No endpoint could be found for: jms://queue:media.link.add, please check your classpath contains the needed Camel component jar. - at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:92) - at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) - at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:741) - at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:602) - at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2470) - at org.apache.camel.support.service.BaseService.init(BaseService.java:85) - at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2100) - at org.apache.camel.support.service.BaseService.start(BaseService.java:115) - at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2119) - at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:211) - at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:121) - at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:153) - at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:180) - at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:173) - at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:151) - at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:448) - at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:381) - at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1016) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be found for: jms://queue:media.link.add, please check your classpath contains the needed Camel component jar. - at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:860) - at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:741) - at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:66) - at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:199) - at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:106) - at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:86) - ... 28 common frames omitted -2026-08-13 10:29:21,522 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 1948403 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 10:29:21,525 INFO o.s.b.SpringApplication [restartedMain] The following 4 profiles are active: "local", "dev", "test", "prod" -2026-08-13 10:29:21,585 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 10:29:22,649 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 10:29:22,762 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 102 ms. Found 5 JPA repository interfaces. -2026-08-13 10:29:23,433 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 10:29:23,448 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 10:29:23,450 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 10:29:23,451 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 10:29:23,506 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1919 ms -2026-08-13 10:29:27,310 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 3474 ms -2026-08-13 10:29:27,371 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 10:29:27,403 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 16 ms. -2026-08-13 10:29:27,405 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 10:29:27,556 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 10:29:27,587 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 10:29:27,706 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 119 ms. -2026-08-13 10:29:27,742 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 10:29:27,820 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 10:29:28,335 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 10:29:28,366 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 10:29:28,481 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@62e72015 -2026-08-13 10:29:28,482 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 10:29:28,534 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 10:29:28,777 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 10:29:29,434 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 10:29:29,496 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 10:29:29,582 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 10:29:30,505 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 10:29:30,984 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 10:29:31,092 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: f6a73213-b216-4901-8897-f0c68112c170 - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 10:29:31,115 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 10:29:31,225 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 10:29:31,366 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 10:29:31,366 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 10:29:31,391 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 10:29:31,396 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 10:29:31,401 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 10:29:31,405 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 10:29:31,414 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 10:29:31,415 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 10:29:31,415 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 10:29:31,415 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 10:29:31,416 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 10:29:31,416 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 10:29:31,417 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 10:29:31,417 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 10:29:31,418 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 10:29:31,418 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 10:29:31,418 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 10:29:31,418 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 10:29:31,418 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 10:29:31,419 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 10:29:31,419 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 10:29:31,419 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:29:31,419 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 10:29:31,420 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 10:29:31,421 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 10:29:31,421 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 10:29:31,421 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 10:29:31,421 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 10:29:31,421 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 10:29:31,421 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 10:29:31,422 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 10:29:31,422 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 10:29:31,422 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 10:29:31,422 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 10:29:31,423 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 10:29:31,425 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 10:29:31,426 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 10:29:31,426 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 10:29:31,426 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 10:29:31,426 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 10:29:31,429 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 10:29:31,465 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 10:29:31,485 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 10:29:31,530 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 10:29:31,721 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 10:29:31,747 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 10:29:31,747 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@30520b44 and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 10:29:31,813 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 10:29:31,829 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 10:29:31,830 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 10:29:31,879 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = 63f6e354 -2026-08-13 10:29:31,889 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 10:29:31,955 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 10:29:31,956 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 10:29:32,072 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@6854e81e -2026-08-13 10:29:32,078 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 10:29:32,078 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 10:29:32,078 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 10:29:32,079 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 10:29:32,079 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 357ms (build:0ms init:0ms start:357ms boot:1s451ms) -2026-08-13 10:29:32,082 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 11.114 seconds (process running for 11.638) -2026-08-13 10:29:32,085 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=1bac56e0-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@10407167 -2026-08-13 10:29:32,086 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=1bad6851-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@59b8f661 -2026-08-13 10:29:32,087 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=1baddd82-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@7de1527c -2026-08-13 10:29:32,158 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 11:05:53,200 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 11:05:53,205 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 11:05:53,212 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 11:05:53,281 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=1bac56e0-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@10407167 -2026-08-13 11:05:53,281 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Calling close on session ClientSessionImpl [name=1bac56e0-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@10407167 -2026-08-13 11:05:53,285 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] calling cleanup on ClientSessionImpl [name=1bac56e0-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@10407167 -2026-08-13 11:05:53,328 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=1bad6851-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@59b8f661 -2026-08-13 11:05:53,328 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Calling close on session ClientSessionImpl [name=1bad6851-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@59b8f661 -2026-08-13 11:05:53,329 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] calling cleanup on ClientSessionImpl [name=1bad6851-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@59b8f661 -2026-08-13 11:05:53,333 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 11:05:53,334 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 11:05:53,334 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 11:05:53,334 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 11:05:53,340 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 127ms (uptime:36m21s) -2026-08-13 11:05:53,341 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=1baddd82-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@7de1527c -2026-08-13 11:05:53,341 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=1baddd82-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@7de1527c -2026-08-13 11:05:53,342 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=1baddd82-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=()]@7de1527c -2026-08-13 11:05:53,342 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@6854e81e -2026-08-13 11:05:53,343 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=1b9fd3bf-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=(jms-session=,)]@74289533 -2026-08-13 11:05:53,344 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=1b9fd3bf-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=(jms-session=,)]@74289533 -2026-08-13 11:05:53,347 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-1 (activemq-client-global)] Failure captured on connectionID=63f6e354, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 11:05:53,352 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=1b9fd3bf-96f1-11f1-a41c-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@73d78468, metaData=(jms-session=,)]@74289533 -2026-08-13 11:05:53,359 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 11:05:53,363 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 11:05:53,365 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 11:06:04,370 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 2266227 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 11:06:04,372 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "prod" -2026-08-13 11:06:04,411 INFO o.s.b.l.LogLevel [restartedMain] Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable -2026-08-13 11:06:04,411 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 11:06:05,121 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 11:06:05,209 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 82 ms. Found 6 JPA repository interfaces. -2026-08-13 11:06:05,749 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8100 (http) -2026-08-13 11:06:05,760 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8100"] -2026-08-13 11:06:05,762 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 11:06:05,762 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 11:06:05,796 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1384 ms -2026-08-13 11:06:08,293 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2296 ms -2026-08-13 11:06:08,349 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 11:06:08,379 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 16 ms. -2026-08-13 11:06:08,380 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 11:06:08,478 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 11:06:08,501 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 11:06:08,559 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 58 ms. -2026-08-13 11:06:08,591 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 11:06:08,625 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 11:06:08,893 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 11:06:08,912 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 11:06:20,551 WARN o.h.e.j.s.SqlExceptionHelper [restartedMain] HHH000247: ErrorCode: 0, SQLState: 08001 -2026-08-13 11:06:20,551 WARN o.h.e.j.s.SqlExceptionHelper [restartedMain] Der Verbindungsversuch schlug fehl. -2026-08-13 11:06:20,552 WARN o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH100046: Could not obtain connection to query JDBC database metadata -org.hibernate.exception.JDBCConnectionException: Unable to obtain isolated JDBC connection [Der Verbindungsversuch schlug fehl.] [n/a] - at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:80) - at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:34) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:115) - at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:101) - at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:51) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:366) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironment(JdbcEnvironmentInitiator.java:143) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:120) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:80) - at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212) - at org.hibernate.boot.model.relational.Database.(Database.java:44) - at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:251) - at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:203) - at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:180) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1388) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.populateSessionFactoryBuilder(EntityManagerFactoryBuilderImpl.java:1468) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1450) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: org.postgresql.util.PSQLException: Der Verbindungsversuch schlug fehl. - at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:437) - at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:52) - at org.postgresql.jdbc.PgConnection.(PgConnection.java:290) - at org.postgresql.Driver.makeConnection(Driver.java:448) - at org.postgresql.Driver.connect(Driver.java:298) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:144) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:373) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:210) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:488) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:576) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:97) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) - at org.hibernate.engine.jdbc.connections.internal.DataSourceConnectionProvider.getConnection(DataSourceConnectionProvider.java:149) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:508) - at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:48) - ... 40 common frames omitted -Caused by: java.net.UnknownHostException: postgres - at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:569) - at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:284) - at java.base/java.net.Socket.connect(Socket.java:659) - at org.postgresql.core.PGStream.createSocket(PGStream.java:271) - at org.postgresql.core.PGStream.(PGStream.java:132) - at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:219) - at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:365) - ... 54 common frames omitted -2026-08-13 11:06:20,554 ERROR o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) -2026-08-13 11:06:20,555 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) -2026-08-13 11:06:20,558 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 11:06:20,561 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 11:06:20,561 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 11:06:20,561 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 11:06:20,567 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 11:06:20,577 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:273) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:235) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:212) - at org.hibernate.boot.model.relational.Database.(Database.java:44) - at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:251) - at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.(InFlightMetadataCollectorImpl.java:203) - at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:180) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1388) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.populateSessionFactoryBuilder(EntityManagerFactoryBuilderImpl.java:1468) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1450) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided) - at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:190) - at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:86) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentWithDefaults(JdbcEnvironmentInitiator.java:200) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:452) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironment(JdbcEnvironmentInitiator.java:143) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:120) - at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:80) - at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:133) - at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:260) - ... 34 common frames omitted -2026-08-13 11:10:55,948 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 2309224 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 11:10:55,950 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 11:10:55,993 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 11:10:56,676 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 11:10:56,795 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 113 ms. Found 6 JPA repository interfaces. -2026-08-13 11:10:57,277 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 11:10:57,285 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 11:10:57,286 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 11:10:57,286 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 11:10:57,315 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1322 ms -2026-08-13 11:10:59,903 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2397 ms -2026-08-13 11:10:59,956 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 11:10:59,980 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 106 classes. Took 13 ms. -2026-08-13 11:10:59,981 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 11:11:00,075 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 11:11:00,097 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 11:11:00,158 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 61 ms. -2026-08-13 11:11:00,192 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 11:11:00,224 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 11:11:00,501 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 11:11:00,522 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 11:11:00,622 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@313a309b -2026-08-13 11:11:00,623 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 11:11:00,668 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 11:11:00,963 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 11:11:01,634 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 11:11:01,703 WARN o.h.e.j.s.SqlExceptionHelper$StandardWarningHandler [restartedMain] HHH000247: ErrorCode: 0, SQLState: 00000 -2026-08-13 11:11:01,703 WARN o.h.e.j.s.SqlExceptionHelper$StandardWarningHandler [restartedMain] constraint "ukedab2e5jckaaoq2nprg2nyc2j" of relation "media_lofi" does not exist, skipping -2026-08-13 11:11:01,717 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 11:11:01,788 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 11:11:02,527 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 11:11:02,950 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 11:11:03,053 WARN o.s.b.s.a.UserDetailsServiceAutoConfiguration [restartedMain] - -Using generated security password: 04312a83-babb-4cb9-a101-0475a3b0a93b - -This generated password is for development use only. Your security configuration must be updated before running your application in production. - -2026-08-13 11:11:03,071 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager -2026-08-13 11:11:03,176 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 11:11:03,300 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 11:11:03,301 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 11:11:03,320 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 11:11:03,325 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 11:11:03,328 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 11:11:03,332 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 11:11:03,340 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 11:11:03,340 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 11:11:03,341 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 11:11:03,341 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 11:11:03,342 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 11:11:03,342 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 11:11:03,342 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 11:11:03,343 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 11:11:03,343 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 11:11:03,343 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 11:11:03,344 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 11:11:03,344 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 11:11:03,344 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 11:11:03,344 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 11:11:03,344 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 11:11:03,345 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 11:11:03,345 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 11:11:03,345 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 11:11:03,345 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 11:11:03,345 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 11:11:03,345 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 11:11:03,345 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 11:11:03,346 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 11:11:03,347 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 11:11:03,348 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 11:11:03,349 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 11:11:03,349 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 11:11:03,349 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 11:11:03,349 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 11:11:03,352 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 11:11:03,376 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 11:11:03,394 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 11:11:03,434 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 11:11:03,573 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 11:11:03,589 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 11:11:03,590 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@81a8546 and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 11:11:03,636 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 11:11:03,646 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 11:11:03,647 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 11:11:03,687 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = 641029e9 -2026-08-13 11:11:03,694 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 11:11:03,744 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 11:11:03,745 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 11:11:03,776 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@788a057 -2026-08-13 11:11:03,781 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 11:11:03,781 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 11:11:03,781 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 11:11:03,781 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 11:11:03,782 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 208ms (build:0ms init:0ms start:208ms boot:1s258ms) -2026-08-13 11:11:03,784 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 8.303 seconds (process running for 8.7) -2026-08-13 11:11:03,787 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=e8d80ba5-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@62723837 -2026-08-13 11:11:03,788 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=e8d91d16-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@73e20875 -2026-08-13 11:11:03,789 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=e8d96b37-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@54780271 -2026-08-13 11:11:03,837 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 11:52:03,255 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 11:52:03,260 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 11:52:03,265 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 11:52:03,942 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=e8d91d16-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@73e20875 -2026-08-13 11:52:03,943 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Calling close on session ClientSessionImpl [name=e8d91d16-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@73e20875 -2026-08-13 11:52:03,945 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] calling cleanup on ClientSessionImpl [name=e8d91d16-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@73e20875 -2026-08-13 11:52:04,213 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=e8d80ba5-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@62723837 -2026-08-13 11:52:04,213 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Calling close on session ClientSessionImpl [name=e8d80ba5-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@62723837 -2026-08-13 11:52:04,278 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] calling cleanup on ClientSessionImpl [name=e8d80ba5-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@62723837 -2026-08-13 11:52:04,282 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 11:52:04,282 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 11:52:04,282 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 11:52:04,282 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 11:52:04,287 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 1s21ms (uptime:41m0s) -2026-08-13 11:52:04,287 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=e8d96b37-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@54780271 -2026-08-13 11:52:04,288 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=e8d96b37-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@54780271 -2026-08-13 11:52:04,289 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=e8d96b37-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=()]@54780271 -2026-08-13 11:52:04,290 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@788a057 -2026-08-13 11:52:04,290 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=e8d4b044-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=(jms-session=,)]@2607d088 -2026-08-13 11:52:04,291 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=e8d4b044-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=(jms-session=,)]@2607d088 -2026-08-13 11:52:04,294 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-2 (activemq-client-global)] Failure captured on connectionID=641029e9, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 11:52:04,298 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=e8d4b044-96f6-11f1-81da-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4039560f, metaData=(jms-session=,)]@2607d088 -2026-08-13 11:52:04,305 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 11:52:04,310 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 11:52:04,312 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 12:33:45,583 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3036523 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 12:33:45,585 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 12:33:45,642 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 12:33:46,296 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'userDetailsService' defined in class path resource [de/thpeetz/kontor/security/SecurityConfig.class]: Cannot register bean definition [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=securityConfig; factoryMethodName=userDetailsService; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [de/thpeetz/kontor/security/SecurityConfig.class]] for bean 'userDetailsService' since there is already [Generic bean: class=de.thpeetz.kontor.services.KontorUserDetailsService; scope=singleton; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null; defined in file [/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main/de/thpeetz/kontor/services/KontorUserDetailsService.class]] bound. -2026-08-13 12:33:46,301 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 12:33:46,312 ERROR o.s.b.d.LoggingFailureAnalysisReporter [restartedMain] - -*************************** -APPLICATION FAILED TO START -*************************** - -Description: - -The bean 'userDetailsService', defined in class path resource [de/thpeetz/kontor/security/SecurityConfig.class], could not be registered. A bean with that name has already been defined in file [/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main/de/thpeetz/kontor/services/KontorUserDetailsService.class] and overriding is disabled. - -Action: - -Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true - -2026-08-13 12:35:23,136 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3054141 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 12:35:23,138 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 12:35:23,186 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 12:35:24,145 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 12:35:24,279 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 127 ms. Found 34 JPA repository interfaces. -2026-08-13 12:35:24,873 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 12:35:24,883 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 12:35:24,884 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 12:35:24,885 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 12:35:24,916 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1730 ms -2026-08-13 12:35:27,768 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2554 ms -2026-08-13 12:35:27,834 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 12:35:27,865 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 17 ms. -2026-08-13 12:35:27,866 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 12:35:27,969 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 12:35:27,992 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 12:35:28,050 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 57 ms. -2026-08-13 12:35:28,095 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 12:35:28,130 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 12:35:28,300 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 12:35:28,391 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@f0011b1 -2026-08-13 12:35:28,393 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 12:35:28,441 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 12:35:28,449 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType -2026-08-13 12:35:28,451 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 12:35:28,452 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 12:35:28,454 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 12:35:28,460 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:35:28,461 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:35:28,461 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:35:28,469 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 12:35:28,478 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/BindableType - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at io.hypersistence.utils.hibernate.type.HibernateTypesContributor.contribute(HibernateTypesContributor.java:113) - at org.hibernate.boot.internal.MetadataBuilderImpl.applyTypes(MetadataBuilderImpl.java:299) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1118) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyTypeContributors(EntityManagerFactoryBuilderImpl.java:1359) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyMetamodelBuilderSettings(EntityManagerFactoryBuilderImpl.java:1336) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:226) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: java.lang.ClassNotFoundException: org.hibernate.query.BindableType - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - ... 49 common frames omitted -2026-08-13 12:36:52,828 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3071130 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 12:36:52,831 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 12:36:52,882 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 12:36:53,749 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 12:36:53,897 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 139 ms. Found 34 JPA repository interfaces. -2026-08-13 12:36:54,434 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 12:36:54,443 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 12:36:54,444 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 12:36:54,444 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 12:36:54,488 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1604 ms -2026-08-13 12:36:57,283 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2493 ms -2026-08-13 12:36:57,336 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 12:36:57,361 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 15 ms. -2026-08-13 12:36:57,362 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 12:36:57,456 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 12:36:57,478 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 12:36:57,567 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 89 ms. -2026-08-13 12:36:57,595 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 12:36:57,634 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 12:36:57,829 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 12:36:57,917 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@53794ff0 -2026-08-13 12:36:57,918 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 12:36:57,959 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 12:36:57,967 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType -2026-08-13 12:36:57,968 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 12:36:57,969 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 12:36:57,971 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 12:36:57,975 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:36:57,975 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:36:57,975 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:36:57,982 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 12:36:57,992 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/BindableType - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at io.hypersistence.utils.hibernate.type.HibernateTypesContributor.contribute(HibernateTypesContributor.java:113) - at org.hibernate.boot.internal.MetadataBuilderImpl.applyTypes(MetadataBuilderImpl.java:299) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1118) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyTypeContributors(EntityManagerFactoryBuilderImpl.java:1359) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyMetamodelBuilderSettings(EntityManagerFactoryBuilderImpl.java:1336) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:226) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: java.lang.ClassNotFoundException: org.hibernate.query.BindableType - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - ... 49 common frames omitted -2026-08-13 12:38:08,093 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3085008 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 12:38:08,096 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 12:38:08,154 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 12:38:09,890 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 12:38:10,017 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 121 ms. Found 34 JPA repository interfaces. -2026-08-13 12:38:10,742 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 12:38:10,767 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 12:38:10,772 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 12:38:10,773 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 12:38:10,870 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 2715 ms -2026-08-13 12:38:14,245 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2938 ms -2026-08-13 12:38:14,312 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 12:38:14,346 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 17 ms. -2026-08-13 12:38:14,348 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 12:38:14,459 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 12:38:14,488 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 12:38:14,587 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 98 ms. -2026-08-13 12:38:14,665 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 12:38:14,737 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 12:38:15,045 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 12:38:15,168 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@1f1c2db0 -2026-08-13 12:38:15,170 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 12:38:15,257 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 12:38:15,273 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType -2026-08-13 12:38:15,275 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 12:38:15,321 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 12:38:15,324 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 12:38:15,330 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:38:15,330 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:38:15,330 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:38:15,342 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 12:38:15,356 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/BindableType - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at io.hypersistence.utils.hibernate.type.HibernateTypesContributor.contribute(HibernateTypesContributor.java:113) - at org.hibernate.boot.internal.MetadataBuilderImpl.applyTypes(MetadataBuilderImpl.java:299) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1118) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyTypeContributors(EntityManagerFactoryBuilderImpl.java:1359) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyMetamodelBuilderSettings(EntityManagerFactoryBuilderImpl.java:1336) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:226) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: java.lang.ClassNotFoundException: org.hibernate.query.BindableType - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - ... 49 common frames omitted -2026-08-13 12:41:18,869 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3122398 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 12:41:18,871 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 12:41:18,943 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 12:41:19,907 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 12:41:20,042 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 128 ms. Found 34 JPA repository interfaces. -2026-08-13 12:41:20,593 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 12:41:20,602 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 12:41:20,603 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 12:41:20,604 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 12:41:20,633 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1689 ms -2026-08-13 12:41:23,609 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2624 ms -2026-08-13 12:41:23,674 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 12:41:23,707 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 18 ms. -2026-08-13 12:41:23,709 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 12:41:23,817 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 12:41:23,843 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 12:41:23,905 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 62 ms. -2026-08-13 12:41:23,943 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 12:41:23,985 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 12:41:24,196 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 12:41:24,290 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@7894fe0a -2026-08-13 12:41:24,291 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 12:41:24,340 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 12:41:24,350 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType -2026-08-13 12:41:24,351 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 12:41:24,352 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 12:41:24,355 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 12:41:24,358 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:41:24,359 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:41:24,359 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:41:24,375 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 12:41:24,386 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/BindableType - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at io.hypersistence.utils.hibernate.type.HibernateTypesContributor.contribute(HibernateTypesContributor.java:113) - at org.hibernate.boot.internal.MetadataBuilderImpl.applyTypes(MetadataBuilderImpl.java:299) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1118) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyTypeContributors(EntityManagerFactoryBuilderImpl.java:1359) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyMetamodelBuilderSettings(EntityManagerFactoryBuilderImpl.java:1336) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:226) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: java.lang.ClassNotFoundException: org.hibernate.query.BindableType - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - ... 49 common frames omitted -2026-08-13 12:42:55,320 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3137155 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 12:42:55,322 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 12:42:55,410 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 12:42:56,380 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 12:42:56,529 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 142 ms. Found 34 JPA repository interfaces. -2026-08-13 12:42:57,105 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 12:42:57,114 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 12:42:57,115 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 12:42:57,115 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 12:42:57,149 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1737 ms -2026-08-13 12:43:00,028 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2547 ms -2026-08-13 12:43:00,083 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 12:43:00,117 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 23 ms. -2026-08-13 12:43:00,119 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 12:43:00,229 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 12:43:00,254 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 12:43:00,307 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 53 ms. -2026-08-13 12:43:00,349 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 12:43:00,394 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 12:43:00,544 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 12:43:00,624 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@464030bb -2026-08-13 12:43:00,626 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 12:43:00,666 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 12:43:00,674 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType -2026-08-13 12:43:00,676 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 12:43:00,677 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 12:43:00,679 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 12:43:00,682 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:43:00,683 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:43:00,683 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 12:43:00,690 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 12:43:00,699 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/BindableType - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at io.hypersistence.utils.hibernate.type.HibernateTypesContributor.contribute(HibernateTypesContributor.java:113) - at org.hibernate.boot.internal.MetadataBuilderImpl.applyTypes(MetadataBuilderImpl.java:299) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1118) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyTypeContributors(EntityManagerFactoryBuilderImpl.java:1359) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyMetamodelBuilderSettings(EntityManagerFactoryBuilderImpl.java:1336) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:226) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: java.lang.ClassNotFoundException: org.hibernate.query.BindableType - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - ... 49 common frames omitted -2026-08-13 13:23:34,908 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3540422 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:23:34,918 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:23:34,973 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:23:35,893 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:23:36,031 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 130 ms. Found 34 JPA repository interfaces. -2026-08-13 13:23:36,566 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:23:36,574 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:23:36,575 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:23:36,576 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:23:36,606 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1632 ms -2026-08-13 13:23:39,539 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2653 ms -2026-08-13 13:23:39,602 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:23:39,633 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 18 ms. -2026-08-13 13:23:39,634 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:23:39,778 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:23:39,816 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:23:39,885 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 68 ms. -2026-08-13 13:23:39,943 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:23:39,988 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:23:40,184 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:23:40,274 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@5c76d624 -2026-08-13 13:23:40,276 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:23:40,326 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:23:40,335 WARN o.s.c.s.AbstractApplicationContext [restartedMain] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType -2026-08-13 13:23:40,336 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown initiated... -2026-08-13 13:23:40,337 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Shutdown completed. -2026-08-13 13:23:40,339 INFO o.a.j.l.DirectJDKLog [restartedMain] Stopping service [Tomcat] -2026-08-13 13:23:40,345 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 13:23:40,345 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 13:23:40,346 WARN o.a.j.l.DirectJDKLog [restartedMain] The web application [ROOT] appears to have started a thread named [vaadin-file-watcher-3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: - java.base/jdk.internal.misc.Unsafe.park(Native Method) - java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:408) - java.base/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1015) - java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) - java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - java.base/java.lang.Thread.run(Thread.java:1474) -2026-08-13 13:23:40,355 INFO o.s.b.a.l.ConditionEvaluationReportLogger [restartedMain] - -Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. -2026-08-13 13:23:40,373 ERROR o.s.b.SpringApplication [restartedMain] Application run failed -org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/hibernate/autoconfigure/HibernateJpaConfiguration.class]: org/hibernate/query/BindableType - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1815) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:525) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:331) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:977) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:621) - at org.springframework.boot.web.server.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:756) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:445) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1365) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) - at de.thpeetz.kontor.KontorApplication.main(KontorApplication.java:21) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) - at java.base/java.lang.reflect.Method.invoke(Method.java:565) - at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:52) -Caused by: java.lang.NoClassDefFoundError: org/hibernate/query/BindableType - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at java.base/java.lang.ClassLoader.defineClass1(Native Method) - at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) - at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) - at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:776) - at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:691) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:620) - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:578) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - at io.hypersistence.utils.hibernate.type.HibernateTypesContributor.contribute(HibernateTypesContributor.java:113) - at org.hibernate.boot.internal.MetadataBuilderImpl.applyTypes(MetadataBuilderImpl.java:299) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1118) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyTypeContributors(EntityManagerFactoryBuilderImpl.java:1359) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.applyMetamodelBuilderSettings(EntityManagerFactoryBuilderImpl.java:1336) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:226) - at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.(EntityManagerFactoryBuilderImpl.java:164) - at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:93) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:443) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:436) - at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:411) - at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:419) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1811) - ... 18 common frames omitted -Caused by: java.lang.ClassNotFoundException: org.hibernate.query.BindableType - at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) - at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) - ... 49 common frames omitted -2026-08-13 13:30:46,933 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3605359 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:30:46,935 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:30:46,987 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:30:47,825 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:30:47,959 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 127 ms. Found 34 JPA repository interfaces. -2026-08-13 13:30:48,480 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:30:48,490 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:30:48,491 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:30:48,492 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:30:48,526 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1538 ms -2026-08-13 13:30:51,344 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2533 ms -2026-08-13 13:30:51,401 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:30:51,438 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 22 ms. -2026-08-13 13:30:51,440 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:30:51,543 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:30:51,569 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:30:51,632 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 62 ms. -2026-08-13 13:30:51,683 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:30:51,731 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:30:51,924 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:30:52,013 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@39cfc66 -2026-08-13 13:30:52,014 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:30:52,054 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:30:52,219 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 13:30:52,571 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 13:30:53,447 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 13:30:53,522 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:30:53,591 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 13:30:54,673 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 13:30:54,749 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name userDetailsService -2026-08-13 13:30:55,202 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 13:30:55,374 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 13:30:55,502 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 13:30:55,503 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 13:30:55,529 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 13:30:55,535 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 13:30:55,539 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 13:30:55,544 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 13:30:55,554 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 13:30:55,555 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 13:30:55,555 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 13:30:55,556 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 13:30:55,557 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 13:30:55,557 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 13:30:55,558 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 13:30:55,558 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 13:30:55,559 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 13:30:55,560 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 13:30:55,560 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 13:30:55,560 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 13:30:55,561 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 13:30:55,561 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 13:30:55,562 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 13:30:55,562 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:30:55,562 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:30:55,562 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 13:30:55,563 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:30:55,563 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:30:55,563 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:30:55,564 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 13:30:55,564 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 13:30:55,564 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 13:30:55,564 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 13:30:55,565 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 13:30:55,566 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 13:30:55,566 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 13:30:55,567 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 13:30:55,568 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 13:30:55,568 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 13:30:55,569 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 13:30:55,569 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 13:30:55,569 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 13:30:55,569 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 13:30:55,570 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 13:30:55,572 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 13:30:55,572 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 13:30:55,573 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 13:30:55,573 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 13:30:55,573 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 13:30:55,576 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 13:30:55,622 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 13:30:55,644 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 13:30:55,708 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 13:30:55,894 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 13:30:55,915 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 13:30:55,915 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@719ec6dc and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:30:55,977 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 13:30:55,994 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 13:30:55,995 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 13:30:56,051 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = 8d4af4e5 -2026-08-13 13:30:56,060 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:30:56,118 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 13:30:56,119 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:30:56,166 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@6d470f33 -2026-08-13 13:30:56,173 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 13:30:56,173 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:30:56,173 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:30:56,174 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:30:56,174 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 278ms (build:0ms init:0ms start:278ms boot:1s747ms) -2026-08-13 13:30:56,177 INFO d.t.k.s.SetupModuleBookshelf [restartedMain] Set up Bookshelf data -2026-08-13 13:30:56,178 INFO d.t.k.s.SetupModuleComics [restartedMain] Set up Comics data -2026-08-13 13:30:56,179 INFO d.t.k.s.SetupModuleMedia [restartedMain] Set up Media data -2026-08-13 13:30:56,179 INFO d.t.k.s.SetupModuleTysc [restartedMain] Setp up TYSC data -2026-08-13 13:30:56,181 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=7319491d-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@2dd836eb -2026-08-13 13:30:56,183 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 9.682 seconds (process running for 10.044) -2026-08-13 13:30:56,183 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=731a819e-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@4b89065c -2026-08-13 13:30:56,186 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=731b44ef-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@7526bf52 -2026-08-13 13:30:56,252 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 13:31:20,840 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 13:31:20,841 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 13:31:20,843 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 2 ms -2026-08-13 13:32:13,988 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 13:32:13,990 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 13:32:13,993 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 13:32:14,354 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=7319491d-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@2dd836eb -2026-08-13 13:32:14,354 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=731b44ef-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@7526bf52 -2026-08-13 13:32:14,354 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Calling close on session ClientSessionImpl [name=7319491d-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@2dd836eb -2026-08-13 13:32:14,356 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] calling cleanup on ClientSessionImpl [name=7319491d-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@2dd836eb -2026-08-13 13:32:14,364 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Calling close on session ClientSessionImpl [name=731b44ef-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@7526bf52 -2026-08-13 13:32:14,365 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] calling cleanup on ClientSessionImpl [name=731b44ef-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@7526bf52 -2026-08-13 13:32:14,368 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 13:32:14,368 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:32:14,368 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:32:14,368 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:32:14,371 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 378ms (uptime:1m18s) -2026-08-13 13:32:14,371 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=731a819e-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@4b89065c -2026-08-13 13:32:14,371 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=731a819e-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@4b89065c -2026-08-13 13:32:14,372 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=731a819e-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=()]@4b89065c -2026-08-13 13:32:14,373 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@6d470f33 -2026-08-13 13:32:14,373 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=73148e2c-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=(jms-session=,)]@6a4cf06b -2026-08-13 13:32:14,374 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=73148e2c-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=(jms-session=,)]@6a4cf06b -2026-08-13 13:32:14,376 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-1 (activemq-client-global)] Failure captured on connectionID=8d4af4e5, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 13:32:14,379 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=73148e2c-970a-11f1-a9d0-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@7bd72835, metaData=(jms-session=,)]@6a4cf06b -2026-08-13 13:32:14,387 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:32:14,390 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 13:32:14,393 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 13:32:46,746 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3625944 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:32:46,748 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:32:46,808 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:32:47,713 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:32:47,887 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 166 ms. Found 34 JPA repository interfaces. -2026-08-13 13:32:48,437 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:32:48,446 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:32:48,448 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:32:48,448 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:32:48,484 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1675 ms -2026-08-13 13:32:51,317 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2545 ms -2026-08-13 13:32:51,376 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:32:51,407 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 18 ms. -2026-08-13 13:32:51,409 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:32:51,524 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:32:51,548 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:32:51,622 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 73 ms. -2026-08-13 13:32:51,670 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:32:51,719 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:32:51,904 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:32:51,992 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@16174d06 -2026-08-13 13:32:51,994 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:32:52,037 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:32:52,198 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 13:32:52,586 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 13:32:53,494 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 13:32:53,562 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:32:53,630 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 13:32:54,714 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 13:32:54,775 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name userDetailsService -2026-08-13 13:32:55,256 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 13:32:55,430 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 13:32:55,546 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 13:32:55,546 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 13:32:55,573 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 13:32:55,579 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 13:32:55,584 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 13:32:55,587 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 13:32:55,600 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 13:32:55,601 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 13:32:55,602 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 13:32:55,602 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 13:32:55,603 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 13:32:55,603 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 13:32:55,604 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 13:32:55,604 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 13:32:55,605 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 13:32:55,605 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 13:32:55,605 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 13:32:55,606 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 13:32:55,606 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 13:32:55,606 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 13:32:55,606 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 13:32:55,607 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:32:55,607 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:32:55,607 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 13:32:55,607 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:32:55,608 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:32:55,608 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:32:55,608 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 13:32:55,608 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 13:32:55,608 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 13:32:55,609 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 13:32:55,609 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 13:32:55,610 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 13:32:55,610 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 13:32:55,610 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 13:32:55,610 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 13:32:55,611 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 13:32:55,611 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 13:32:55,611 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 13:32:55,611 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 13:32:55,611 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 13:32:55,612 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 13:32:55,614 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 13:32:55,614 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 13:32:55,615 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 13:32:55,615 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 13:32:55,615 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 13:32:55,618 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 13:32:55,655 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 13:32:55,672 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 13:32:55,736 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 13:32:55,913 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 13:32:55,930 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 13:32:55,930 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@1b544b69 and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:32:55,981 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 13:32:55,994 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 13:32:55,994 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 13:32:56,049 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = afabb530 -2026-08-13 13:32:56,066 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:32:56,136 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 13:32:56,137 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:32:56,162 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@4b9df579 -2026-08-13 13:32:56,168 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 13:32:56,168 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:32:56,168 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:32:56,168 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:32:56,168 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 255ms (build:0ms init:0ms start:255ms boot:1s724ms) -2026-08-13 13:32:56,170 INFO d.t.k.s.SetupModuleBookshelf [restartedMain] Set up Bookshelf data -2026-08-13 13:32:56,170 INFO d.t.k.s.SetupModuleComics [restartedMain] Set up Comics data -2026-08-13 13:32:56,170 INFO d.t.k.s.SetupModuleMedia [restartedMain] Set up Media data -2026-08-13 13:32:56,170 INFO d.t.k.s.SetupModuleTysc [restartedMain] Setp up TYSC data -2026-08-13 13:32:56,172 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 9.917 seconds (process running for 10.282) -2026-08-13 13:32:56,175 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=ba9f121e-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6bf4a04a -2026-08-13 13:32:56,175 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=baa04a9f-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@149b8951 -2026-08-13 13:32:56,177 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=baa098c0-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6e775f21 -2026-08-13 13:32:56,233 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 13:33:00,085 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 13:33:00,086 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 13:33:00,089 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 2 ms -2026-08-13 13:35:39,946 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 13:35:39,949 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 13:35:39,952 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 13:35:40,417 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=baa04a9f-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@149b8951 -2026-08-13 13:35:40,417 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=baa098c0-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6e775f21 -2026-08-13 13:35:40,417 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Calling close on session ClientSessionImpl [name=baa04a9f-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@149b8951 -2026-08-13 13:35:40,418 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] calling cleanup on ClientSessionImpl [name=baa04a9f-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@149b8951 -2026-08-13 13:35:40,427 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Calling close on session ClientSessionImpl [name=baa098c0-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6e775f21 -2026-08-13 13:35:40,428 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] calling cleanup on ClientSessionImpl [name=baa098c0-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6e775f21 -2026-08-13 13:35:40,431 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 13:35:40,431 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:35:40,431 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:35:40,431 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:35:40,434 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 481ms (uptime:2m44s) -2026-08-13 13:35:40,434 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=ba9f121e-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6bf4a04a -2026-08-13 13:35:40,434 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=ba9f121e-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6bf4a04a -2026-08-13 13:35:40,436 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=ba9f121e-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=()]@6bf4a04a -2026-08-13 13:35:40,436 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@4b9df579 -2026-08-13 13:35:40,437 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=ba9c7a0d-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=(jms-session=,)]@1d94192f -2026-08-13 13:35:40,437 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=ba9c7a0d-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=(jms-session=,)]@1d94192f -2026-08-13 13:35:40,439 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-1 (activemq-client-global)] Failure captured on connectionID=afabb530, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 13:35:40,441 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=ba9c7a0d-970a-11f1-bd12-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@5a14362b, metaData=(jms-session=,)]@1d94192f -2026-08-13 13:35:40,450 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:35:40,453 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 13:35:40,455 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 13:35:50,744 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3657920 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:35:50,746 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:35:50,789 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:35:51,593 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:35:51,747 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 147 ms. Found 34 JPA repository interfaces. -2026-08-13 13:35:52,297 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:35:52,306 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:35:52,308 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:35:52,308 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:35:52,344 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1554 ms -2026-08-13 13:35:55,254 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2564 ms -2026-08-13 13:35:55,316 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:35:55,347 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 18 ms. -2026-08-13 13:35:55,349 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:35:55,459 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:35:55,494 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:35:55,574 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 79 ms. -2026-08-13 13:35:55,643 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:35:55,711 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:35:55,920 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:35:56,032 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@76c48272 -2026-08-13 13:35:56,034 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:35:56,109 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:35:56,283 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 13:35:56,655 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 13:35:57,587 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 13:35:57,657 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:35:57,756 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 13:35:58,786 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 13:35:58,841 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name userDetailsService -2026-08-13 13:35:59,262 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 13:35:59,421 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 13:35:59,539 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 13:35:59,540 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 13:35:59,566 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 13:35:59,571 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 13:35:59,575 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 13:35:59,578 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 13:35:59,587 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 13:35:59,588 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 13:35:59,588 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 13:35:59,589 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 13:35:59,589 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 13:35:59,590 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 13:35:59,590 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 13:35:59,590 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 13:35:59,591 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 13:35:59,591 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 13:35:59,592 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 13:35:59,592 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 13:35:59,592 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 13:35:59,592 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 13:35:59,593 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 13:35:59,593 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:35:59,593 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:35:59,593 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 13:35:59,594 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:35:59,594 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:35:59,594 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:35:59,594 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 13:35:59,594 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 13:35:59,594 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 13:35:59,595 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 13:35:59,595 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 13:35:59,596 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 13:35:59,596 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 13:35:59,596 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 13:35:59,596 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 13:35:59,596 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 13:35:59,596 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 13:35:59,597 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 13:35:59,597 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 13:35:59,597 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 13:35:59,597 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 13:35:59,599 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 13:35:59,599 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 13:35:59,599 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 13:35:59,599 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 13:35:59,599 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 13:35:59,602 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 13:35:59,636 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 13:35:59,655 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 13:35:59,723 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 13:35:59,908 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 13:35:59,928 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 13:35:59,928 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@31223d3f and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:35:59,985 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 13:36:00,001 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 13:36:00,001 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 13:36:00,067 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = 92e42703 -2026-08-13 13:36:00,085 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:36:00,156 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 13:36:00,157 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:36:00,191 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@4a0c795b -2026-08-13 13:36:00,199 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 13:36:00,200 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:36:00,200 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:36:00,200 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:36:00,200 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 291ms (build:0ms init:0ms start:291ms boot:1s608ms) -2026-08-13 13:36:00,202 INFO d.t.k.s.SetupModuleBookshelf [restartedMain] Set up Bookshelf data -2026-08-13 13:36:00,202 INFO d.t.k.s.SetupModuleComics [restartedMain] Set up Comics data -2026-08-13 13:36:00,203 INFO d.t.k.s.SetupModuleMedia [restartedMain] Set up Media data -2026-08-13 13:36:00,203 INFO d.t.k.s.SetupModuleTysc [restartedMain] Setp up TYSC data -2026-08-13 13:36:00,205 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 9.886 seconds (process running for 10.268) -2026-08-13 13:36:00,206 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=284fd163-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@1667f37a -2026-08-13 13:36:00,207 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=285130f4-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@377aa2ab -2026-08-13 13:36:00,209 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=2851a625-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@67dfc9b4 -2026-08-13 13:36:00,279 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 13:36:11,131 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 13:36:11,132 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 13:36:11,134 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 2 ms -2026-08-13 13:36:11,159 WARN c.v.f.s.a.AnnotatedViewAccessChecker [http-nio-8085-exec-1] Denied access to view 'de.thpeetz.kontor.views.common.MainView' due to parent layout 'de.thpeetz.kontor.views.common.MainLayout' access rules The view allows broader access than the layout, which is likely a configuration error. -2026-08-13 13:36:11,879 WARN c.v.f.s.a.AnnotatedViewAccessChecker [http-nio-8085-exec-3] Denied access to view 'de.thpeetz.kontor.views.common.MainView' due to parent layout 'de.thpeetz.kontor.views.common.MainLayout' access rules The view allows broader access than the layout, which is likely a configuration error. -2026-08-13 13:36:25,874 WARN c.v.f.s.a.AnnotatedViewAccessChecker [http-nio-8085-exec-7] Denied access to view 'de.thpeetz.kontor.views.common.MainView' due to parent layout 'de.thpeetz.kontor.views.common.MainLayout' access rules The view allows broader access than the layout, which is likely a configuration error. -2026-08-13 13:38:08,718 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 13:38:08,720 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 13:38:08,724 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 13:38:09,407 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=2851a625-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@67dfc9b4 -2026-08-13 13:38:09,407 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Calling close on session ClientSessionImpl [name=2851a625-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@67dfc9b4 -2026-08-13 13:38:09,407 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=284fd163-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@1667f37a -2026-08-13 13:38:09,408 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] calling cleanup on ClientSessionImpl [name=2851a625-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@67dfc9b4 -2026-08-13 13:38:09,415 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Calling close on session ClientSessionImpl [name=284fd163-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@1667f37a -2026-08-13 13:38:09,416 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] calling cleanup on ClientSessionImpl [name=284fd163-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@1667f37a -2026-08-13 13:38:09,418 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 13:38:09,418 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:38:09,419 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:38:09,419 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:38:09,422 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 697ms (uptime:2m9s) -2026-08-13 13:38:09,423 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=285130f4-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@377aa2ab -2026-08-13 13:38:09,423 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=285130f4-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@377aa2ab -2026-08-13 13:38:09,424 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=285130f4-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=()]@377aa2ab -2026-08-13 13:38:09,424 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@4a0c795b -2026-08-13 13:38:09,424 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=284c27e2-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=(jms-session=,)]@637f0b4d -2026-08-13 13:38:09,425 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=284c27e2-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=(jms-session=,)]@637f0b4d -2026-08-13 13:38:09,426 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-1 (activemq-client-global)] Failure captured on connectionID=92e42703, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 13:38:09,429 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=284c27e2-970b-11f1-a4e7-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@3f971105, metaData=(jms-session=,)]@637f0b4d -2026-08-13 13:38:09,437 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:38:09,439 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 13:38:09,441 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 13:38:24,110 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3686148 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:38:24,112 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:38:24,153 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:38:24,986 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:38:25,132 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 138 ms. Found 34 JPA repository interfaces. -2026-08-13 13:38:25,747 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:38:25,760 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:38:25,763 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:38:25,764 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:38:25,803 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1648 ms -2026-08-13 13:38:28,805 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2679 ms -2026-08-13 13:38:28,872 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:38:28,903 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 17 ms. -2026-08-13 13:38:28,905 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:38:29,032 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:38:29,063 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:38:29,139 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 75 ms. -2026-08-13 13:38:29,203 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:38:29,241 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:38:29,436 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:38:29,532 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@77756ff6 -2026-08-13 13:38:29,534 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:38:29,586 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:38:29,785 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 13:38:30,204 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 13:38:31,336 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 13:38:31,418 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:38:31,503 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 13:38:32,759 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 13:38:32,823 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name userDetailsService -2026-08-13 13:38:33,296 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 13:38:33,455 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 13:38:33,585 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 13:38:33,585 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 13:38:33,610 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 13:38:33,616 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 13:38:33,620 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 13:38:33,624 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 13:38:33,633 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 13:38:33,633 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 13:38:33,634 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 13:38:33,634 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 13:38:33,635 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 13:38:33,635 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 13:38:33,636 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 13:38:33,636 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 13:38:33,636 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 13:38:33,637 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 13:38:33,637 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 13:38:33,637 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 13:38:33,638 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 13:38:33,638 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 13:38:33,638 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 13:38:33,638 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:38:33,639 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:38:33,639 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 13:38:33,639 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:38:33,639 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:38:33,639 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:38:33,639 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 13:38:33,640 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 13:38:33,640 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 13:38:33,640 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 13:38:33,640 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 13:38:33,641 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 13:38:33,643 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 13:38:33,643 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 13:38:33,644 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 13:38:33,644 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 13:38:33,644 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 13:38:33,646 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 13:38:33,689 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 13:38:33,728 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 13:38:33,808 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 13:38:34,037 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 13:38:34,065 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 13:38:34,066 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@c62579b and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:38:34,125 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 13:38:34,138 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 13:38:34,139 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 13:38:34,183 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = 6518389c -2026-08-13 13:38:34,192 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:38:34,249 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 13:38:34,250 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:38:34,279 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@5c305084 -2026-08-13 13:38:34,285 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 13:38:34,285 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:38:34,285 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:38:34,285 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:38:34,285 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 246ms (build:0ms init:0ms start:246ms boot:1s854ms) -2026-08-13 13:38:34,288 INFO d.t.k.s.SetupModuleBookshelf [restartedMain] Set up Bookshelf data -2026-08-13 13:38:34,289 INFO d.t.k.s.SetupModuleComics [restartedMain] Set up Comics data -2026-08-13 13:38:34,290 INFO d.t.k.s.SetupModuleMedia [restartedMain] Set up Media data -2026-08-13 13:38:34,290 INFO d.t.k.s.SetupModuleTysc [restartedMain] Setp up TYSC data -2026-08-13 13:38:34,295 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=8427a13e-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@278b931f -2026-08-13 13:38:34,296 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 10.608 seconds (process running for 10.99) -2026-08-13 13:38:34,295 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=842927df-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@18682432 -2026-08-13 13:38:34,298 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=84299d10-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@200c535d -2026-08-13 13:38:34,366 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 13:38:38,605 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 13:38:38,606 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 13:38:38,608 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 2 ms -2026-08-13 13:40:36,303 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 13:40:36,306 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 13:40:36,310 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 13:40:36,484 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=8427a13e-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@278b931f -2026-08-13 13:40:36,484 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Calling close on session ClientSessionImpl [name=8427a13e-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@278b931f -2026-08-13 13:40:36,485 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] calling cleanup on ClientSessionImpl [name=8427a13e-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@278b931f -2026-08-13 13:40:36,488 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=842927df-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@18682432 -2026-08-13 13:40:36,493 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Calling close on session ClientSessionImpl [name=842927df-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@18682432 -2026-08-13 13:40:36,494 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] calling cleanup on ClientSessionImpl [name=842927df-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@18682432 -2026-08-13 13:40:36,496 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 13:40:36,496 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:40:36,497 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:40:36,497 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:40:36,499 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 188ms (uptime:2m2s) -2026-08-13 13:40:36,499 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=84299d10-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@200c535d -2026-08-13 13:40:36,500 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=84299d10-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@200c535d -2026-08-13 13:40:36,500 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=84299d10-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=()]@200c535d -2026-08-13 13:40:36,501 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@5c305084 -2026-08-13 13:40:36,501 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=8424bb0d-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=(jms-session=,)]@4df6cb30 -2026-08-13 13:40:36,502 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=8424bb0d-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=(jms-session=,)]@4df6cb30 -2026-08-13 13:40:36,503 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-1 (activemq-client-global)] Failure captured on connectionID=6518389c, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 13:40:36,505 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=8424bb0d-970b-11f1-aa6c-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@4fa149d6, metaData=(jms-session=,)]@4df6cb30 -2026-08-13 13:40:36,514 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:40:36,516 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 13:40:36,518 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 13:40:48,685 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3714000 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:40:48,687 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:40:48,762 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:40:49,727 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:40:49,905 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 167 ms. Found 34 JPA repository interfaces. -2026-08-13 13:40:50,741 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:40:50,758 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:40:50,761 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:40:50,762 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:40:50,806 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 2042 ms -2026-08-13 13:40:53,694 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2496 ms -2026-08-13 13:40:53,756 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:40:53,786 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 18 ms. -2026-08-13 13:40:53,788 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:40:53,890 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:40:53,919 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:40:53,983 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 63 ms. -2026-08-13 13:40:54,014 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:40:54,050 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:40:54,212 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:40:54,298 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@7743fdcd -2026-08-13 13:40:54,299 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:40:54,343 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:40:54,494 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 13:40:54,892 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 13:40:56,212 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 13:40:56,304 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:40:56,402 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 13:40:57,801 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 13:40:57,868 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name userDetailsService -2026-08-13 13:40:58,474 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 13:40:58,785 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 13:40:58,955 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 13:40:58,955 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 13:40:58,989 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 13:40:58,996 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 13:40:59,000 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 13:40:59,006 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 13:40:59,019 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 13:40:59,020 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 13:40:59,020 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 13:40:59,021 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 13:40:59,022 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 13:40:59,022 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 13:40:59,023 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 13:40:59,023 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 13:40:59,024 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 13:40:59,025 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 13:40:59,025 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 13:40:59,025 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 13:40:59,026 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 13:40:59,026 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 13:40:59,026 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 13:40:59,027 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:40:59,027 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:40:59,027 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 13:40:59,027 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:40:59,028 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:40:59,028 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:40:59,028 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 13:40:59,028 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 13:40:59,028 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 13:40:59,028 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 13:40:59,029 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 13:40:59,030 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 13:40:59,031 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 13:40:59,031 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 13:40:59,033 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 13:40:59,033 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 13:40:59,033 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 13:40:59,034 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 13:40:59,034 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 13:40:59,037 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 13:40:59,076 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 13:40:59,096 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 13:40:59,151 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 13:40:59,364 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 13:40:59,388 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 13:40:59,389 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@544440b1 and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:40:59,460 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 13:40:59,484 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 13:40:59,487 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 13:40:59,549 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = 1a76c6d7 -2026-08-13 13:40:59,560 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:40:59,650 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 13:40:59,651 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:40:59,690 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@6ea778e0 -2026-08-13 13:40:59,698 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 13:40:59,698 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:40:59,698 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:40:59,698 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:40:59,699 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 334ms (build:0ms init:0ms start:334ms boot:2s259ms) -2026-08-13 13:40:59,701 INFO d.t.k.s.SetupModuleBookshelf [restartedMain] Set up Bookshelf data -2026-08-13 13:40:59,702 INFO d.t.k.s.SetupModuleComics [restartedMain] Set up Comics data -2026-08-13 13:40:59,702 INFO d.t.k.s.SetupModuleMedia [restartedMain] Set up Media data -2026-08-13 13:40:59,702 INFO d.t.k.s.SetupModuleTysc [restartedMain] Setp up TYSC data -2026-08-13 13:40:59,705 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 11.524 seconds (process running for 11.886) -2026-08-13 13:40:59,707 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=dad3bd3e-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@22262260 -2026-08-13 13:40:59,707 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=dad56aef-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@1e6b70d6 -2026-08-13 13:40:59,709 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=dad5b910-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@a6e4d23 -2026-08-13 13:40:59,791 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 13:41:05,609 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 13:41:05,609 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 13:41:05,614 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 4 ms -2026-08-13 13:45:02,660 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 13:45:02,665 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 13:45:02,668 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 13:45:03,037 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=dad5b910-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@a6e4d23 -2026-08-13 13:45:03,037 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=dad56aef-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@1e6b70d6 -2026-08-13 13:45:03,037 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Calling close on session ClientSessionImpl [name=dad5b910-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@a6e4d23 -2026-08-13 13:45:03,038 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] calling cleanup on ClientSessionImpl [name=dad5b910-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@a6e4d23 -2026-08-13 13:45:03,048 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Calling close on session ClientSessionImpl [name=dad56aef-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@1e6b70d6 -2026-08-13 13:45:03,049 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] calling cleanup on ClientSessionImpl [name=dad56aef-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@1e6b70d6 -2026-08-13 13:45:03,052 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 13:45:03,053 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:45:03,053 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:45:03,053 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:45:03,056 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 387ms (uptime:4m3s) -2026-08-13 13:45:03,056 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=dad3bd3e-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@22262260 -2026-08-13 13:45:03,056 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=dad3bd3e-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@22262260 -2026-08-13 13:45:03,057 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=dad3bd3e-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=()]@22262260 -2026-08-13 13:45:03,057 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@6ea778e0 -2026-08-13 13:45:03,058 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=dacfc59d-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=(jms-session=,)]@39cb73a4 -2026-08-13 13:45:03,058 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=dacfc59d-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=(jms-session=,)]@39cb73a4 -2026-08-13 13:45:03,060 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-1 (activemq-client-global)] Failure captured on connectionID=1a76c6d7, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 13:45:03,063 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=dacfc59d-970b-11f1-afdc-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@51c43b1b, metaData=(jms-session=,)]@39cb73a4 -2026-08-13 13:45:03,071 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:45:03,078 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 13:45:03,080 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. -2026-08-13 13:45:13,339 INFO o.s.b.StartupInfoLogger [restartedMain] Starting KontorApplication using Java 25.0.2 with PID 3745007 (/home/tpeetz/projects/kontor/kontor-spring/build/classes/java/main started by tpeetz in /home/tpeetz/projects/kontor/kontor-spring) -2026-08-13 13:45:13,342 INFO o.s.b.SpringApplication [restartedMain] The following 1 profile is active: "local" -2026-08-13 13:45:13,394 INFO o.s.b.l.LogLevel [restartedMain] For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' -2026-08-13 13:45:14,373 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-08-13 13:45:14,556 INFO o.s.d.r.c.RepositoryConfigurationDelegate [restartedMain] Finished Spring Data repository scanning in 172 ms. Found 34 JPA repository interfaces. -2026-08-13 13:45:15,134 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat initialized with port 8085 (http) -2026-08-13 13:45:15,143 INFO o.a.j.l.DirectJDKLog [restartedMain] Initializing ProtocolHandler ["http-nio-8085"] -2026-08-13 13:45:15,145 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting service [Tomcat] -2026-08-13 13:45:15,145 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting Servlet engine: [Apache Tomcat/11.0.24] -2026-08-13 13:45:15,198 INFO o.s.b.w.c.s.WebApplicationContextInitializer [restartedMain] Root WebApplicationContext: initialization completed in 1802 ms -2026-08-13 13:45:18,176 INFO c.v.f.s.VaadinServletContextInitializer$DevModeServletContextListener [restartedMain] Search for subclasses and classes with annotations took 2610 ms -2026-08-13 13:45:18,238 INFO c.v.b.d.s.DevModeInitializer [restartedMain] Starting dev-mode updaters in /home/tpeetz/projects/kontor/kontor-spring folder. -2026-08-13 13:45:18,270 INFO c.v.f.s.f.s.FullDependenciesScanner [restartedMain] Visited 182 classes. Took 20 ms. -2026-08-13 13:45:18,272 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] Checking if a development mode bundle build is needed -2026-08-13 13:45:18,371 INFO c.v.f.s.f.BundleValidationUtil [restartedMain] A development mode bundle build is not needed -2026-08-13 13:45:18,393 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Copying frontend resources from jar files ... -2026-08-13 13:45:18,456 INFO c.v.f.s.f.TaskCopyFrontendFiles [vaadin-dev-server-1] Visited 20 resources. Took 62 ms. -2026-08-13 13:45:18,504 INFO o.h.j.i.u.LogHelper [restartedMain] HHH008540: Processing PersistenceUnitInfo [name: default] -2026-08-13 13:45:18,538 INFO o.h.Version [restartedMain] HHH000001: Hibernate ORM core version 7.4.1.Final -2026-08-13 13:45:18,694 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Starting... -2026-08-13 13:45:18,802 INFO c.z.h.p.HikariPool [restartedMain] HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@4048a12e -2026-08-13 13:45:18,804 INFO c.z.h.HikariDataSource [restartedMain] HikariPool-1 - Start completed. -2026-08-13 13:45:18,856 INFO o.h.e.j.e.i.JdbcEnvironmentInitiator [restartedMain] HHH10001005: Database info: - Database JDBC URL [jdbc:postgresql://localhost:5432/kontor] - Database driver: PostgreSQL JDBC Driver - Database dialect: PostgreSQLDialect - Database version: 17.7 - Default catalog/schema: kontor/public - Autocommit mode: undefined/unknown - Isolation level: READ_COMMITTED [default READ_COMMITTED] - JDBC fetch size: none - Pool: DataSourceConnectionProvider - Minimum pool size: undefined/unknown - Maximum pool size: undefined/unknown -2026-08-13 13:45:19,017 INFO o.s.o.j.p.SpringPersistenceUnitInfo [restartedMain] No LoadTimeWeaver setup: ignoring JPA class transformer -2026-08-13 13:45:19,391 INFO o.h.v.i.u.Version [restartedMain] HV000001: Hibernate Validator 9.1.0.Final -2026-08-13 13:45:20,288 INFO o.h.e.t.j.p.i.JtaPlatformInitiator [restartedMain] HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) -2026-08-13 13:45:20,361 INFO o.s.o.j.AbstractEntityManagerFactoryBean [restartedMain] Initialized JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:45:20,440 INFO o.s.d.j.r.q.QueryEnhancerFactories [restartedMain] Hibernate is in classpath; If applicable, HQL parser will be used. -2026-08-13 13:45:21,752 WARN o.s.b.j.a.JpaBaseConfiguration$JpaWebConfiguration [restartedMain] spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning -2026-08-13 13:45:21,812 INFO o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer [restartedMain] Global AuthenticationManager configured with UserDetailsService bean with name userDetailsService -2026-08-13 13:45:22,342 DEBUG o.a.a.a.u.UUIDGenerator [restartedMain] using hardware address 5e:5c:62:ffffff8d:27:-27 -2026-08-13 13:45:22,529 INFO o.s.b.a.e.w.EndpointLinksResolver [restartedMain] Exposing 5 endpoints beneath base path '/actuator' -2026-08-13 13:45:22,656 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler mapped to context-path: /* -2026-08-13 13:45:22,657 INFO o.a.c.AtmosphereFramework [restartedMain] Installed the following AtmosphereInterceptor mapped to AtmosphereHandler com.vaadin.flow.server.communication.PushAtmosphereHandler -2026-08-13 13:45:22,683 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.util.VoidAnnotationProcessor for processing annotation -2026-08-13 13:45:22,688 INFO o.a.u.ForkJoinPool [restartedMain] Using ForkJoinPool java.util.concurrent.ForkJoinPool. Set the org.atmosphere.cpr.broadcaster.maxAsyncWriteThreads to -1 to fully use its power. -2026-08-13 13:45:22,701 INFO o.a.c.AtmosphereFramework [restartedMain] Installed WebSocketProtocol org.atmosphere.websocket.protocol.SimpleHttpProtocol -2026-08-13 13:45:22,706 INFO o.a.c.JSR356AsyncSupport [restartedMain] JSR 356 Mapping path /VAADIN/push -2026-08-13 13:45:22,724 INFO o.a.c.AtmosphereFramework [restartedMain] Installing Default AtmosphereInterceptors -2026-08-13 13:45:22,725 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CorsInterceptor : CORS Interceptor Support -2026-08-13 13:45:22,726 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.CacheHeadersInterceptor : Default Response's Headers Interceptor -2026-08-13 13:45:22,726 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.PaddingAtmosphereInterceptor : Browser Padding Interceptor Support -2026-08-13 13:45:22,727 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.AndroidAtmosphereInterceptor : Android Interceptor Support -2026-08-13 13:45:22,728 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.HeartbeatInterceptor : Heartbeat Interceptor Support -2026-08-13 13:45:22,729 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.SSEAtmosphereInterceptor : SSE Interceptor Support -2026-08-13 13:45:22,730 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JSONPAtmosphereInterceptor : JSONP Interceptor Support -2026-08-13 13:45:22,731 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.JavaScriptProtocol : Atmosphere JavaScript Protocol -2026-08-13 13:45:22,731 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor : org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor -2026-08-13 13:45:22,732 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.OnDisconnectInterceptor : Browser disconnection detection -2026-08-13 13:45:22,732 INFO o.a.c.AtmosphereFramework [restartedMain] org.atmosphere.interceptor.IdleResourceInterceptor : org.atmosphere.interceptor.IdleResourceInterceptor -2026-08-13 13:45:22,732 INFO o.a.c.AtmosphereFramework [restartedMain] Set org.atmosphere.cpr.AtmosphereInterceptor.disableDefaults to disable them. -2026-08-13 13:45:22,732 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor CORS Interceptor Support with priority FIRST_BEFORE_DEFAULT -2026-08-13 13:45:22,733 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Default Response's Headers Interceptor with priority AFTER_DEFAULT -2026-08-13 13:45:22,734 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser Padding Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:45:22,734 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Android Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:45:22,734 INFO o.a.i.HeartbeatInterceptor [restartedMain] HeartbeatInterceptor configured with padding value 'X', client frequency 0 seconds and server frequency 60 seconds -2026-08-13 13:45:22,734 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Heartbeat Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:45:22,735 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor SSE Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:45:22,735 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor JSONP Interceptor Support with priority AFTER_DEFAULT -2026-08-13 13:45:22,735 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Atmosphere JavaScript Protocol with priority AFTER_DEFAULT -2026-08-13 13:45:22,736 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.WebSocketMessageSuspendInterceptor with priority AFTER_DEFAULT -2026-08-13 13:45:22,736 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Browser disconnection detection with priority AFTER_DEFAULT -2026-08-13 13:45:22,736 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor org.atmosphere.interceptor.IdleResourceInterceptor with priority BEFORE_DEFAULT -2026-08-13 13:45:22,737 INFO o.a.c.AtmosphereFramework [restartedMain] Using EndpointMapper class org.atmosphere.util.DefaultEndpointMapper -2026-08-13 13:45:22,738 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterCache: org.atmosphere.cache.UUIDBroadcasterCache -2026-08-13 13:45:22,738 INFO o.a.c.AtmosphereFramework [restartedMain] Default Broadcaster Class: org.atmosphere.cpr.DefaultBroadcaster -2026-08-13 13:45:22,738 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Shared List Resources: false -2026-08-13 13:45:22,738 INFO o.a.c.AtmosphereFramework [restartedMain] Broadcaster Polling Wait Time 100 -2026-08-13 13:45:22,738 INFO o.a.c.AtmosphereFramework [restartedMain] Shared ExecutorService supported: true -2026-08-13 13:45:22,739 INFO o.a.c.AtmosphereFramework [restartedMain] Messaging ExecutorService Pool Size unavailable - Not instance of ThreadPoolExecutor -2026-08-13 13:45:22,739 INFO o.a.c.AtmosphereFramework [restartedMain] Async I/O Thread Pool Size: 200 -2026-08-13 13:45:22,739 INFO o.a.c.AtmosphereFramework [restartedMain] Using BroadcasterFactory: org.atmosphere.cpr.DefaultBroadcasterFactory -2026-08-13 13:45:22,739 INFO o.a.c.AtmosphereFramework [restartedMain] Using AtmosphereResurceFactory: org.atmosphere.cpr.DefaultAtmosphereResourceFactory -2026-08-13 13:45:22,739 INFO o.a.c.AtmosphereFramework [restartedMain] Using WebSocketProcessor: org.atmosphere.websocket.DefaultWebSocketProcessor -2026-08-13 13:45:22,741 INFO o.a.c.AtmosphereFramework [restartedMain] Invoke AtmosphereInterceptor on WebSocket message true -2026-08-13 13:45:22,742 INFO o.a.c.AtmosphereFramework [restartedMain] HttpSession supported: true -2026-08-13 13:45:22,742 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using org.atmosphere.inject.InjectableObjectFactory for dependency injection and object creation -2026-08-13 13:45:22,742 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere is using async support: org.atmosphere.container.JSR356AsyncSupport running under container: Apache Tomcat/11.0.24 using jakarta.servlet/3.0 and jsr356/WebSocket API -2026-08-13 13:45:22,743 INFO o.a.c.AtmosphereFramework [restartedMain] Atmosphere Framework 3.0.5.slf4jvaadin1 started. -2026-08-13 13:45:22,749 INFO o.a.c.AtmosphereFramework [restartedMain] Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT -2026-08-13 13:45:22,797 INFO o.a.j.l.DirectJDKLog [restartedMain] Starting ProtocolHandler ["http-nio-8085"] -2026-08-13 13:45:22,821 INFO c.v.f.s.DefaultDeploymentConfiguration [restartedMain] -Vaadin is running in DEVELOPMENT mode - do not use for production deployments. -2026-08-13 13:45:22,893 INFO o.s.b.t.TomcatWebServer [restartedMain] Tomcat started on port 8085 (http) with context path '/' -2026-08-13 13:45:23,051 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) is starting -2026-08-13 13:45:23,072 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying reconnection attempt 0/1 -2026-08-13 13:45:23,072 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Trying to connect with connectorFactory=org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory@6c1b90a9 and currentConnectorConfig: TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:45:23,122 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Connector NettyConnector [host=localhost, port=61616, httpEnabled=false, httpUpgradeEnabled=false, useServlet=false, servletPath=/messaging/ActiveMQServlet, sslEnabled=false, useNio=true] using native epoll -2026-08-13 13:45:23,134 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Started EPOLL Netty Connector version 4.2.15.Final to localhost:61616 -2026-08-13 13:45:23,134 DEBUG o.a.a.a.c.r.i.n.NettyConnector [restartedMain] Remote destination: localhost/127.0.0.1:61616 -2026-08-13 13:45:23,177 DEBUG o.a.a.a.c.r.i.n.NettyConnector$1 [Thread-0 (activemq-client-remoting)] Added ActiveMQClientChannelHandler to Channel with id = f8743e10 -2026-08-13 13:45:23,186 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Connected with the currentConnectorConfig=TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:45:23,241 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] Reconnection successful -2026-08-13 13:45:23,242 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [restartedMain] ClientSessionFactoryImpl received backup update for primary/backup pair = TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost / null but it didn't belong to TransportConfiguration(name=null, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory)?port=61616&host=localhost -2026-08-13 13:45:23,267 DEBUG o.s.j.c.SingleConnectionFactory [restartedMain] Established shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@7b381ebb -2026-08-13 13:45:23,273 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Routes startup (total:3) -2026-08-13 13:45:23,273 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:45:23,273 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:45:23,273 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Started read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:45:23,273 INFO o.a.c.i.e.AbstractCamelContext [restartedMain] Apache Camel 4.10.6 (camel-1) started in 221ms (build:0ms init:0ms start:221ms boot:1s902ms) -2026-08-13 13:45:23,275 INFO d.t.k.s.SetupModuleBookshelf [restartedMain] Set up Bookshelf data -2026-08-13 13:45:23,276 INFO d.t.k.s.SetupModuleComics [restartedMain] Set up Comics data -2026-08-13 13:45:23,276 INFO d.t.k.s.SetupModuleMedia [restartedMain] Set up Media data -2026-08-13 13:45:23,276 INFO d.t.k.s.SetupModuleTysc [restartedMain] Setp up TYSC data -2026-08-13 13:45:23,279 INFO o.s.b.StartupInfoLogger [restartedMain] Started KontorApplication in 10.453 seconds (process running for 10.859) -2026-08-13 13:45:23,280 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=77ee3ed4-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@49b2a0eb -2026-08-13 13:45:23,282 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=77ef9e65-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@231fccf8 -2026-08-13 13:45:23,284 DEBUG o.s.j.c.CachingConnectionFactory [Camel (camel-1) thread #3 - JmsConsumer[media.video.add]] Registering cached JMS Session for mode 1: ActiveMQSession->ClientSessionImpl [name=77f01396-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@7a8d41ad -2026-08-13 13:45:23,349 INFO c.v.b.d.DevModeHandlerManagerImpl [restartedMain] Application running at http://localhost:8085/ -2026-08-13 13:45:55,253 INFO o.a.j.l.DirectJDKLog [http-nio-8085-exec-1] Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-08-13 13:45:55,254 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Initializing Servlet 'dispatcherServlet' -2026-08-13 13:45:55,256 INFO o.s.w.s.FrameworkServlet [http-nio-8085-exec-1] Completed initialization in 2 ms -2026-08-13 13:48:53,647 INFO o.s.b.t.GracefulShutdown [SpringApplicationShutdownHook] Commencing graceful shutdown. Waiting for active requests to complete -2026-08-13 13:48:53,649 INFO o.s.b.t.GracefulShutdown [tomcat-shutdown] Graceful shutdown complete -2026-08-13 13:48:53,652 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) is shutting down (timeout:45s) -2026-08-13 13:48:54,550 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=77ee3ed4-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@49b2a0eb -2026-08-13 13:48:54,550 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=77ef9e65-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@231fccf8 -2026-08-13 13:48:54,551 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] Calling close on session ClientSessionImpl [name=77ee3ed4-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@49b2a0eb -2026-08-13 13:48:54,551 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #1 - JmsConsumer[media.link.add]] calling cleanup on ClientSessionImpl [name=77ee3ed4-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@49b2a0eb -2026-08-13 13:48:54,558 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] Calling close on session ClientSessionImpl [name=77ef9e65-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@231fccf8 -2026-08-13 13:48:54,559 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [Camel (camel-1) thread #2 - JmsConsumer[media.lofi.add]] calling cleanup on ClientSessionImpl [name=77ef9e65-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@231fccf8 -2026-08-13 13:48:54,562 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Routes stopped (total:3) -2026-08-13 13:48:54,562 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-video-add (jms://queue:media.video.add) -2026-08-13 13:48:54,562 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-lofi-add (jms://queue:media.lofi.add) -2026-08-13 13:48:54,562 INFO o.a.c.s.CamelLogger [SpringApplicationShutdownHook] Stopped read-queue-media-link-add (jms://queue:media.link.add) -2026-08-13 13:48:54,564 INFO o.a.c.i.e.AbstractCamelContext [SpringApplicationShutdownHook] Apache Camel 4.10.6 (camel-1) shutdown in 911ms (uptime:3m31s) -2026-08-13 13:48:54,564 DEBUG o.s.j.c.CachingConnectionFactory$CachedSessionInvocationHandler [SpringApplicationShutdownHook] Closing cached Session: ActiveMQSession->ClientSessionImpl [name=77f01396-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@7a8d41ad -2026-08-13 13:48:54,565 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=77f01396-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@7a8d41ad -2026-08-13 13:48:54,566 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=77f01396-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=()]@7a8d41ad -2026-08-13 13:48:54,566 DEBUG o.s.j.c.SingleConnectionFactory [SpringApplicationShutdownHook] Closing shared JMS Connection: org.apache.activemq.artemis.jms.client.ActiveMQConnection@7b381ebb -2026-08-13 13:48:54,566 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Calling close on session ClientSessionImpl [name=77ebcdd3-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=(jms-session=,)]@74d11287 -2026-08-13 13:48:54,567 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] calling cleanup on ClientSessionImpl [name=77ebcdd3-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=false, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=(jms-session=,)]@74d11287 -2026-08-13 13:48:54,569 DEBUG o.a.a.a.c.c.i.ClientSessionFactoryImpl [Thread-2 (activemq-client-global)] Failure captured on connectionID=f8743e10, performing failover or reconnection now -org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException: [errorType=NOT_CONNECTED message=AMQ219006: Channel disconnected] - at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connectionDestroyed(ClientSessionFactoryImpl.java:413) - at org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector$Listener.lambda$connectionDestroyed$0(NettyConnector.java:1199) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:59) - at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) - at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:69) - at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) - at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) - at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:120) -2026-08-13 13:48:54,571 DEBUG o.a.a.a.c.c.i.ClientSessionImpl [SpringApplicationShutdownHook] Session was already closed, giving up now, this=ClientSessionImpl [name=77ebcdd3-970c-11f1-8e68-5e5c628d27e5, username=artemis, closed=true, factory = org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl@55ca2337, metaData=(jms-session=,)]@74d11287 -2026-08-13 13:48:54,578 INFO o.s.o.j.AbstractEntityManagerFactoryBean [SpringApplicationShutdownHook] Closing JPA EntityManagerFactory for persistence unit 'default' -2026-08-13 13:48:54,581 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown initiated... -2026-08-13 13:48:54,590 INFO c.z.h.HikariDataSource [SpringApplicationShutdownHook] HikariPool-1 - Shutdown completed. diff --git a/kontor-spring/settings.gradle b/kontor-spring/settings.gradle index a4b36c8..226b285 100644 --- a/kontor-spring/settings.gradle +++ b/kontor-spring/settings.gradle @@ -1 +1,25 @@ +pluginManagement { + resolutionStrategy { + eachPlugin { + if (requested.id.id == 'org.springframework.boot') { + useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}") + } + if (requested.id.id == 'org.gradle.toolchains.foojay-resolver') { + useModule("org.gradle.toolchains.foojay-resolver-convention:0.4.0") + } + } + } + repositories { + gradlePluginPortal() + maven { setUrl("https://nexus.thpeetz.de/repository/maven-central") } + mavenCentral() + maven { setUrl("https://maven.vaadin.com/vaadin-prereleases") } + maven { setUrl("https://repo.spring.io/milestone") } + maven { url 'https://plugins.gradle.org/m2/' } + } +// plugins { +// id 'com.vaadin' version "${vaadinVersion}" +// } +} + rootProject.name = 'kontor-spring' diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistViewTest.java new file mode 100644 index 0000000..b9874b1 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistViewTest.java @@ -0,0 +1,43 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.Artist; +import de.thpeetz.kontor.views.comics.ArtistForm; +import de.thpeetz.kontor.views.comics.ArtistView; + +@SpringBootTest +class ArtistViewTest { + + @Autowired + private ArtistView artistView; + + @Test + void formShownWhenArtistSelected() { + Grid grid = artistView.getGrid(); + Artist firstArtist = getFirstItem(grid); + + ArtistForm form = artistView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstArtist); + assertTrue(form.isVisible()); + assertEquals(firstArtist.getName(), form.name.getValue()); + } + + private Artist getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List artists = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(5, count); + return artists.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistformTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistformTest.java new file mode 100644 index 0000000..395f16a --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ArtistformTest.java @@ -0,0 +1,64 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.concurrent.atomic.AtomicReference; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import de.thpeetz.kontor.data.comics.Artist; +import de.thpeetz.kontor.views.comics.ArtistForm; + +@SpringBootTest +class ArtistformTest { + + private Artist artist1; + private static final String ARTISTNAME= "Lee, Stan"; + + @BeforeEach + void setupData() { + artist1 = new Artist(); + artist1.setName(ARTISTNAME); + } + + @Test + void formFieldsPopulated() { + ArtistForm form = new ArtistForm(); + form.setArtist(artist1); + assertEquals(ARTISTNAME, form.name.getValue()); + } + + @Test + void saveEventHasCorrectValues() { + ArtistForm form = new ArtistForm(); + Artist artist = new Artist(); + form.setArtist(artist); + form.name.setValue(ARTISTNAME); + + AtomicReference savedArtistReference = new AtomicReference<>(null); + form.addSaveListener(e -> { + savedArtistReference.set(e.getArtist()); + }); + form.save.click(); + Artist savedArtist = savedArtistReference.get(); + assertEquals(ARTISTNAME, savedArtist.getName()); + } + + @Test + void deleteEventHasCorrectValues() { + ArtistForm form = new ArtistForm(); + Artist artist = new Artist(); + form.setArtist(artist); + form.name.setValue(ARTISTNAME); + + AtomicReference deletedArtistReference = new AtomicReference<>(null); + form.addDeleteListener(e -> { + deletedArtistReference.set(e.getArtist()); + }); + form.delete.click(); + Artist deletedArtist = deletedArtistReference.get(); + assertEquals(ARTISTNAME, deletedArtist.getName()); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicViewTest.java new file mode 100644 index 0000000..e31f9b7 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.Comic; +import de.thpeetz.kontor.views.comics.ComicForm; +import de.thpeetz.kontor.views.comics.ComicView; + +@SpringBootTest +public class ComicViewTest { + + @Autowired + private ComicView comicView; + + @Test + void formShownWhenComicSelected() { + Grid grid = comicView.getGrid(); + Comic firstComic = getFirstItem(grid); + + ComicForm form = comicView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstComic); + assertTrue(form.isVisible()); + assertEquals(firstComic.getTitle(), form.title.getValue()); + } + + private Comic getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List comics = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(169, count); + return comics.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicWorkViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicWorkViewTest.java new file mode 100644 index 0000000..891963f --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/ComicWorkViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.ComicWork; +import de.thpeetz.kontor.views.comics.ComicWorkForm; +import de.thpeetz.kontor.views.comics.ComicWorkView; + +@SpringBootTest +class ComicWorkViewTest { + + @Autowired + private ComicWorkView comicWorkView; + + @Test + void formShownWhenComicSelected() { + Grid grid = comicWorkView.getGrid(); + ComicWork firstComicWork = getFirstItem(grid); + + ComicWorkForm form = comicWorkView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstComicWork); + assertTrue(form.isVisible()); + assertEquals(firstComicWork.getComic(), form.comic.getValue()); + } + + private ComicWork getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List comicWorks = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(18, count); + return comicWorks.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/IssueViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/IssueViewTest.java new file mode 100644 index 0000000..baaa465 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/IssueViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.Issue; +import de.thpeetz.kontor.views.comics.IssueForm; +import de.thpeetz.kontor.views.comics.IssueView; + +@SpringBootTest +public class IssueViewTest { + + @Autowired + private IssueView issueView; + + @Test + void formShownWhenIssueSelected() { + Grid grid = issueView.getGrid(); + Issue firstIssue = getFirstItem(grid); + + IssueForm form = issueView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstIssue); + assertTrue(form.isVisible()); + assertEquals(firstIssue.getIssueNumber(), form.issueNumber.getValue()); + } + + private Issue getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List issues = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(750, count); + return issues.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/PublisherViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/PublisherViewTest.java new file mode 100644 index 0000000..174221a --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/PublisherViewTest.java @@ -0,0 +1,43 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.Publisher; +import de.thpeetz.kontor.views.comics.PublisherForm; +import de.thpeetz.kontor.views.comics.PublisherView; + +@SpringBootTest +class PublisherViewTest { + + @Autowired + private PublisherView publisherView; + + @Test + void formShownWhenPublisherSelected() { + Grid grid = publisherView.getGrid(); + Publisher firstPublisher = getFirstItem(grid); + + PublisherForm form = publisherView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstPublisher); + assertTrue(form.isVisible()); + assertEquals(firstPublisher.getName(), form.name.getValue()); + } + + private Publisher getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List publishers = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(18, count); + return publishers.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/StoryArcViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/StoryArcViewTest.java new file mode 100644 index 0000000..2375f43 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/StoryArcViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.StoryArc; +import de.thpeetz.kontor.views.comics.StoryArcForm; +import de.thpeetz.kontor.views.comics.StoryArcView; + +@SpringBootTest +class StoryArcViewTest { + + @Autowired + private StoryArcView storyArcView; + + @Test + void formShownWhenStoryArcSelected() { + Grid grid = storyArcView.getGrid(); + StoryArc firstStoryArc = getFirstItem(grid); + + StoryArcForm form = storyArcView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstStoryArc); + assertTrue(form.isVisible()); + assertEquals(firstStoryArc.getName(), form.name.getValue()); + } + + private StoryArc getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List storyArcs = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(3, count); + return storyArcs.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/TradePaperbackViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/TradePaperbackViewTest.java new file mode 100644 index 0000000..4652018 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/TradePaperbackViewTest.java @@ -0,0 +1,48 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.TradePaperback; +import de.thpeetz.kontor.views.comics.TradePaperBackForm; +import de.thpeetz.kontor.views.comics.TradePaperbackView; + +@SpringBootTest +class TradePaperbackViewTest { + + @Autowired + private TradePaperbackView tradePaperbackView; + + @Test + void formShownWhenVolumeSelected() { + Grid grid = tradePaperbackView.getGrid(); + + TradePaperback firstTradePaperback = getFirstItem(grid); + + TradePaperBackForm form = tradePaperbackView.getForm(); + assertFalse(form.isVisible()); + + if (firstTradePaperback != null) { + grid.asSingleSelect().setValue(firstTradePaperback); + assertTrue(form.isVisible()); + assertEquals(firstTradePaperback.getName(), form.name.getValue()); + } + } + + private TradePaperback getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List tradePaperbacks = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(40, count); + return tradePaperbacks.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/VolumeViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/VolumeViewTest.java new file mode 100644 index 0000000..eaf0d73 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/VolumeViewTest.java @@ -0,0 +1,52 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.Volume; +import de.thpeetz.kontor.views.comics.VolumeForm; +import de.thpeetz.kontor.views.comics.VolumeView; + +@SpringBootTest +class VolumeViewTest { + + @Autowired + private VolumeView volumeView; + + @Test + void formShownWhenVolumeSelected() { + Grid grid = volumeView.getGrid(); + + Volume firstVolume = getFirstItem(grid); + + VolumeForm form = volumeView.getForm(); + assertFalse(form.isVisible()); + + if (firstVolume != null) { + grid.asSingleSelect().setValue(firstVolume); + assertTrue(form.isVisible()); + assertEquals(firstVolume.getName(), form.name.getValue()); + } + } + + private Volume getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List volumes = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(0, count); + if (count > 0) { + return volumes.get(0); + } else { + return null; + } + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/WorktypeViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/WorktypeViewTest.java new file mode 100644 index 0000000..05bf459 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/comics/views/WorktypeViewTest.java @@ -0,0 +1,51 @@ +package de.thpeetz.kontor.comics.views; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.comics.Worktype; +import de.thpeetz.kontor.views.comics.WorktypeForm; +import de.thpeetz.kontor.views.comics.WorktypeView; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@SpringBootTest +class WorktypeViewTest { + + @Autowired + private WorktypeView worktypeView; + + @Test + void formShownWhenWorktypeSelected() { + Grid grid = worktypeView.getGrid(); + + Worktype firstWorktype = getFirstItem(grid); + + WorktypeForm form = worktypeView.getForm(); + assertFalse(form.isVisible()); + + if (firstWorktype != null) { + grid.asSingleSelect().setValue(firstWorktype); + assertTrue(form.isVisible()); + assertEquals(firstWorktype.getName(), form.name.getValue()); + } + } + + private Worktype getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List worktypes = grid.getListDataView().getItems().collect(Collectors.toList()); + log.info("found worktypes: {}", worktypes); + assertEquals(3, count); + return worktypes.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardSetViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardSetViewTest.java new file mode 100644 index 0000000..980c236 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardSetViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.CardSet; +import de.thpeetz.kontor.views.tysc.CardSetForm; +import de.thpeetz.kontor.views.tysc.CardSetView; + +@SpringBootTest +class CardSetViewTest { + + @Autowired + private CardSetView cardSetView; + + @Test + void formShownWhenCardSetSelected() { + Grid grid = cardSetView.getGrid(); + CardSet firstCardSet = getFirstItem(grid); + + CardSetForm form = cardSetView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstCardSet); + assertTrue(form.isVisible()); + assertEquals(firstCardSet.getName(), form.name.getValue()); + } + + private CardSet getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List cardSets = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(15, count); + return cardSets.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardViewTest.java new file mode 100644 index 0000000..d2a70ee --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/CardViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.Card; +import de.thpeetz.kontor.views.tysc.CardForm; +import de.thpeetz.kontor.views.tysc.CardView; + +@SpringBootTest +class CardViewTest { + + @Autowired + private CardView cardView; + + @Test + void formShownWhenCardSelected() { + Grid grid = cardView.getGrid(); + Card firstCard = getFirstItem(grid); + + CardForm form = cardView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstCard); + assertTrue(form.isVisible()); + assertEquals(String.valueOf(firstCard.getCardNumber()), form.cardNumber.getValue()); + } + + private Card getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List cards = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(10, count); + return cards.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/FieldPositionViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/FieldPositionViewTest.java new file mode 100644 index 0000000..845044e --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/FieldPositionViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.FieldPosition; +import de.thpeetz.kontor.views.tysc.PositionForm; +import de.thpeetz.kontor.views.tysc.PositionView; + +@SpringBootTest +class FieldPositionViewTest { + + @Autowired + private PositionView positionView; + + @Test + void formShownWhenPositionSelected() { + Grid grid = positionView.getGrid(); + FieldPosition firstFieldPosition = getFirstItem(grid); + + PositionForm form = positionView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstFieldPosition); + assertTrue(form.isVisible()); + assertEquals(firstFieldPosition.getName(), form.name.getValue()); + } + + private FieldPosition getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List positions = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(44, count); + return positions.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/PlayerViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/PlayerViewTest.java new file mode 100644 index 0000000..d93da8d --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/PlayerViewTest.java @@ -0,0 +1,46 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.Player; +import de.thpeetz.kontor.views.tysc.PlayerForm; +import de.thpeetz.kontor.views.tysc.PlayerView; + +@SpringBootTest +class PlayerViewTest { + + @Autowired + private PlayerView playerView; + + @Test + void formShownWhenPlayerSelected() { + Grid grid = playerView.getGrid(); + Player firstPlayer = getFirstItem(grid); + + PlayerForm form = playerView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstPlayer); + assertTrue(form.isVisible()); + assertEquals(firstPlayer.getLastName(), form.lastName.getValue()); + assertEquals(firstPlayer.getFirstName(), form.firstName.getValue()); + } + + private Player getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List players = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(38, count); + return players.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/RoosterViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/RoosterViewTest.java new file mode 100644 index 0000000..c900305 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/RoosterViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.Rooster; +import de.thpeetz.kontor.views.tysc.RoosterForm; +import de.thpeetz.kontor.views.tysc.RoosterView; + +@SpringBootTest +class RoosterViewTest { + + @Autowired + private RoosterView roosterView; + + @Test + void formShownWhenRoosterSelected() { + Grid grid = roosterView.getGrid(); + Rooster firstRooster = getFirstItem(grid); + + RoosterForm form = roosterView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstRooster); + assertTrue(form.isVisible()); + assertEquals(firstRooster.getYear(), form.year.getValue()); + } + + private Rooster getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List roosters = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(11, count); + return roosters.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/SportViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/SportViewTest.java new file mode 100644 index 0000000..ec83ff3 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/SportViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.Sport; +import de.thpeetz.kontor.views.tysc.SportForm; +import de.thpeetz.kontor.views.tysc.SportView; + +@SpringBootTest +class SportViewTest { + + @Autowired + private SportView sportView; + + @Test + void formShownWhenSportSelected() { + Grid grid = sportView.getGrid(); + Sport firstSport = getFirstItem(grid); + + SportForm form = sportView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstSport); + assertTrue(form.isVisible()); + assertEquals(firstSport.getName(), form.name.getValue()); + } + + private Sport getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List sports = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(4, count); + return sports.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/TeamViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/TeamViewTest.java new file mode 100644 index 0000000..9e99a27 --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/TeamViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.Team; +import de.thpeetz.kontor.views.tysc.TeamForm; +import de.thpeetz.kontor.views.tysc.TeamView; + +@SpringBootTest +class TeamViewTest { + + @Autowired + private TeamView teamView; + + @Test + void formShownWhenTeamSelected() { + Grid grid = teamView.getGrid(); + Team firstTeam = getFirstItem(grid); + + TeamForm form = teamView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstTeam); + assertTrue(form.isVisible()); + assertEquals(firstTeam.getName(), form.name.getValue()); + } + + private Team getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List teams = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(122, count); + return teams.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/VendorViewTest.java b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/VendorViewTest.java new file mode 100644 index 0000000..9e99cee --- /dev/null +++ b/kontor-spring/src/integrationTest/java/de/thpeetz/kontor/views/tysc/VendorViewTest.java @@ -0,0 +1,45 @@ +package de.thpeetz.kontor.views.tysc; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vaadin.flow.component.grid.Grid; + +import de.thpeetz.kontor.data.tysc.Vendor; +import de.thpeetz.kontor.views.tysc.VendorForm; +import de.thpeetz.kontor.views.tysc.VendorView; + +@SpringBootTest +class VendorViewTest { + + @Autowired + private VendorView vendorView; + + @Test + void formShownWhenVendorSelected() { + Grid grid = vendorView.getGrid(); + Vendor firstVendor = getFirstItem(grid); + + VendorForm form = vendorView.getForm(); + + assertFalse(form.isVisible()); + grid.asSingleSelect().setValue(firstVendor); + assertTrue(form.isVisible()); + assertEquals(firstVendor.getName(), form.name.getValue()); + } + + private Vendor getFirstItem(Grid grid) { + int count = grid.getListDataView().getItemCount(); + List vendors = grid.getListDataView().getItems().collect(Collectors.toList()); + assertEquals(9, count); + return vendors.get(0); + } +} diff --git a/kontor-spring/src/integrationTest/resources/application.properties b/kontor-spring/src/integrationTest/resources/application.properties new file mode 100644 index 0000000..27a1935 --- /dev/null +++ b/kontor-spring/src/integrationTest/resources/application.properties @@ -0,0 +1,30 @@ +server.port=8085 + +spring.hibernate.dialect=org.hibernate.dialect.HSQLDialect +spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect +spring.datasource.driverClassName=org.hsqldb.jdbc.JDBCDriver +spring.datasource.url=jdbc:hsqldb:mem:itDb +spring.datasource.username=sa +spring.datasource.password=sa + +#spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect +#spring.datasource.driverClassName=org.sqlite.JDBC +#spring.datasource.url=jdbc:sqlite:file:./kontorITDb?cache=shared +#spring.datasource.username=sa +#spring.datasource.password=sa + +spring.jpa.defer-datasource-initialization = true +#spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=false +spring.sql.init.mode=always + +spring.mustache.check-template-location = false + +logging.level.org.atmosphere=INFO +logging.level.org.springframework.web=INFO +logging.level.guru.springframework.controllers=DEBUG +logging.level.org.hibernate=INFO +logging.level.de.thpeetz=DEBUG + +jwt.auth.secret=J6GOtcwC2NJI1l0VkHu20PacPFGTxpirBxWwynoHjsc= diff --git a/kontor-spring/src/main/frontend/generated/app-shell-imports.d.ts b/kontor-spring/src/main/frontend/generated/app-shell-imports.d.ts deleted file mode 100644 index 693da49..0000000 --- a/kontor-spring/src/main/frontend/generated/app-shell-imports.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {} \ No newline at end of file diff --git a/kontor-spring/src/main/frontend/generated/app-shell-imports.js b/kontor-spring/src/main/frontend/generated/app-shell-imports.js deleted file mode 100644 index e69de29..0000000 diff --git a/kontor-spring/src/main/frontend/generated/css.generated.d.ts b/kontor-spring/src/main/frontend/generated/css.generated.d.ts deleted file mode 100644 index ba07dc0..0000000 --- a/kontor-spring/src/main/frontend/generated/css.generated.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const applyCss: (target: Node) => void; \ No newline at end of file diff --git a/kontor-spring/src/main/frontend/generated/flow/Flow.tsx b/kontor-spring/src/main/frontend/generated/flow/Flow.tsx deleted file mode 100644 index 7172685..0000000 --- a/kontor-spring/src/main/frontend/generated/flow/Flow.tsx +++ /dev/null @@ -1,707 +0,0 @@ -/* - * Copyright 2000-2026 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -/// -import { Flow as _Flow } from 'Frontend/generated/jar-resources/Flow.js'; -import React, { useCallback, useEffect, useReducer, useRef, useState, type ReactNode } from 'react'; -import { matchRoutes, useBlocker, useLocation, useNavigate, type NavigateOptions, useHref } from 'react-router'; -import { createPortal } from 'react-dom'; - -const flow = new _Flow({ - imports: () => import('Frontend/generated/flow/generated-flow-imports.js') -}); - -const router = { - render() { - return Promise.resolve(); - } -}; - -const flowReact : { active: boolean } = { - active: false, -} - -// ClickHandler for vaadin-router-go event is copied from vaadin/router click.js -// @ts-ignore -function getAnchorOrigin(anchor) { - // IE11: on HTTP and HTTPS the default port is not included into - // window.location.origin, so won't include it here either. - const port = anchor.port; - const protocol = anchor.protocol; - const defaultHttp = protocol === 'http:' && port === '80'; - const defaultHttps = protocol === 'https:' && port === '443'; - const host = - defaultHttp || defaultHttps - ? anchor.hostname // does not include the port number (e.g. www.example.org) - : anchor.host; // does include the port number (e.g. www.example.org:80) - return `${protocol}//${host}`; -} - -function normalizeURL(url: URL): void | string { - // ignore click if baseURI does not match the document (external) - if (!url.href.startsWith(document.baseURI)) { - return; - } - - // Normalize path against baseURI - return '/' + url.href.slice(document.baseURI.length); -} - -function extractURL(event: MouseEvent): void | URL { - // ignore the click if the default action is prevented - if (event.defaultPrevented) { - return; - } - - // ignore the click if not with the primary mouse button - if (event.button !== 0) { - return; - } - - // ignore the click if a modifier key is pressed - if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey) { - return; - } - - // find the element that the click is at (or within) - let maybeAnchor = event.target; - const path = event.composedPath - ? event.composedPath() - : // @ts-ignore - event.path || []; - - // example to check: `for...of` loop here throws the "Not yet implemented" error - for (let i = 0; i < path.length; i++) { - const target = path[i]; - if (target.nodeName && target.nodeName.toLowerCase() === 'a') { - maybeAnchor = target; - break; - } - } - - // @ts-ignore - while (maybeAnchor && maybeAnchor.nodeName.toLowerCase() !== 'a') { - // @ts-ignore - maybeAnchor = maybeAnchor.parentNode; - } - - // ignore the click if not at an element - // @ts-ignore - if (!maybeAnchor || maybeAnchor.nodeName.toLowerCase() !== 'a') { - return; - } - - const anchor = maybeAnchor as HTMLAnchorElement; - - // ignore the click if the element has a non-default target - if (anchor.target && anchor.target.toLowerCase() !== '_self') { - return; - } - - // ignore the click if the element has the 'download' attribute - if (anchor.hasAttribute('download')) { - return; - } - - // ignore the click if the element has the 'router-ignore' attribute - if (anchor.hasAttribute('router-ignore')) { - return; - } - - // ignore the click if the target URL is a fragment on the current page - if (anchor.pathname === window.location.pathname && anchor.hash !== '') { - // @ts-ignore - window.location.hash = anchor.hash; - return; - } - - // ignore the click if the target is external to the app - // In IE11 HTMLAnchorElement does not have the `origin` property - // @ts-ignore - const origin = anchor.origin || getAnchorOrigin(anchor); - if (origin !== window.location.origin) { - return; - } - - return new URL(anchor.href, anchor.baseURI); -} - -function extractPath(event: MouseEvent): void | string { - const url = extractURL(event); - if (!url) { - return; - } - return normalizeURL(url); -} - -export const registerGlobalClickHandler = () => { - window.addEventListener('click', (event: MouseEvent) => { - if (flowReact.active) { - return; - } - const url = extractURL(event); - if (!url) { - return; - } - // ignore click if baseURI does not match the document (external) - if (!url.href.startsWith(document.baseURI)) { - return; - } - if (event && event.preventDefault) { - event.preventDefault(); - } - - // Normalize path against baseURI - const path = url.pathname + url.search + url.hash; - const state = {...window.history.state} - if (state.idx !== undefined) { - state.idx = state.idx + 1; - } - window.history.pushState(state, '', path); - window.dispatchEvent(new PopStateEvent('popstate')); - }, { capture: false }); -}; - -/** - * Fire 'vaadin-navigated' event to inform components of navigation. - * @param pathname pathname of navigation - * @param search search of navigation - */ -function fireNavigated(pathname: string, search: string) { - setTimeout(() => { - window.dispatchEvent( - new CustomEvent('vaadin-navigated', { - detail: { - pathname, - search - } - }) - ); - // @ts-ignore - delete window.Vaadin.Flow.navigation; - }); -} - -function postpone() {} - -const prevent = () => postpone; - -type RouterContainer = Awaited>; - -type PortalEntry = { - readonly children: ReactNode; - readonly domNode: HTMLElement; -}; - -type FlowPortalProps = React.PropsWithChildren< - Readonly<{ - domNode: HTMLElement; - onRemove(): void; - }> ->; - -function FlowPortal({ children, domNode, onRemove }: FlowPortalProps) { - useEffect(() => { - domNode.addEventListener( - 'flow-portal-remove', - (event: Event) => { - event.preventDefault(); - onRemove(); - }, - { once: true } - ); - }, []); - - return createPortal(children, domNode); -} - -const ADD_FLOW_PORTAL = 'ADD_FLOW_PORTAL'; - -type AddFlowPortalAction = Readonly<{ - type: typeof ADD_FLOW_PORTAL; - portal: React.ReactElement; -}>; - -function addFlowPortal(portal: React.ReactElement): AddFlowPortalAction { - return { - type: ADD_FLOW_PORTAL, - portal - }; -} - -const REMOVE_FLOW_PORTAL = 'REMOVE_FLOW_PORTAL'; - -type RemoveFlowPortalAction = Readonly<{ - type: typeof REMOVE_FLOW_PORTAL; - key: string; -}>; - -function removeFlowPortal(key: string): RemoveFlowPortalAction { - return { - type: REMOVE_FLOW_PORTAL, - key - }; -} - -function flowPortalsReducer( - portals: readonly React.ReactElement[], - action: AddFlowPortalAction | RemoveFlowPortalAction -) { - switch (action.type) { - case ADD_FLOW_PORTAL: - return [...portals, action.portal]; - case REMOVE_FLOW_PORTAL: - return portals.filter(({ key }) => key !== action.key); - default: - return portals; - } -} - -type NavigateOpts = { - to: string; - callback: boolean; - opts?: NavigateOptions; -}; - -type NavigateFn = (to: string, callback: boolean, opts?: NavigateOptions) => void; - -let navigateInProgress = false; -/** - * A hook providing the `navigate(path: string, opts?: NavigateOptions)` function - * with React Router API that has more consistent history updates. Uses internal - * queue for processing navigate calls. - */ -function useQueuedNavigate( - waitReference: React.MutableRefObject | undefined>, - navigated: React.MutableRefObject -): NavigateFn { - const navigate = useNavigate(); - const navigateQueue = useRef([]).current; - const [navigateQueueLength, setNavigateQueueLength] = useState(0); - - const dequeueNavigation = useCallback(() => { - if (navigateInProgress) { - dequeueNavigationAfterCurrentTask(); - return; - } - - const navigateArgs = navigateQueue.shift(); - if (navigateArgs === undefined) { - // Empty queue, do nothing. - return; - } - - const blockingNavigate = async () => { - if (waitReference.current) { - await waitReference.current; - waitReference.current = undefined; - } - navigated.current = !navigateArgs.callback; - navigateInProgress = true; - navigate(navigateArgs.to, navigateArgs.opts); - setNavigateQueueLength(navigateQueue.length); - }; - blockingNavigate(); - }, [navigate, setNavigateQueueLength]); - - const dequeueNavigationAfterCurrentTask = useCallback(() => { - setTimeout(dequeueNavigation, 0); - }, [dequeueNavigation]); - - const enqueueNavigation = useCallback( - (to: string, callback: boolean, opts?: NavigateOptions) => { - navigateQueue.push({ to: to, callback: callback, opts: opts }); - setNavigateQueueLength(navigateQueue.length); - if (navigateQueue.length === 1) { - // The first navigation can be started right after any pending sync - // jobs, which could add more navigations to the queue. - dequeueNavigationAfterCurrentTask(); - } - }, - [setNavigateQueueLength, dequeueNavigationAfterCurrentTask] - ); - - useEffect( - () => () => { - // The Flow component has rendered, but history might not be - // updated yet, as React Router does it asynchronously. - // Use microtask callback for history consistency. - dequeueNavigationAfterCurrentTask(); - }, - [navigateQueueLength, dequeueNavigationAfterCurrentTask] - ); - - return enqueueNavigation; -} - -const flowNavigation = () => { - // @ts-ignore - window.Vaadin.Flow.navigation = true; -}; - -function Flow() { - const ref = useRef(null); - const navigate = useNavigate(); - const blocker = useBlocker(({ currentLocation, nextLocation }) => { - navigated.current = - navigated.current || - (nextLocation.pathname === currentLocation.pathname && - nextLocation.search === currentLocation.search && - nextLocation.hash === currentLocation.hash); - return true; - }); - const location = useLocation(); - const navigated = useRef(false); - const blockerHandled = useRef(false); - const fromAnchor = useRef(false); - const containerRef = useRef(undefined); - const roundTrip = useRef | undefined>(undefined); - const queuedNavigate = useQueuedNavigate(roundTrip, navigated); - const basename = useHref('/'); - - // portalsReducer function is used as state outside the Flow component. - const [portals, dispatchPortalAction] = useReducer(flowPortalsReducer, []); - - const addPortalEventHandler = useCallback( - (event: CustomEvent) => { - event.preventDefault(); - - const key = Math.random().toString(36).slice(2); - dispatchPortalAction( - addFlowPortal( - dispatchPortalAction(removeFlowPortal(key))} - > - {event.detail.children} - - ) - ); - }, - [dispatchPortalAction] - ); - - const navigateEventHandler = useCallback( - (event: MouseEvent) => { - const path = extractPath(event); - if (!path) { - return; - } - - if (event && event.preventDefault) { - event.preventDefault(); - } - navigated.current = false; - // When navigation is triggered by click on a link, fromAnchor is set to true - // in order to get a server round-trip even when navigating to the same URL again - fromAnchor.current = true; - // @ts-ignore - window.Vaadin.Flow.navigation = true; - navigate(path); - // Dispatch close event for overlay drawer on click navigation. - window.dispatchEvent(new CustomEvent('close-overlay-drawer')); - }, - [navigate] - ); - - const vaadinRouterGoEventHandler = useCallback( - (event: CustomEvent) => { - const url = event.detail; - const path = normalizeURL(url); - if (!path) { - return; - } - - event.preventDefault(); - navigate(path); - }, - [navigate] - ); - - const vaadinNavigateEventHandler = useCallback( - (event: CustomEvent<{ state: unknown; url: string; replace?: boolean; callback: boolean }>) => { - // @ts-ignore - window.Vaadin.Flow.navigation = true; - // clean base uri away if for instance redirected to http://localhost/path/user?id=10 - // else the whole http... will be appended to the url see #19580 - const path = event.detail.url.startsWith(document.baseURI) - ? '/' + event.detail.url.slice(document.baseURI.length) - : '/' + event.detail.url; - fromAnchor.current = false; - queuedNavigate(path, event.detail.callback, { state: event.detail.state, replace: event.detail.replace }); - }, - [navigate] - ); - - const redirect = useCallback( - (path: string) => { - return () => { - navigate(path, { replace: true }); - }; - }, - [navigate] - ); - - useEffect(() => { - // @ts-ignore - window.addEventListener('vaadin-router-go', vaadinRouterGoEventHandler); - // @ts-ignore - window.addEventListener('vaadin-navigate', vaadinNavigateEventHandler); - - return () => { - // @ts-ignore - window.removeEventListener('vaadin-router-go', vaadinRouterGoEventHandler); - // @ts-ignore - window.removeEventListener('vaadin-navigate', vaadinNavigateEventHandler); - }; - }, [vaadinRouterGoEventHandler, vaadinNavigateEventHandler]); - - useEffect(() => { - // @ts-ignore - window.addEventListener("popstate", flowNavigation); - window.addEventListener('click', navigateEventHandler); - flowReact.active = true; - - return () => { - containerRef.current?.parentNode?.removeChild(containerRef.current); - containerRef.current?.removeEventListener('flow-portal-add', addPortalEventHandler as EventListener); - containerRef.current = undefined; - // @ts-ignore - window.removeEventListener("popstate", flowNavigation); - window.removeEventListener('click', navigateEventHandler); - flowReact.active = false; - }; - }, []); - - useEffect(() => { - if (blocker.state === 'blocked') { - if (blockerHandled.current) { - // Blocker is handled and the new navigation - // gets queued to be executed after the current handling ends. - const { pathname, state } = blocker.location; - // Clear base name to not get /baseName/basename/path - const pathNoBase = pathname.substring(basename.length); - // path should always start with / else react-router will append to current url - queuedNavigate(pathNoBase.startsWith('/') ? pathNoBase : '/' + pathNoBase, true, { - state: state, - replace: true - }); - return; - } - blockerHandled.current = true; - let blockingPromise: any; - roundTrip.current = new Promise( - (resolve, reject) => (blockingPromise = { resolve: resolve, reject: reject }) - ); - // Release blocker handling after promise is fulfilled - roundTrip.current.then( - () => (blockerHandled.current = false), - () => (blockerHandled.current = false) - ); - - // Proceed to the blocked location, unless the navigation originates from a click on a link. - // In that case continue with function execution and perform a server round-trip - if (navigated.current && !fromAnchor.current) { - blocker.proceed(); - blockingPromise.resolve(); - navigateInProgress = false; - return; - } - fromAnchor.current = false; - const { pathname, search } = blocker.location; - const routes = ((window as any)?.Vaadin?.routesConfig || []) as any[]; - let matched = matchRoutes(Array.from(routes), pathname); - - // Navigation between server routes - // @ts-ignore - if (matched && matched.filter((path) => path.route?.element?.type?.name === Flow.name).length != 0) { - containerRef.current?.onBeforeEnter?.call( - containerRef?.current, - { pathname, search }, - { - prevent() { - blocker.reset(); - blockingPromise.resolve(); - navigateInProgress = false; - navigated.current = false; - }, - redirect, - continue() { - blocker.proceed(); - blockingPromise.resolve(); - navigateInProgress = false; - } - }, - router - ); - navigated.current = true; - } else { - // For covering the 'server -> client' use case - Promise.resolve( - containerRef.current?.onBeforeLeave?.call( - containerRef?.current, - { - pathname, - search - }, - { prevent }, - router - ) - ).then((cmd: unknown) => { - if (cmd === postpone && containerRef.current) { - // postponed navigation: expose existing blocker to Flow - containerRef.current.serverConnected = (cancel) => { - if (cancel) { - blocker.reset(); - } else { - blocker.proceed(); - } - blockingPromise.resolve(); - navigateInProgress = false; - }; - } else { - // permitted navigation: proceed with the blocker - blocker.proceed(); - blockingPromise.resolve(); - navigateInProgress = false; - } - }); - } - } - }, [blocker.state, blocker.location]); - - useEffect(() => { - if (blocker.state === 'blocked') { - return; - } - if (navigated.current) { - navigated.current = false; - fireNavigated(location.pathname, location.search); - return; - } - flow.serverSideRoutes[0] - .action({ pathname: location.pathname, search: location.search }) - .then((container) => { - const outlet = ref.current?.parentNode; - if (outlet && outlet !== container.parentNode) { - outlet.append(container); - container.addEventListener('flow-portal-add', addPortalEventHandler as EventListener); - containerRef.current = container; - } - return container.onBeforeEnter?.call( - container, - // Always add base to path as it is cleaned in getFlowRoutePath and will break a route starting with basename - { pathname: basename + location.pathname, search: location.search }, - { - prevent, - redirect, - continue() { - fireNavigated(location.pathname, location.search); - } - }, - router - ); - }) - .then((result: unknown) => { - if (typeof result === 'function') { - result(); - } - }); - }, [location]); - - return ( - <> - - {portals} - - ); -} -Flow.type = 'FlowContainer'; // This is for copilot to recognize this - -export const serverSideRoutes = [{ path: '/*', element: }]; - -/** - * Load the script for an exported WebComponent with the given tag - * - * @param tag name of the exported web-component to load - * - * @returns Promise(resolve, reject) that is fulfilled on script load - */ -export const loadComponentScript = (tag: String): Promise => { - return new Promise((resolve, reject) => { - useEffect(() => { - const script = document.createElement('script'); - script.src = `/web-component/${tag}.js`; - script.onload = function () { - resolve(); - }; - script.onerror = function (err) { - reject(err); - }; - document.head.appendChild(script); - - return () => { - document.head.removeChild(script); - }; - }, []); - }); -}; - -interface Properties { - [key: string]: string; -} - -/** - * Load WebComponent script and create a React element for the WebComponent. - * - * @param tag custom web-component tag name. - * @param props optional Properties object to create element attributes with - * @param onload optional callback to be called for script onload - * @param onerror optional callback for error loading the script - */ -export const reactElement = (tag: string, props?: Properties, onload?: () => void, onerror?: (err: any) => void) => { - loadComponentScript(tag).then( - () => onload?.(), - (err) => { - if (onerror) { - onerror(err); - } else { - console.error(`Failed to load script for ${tag}.`, err); - } - } - ); - - if (props) { - return React.createElement(tag, props); - } - return React.createElement(tag); -}; - -export default Flow; - -// @ts-ignore -if (import.meta.hot) { - // @ts-ignore - import.meta.hot.accept((newModule) => { - // A hot module replace for Flow.tsx happens when any JS/TS imported through @JsModule - // or similar is updated because this updates generated-flow-imports.js and that in turn - // is imported by this file. We have no means of hot replacing those files, e.g. some - // custom lit element so we need to reload the page. */ - if (newModule) { - window.location.reload(); - } - }); -} diff --git a/kontor-spring/src/main/frontend/generated/flow/ReactAdapter.tsx b/kontor-spring/src/main/frontend/generated/flow/ReactAdapter.tsx deleted file mode 100644 index 479b506..0000000 --- a/kontor-spring/src/main/frontend/generated/flow/ReactAdapter.tsx +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright 2000-2026 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -import { createRoot, Root } from 'react-dom/client'; -import { createElement, type Dispatch, type ReactElement, type ReactNode, useEffect, useReducer } from 'react'; - -type FlowStateKeyChangedAction = Readonly<{ - type: 'stateKeyChanged'; - key: K; - value: V; -}>; - -type FlowStateReducerAction = FlowStateKeyChangedAction; - -function stateReducer>>(state: S, action: FlowStateReducerAction): S { - switch (action.type) { - case 'stateKeyChanged': - const { value } = action; - return { - ...state, - key: value - } as S; - default: - return state; - } -} - -type DispatchEvent = T extends undefined ? () => boolean : (value: T) => boolean; - -const emptyAction: Dispatch = () => {}; - -/** - * An object with APIs exposed for using in the {@link ReactAdapterElement#render} - * implementation. - */ -export type RenderHooks = { - /** - * A hook API for using stateful JS properties of the Web Component from - * the React `render()`. - * - * @typeParam T - Type of the state value - * - * @param key - Web Component property name, which is used for two-way - * value propagation from the server and back. - * @param initialValue - Fallback initial value (optional). Only applies if - * the Java component constructor does not invoke `setState`. - * @returns A tuple with two values: - * 1. The current state. - * 2. The `set` function for changing the state and triggering render - * @protected - */ - readonly useState: ReactAdapterElement['useState']; - - /** - * A hook helper to simplify dispatching a `CustomEvent` on the Web - * Component from React. - * - * @typeParam T - The type for `event.detail` value (optional). - * - * @param type - The `CustomEvent` type string. - * @param options - The settings for the `CustomEvent`. - * @returns The `dispatch` function. The function parameters change - * depending on the `T` generic type: - * - For `undefined` type (default), has no parameters. - * - For other types, has one parameter for the `event.detail` value of that type. - * @protected - */ - readonly useCustomEvent: ReactAdapterElement['useCustomEvent']; - - /** - * A hook helper to generate the content element with name attribute to bind - * the server-side Flow element for this component. - * - * This is used together with {@link ReactAdapterComponent::getContentElement} - * to have server-side component attach to the correct client element. - * - * Usage as follows: - * - * const content = hooks.useContent('content'); - * return <> - * {content} - * ; - * - * Note! Not adding the 'content' element into the dom will have the - * server throw a IllegalStateException for element with tag name not found. - * - * @param name - The name attribute of the element - */ - readonly useContent: ReactAdapterElement['useContent']; -}; - -interface ReadyCallbackFunction { - (): void; -} - -/** - * A base class for Web Components that render using React. Enables creating - * adapters for integrating React components with Flow. Intended for use with - * `ReactAdapterComponent` Flow Java class. - */ -export abstract class ReactAdapterElement extends HTMLElement { - #root: Root | undefined = undefined; - #rootRendered: boolean = false; - #rendering: ReactNode | undefined = undefined; - - #state: Record = Object.create(null); - #stateSetters = new Map>(); - #customEvents = new Map>(); - #dispatchFlowState: Dispatch = emptyAction; - - #readyCallback = new Map(); - - readonly #renderHooks: RenderHooks; - - readonly #Wrapper: () => ReactElement | null; - - #unmounting?: Promise; - - constructor() { - super(); - this.#renderHooks = { - useState: this.useState.bind(this), - useCustomEvent: this.useCustomEvent.bind(this), - useContent: this.useContent.bind(this) - }; - this.#Wrapper = this.#renderWrapper.bind(this); - this.#markAsUsed(); - } - - public async connectedCallback() { - this.#rendering = createElement(this.#Wrapper); - const createNewRoot = this.dispatchEvent( - new CustomEvent('flow-portal-add', { - bubbles: true, - cancelable: true, - composed: true, - detail: { - children: this.#rendering, - domNode: this - } - }) - ); - - if (!createNewRoot || this.#root) { - return; - } - - await this.#unmounting; - - this.#root = createRoot(this); - this.#maybeRenderRoot(); - this.#root.render(this.#rendering); - } - - /** - * Add a callback for specified element identifier to be called when - * react element is ready. - *

- * For internal use only. May be renamed or removed in a future release. - * - * @param id element identifier that callback is for - * @param readyCallback callback method to be informed on element ready state - * @internal - */ - public addReadyCallback(id: string, readyCallback: ReadyCallbackFunction) { - this.#readyCallback.set(id, readyCallback); - } - - public async disconnectedCallback() { - if (!this.#root) { - this.dispatchEvent( - new CustomEvent('flow-portal-remove', { - bubbles: true, - cancelable: true, - composed: true, - detail: { - children: this.#rendering, - domNode: this - } - }) - ); - } else { - this.#unmounting = Promise.resolve(); - await this.#unmounting; - this.#root.unmount(); - this.#root = undefined; - } - this.#rootRendered = false; - this.#rendering = undefined; - } - - /** - * A hook API for using stateful JS properties of the Web Component from - * the React `render()`. - * - * @typeParam T - Type of the state value - * - * @param key - Web Component property name, which is used for two-way - * value propagation from the server and back. - * @param initialValue - Fallback initial value (optional). Only applies if - * the Java component constructor does not invoke `setState`. - * @returns A tuple with two values: - * 1. The current state. - * 2. The `set` function for changing the state and triggering render - * @protected - */ - protected useState(key: string, initialValue?: T): [value: T, setValue: Dispatch] { - if (this.#stateSetters.has(key)) { - return [this.#state[key] as T, this.#stateSetters.get(key)!]; - } - - const value = ((this as Record)[key] as T) ?? initialValue!; - this.#state[key] = value; - Object.defineProperty(this, key, { - enumerable: true, - get(): T { - return this.#state[key]; - }, - set(nextValue: T) { - this.#state[key] = nextValue; - this.#dispatchFlowState({ type: 'stateKeyChanged', key, value }); - } - }); - - const dispatchChangedEvent = this.useCustomEvent<{ value: T }>(`${key}-changed`, { detail: { value } }); - const setValue = (value: T) => { - this.#state[key] = value; - dispatchChangedEvent({ value }); - this.#dispatchFlowState({ type: 'stateKeyChanged', key, value }); - }; - this.#stateSetters.set(key, setValue as Dispatch); - return [value, setValue]; - } - - /** - * A hook helper to simplify dispatching a `CustomEvent` on the Web - * Component from React. - * - * @typeParam T - The type for `event.detail` value (optional). - * - * @param type - The `CustomEvent` type string. - * @param options - The settings for the `CustomEvent`. - * @returns The `dispatch` function. The function parameters change - * depending on the `T` generic type: - * - For `undefined` type (default), has no parameters. - * - For other types, has one parameter for the `event.detail` value of that type. - * @protected - */ - protected useCustomEvent(type: string, options: CustomEventInit = {}): DispatchEvent { - if (!this.#customEvents.has(type)) { - const dispatch = ((detail?: T) => { - const eventInitDict = - detail === undefined - ? options - : { - ...options, - detail - }; - const event = new CustomEvent(type, eventInitDict); - return this.dispatchEvent(event); - }) as DispatchEvent; - this.#customEvents.set(type, dispatch as DispatchEvent); - return dispatch; - } - return this.#customEvents.get(type)! as DispatchEvent; - } - - /** - * The Web Component render function. To be implemented by users with React. - * - * @param hooks - the adapter APIs exposed for the implementation. - * @protected - */ - protected abstract render(hooks: RenderHooks): ReactElement | null; - - /** - * Prepare content container for Flow to bind server Element to. - * - * @param name container name attribute matching server name attribute - * @protected - */ - protected useContent(name: string): ReactElement | null { - useEffect(() => { - this.#readyCallback.get(name)?.(); - }, []); - return createElement('flow-content-container', { name, style: { display: 'contents' } }); - } - - #maybeRenderRoot() { - if (this.#rootRendered || !this.#root) { - return; - } - - this.#root.render(createElement(this.#Wrapper)); - this.#rootRendered = true; - } - - #renderWrapper(): ReactElement | null { - const [state, dispatchFlowState] = useReducer(stateReducer, this.#state); - this.#state = state; - this.#dispatchFlowState = dispatchFlowState; - return this.render(this.#renderHooks); - } - - #markAsUsed(): void { - // @ts-ignore - let vaadinObject = window.Vaadin || {}; - // @ts-ignore - if (vaadinObject.developmentMode) { - vaadinObject.registrations = vaadinObject.registrations || []; - vaadinObject.registrations.push({ - is: 'ReactAdapterElement', - version: '25.2.6' - }); - } - } -} diff --git a/kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.d.ts b/kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.d.ts deleted file mode 100644 index 693da49..0000000 --- a/kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {} \ No newline at end of file diff --git a/kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.js b/kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.js deleted file mode 100644 index f9b97a8..0000000 --- a/kontor-spring/src/main/frontend/generated/flow/generated-flow-imports.js +++ /dev/null @@ -1,105 +0,0 @@ -import '@vaadin/field-highlighter/src/vaadin-field-highlighter.js'; -import '@vaadin/common-frontend/ConnectionIndicator.js'; -import '@vaadin/accordion/src/vaadin-accordion.js'; -import '@vaadin/details/src/vaadin-details.js'; -import '@vaadin/accordion/src/vaadin-accordion-panel.js'; -import '@vaadin/app-layout/src/vaadin-app-layout.js'; -import '@vaadin/button/src/vaadin-button.js'; -import '@vaadin/app-layout/src/vaadin-drawer-toggle.js'; -import '@vaadin/avatar/src/vaadin-avatar.js'; -import '@vaadin/avatar-group/src/vaadin-avatar-group.js'; -import '@vaadin/badge/src/vaadin-badge.js'; -import '@vaadin/breadcrumbs/src/vaadin-breadcrumbs-item.js'; -import '@vaadin/card/src/vaadin-card.js'; -import '@vaadin/checkbox/src/vaadin-checkbox.js'; -import '@vaadin/checkbox-group/src/vaadin-checkbox-group.js'; -import '@vaadin/combo-box/src/vaadin-combo-box.js'; -import 'Frontend/generated/jar-resources/flow-component-renderer.js'; -import 'Frontend/generated/jar-resources/flow-component-directive.js'; -import 'Frontend/generated/jar-resources/comboBoxConnector.js'; -import '@vaadin/multi-select-combo-box/src/vaadin-multi-select-combo-box.js'; -import '@vaadin/confirm-dialog/src/vaadin-confirm-dialog.js'; -import '@vaadin/context-menu/src/vaadin-context-menu.js'; -import '@vaadin/tooltip/src/vaadin-tooltip.js'; -import 'Frontend/generated/jar-resources/contextMenuConnector.js'; -import 'Frontend/generated/jar-resources/contextMenuTargetConnector.js'; -import '@vaadin/custom-field/src/vaadin-custom-field.js'; -import '@vaadin/date-picker/src/vaadin-date-picker.js'; -import 'Frontend/generated/jar-resources/datepickerConnector.js'; -import '@vaadin/date-time-picker/src/vaadin-date-time-picker.js'; -import '@vaadin/time-picker/src/vaadin-time-picker.js'; -import 'Frontend/generated/jar-resources/vaadin-time-picker/timepickerConnector.js'; -import 'Frontend/generated/jar-resources/vaadin-time-picker/helpers.js'; -import '@vaadin/dialog/src/vaadin-dialog.js'; -import 'Frontend/generated/jar-resources/dndConnector.js'; -import '@vaadin/form-layout/src/vaadin-form-layout.js'; -import '@vaadin/form-layout/src/vaadin-form-item.js'; -import '@vaadin/form-layout/src/vaadin-form-row.js'; -import '@vaadin/grid/src/vaadin-grid-column-group.js'; -import '@vaadin/grid/src/vaadin-grid.js'; -import '@vaadin/grid/src/vaadin-grid-column.js'; -import '@vaadin/grid/src/vaadin-grid-sorter.js'; -import 'Frontend/generated/jar-resources/gridConnector.ts'; -import 'Frontend/generated/jar-resources/vaadin-grid-flow-selection-column.js'; -import '@vaadin/icon/src/vaadin-icon.js'; -import '@vaadin/icons/vaadin-iconset.js'; -import '@vaadin/list-box/src/vaadin-list-box.js'; -import '@vaadin/item/src/vaadin-item.js'; -import '@vaadin/login/src/vaadin-login-form.js'; -import '@vaadin/login/src/vaadin-login-overlay.js'; -import '@vaadin/markdown/src/vaadin-markdown.js'; -import '@vaadin/master-detail-layout/src/vaadin-master-detail-layout.js'; -import 'Frontend/generated/jar-resources/menubarConnector.js'; -import '@vaadin/menu-bar/src/vaadin-menu-bar.js'; -import '@vaadin/message-input/src/vaadin-message-input.js'; -import 'Frontend/generated/jar-resources/messageListConnector.js'; -import '@vaadin/message-list/src/vaadin-message-list.js'; -import '@vaadin/notification/src/vaadin-notification.js'; -import '@vaadin/horizontal-layout/src/vaadin-horizontal-layout.js'; -import '@vaadin/scroller/src/vaadin-scroller.js'; -import '@vaadin/vertical-layout/src/vaadin-vertical-layout.js'; -import '@vaadin/popover/src/vaadin-popover.js'; -import 'Frontend/generated/jar-resources/vaadin-popover/popover.ts'; -import '@vaadin/progress-bar/src/vaadin-progress-bar.js'; -import '@vaadin/radio-group/src/vaadin-radio-button.js'; -import '@vaadin/radio-group/src/vaadin-radio-group.js'; -import 'Frontend/generated/jar-resources/ReactRouterOutletElement.tsx'; -import '@vaadin/select/src/vaadin-select.js'; -import 'Frontend/generated/jar-resources/selectConnector.js'; -import 'Frontend/generated/jar-resources/tooltip.ts'; -import 'Frontend/generated/jar-resources/disableOnClickFunctions.js'; -import '@vaadin/side-nav/src/vaadin-side-nav.js'; -import '@vaadin/side-nav/src/vaadin-side-nav-item.js'; -import '@vaadin/slider/src/vaadin-range-slider.js'; -import '@vaadin/slider/src/vaadin-slider.js'; -import '@vaadin/split-layout/src/vaadin-split-layout.js'; -import '@vaadin/tabs/src/vaadin-tab.js'; -import '@vaadin/tabsheet/src/vaadin-tabsheet.js'; -import '@vaadin/tabs/src/vaadin-tabs.js'; -import 'Frontend/generated/jar-resources/vaadin-big-decimal-field.js'; -import '@vaadin/email-field/src/vaadin-email-field.js'; -import '@vaadin/integer-field/src/vaadin-integer-field.js'; -import '@vaadin/number-field/src/vaadin-number-field.js'; -import '@vaadin/password-field/src/vaadin-password-field.js'; -import '@vaadin/text-area/src/vaadin-text-area.js'; -import '@vaadin/text-field/src/vaadin-text-field.js'; -import 'Frontend/generated/jar-resources/lit-renderer.ts'; -import '@vaadin/grid/src/vaadin-grid-tree-toggle.js'; -import 'Frontend/generated/jar-resources/treeGridConnector.ts'; -import '@vaadin/upload/src/vaadin-upload.js'; -import '@vaadin/upload/src/vaadin-upload-button.js'; -import '@vaadin/upload/src/vaadin-upload-drop-zone.js'; -import '@vaadin/upload/src/vaadin-upload-file-list.js'; -import 'Frontend/generated/jar-resources/vaadin-upload-manager-connector.ts'; -import '@vaadin/virtual-list/src/vaadin-virtual-list.js'; -import 'Frontend/generated/jar-resources/virtualListConnector.js'; -import '@vaadin/vaadin-lumo-styles/vaadin-iconset.js'; -const loadOnDemand = (key) => { return Promise.resolve(0); } -window.Vaadin = window.Vaadin || {}; -window.Vaadin.Flow = window.Vaadin.Flow || {}; -window.Vaadin.Flow.loadOnDemand = loadOnDemand; -window.Vaadin.Flow.resetFocus = () => { - let ae=document.activeElement; - while(ae&&ae.shadowRoot) ae = ae.shadowRoot.activeElement; - return !ae || ae.blur() || ae.focus() || true; -} \ No newline at end of file diff --git a/kontor-spring/src/main/frontend/generated/flow/generated-flow-webcomponent-imports.js b/kontor-spring/src/main/frontend/generated/flow/generated-flow-webcomponent-imports.js deleted file mode 100644 index ede4b1a..0000000 --- a/kontor-spring/src/main/frontend/generated/flow/generated-flow-webcomponent-imports.js +++ /dev/null @@ -1,107 +0,0 @@ -import { injectGlobalWebcomponentCss } from 'Frontend/generated/jar-resources/theme-util.js'; - -import '@vaadin/field-highlighter/src/vaadin-field-highlighter.js'; -import '@vaadin/common-frontend/ConnectionIndicator.js'; -import '@vaadin/accordion/src/vaadin-accordion.js'; -import '@vaadin/details/src/vaadin-details.js'; -import '@vaadin/accordion/src/vaadin-accordion-panel.js'; -import '@vaadin/app-layout/src/vaadin-app-layout.js'; -import '@vaadin/button/src/vaadin-button.js'; -import '@vaadin/app-layout/src/vaadin-drawer-toggle.js'; -import '@vaadin/avatar/src/vaadin-avatar.js'; -import '@vaadin/avatar-group/src/vaadin-avatar-group.js'; -import '@vaadin/badge/src/vaadin-badge.js'; -import '@vaadin/breadcrumbs/src/vaadin-breadcrumbs-item.js'; -import '@vaadin/card/src/vaadin-card.js'; -import '@vaadin/checkbox/src/vaadin-checkbox.js'; -import '@vaadin/checkbox-group/src/vaadin-checkbox-group.js'; -import '@vaadin/combo-box/src/vaadin-combo-box.js'; -import 'Frontend/generated/jar-resources/flow-component-renderer.js'; -import 'Frontend/generated/jar-resources/flow-component-directive.js'; -import 'Frontend/generated/jar-resources/comboBoxConnector.js'; -import '@vaadin/multi-select-combo-box/src/vaadin-multi-select-combo-box.js'; -import '@vaadin/confirm-dialog/src/vaadin-confirm-dialog.js'; -import '@vaadin/context-menu/src/vaadin-context-menu.js'; -import '@vaadin/tooltip/src/vaadin-tooltip.js'; -import 'Frontend/generated/jar-resources/contextMenuConnector.js'; -import 'Frontend/generated/jar-resources/contextMenuTargetConnector.js'; -import '@vaadin/custom-field/src/vaadin-custom-field.js'; -import '@vaadin/date-picker/src/vaadin-date-picker.js'; -import 'Frontend/generated/jar-resources/datepickerConnector.js'; -import '@vaadin/date-time-picker/src/vaadin-date-time-picker.js'; -import '@vaadin/time-picker/src/vaadin-time-picker.js'; -import 'Frontend/generated/jar-resources/vaadin-time-picker/timepickerConnector.js'; -import 'Frontend/generated/jar-resources/vaadin-time-picker/helpers.js'; -import '@vaadin/dialog/src/vaadin-dialog.js'; -import 'Frontend/generated/jar-resources/dndConnector.js'; -import '@vaadin/form-layout/src/vaadin-form-layout.js'; -import '@vaadin/form-layout/src/vaadin-form-item.js'; -import '@vaadin/form-layout/src/vaadin-form-row.js'; -import '@vaadin/grid/src/vaadin-grid-column-group.js'; -import '@vaadin/grid/src/vaadin-grid.js'; -import '@vaadin/grid/src/vaadin-grid-column.js'; -import '@vaadin/grid/src/vaadin-grid-sorter.js'; -import 'Frontend/generated/jar-resources/gridConnector.ts'; -import 'Frontend/generated/jar-resources/vaadin-grid-flow-selection-column.js'; -import '@vaadin/icon/src/vaadin-icon.js'; -import '@vaadin/icons/vaadin-iconset.js'; -import '@vaadin/list-box/src/vaadin-list-box.js'; -import '@vaadin/item/src/vaadin-item.js'; -import '@vaadin/login/src/vaadin-login-form.js'; -import '@vaadin/login/src/vaadin-login-overlay.js'; -import '@vaadin/markdown/src/vaadin-markdown.js'; -import '@vaadin/master-detail-layout/src/vaadin-master-detail-layout.js'; -import 'Frontend/generated/jar-resources/menubarConnector.js'; -import '@vaadin/menu-bar/src/vaadin-menu-bar.js'; -import '@vaadin/message-input/src/vaadin-message-input.js'; -import 'Frontend/generated/jar-resources/messageListConnector.js'; -import '@vaadin/message-list/src/vaadin-message-list.js'; -import '@vaadin/notification/src/vaadin-notification.js'; -import '@vaadin/horizontal-layout/src/vaadin-horizontal-layout.js'; -import '@vaadin/scroller/src/vaadin-scroller.js'; -import '@vaadin/vertical-layout/src/vaadin-vertical-layout.js'; -import '@vaadin/popover/src/vaadin-popover.js'; -import 'Frontend/generated/jar-resources/vaadin-popover/popover.ts'; -import '@vaadin/progress-bar/src/vaadin-progress-bar.js'; -import '@vaadin/radio-group/src/vaadin-radio-button.js'; -import '@vaadin/radio-group/src/vaadin-radio-group.js'; -import 'Frontend/generated/jar-resources/ReactRouterOutletElement.tsx'; -import '@vaadin/select/src/vaadin-select.js'; -import 'Frontend/generated/jar-resources/selectConnector.js'; -import 'Frontend/generated/jar-resources/tooltip.ts'; -import 'Frontend/generated/jar-resources/disableOnClickFunctions.js'; -import '@vaadin/side-nav/src/vaadin-side-nav.js'; -import '@vaadin/side-nav/src/vaadin-side-nav-item.js'; -import '@vaadin/slider/src/vaadin-range-slider.js'; -import '@vaadin/slider/src/vaadin-slider.js'; -import '@vaadin/split-layout/src/vaadin-split-layout.js'; -import '@vaadin/tabs/src/vaadin-tab.js'; -import '@vaadin/tabsheet/src/vaadin-tabsheet.js'; -import '@vaadin/tabs/src/vaadin-tabs.js'; -import 'Frontend/generated/jar-resources/vaadin-big-decimal-field.js'; -import '@vaadin/email-field/src/vaadin-email-field.js'; -import '@vaadin/integer-field/src/vaadin-integer-field.js'; -import '@vaadin/number-field/src/vaadin-number-field.js'; -import '@vaadin/password-field/src/vaadin-password-field.js'; -import '@vaadin/text-area/src/vaadin-text-area.js'; -import '@vaadin/text-field/src/vaadin-text-field.js'; -import 'Frontend/generated/jar-resources/lit-renderer.ts'; -import '@vaadin/grid/src/vaadin-grid-tree-toggle.js'; -import 'Frontend/generated/jar-resources/treeGridConnector.ts'; -import '@vaadin/upload/src/vaadin-upload.js'; -import '@vaadin/upload/src/vaadin-upload-button.js'; -import '@vaadin/upload/src/vaadin-upload-drop-zone.js'; -import '@vaadin/upload/src/vaadin-upload-file-list.js'; -import 'Frontend/generated/jar-resources/vaadin-upload-manager-connector.ts'; -import '@vaadin/virtual-list/src/vaadin-virtual-list.js'; -import 'Frontend/generated/jar-resources/virtualListConnector.js'; -import '@vaadin/vaadin-lumo-styles/vaadin-iconset.js'; -const loadOnDemand = (key) => { return Promise.resolve(0); } -window.Vaadin = window.Vaadin || {}; -window.Vaadin.Flow = window.Vaadin.Flow || {}; -window.Vaadin.Flow.loadOnDemand = loadOnDemand; -window.Vaadin.Flow.resetFocus = () => { - let ae=document.activeElement; - while(ae&&ae.shadowRoot) ae = ae.shadowRoot.activeElement; - return !ae || ae.blur() || ae.focus() || true; -} \ No newline at end of file diff --git a/kontor-spring/src/main/frontend/generated/generated-flow-files.txt b/kontor-spring/src/main/frontend/generated/generated-flow-files.txt deleted file mode 100644 index 8028436..0000000 --- a/kontor-spring/src/main/frontend/generated/generated-flow-files.txt +++ /dev/null @@ -1,132 +0,0 @@ -app-shell-imports.d.ts -app-shell-imports.js -css.generated.d.ts -flow/Flow.tsx -flow/ReactAdapter.tsx -flow/generated-flow-imports.d.ts -flow/generated-flow-imports.js -flow/generated-flow-webcomponent-imports.js -index.tsx -jar-resources/Clipboard.d.ts -jar-resources/Clipboard.js -jar-resources/Clipboard.js.map -jar-resources/Download.d.ts -jar-resources/Download.js -jar-resources/Download.js.map -jar-resources/ElementResize.d.ts -jar-resources/ElementResize.js -jar-resources/ElementResize.js.map -jar-resources/Flow.d.ts -jar-resources/Flow.js -jar-resources/Flow.js.map -jar-resources/FlowBootstrap.d.ts -jar-resources/FlowBootstrap.js -jar-resources/FlowClient.d.ts -jar-resources/FlowClient.js -jar-resources/FlowShortcut.js -jar-resources/Fullscreen.d.ts -jar-resources/Fullscreen.js -jar-resources/Fullscreen.js.map -jar-resources/Geolocation.d.ts -jar-resources/Geolocation.js -jar-resources/Geolocation.js.map -jar-resources/PageVisibility.d.ts -jar-resources/PageVisibility.js -jar-resources/PageVisibility.js.map -jar-resources/ReactRouterOutletElement.tsx -jar-resources/ScreenOrientation.d.ts -jar-resources/ScreenOrientation.js -jar-resources/ScreenOrientation.js.map -jar-resources/WakeLock.d.ts -jar-resources/WakeLock.js -jar-resources/WakeLock.js.map -jar-resources/WebShare.d.ts -jar-resources/WebShare.js -jar-resources/WebShare.js.map -jar-resources/comboBoxConnector.js -jar-resources/contextMenuConnector.js -jar-resources/contextMenuTargetConnector.js -jar-resources/copilot-version.js -jar-resources/copilot.d.ts -jar-resources/copilot.js -jar-resources/copilot/base-panel-Fr0D1ZcU.js -jar-resources/copilot/chunk-DiqZc92J.js -jar-resources/copilot/consts-CSALuSsm.js -jar-resources/copilot/copilot-development-setup-user-guide-Db31eO1T.js -jar-resources/copilot/copilot-development-setup-user-guide-utils-DzEVQbWO.js -jar-resources/copilot/copilot-devtools-CYwy4U79.js -jar-resources/copilot/copilot-error-handler-9OpssAH1.js -jar-resources/copilot/copilot-features-plugin-DwQSwtbQ.js -jar-resources/copilot/copilot-feedback-plugin-JMYrBCmQ.js -jar-resources/copilot/copilot-focus-trap-CaZw1c70.js -jar-resources/copilot/copilot-global-vars-later-CWkvR40X.js -jar-resources/copilot/copilot-impersonator-plugin-iN25IekB.js -jar-resources/copilot/copilot-info-plugin-9l6uSELy.js -jar-resources/copilot/copilot-init-step2-tqpZOWcn.js -jar-resources/copilot/copilot-log-plugin-CmwIHcBw.js -jar-resources/copilot/copilot-message-box-CVAh5PSs.js -jar-resources/copilot/copilot-modes-wJyMqHUb.js -jar-resources/copilot/copilot-notification-CCNJdNg4.js -jar-resources/copilot/copilot-notification-UcomqPI8.js -jar-resources/copilot/copilot-server-communicator-impl-B7YDzJpM.js -jar-resources/copilot/copilot-settings-panel-qUN2f6RH.js -jar-resources/copilot/copilot-shortcuts-BzZuUtjW.js -jar-resources/copilot/copilot-stored-machine-state-D6qB_Peh.js -jar-resources/copilot/copilot-tree-impl-DxBvMTRa.js -jar-resources/copilot/copilot-ui-state-Dc6l_5DA.js -jar-resources/copilot/copilot-userinfo-C0s6T_kB.js -jar-resources/copilot/copilot-vaadin-versions-CkxDkDmp.js -jar-resources/copilot/copy-to-clipboard-4Y12mBRr.js -jar-resources/copilot/directive-DWLihZIi.js -jar-resources/copilot/directive-helpers-BTt8P8-5.js -jar-resources/copilot/dom-utils-Cuv93-tQ.js -jar-resources/copilot/early-project-state-LGwavSyI.js -jar-resources/copilot/figma-public/figma-api.d.ts -jar-resources/copilot/icons-CwakCZgK.js -jar-resources/copilot/lit-renderer-fa_B9boC.js -jar-resources/copilot/section-panel-ui-state-hOj_RfX_.js -jar-resources/copilot/shared/copilot-plugin-support.d.ts -jar-resources/copilot/shared/flow-utils.d.ts -jar-resources/copilot/stats-CRkPKCLQ.js -jar-resources/copilot/track-active-mode-event-DkX0nsC6.js -jar-resources/copilot/typescript-BkEBjsia.js -jar-resources/datepickerConnector.js -jar-resources/disableOnClickFunctions.js -jar-resources/dndConnector.js -jar-resources/flow-component-directive.js -jar-resources/flow-component-renderer.js -jar-resources/gridConnector.ts -jar-resources/index.d.ts -jar-resources/index.js -jar-resources/index.js.map -jar-resources/lit-renderer.ts -jar-resources/menubarConnector.js -jar-resources/messageListConnector.js -jar-resources/selectConnector.js -jar-resources/theme-util.js -jar-resources/tooltip.ts -jar-resources/treeGridConnector.ts -jar-resources/vaadin-big-decimal-field.js -jar-resources/vaadin-dev-tools/License.d.ts -jar-resources/vaadin-dev-tools/connection.d.ts -jar-resources/vaadin-dev-tools/hotswap-scroll.d.ts -jar-resources/vaadin-dev-tools/live-reload-connection.d.ts -jar-resources/vaadin-dev-tools/pre-trial-splash-screen.d.ts -jar-resources/vaadin-dev-tools/vaadin-dev-tools.d.ts -jar-resources/vaadin-dev-tools/vaadin-dev-tools.js -jar-resources/vaadin-dev-tools/vaadin-dev-tools.js.map -jar-resources/vaadin-dev-tools/websocket-connection.d.ts -jar-resources/vaadin-grid-flow-selection-column.js -jar-resources/vaadin-popover/popover.ts -jar-resources/vaadin-time-picker/helpers.js -jar-resources/vaadin-time-picker/timepickerConnector.js -jar-resources/vaadin-upload-manager-connector.ts -jar-resources/virtualListConnector.js -jsx-dev-transform/index.ts -jsx-dev-transform/jsx-dev-runtime.ts -jsx-dev-transform/jsx-runtime.ts -layouts.json -routes.tsx -vaadin-featureflags.js -vaadin-react.tsx -vaadin.ts \ No newline at end of file diff --git a/kontor-spring/src/main/frontend/generated/index.tsx b/kontor-spring/src/main/frontend/generated/index.tsx deleted file mode 100644 index 8c8a71a..0000000 --- a/kontor-spring/src/main/frontend/generated/index.tsx +++ /dev/null @@ -1,26 +0,0 @@ -/****************************************************************************** - * This file is auto-generated by Vaadin. - * If you want to customize the entry point, you can copy this file or create - * your own `index.tsx` in your frontend directory. - * By default, the `index.tsx` file should be in `./frontend/` folder. - * - * NOTE: - * - You need to restart the dev-server after adding the new `index.tsx` file. - * After that, all modifications to `index.tsx` are recompiled automatically. - * - `index.js` is also supported if you don't want to use TypeScript. - ******************************************************************************/ - -import { createElement } from 'react'; -import { createRoot } from 'react-dom/client'; -import { RouterProvider } from 'react-router'; -import { router } from 'Frontend/generated/routes.js'; - -function App() { - return ; -} - -const outlet = document.getElementById('outlet')!; -let root = (outlet as any)._root ?? createRoot(outlet); -(outlet as any)._root = root; -root.render(createElement(App)); - diff --git a/kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.d.ts b/kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.js b/kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.js deleted file mode 100644 index 97ed1b1..0000000 --- a/kontor-spring/src/main/frontend/generated/jar-resources/Clipboard.js +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright 2000-2026 Vaadin Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -/** - * Reads the first item from the system clipboard and returns its text/plain - * and text/html representations. Either field is {@code null} if the - * corresponding MIME type is not present. - * - * The caller is expected to be inside a transient user gesture and to have - * been granted the {@code clipboard-read} permission; otherwise - * {@code navigator.clipboard.read} rejects and this function propagates the - * rejection. - */ -async function readClipboardPayload() { - const items = await navigator.clipboard.read(); - if (!items.length) { - return null; - } - const item = items[0]; - const get = async (type) => item.types.includes(type) ? (await item.getType(type)).text() : null; - return { - text: await get('text/plain'), - html: await get('text/html') - }; -} -/** - * Re-encodes the given {@code } as {@code image/png} via a canvas - * round-trip. The source can be any rasterisable format the browser already - * decodes ({@code image/png}, {@code image/jpeg}, {@code image/svg+xml}, ...); - * the output is always a {@code Promise} of {@code image/png}, the only - * image MIME type every browser's asynchronous Clipboard API accepts on write. - * - * Cross-origin images need {@code crossorigin="anonymous"} on the {@code } - * plus matching CORS headers, otherwise the canvas is tainted and - * {@code toBlob} throws. - */ -function imageToPngBlob(img) { - return new Promise((resolve, reject) => { - const draw = () => { - try { - const width = img.naturalWidth || img.width; - const height = img.naturalHeight || img.height; - if (!width || !height) { - reject(new Error('image has no intrinsic size')); - return; - } - const canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - const ctx = canvas.getContext('2d'); - if (!ctx) { - reject(new Error('2D canvas context not available')); - return; - } - ctx.drawImage(img, 0, 0, width, height); - canvas.toBlob((png) => (png ? resolve(png) : reject(new Error('canvas.toBlob returned null'))), 'image/png'); - } - catch (err) { - reject(err); - } - }; - if (img.complete) { - // `complete` is also true for an image that already failed to load or has - // an empty src; those have naturalWidth === 0 and their load/error events - // have already fired and will never fire again, so we must settle here - // rather than wait for an event that never comes. - if (img.naturalWidth > 0) { - draw(); - } - else { - reject(new Error('image failed to load or has empty src')); - } - } - else { - img.addEventListener('load', draw, { once: true }); - img.addEventListener('error', () => reject(new Error('image load failed')), { once: true }); - } - }); -} -/** - * Writes any combination of text/plain, text/html and image/png to the system - * clipboard as a single ClipboardItem. Any argument may be {@code null} to omit - * that MIME type; at least one is expected to be non-null (the caller enforces - * this). The image argument is the source {@code }; it is re-encoded as - * {@code image/png} via {@link imageToPngBlob} and the resulting - * {@code Promise} is fed directly to {@code ClipboardItem} so the - * {@code navigator.clipboard.write} call stays synchronous inside the user - * gesture (Safari otherwise loses activation on the first await). - * - * The caller is expected to be inside a transient user gesture; otherwise - * {@code navigator.clipboard.write} rejects and this function propagates the - * rejection. - * - * Resolves with the {@code text/plain} value if present, otherwise with the - * {@code text/html} value, otherwise with {@code null} (image-only case). - */ -async function writeClipboardPayload(text, html, image) { - const entries = {}; - if (text !== null) { - entries['text/plain'] = text; - } - if (html !== null) { - entries['text/html'] = html; - } - if (image !== null) { - entries['image/png'] = imageToPngBlob(image); - } - await navigator.clipboard.write([new ClipboardItem(entries)]); - return text !== null ? text : html; -} -/** - * Posts each file from a {@code paste} event's {@code clipboardData.files} as - * its own XHR to the URL stored as the named attribute on {@code element}. The - * wire format matches vaadin-upload: raw body, percent-encoded {@code X-Filename} - * header, MIME type in {@code Content-Type}. - * - * Each upload is processed in its own HTTP request, so the UI changes the - * server-side UploadHandler makes through {@code UI.access} are applied to the - * state tree but not sent to the client by the upload response itself. Once - * every upload of the paste has settled this helper dispatches a - * {@code vaadin-paste-upload-finished} event back on {@code element}; a - * server-side listener for that event triggers a normal Flow round trip that - * flushes those pending UI changes — so the API works without {@code @Push}, - * exactly like a regular upload completing through the Upload component. - * - * Editable targets ({@code }, {@code