From 37559cdedc5e89a6c99e95e61edd2c5c15230060 Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Thu, 16 Apr 2026 13:29:26 +0300 Subject: [PATCH] Cleanup/fix jackson 2 -> 3 migration (#3024) Signed-off-by: Avgustin Marinov --- .3rd-party/DEPENDENCIES | 532 ++++++++---------- .3rd-party/README.md | 2 +- .../auth/StaticAuthenticationProvider.java | 12 +- .../hawkbit-jackson-defaults.properties | 2 +- hawkbit-ddi/hawkbit-ddi-api/pom.xml | 5 + .../ddi/json/model/DdiActionFeedbackTest.java | 45 +- .../ddi/json/model/DdiActionHistoryTest.java | 4 +- .../ddi/json/model/DdiArtifactHashTest.java | 5 +- .../ddi/json/model/DdiArtifactTest.java | 7 +- .../json/model/DdiCancelActionToStopTest.java | 4 +- .../hawkbit/ddi/json/model/DdiCancelTest.java | 4 +- .../hawkbit/ddi/json/model/DdiChunkTest.java | 4 +- .../ddi/json/model/DdiConfigDataTest.java | 4 +- .../hawkbit/ddi/json/model/DdiConfigTest.java | 4 +- .../json/model/DdiConfirmationBaseTest.java | 4 +- .../ddi/json/model/DdiControllerBaseTest.java | 4 +- .../ddi/json/model/DdiDeploymentBaseTest.java | 4 +- .../ddi/json/model/DdiDeploymentTest.java | 4 +- .../ddi/json/model/DdiMetadataTest.java | 5 +- .../ddi/json/model/DdiPollingTest.java | 4 +- .../ddi/json/model/DdiProgressTest.java | 4 +- .../hawkbit/ddi/json/model/DdiResultTest.java | 4 +- .../hawkbit/ddi/json/model/DdiStatusTest.java | 4 +- ...pMessageHandlerServiceIntegrationTest.java | 9 +- hawkbit-mgmt/hawkbit-mgmt-api/pom.xml | 5 + .../MgmtDistributionSetAssignments.java | 3 +- ...istributionSetAssignmentsDeserializer.java | 36 +- .../model/AuditFieldSerializationTest.java | 5 +- .../MgmtTargetAssignmentResponseBodyTest.java | 7 +- .../resource/MgmtOpenApiConfiguration.java | 45 +- .../rest/resource/MgmtTargetResourceTest.java | 9 +- .../MgmtTenantManagementResourceTest.java | 2 +- .../rest/resource/util/ResourceUtility.java | 8 +- .../app/mgmt/PreAuthorizeEnabledTest.java | 4 +- .../hawkbit/app/PreAuthorizeEnabledTest.java | 4 +- .../event/remote/AbstractRemoteEvent.java | 2 +- .../pom.xml | 2 +- .../hawkbit-repository-jpa/pom.xml | 2 +- hawkbit-rest/hawkbit-rest-api/pom.xml | 24 +- .../org/eclipse/hawkbit/rest/OpenApi.java | 37 -- .../rest/AbstractRestIntegrationTest.java | 5 +- .../org/eclipse/hawkbit/ui/MainLayout.java | 8 +- .../eclipse/hawkbit/ui/view/AboutView.java | 2 +- .../ui/view/TargetFilterQueryView.java | 8 +- .../eclipse/hawkbit/ui/view/TargetView.java | 2 +- .../META-INF/resources/images/about_image.png | Bin 6797 -> 0 bytes .../META-INF/resources/images/hawkbit.png | Bin 0 -> 13867 bytes .../resources/images/hawkbit_logo.png | Bin 0 -> 34562 bytes .../META-INF/resources/images/header_icon.png | Bin 2191 -> 0 bytes pom.xml | 56 +- 50 files changed, 442 insertions(+), 514 deletions(-) delete mode 100644 hawkbit-ui/src/main/resources/META-INF/resources/images/about_image.png create mode 100644 hawkbit-ui/src/main/resources/META-INF/resources/images/hawkbit.png create mode 100644 hawkbit-ui/src/main/resources/META-INF/resources/images/hawkbit_logo.png delete mode 100644 hawkbit-ui/src/main/resources/META-INF/resources/images/header_icon.png diff --git a/.3rd-party/DEPENDENCIES b/.3rd-party/DEPENDENCIES index ce98ba844..0991d2623 100644 --- a/.3rd-party/DEPENDENCIES +++ b/.3rd-party/DEPENDENCIES @@ -2,281 +2,200 @@ maven/mavencentral/ch.qos.logback/logback-classic/1.5.32, EPL-1.0 AND LGPL-2.1-o maven/mavencentral/ch.qos.logback/logback-core/1.5.32, EPL-1.0 AND LGPL-2.1-only, approved, #15210 maven/mavencentral/com.cronutils/cron-utils/9.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.ethlo.time/itu/1.14.0, Apache-2.0, approved, #19505 +maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.20, Apache-2.0, approved, #23056 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.21, Apache-2.0, approved, #25587 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.21.2, Apache-2.0 AND MIT, approved, #25590 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.21.2, Apache-2.0, approved, #25591 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-cbor/2.21.2, Apache-2.0, approved, #26062 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.21.2, Apache-2.0, approved, #26778 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.21.2, Apache-2.0, approved, #25589 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.21.2, Apache-2.0, approved, #26613 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-joda/2.21.2, Apache-2.0, approved, #26776 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.21.2, Apache-2.0, approved, #26441 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jsonSchema/2.21.2, Apache-2.0, approved, #26779 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-parameter-names/2.21.2, Apache-2.0, approved, #26614 maven/mavencentral/com.fasterxml/classmate/1.7.3, Apache-2.0, approved, #24482 maven/mavencentral/com.github.ben-manes.caffeine/caffeine/3.2.3, Apache-2.0 AND (Apache-2.0 AND CC0-1.0), approved, #18889 -maven/mavencentral/com.github.javaparser/javaparser-core/3.26.4, (Apache-2.0 AND LGPL-2.1-or-later AND LGPL-3.0 AND LGPL-3.0-only) OR (Apache-2.0 AND LGPL-2.1-or-later AND LGPL-3.0-only), approved, clearlydefined -maven/mavencentral/com.github.javaparser/javaparser-symbol-solver-core/3.26.4, Apache-2.0 OR (Apache-2.0 AND LGPL-3.0) OR (Apache-2.0 AND LGPL-3.0-only) OR (LGPL-3.0 AND LGPL-3.0-only), approved, clearlydefined -maven/mavencentral/com.github.oshi/oshi-core/6.6.5, MIT, approved, #14290 maven/mavencentral/com.github.stephenc.jcip/jcip-annotations/1.0-1, Apache-2.0, approved, CQ21949 maven/mavencentral/com.github.victools/jsonschema-generator/4.38.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.github.victools/jsonschema-module-jackson/4.38.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.github.victools/jsonschema-module-swagger-2/4.38.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0 and CC-BY-2.5, approved, #15220 -maven/mavencentral/com.google.errorprone/error_prone_annotations/2.41.0, Apache-2.0, approved, #22631 maven/mavencentral/com.google.errorprone/error_prone_annotations/2.43.0, Apache-2.0, approved, #24436 -maven/mavencentral/com.google.guava/failureaccess/1.0.3, Apache-2.0, approved, CQ22654 -maven/mavencentral/com.google.guava/guava/33.5.0-jre, Apache-2.0 AND CC0-1.0 AND CC-PDDC, approved, #23378 -maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 -maven/mavencentral/com.google.j2objc/j2objc-annotations/3.1, Apache-2.0, approved, #23379 -maven/mavencentral/com.h2database/h2/2.3.232, (MPL-2.0 AND EPL-1.0) AND (MPL-2.0 AND EPL-1.0 AND LGPL-3.0-or-later) AND BSD-3-Clause, approved, #15708 -maven/mavencentral/com.helger.commons/ph-commons/11.2.0, Apache-2.0 AND BSD-3-Clause, approved, #21949 -maven/mavencentral/com.helger/ph-css/7.0.4, Apache-2.0, approved, #12134 -maven/mavencentral/com.jayway.jsonpath/json-path/2.9.0, Apache-2.0, approved, #20009 +maven/mavencentral/com.h2database/h2/2.4.240, EPL-1.0 AND MPL-2.0 AND LGPL-2.1-or-later AND BSD-3-Clause AND LicenseRef-Public-Domain, approved, #23567 +maven/mavencentral/com.jayway.jsonpath/json-path/2.10.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.knuddels/jtokkit/1.1.0, MIT, approved, clearlydefined maven/mavencentral/com.networknt/json-schema-validator/2.0.0, Apache-2.0 AND Unicode-TOU, approved, #25988 -maven/mavencentral/com.nimbusds/content-type/2.2, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.nimbusds/content-type/2.3, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.4, Apache-2.0, approved, #11701 -maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/9.43.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.rabbitmq/amqp-client/5.25.0, (Apache-2.0 OR GPL-2.0-only OR MPL-2.0) AND (Apache-2.0 OR GPL-2.0-only OR MPL-1.1), approved, #19537 -maven/mavencentral/com.rabbitmq/http-client/5.5.0, Apache-2.0, approved, #26777 +maven/mavencentral/com.nimbusds/nimbus-jose-jwt/10.4, Apache-2.0, approved, #22824 +maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/11.26.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.rabbitmq.client/amqp-client/0.8.0, , restricted, clearlydefined +maven/mavencentral/com.rabbitmq/amqp-client/5.27.1, (Apache-2.0 AND GPL-2.0-only AND GPL-2.0-or-later AND LicenseRef-scancode-warranty-disclaimer AND MPL-1.1 AND MPL-2.0) OR (Apache-2.0 AND GPL-2.0-only AND GPL-2.0-or-later AND LicenseRef-scancode-warranty-disclaimer AND MPL-2.0) OR (Apache-2.0 AND GPL-2.0-only AND LGPL-2.1-or-later AND LicenseRef-scancode-warranty-disclaimer AND MPL-1.1 AND MPL-2.0) OR (Apache-2.0 AND GPL-2.0-only AND LGPL-2.1-or-later AND LicenseRef-scancode-warranty-disclaimer AND MPL-2.0) OR (Apache-2.0 AND GPL-2.0-only AND LicenseRef-scancode-warranty-disclaimer AND MPL-1.1 AND MPL-2.0), restricted, clearlydefined maven/mavencentral/com.sun.istack/istack-commons-runtime/4.1.2, BSD-3-Clause, approved, #15290 maven/mavencentral/com.vaadin.external.atmosphere/atmosphere-runtime/3.0.5.slf4jvaadin1, Apache-2.0, approved, #12113 -maven/mavencentral/com.vaadin.external.google/android-json/0.0.20131108.vaadin1, Apache-2.0, approved, CQ21310 -maven/mavencentral/com.vaadin.external.gwt/gwt-elemental/2.8.2.vaadin2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.vaadin.external/gentyref/1.2.0.vaadin1, Apache-2.0, approved, CQ20645 -maven/mavencentral/com.vaadin.servletdetector/throw-if-servlet3/1.0.2, Apache-2.0, approved, #12159 -maven/mavencentral/com.vaadin/collaboration-engine/6.6.0, Apache-2.0, approved, #23473 -maven/mavencentral/com.vaadin/copilot/24.9.11, Apache-2.0, approved, #23502 -maven/mavencentral/com.vaadin/flow-client/24.9.12, Apache-2.0, approved, #23514 -maven/mavencentral/com.vaadin/flow-data/24.9.12, Apache-2.0, approved, #23457 -maven/mavencentral/com.vaadin/flow-dnd/24.9.12, Apache-2.0, approved, #23452 -maven/mavencentral/com.vaadin/flow-html-components/24.9.12, Apache-2.0, approved, #23461 -maven/mavencentral/com.vaadin/flow-lit-template/24.9.12, Apache-2.0, approved, #23497 -maven/mavencentral/com.vaadin/flow-push/24.9.12, Apache-2.0, approved, #23506 -maven/mavencentral/com.vaadin/flow-react/24.9.12, Apache-2.0, approved, #23519 -maven/mavencentral/com.vaadin/flow-server/24.9.12, Apache-2.0 AND MIT, approved, #23490 -maven/mavencentral/com.vaadin/hilla-dev/24.9.11, Apache-2.0, approved, #23474 -maven/mavencentral/com.vaadin/hilla-endpoint/24.9.11, Apache-2.0, approved, #23472 -maven/mavencentral/com.vaadin/hilla-engine-core/24.9.11, Apache-2.0, approved, #23478 -maven/mavencentral/com.vaadin/hilla-engine-runtime/24.9.11, Apache-2.0, approved, #23479 -maven/mavencentral/com.vaadin/hilla-parser-jvm-core/24.9.11, Apache-2.0, approved, #23501 -maven/mavencentral/com.vaadin/hilla-parser-jvm-plugin-backbone/24.9.11, Apache-2.0, approved, #23523 -maven/mavencentral/com.vaadin/hilla-parser-jvm-plugin-model/24.9.11, Apache-2.0, approved, #23454 -maven/mavencentral/com.vaadin/hilla-parser-jvm-plugin-nonnull-kotlin/24.9.11, Apache-2.0, approved, #23466 -maven/mavencentral/com.vaadin/hilla-parser-jvm-plugin-nonnull/24.9.11, Apache-2.0, approved, #23520 -maven/mavencentral/com.vaadin/hilla-parser-jvm-plugin-subtypes/24.9.11, Apache-2.0, approved, #23493 -maven/mavencentral/com.vaadin/hilla-parser-jvm-plugin-transfertypes/24.9.11, Apache-2.0, approved, #23450 -maven/mavencentral/com.vaadin/hilla-parser-jvm-utils/24.9.11, Apache-2.0, approved, #23508 -maven/mavencentral/com.vaadin/hilla-runtime-plugin-transfertypes/24.9.11, Apache-2.0, approved, #23500 -maven/mavencentral/com.vaadin/hilla/24.9.11, Apache-2.0, approved, #23460 -maven/mavencentral/com.vaadin/license-checker/2.0.1, Apache-2.0, approved, #23484 -maven/mavencentral/com.vaadin/open/8.5.0.5, MIT AND Apache-2.0, approved, #17743 -maven/mavencentral/com.vaadin/signals/24.9.12, Apache-2.0, approved, #23470 -maven/mavencentral/com.vaadin/ui-tests/1.1.5, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.vaadin/vaadin-accordion-flow/24.9.11, Apache-2.0, approved, #23521 -maven/mavencentral/com.vaadin/vaadin-app-layout-flow/24.9.11, Apache-2.0, approved, #23446 -maven/mavencentral/com.vaadin/vaadin-avatar-flow/24.9.11, Apache-2.0, approved, #23477 -maven/mavencentral/com.vaadin/vaadin-button-flow/24.9.11, Apache-2.0, approved, #23471 -maven/mavencentral/com.vaadin/vaadin-card-flow/24.9.11, Apache-2.0, approved, #23517 -maven/mavencentral/com.vaadin/vaadin-checkbox-flow/24.9.11, Apache-2.0, approved, #23496 -maven/mavencentral/com.vaadin/vaadin-combo-box-flow/24.9.11, Apache-2.0, approved, #23507 -maven/mavencentral/com.vaadin/vaadin-confirm-dialog-flow/24.9.11, Apache-2.0, approved, #23495 -maven/mavencentral/com.vaadin/vaadin-context-menu-flow/24.9.11, Apache-2.0, approved, #23467 -maven/mavencentral/com.vaadin/vaadin-core-components/24.9.11, Apache-2.0, approved, #23503 -maven/mavencentral/com.vaadin/vaadin-core-internal/24.9.11, Apache-2.0, approved, #23469 -maven/mavencentral/com.vaadin/vaadin-core/24.9.11, Apache-2.0, approved, #23476 -maven/mavencentral/com.vaadin/vaadin-custom-field-flow/24.9.11, Apache-2.0, approved, #23458 -maven/mavencentral/com.vaadin/vaadin-date-picker-flow/24.9.11, Apache-2.0, approved, #23516 -maven/mavencentral/com.vaadin/vaadin-date-time-picker-flow/24.9.11, Apache-2.0, approved, #23463 -maven/mavencentral/com.vaadin/vaadin-details-flow/24.9.11, Apache-2.0, approved, #23511 -maven/mavencentral/com.vaadin/vaadin-dev-bundle/24.9.11, MIT AND Apache-2.0 AND BSD-3-Clause AND BSD-2-Clause AND BlueOak-1.0.0 AND 0BSD AND Python-2.0 AND CC-BY-4.0 AND (AFL-2.1 OR BSD-3-Clause) AND (MIT OR CC0-1.0) AND (MPL-2.0 OR Apache-2.0) AND (MIT AND Zlib), approved, #23488 -maven/mavencentral/com.vaadin/vaadin-dev-server/24.9.12, Apache-2.0, approved, #23453 -maven/mavencentral/com.vaadin/vaadin-dev/24.9.11, Apache-2.0, approved, #23447 -maven/mavencentral/com.vaadin/vaadin-dialog-flow/24.9.11, Apache-2.0, approved, #23481 -maven/mavencentral/com.vaadin/vaadin-field-highlighter-flow/24.9.11, Apache-2.0, approved, #23464 -maven/mavencentral/com.vaadin/vaadin-flow-components-base/24.9.11, Apache-2.0, approved, #23485 -maven/mavencentral/com.vaadin/vaadin-form-layout-flow/24.9.11, Apache-2.0, approved, #23445 -maven/mavencentral/com.vaadin/vaadin-grid-flow/24.9.11, Apache-2.0, approved, #23483 -maven/mavencentral/com.vaadin/vaadin-icons-flow/24.9.11, Apache-2.0, approved, #23524 -maven/mavencentral/com.vaadin/vaadin-list-box-flow/24.9.11, Apache-2.0, approved, #23512 -maven/mavencentral/com.vaadin/vaadin-login-flow/24.9.11, Apache-2.0, approved, #23518 -maven/mavencentral/com.vaadin/vaadin-lumo-theme/24.9.11, Apache-2.0, approved, #23442 -maven/mavencentral/com.vaadin/vaadin-markdown-flow/24.9.11, Apache-2.0, approved, #23504 -maven/mavencentral/com.vaadin/vaadin-master-detail-layout-flow/24.9.11, Apache-2.0, approved, #23491 -maven/mavencentral/com.vaadin/vaadin-material-theme/24.9.11, Apache-2.0, approved, #23451 -maven/mavencentral/com.vaadin/vaadin-menu-bar-flow/24.9.11, Apache-2.0, approved, #23498 -maven/mavencentral/com.vaadin/vaadin-messages-flow/24.9.11, Apache-2.0, approved, #23480 -maven/mavencentral/com.vaadin/vaadin-notification-flow/24.9.11, Apache-2.0, approved, #23482 -maven/mavencentral/com.vaadin/vaadin-ordered-layout-flow/24.9.11, Apache-2.0, approved, #23448 -maven/mavencentral/com.vaadin/vaadin-popover-flow/24.9.11, Apache-2.0, approved, #23443 -maven/mavencentral/com.vaadin/vaadin-progress-bar-flow/24.9.11, Apache-2.0, approved, #23459 -maven/mavencentral/com.vaadin/vaadin-radio-button-flow/24.9.11, Apache-2.0, approved, #23486 -maven/mavencentral/com.vaadin/vaadin-renderer-flow/24.9.11, Apache-2.0, approved, #23455 -maven/mavencentral/com.vaadin/vaadin-select-flow/24.9.11, Apache-2.0, approved, #23475 -maven/mavencentral/com.vaadin/vaadin-side-nav-flow/24.9.11, Apache-2.0, approved, #23513 -maven/mavencentral/com.vaadin/vaadin-split-layout-flow/24.9.11, Apache-2.0, approved, #23487 -maven/mavencentral/com.vaadin/vaadin-spring-boot-starter/24.9.11, Apache-2.0, approved, #23505 -maven/mavencentral/com.vaadin/vaadin-spring/24.9.12, Apache-2.0, approved, #23492 -maven/mavencentral/com.vaadin/vaadin-tabs-flow/24.9.11, Apache-2.0, approved, #23510 -maven/mavencentral/com.vaadin/vaadin-text-field-flow/24.9.11, Apache-2.0, approved, #23465 -maven/mavencentral/com.vaadin/vaadin-time-picker-flow/24.9.11, Apache-2.0, approved, #23509 -maven/mavencentral/com.vaadin/vaadin-upload-flow/24.9.11, Apache-2.0, approved, #23449 -maven/mavencentral/com.vaadin/vaadin-virtual-list-flow/24.9.11, Apache-2.0, approved, #23462 -maven/mavencentral/com.zaxxer/HikariCP/6.3.3, Apache-2.0, approved, #23029 -maven/mavencentral/commons-codec/commons-codec/1.18.0, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #19214 +maven/mavencentral/com.vaadin/collaboration-engine/7.0.0, , restricted, clearlydefined +maven/mavencentral/com.vaadin/flow-client/25.0.4, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.vaadin/flow-data/25.0.4, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.vaadin/flow-dnd/25.0.4, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.vaadin/flow-html-components/25.0.4, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.vaadin/flow-lit-template/25.0.4, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.vaadin/flow-push/25.0.4, , restricted, clearlydefined +maven/mavencentral/com.vaadin/flow-react/25.0.4, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.vaadin/flow-server/25.0.4, Apache-2.0, restricted, clearlydefined +maven/mavencentral/com.vaadin/signals/25.0.4, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-accordion-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-app-layout-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-aura-theme/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-avatar-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-button-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-card-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-checkbox-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-combo-box-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-confirm-dialog-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-context-menu-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-core-components/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-core-internal/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-core/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-custom-field-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-date-picker-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-date-time-picker-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-details-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-dialog-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-field-highlighter-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-flow-components-base/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-form-layout-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-grid-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-icons-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-list-box-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-login-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-lumo-theme/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-markdown-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-master-detail-layout-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-menu-bar-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-messages-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-notification-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-ordered-layout-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-popover-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-progress-bar-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-radio-button-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-renderer-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-select-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-side-nav-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-split-layout-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-spring-boot-starter/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-spring/25.0.4, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-tabs-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-text-field-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-time-picker-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-upload-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.vaadin/vaadin-virtual-list-flow/25.0.3, , restricted, clearlydefined +maven/mavencentral/com.zaxxer/HikariCP/7.0.2, Apache-2.0, approved, clearlydefined maven/mavencentral/commons-fileupload/commons-fileupload/1.6.0, Apache-2.0, approved, #21847 maven/mavencentral/commons-io/commons-io/2.21.0, Apache-2.0, approved, #24652 -maven/mavencentral/commons-logging/commons-logging/1.2, Apache-2.0, approved, CQ10162 +maven/mavencentral/commons-logging/commons-logging/1.3.6, Apache-2.0, approved, #11783 maven/mavencentral/cz.jirutka.rsql/rsql-parser/2.1.0, MIT, approved, CQ12964 maven/mavencentral/io.github.openfeign/feign-core/13.6, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign/feign-form-spring/13.6, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign/feign-form/13.6, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.openfeign/feign-hc5/13.11, Apache-2.0, approved, #26780 -maven/mavencentral/io.github.openfeign/feign-hc5/13.6, Apache-2.0, approved, #21983 maven/mavencentral/io.github.openfeign/feign-slf4j/13.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.methvin/directory-watcher/0.19.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.micrometer/context-propagation/1.1.4, Apache-2.0, approved, #26109 -maven/mavencentral/io.micrometer/micrometer-commons/1.15.10, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #23144 -maven/mavencentral/io.micrometer/micrometer-core/1.15.10, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #23142 -maven/mavencentral/io.micrometer/micrometer-observation/1.15.10, Apache-2.0, approved, #23139 +maven/mavencentral/io.micrometer/context-propagation/1.2.1, , restricted, clearlydefined +maven/mavencentral/io.micrometer/micrometer-commons/1.16.4, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #24726 +maven/mavencentral/io.micrometer/micrometer-core/1.16.4, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #24722 +maven/mavencentral/io.micrometer/micrometer-jakarta9/1.16.4, Apache-2.0, approved, #25608 +maven/mavencentral/io.micrometer/micrometer-observation/1.16.4, Apache-2.0, approved, #24713 maven/mavencentral/io.modelcontextprotocol.sdk/mcp-core/0.17.0, MIT, approved, #25999 maven/mavencentral/io.modelcontextprotocol.sdk/mcp-json-jackson2/0.17.0, MIT, approved, #25995 maven/mavencentral/io.modelcontextprotocol.sdk/mcp-json/0.17.0, MIT, approved, #26001 maven/mavencentral/io.modelcontextprotocol.sdk/mcp-spring-webmvc/0.17.0, MIT, approved, #25993 maven/mavencentral/io.modelcontextprotocol.sdk/mcp/0.17.0, MIT AND Apache-2.0, approved, #25997 -maven/mavencentral/io.netty/netty-all/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ22582 -maven/mavencentral/io.netty/netty-buffer/4.1.132.Final, Apache-2.0, approved, CQ21842 -maven/mavencentral/io.netty/netty-codec-dns/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-haproxy/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-codec-http/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-http2/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-memcache/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-codec-mqtt/4.1.132.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 -maven/mavencentral/io.netty/netty-codec-redis/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-codec-smtp/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-codec-socks/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-stomp/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-codec-xml/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-codec/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-common/4.1.132.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 -maven/mavencentral/io.netty/netty-handler-proxy/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-handler-ssl-ocsp/4.1.132.Final, Apache-2.0, approved, #6365 -maven/mavencentral/io.netty/netty-handler/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.132.Final, Apache-2.0, approved, #6367 -maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.132.Final, Apache-2.0, approved, #7004 -maven/mavencentral/io.netty/netty-resolver-dns/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-resolver/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.132.Final, Apache-2.0, approved, #6366 -maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.132.Final, Apache-2.0, approved, #4107 -maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-rxtx/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-transport-sctp/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-transport-udt/4.1.132.Final, Apache-2.0 AND MIT AND BSD-3-Clause AND CC0-1.0 AND LicenseRef-Public-Domain, approved, CQ21553 -maven/mavencentral/io.netty/netty-transport/4.1.132.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.2.16, Apache-2.0, approved, #23393 -maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.2.16, Apache-2.0, approved, #23394 -maven/mavencentral/io.projectreactor.netty/reactor-netty/1.2.16, Apache-2.0, approved, #23499 -maven/mavencentral/io.projectreactor/reactor-core/3.7.17, Apache-2.0, approved, #17529 +maven/mavencentral/io.netty/netty-buffer/4.2.12.Final, Apache-2.0, approved, #16116 +maven/mavencentral/io.netty/netty-codec-base/4.2.12.Final, Apache-2.0, approved, #21322 +maven/mavencentral/io.netty/netty-codec-classes-quic/4.2.12.Final, Apache-2.0, approved, #21311 +maven/mavencentral/io.netty/netty-codec-compression/4.2.12.Final, Apache-2.0, approved, #16109 +maven/mavencentral/io.netty/netty-codec-dns/4.2.12.Final, Apache-2.0, approved, #16112 +maven/mavencentral/io.netty/netty-codec-http/4.2.12.Final, Apache-2.0 AND (Apache-2.0 AND MIT) AND (Apache-2.0 AND BSD-3-Clause), approved, #16121 +maven/mavencentral/io.netty/netty-codec-http2/4.2.12.Final, Apache-2.0, approved, #16125 +maven/mavencentral/io.netty/netty-codec-http3/4.2.12.Final, Apache-2.0, approved, #25607 +maven/mavencentral/io.netty/netty-codec-marshalling/4.2.12.Final, Apache-2.0, approved, #21321 +maven/mavencentral/io.netty/netty-codec-protobuf/4.2.12.Final, Apache-2.0, approved, #21326 +maven/mavencentral/io.netty/netty-codec-socks/4.2.12.Final, Apache-2.0, approved, #16117 +maven/mavencentral/io.netty/netty-codec/4.2.12.Final, Apache-2.0 AND (Apache-2.0 AND CC-PDDC), approved, #16119 +maven/mavencentral/io.netty/netty-common/4.2.12.Final, Apache-2.0 AND (Apache-2.0 AND CC0-1.0) AND (Apache-2.0 AND MIT), approved, #16124 +maven/mavencentral/io.netty/netty-handler-proxy/4.2.12.Final, Apache-2.0, approved, #16111 +maven/mavencentral/io.netty/netty-handler/4.2.12.Final, Apache-2.0, approved, #16123 +maven/mavencentral/io.netty/netty-resolver-dns/4.2.12.Final, Apache-2.0, approved, #16110 +maven/mavencentral/io.netty/netty-resolver/4.2.12.Final, Apache-2.0, approved, #16126 +maven/mavencentral/io.netty/netty-transport-native-unix-common/4.2.12.Final, Apache-2.0, approved, #21329 +maven/mavencentral/io.netty/netty-transport/4.2.12.Final, Apache-2.0, approved, #16113 +maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.3.4, Apache-2.0, approved, #25603 +maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.3.4, Apache-2.0, approved, #25597 +maven/mavencentral/io.projectreactor/reactor-core/3.8.4, Apache-2.0, approved, #25635 maven/mavencentral/io.protostuff/protostuff-api/1.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.protostuff/protostuff-collectionschema/1.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.protostuff/protostuff-core/1.8.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.protostuff/protostuff-runtime/1.8.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.smallrye/jandex/3.2.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.32, Apache-2.0, approved, #5947 +maven/mavencentral/io.smallrye/jandex/3.3.2, Apache-2.0, approved, #22775 maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.36, Apache-2.0, approved, #5947 -maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.43, Apache-2.0, approved, #5947 -maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.32, Apache-2.0, approved, #5929 -maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.43, Apache-2.0, approved, #5929 -maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.32, Apache-2.0, approved, #5919 -maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.43, Apache-2.0, approved, #5919 +maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.47, Apache-2.0, approved, #5947 +maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.47, Apache-2.0, approved, #5929 +maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.47, Apache-2.0, approved, #5919 maven/mavencentral/jakarta.activation/jakarta.activation-api/2.1.4, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf -maven/mavencentral/jakarta.annotation/jakarta.annotation-api/2.1.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca -maven/mavencentral/jakarta.persistence/jakarta.persistence-api/3.1.0, EPL-2.0 OR BSD-3-Clause, approved, ee4j.jpa -maven/mavencentral/jakarta.servlet/jakarta.servlet-api/6.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.servlet +maven/mavencentral/jakarta.annotation/jakarta.annotation-api/3.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca +maven/mavencentral/jakarta.el/jakarta.el-api/4.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.el +maven/mavencentral/jakarta.persistence/jakarta.persistence-api/3.2.0, EPL-2.0 OR BSD-3-Clause, approved, ee4j.jpa +maven/mavencentral/jakarta.servlet/jakarta.servlet-api/6.1.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.servlet maven/mavencentral/jakarta.transaction/jakarta.transaction-api/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jta -maven/mavencentral/jakarta.validation/jakarta.validation-api/3.0.2, Apache-2.0, approved, ee4j.validation +maven/mavencentral/jakarta.validation/jakarta.validation-api/3.1.1, Apache-2.0, approved, ee4j.validation maven/mavencentral/jakarta.xml.bind/jakarta.xml.bind-api/4.0.4, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/javax.validation/validation-api/1.1.0.Final, Apache-2.0, approved, CQ15114 maven/mavencentral/joda-time/joda-time/2.12.7, Apache-2.0, approved, #12739 -maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.17.8, Apache-2.0, approved, #19238 maven/mavencentral/net.bytebuddy/byte-buddy/1.17.8, Apache-2.0 AND BSD-3-Clause, approved, #19239 -maven/mavencentral/net.java.dev.jna/jna-platform/5.15.0, Apache-2.0 OR LGPL-2.1-or-later, approved, #16141 -maven/mavencentral/net.java.dev.jna/jna/5.15.0, Apache-2.0 AND LGPL-2.1-or-later, approved, #16139 -maven/mavencentral/net.minidev/accessors-smart/2.5.2, Apache-2.0, approved, #19432 -maven/mavencentral/net.minidev/json-smart/2.5.2, Apache-2.0, approved, #19431 +maven/mavencentral/net.minidev/accessors-smart/2.6.0, Apache-2.0, approved, #24380 +maven/mavencentral/net.minidev/json-smart/2.6.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.antlr/ST4/4.3.4, BSD-3-Clause, approved, #1495 maven/mavencentral/org.antlr/antlr-runtime/3.5.3, BSD-3-Clause, approved, #8916 -maven/mavencentral/org.antlr/antlr4-runtime/4.13.0, BSD-3-Clause, approved, #10767 maven/mavencentral/org.antlr/antlr4-runtime/4.13.1, BSD-3-Clause, approved, #10767 +maven/mavencentral/org.antlr/antlr4-runtime/4.13.2, BSD-3-Clause, approved, #10767 maven/mavencentral/org.apache.commons/commons-collections4/4.5.0, Apache-2.0 AND LicenseRef-Public-Domain, approved, #20791 -maven/mavencentral/org.apache.commons/commons-compress/1.27.1, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #17651 -maven/mavencentral/org.apache.commons/commons-configuration2/2.12.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.apache.commons/commons-fileupload2-core/2.0.0-M4, Apache-2.0, approved, #15738 -maven/mavencentral/org.apache.commons/commons-fileupload2-jakarta-servlet6/2.0.0-M4, Apache-2.0, approved, #21710 maven/mavencentral/org.apache.commons/commons-lang3/3.20.0, Apache-2.0, approved, #24711 maven/mavencentral/org.apache.commons/commons-text/1.13.0, Apache-2.0, approved, #17931 maven/mavencentral/org.apache.httpcomponents.client5/httpclient5/5.5.2, Apache-2.0 AND MPL-2.0, approved, #24483 maven/mavencentral/org.apache.httpcomponents.core5/httpcore5-h2/5.3.6, Apache-2.0, approved, #16867 maven/mavencentral/org.apache.httpcomponents.core5/httpcore5/5.3.6, Apache-2.0, approved, #16866 -maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.14, Apache-2.0, approved, #15248 -maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.16, Apache-2.0, approved, CQ23528 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.53, Apache-2.0 AND (EPL-2.0 OR (GPL-2.0-only WITH Classpath-exception-2.0)) AND CDDL-1.0 AND (CDDL-1.1 OR (GPL-2.0-only WITH Classpath-exception-2.0)) AND EPL-2.0, approved, #15195 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.53, Apache-2.0, approved, #6997 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.53, Apache-2.0, approved, #7920 -maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, #17641 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/11.0.20, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-or-later), approved, #19217 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/11.0.20, Apache-2.0, approved, #22421 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/11.0.20, Apache-2.0, approved, #21065 maven/mavencentral/org.aspectj/aspectjrt/1.9.25.1, EPL-1.0, approved, tools.aspectj maven/mavencentral/org.aspectj/aspectjweaver/1.9.25.1, EPL-1.0, approved, tools.aspectj -maven/mavencentral/org.assertj/assertj-core/3.27.7, Apache-2.0, approved, #17980 -maven/mavencentral/org.awaitility/awaitility/4.3.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.83, MIT, approved, #25011 -maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.80, MIT AND CC0-1.0, approved, #18694 -maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.83, MIT, approved, #25009 -maven/mavencentral/org.flywaydb/flyway-core/11.7.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.flywaydb/flyway-database-postgresql/11.7.2, Apache-2.0, approved, #21919 -maven/mavencentral/org.flywaydb/flyway-mysql/11.7.2, Apache-2.0, approved, #21980 +maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.84, None, restricted, #27142 +maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.81, MIT AND CC0-1.0, approved, #21819 +maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.84, None, restricted, #27144 +maven/mavencentral/org.flywaydb/flyway-core/11.14.1, Apache-2.0, approved, #25604 +maven/mavencentral/org.flywaydb/flyway-database-postgresql/11.14.1, Apache-2.0, approved, #25627 +maven/mavencentral/org.flywaydb/flyway-mysql/11.14.1, NOASSERTION, restricted, clearlydefined maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.6, BSD-3-Clause, approved, ee4j.jaxb-impl maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.6, BSD-3-Clause, approved, ee4j.jaxb-impl maven/mavencentral/org.glassfish.jaxb/txw2/4.0.6, BSD-3-Clause, approved, ee4j.jaxb-impl -maven/mavencentral/org.hamcrest/hamcrest-core/3.0, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.hamcrest/hamcrest-library/3.0, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.hamcrest/hamcrest/3.0, BSD-3-Clause, approved, #17661 -maven/mavencentral/org.hibernate.common/hibernate-commons-annotations/7.0.3.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.hibernate.orm/hibernate-core/6.6.45.Final, (EPL-2.0 OR BSD-3-Clause) AND LGPL-2.1-or-later AND MIT, approved, #17553 -maven/mavencentral/org.hibernate.orm/hibernate-jpamodelgen/6.6.45.Final, EPL-2.0 OR BSD-3-Clause AND LGPL-2.1-only AND MIT, approved, #18221 -maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.3.Final, Apache-2.0 AND CC-PDDC, approved, #18198 -maven/mavencentral/org.javassist/javassist/3.30.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #12108 +maven/mavencentral/org.glassfish/jakarta.el/4.0.2, EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, #7937 +maven/mavencentral/org.hibernate.models/hibernate-models/1.0.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.hibernate.orm/hibernate-core/7.2.7.Final, Apache-2.0 AND (EPL-2.0 OR BSD-3-Clause), approved, #25611 +maven/mavencentral/org.hibernate.orm/hibernate-processor/7.2.7.Final, , restricted, clearlydefined +maven/mavencentral/org.hibernate.validator/hibernate-validator/9.0.1.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jboss.logging/jboss-logging/3.6.3.Final, Apache-2.0, approved, #26108 -maven/mavencentral/org.jetbrains.kotlin/kotlin-reflect/1.9.25, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.25, Apache-2.0, approved, #11827 -maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jline/jline-builtins/3.30.4, BSD-3-Clause AND (Apache-2.0 AND BSD-3-Clause), approved, #25257 -maven/mavencentral/org.jline/jline-console/3.30.4, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.jline/jline-native/3.30.4, BSD-3-Clause AND Apache-2.0, approved, #24519 -maven/mavencentral/org.jline/jline-reader/3.30.4, BSD-3-Clause, approved, #25255 -maven/mavencentral/org.jline/jline-style/3.30.4, BSD-3-Clause, approved, #25258 -maven/mavencentral/org.jline/jline-terminal/3.30.4, BSD-3-Clause AND Apache-2.0, approved, #23127 +maven/mavencentral/org.jline/jline/3.30.6, BSD-3-Clause AND Apache-2.0, approved, #25548 maven/mavencentral/org.jsoup/jsoup/1.22.1, MIT AND (Apache-2.0 AND BSD-3-Clause), approved, #25465 maven/mavencentral/org.jspecify/jspecify/1.0.0, Apache-2.0, approved, #21897 maven/mavencentral/org.mariadb.jdbc/mariadb-java-client/3.5.7, LGPL-2.1-or-later AND CC0-1.0, approved, #22822 -maven/mavencentral/org.mockito/mockito-core/5.17.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #20444 -maven/mavencentral/org.mockito/mockito-junit-jupiter/5.17.0, MIT, approved, #20445 -maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 +maven/mavencentral/org.ow2.asm/asm-commons/9.9.1, BSD-3-Clause, approved, #25265 +maven/mavencentral/org.ow2.asm/asm-tree/9.9.1, BSD-3-Clause, approved, #25267 maven/mavencentral/org.ow2.asm/asm/9.7.1, BSD-3-Clause, approved, #16464 -maven/mavencentral/org.ow2.asm/asm/9.8, BSD-3-Clause, approved, #20388 +maven/mavencentral/org.ow2.asm/asm/9.9.1, BSD-3-Clause, approved, #25264 maven/mavencentral/org.postgresql/postgresql/42.7.10, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.projectlombok/lombok/1.18.44, MIT, approved, #15192 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 -maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined -maven/mavencentral/org.skyscreamer/jsonassert/1.5.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.slf4j/jul-to-slf4j/2.0.17, MIT, approved, #7698 maven/mavencentral/org.slf4j/slf4j-api/2.0.17, MIT, approved, #5915 maven/mavencentral/org.springaicommunity/mcp-annotations/0.8.0, MIT AND Apache-2.0, approved, #25991 -maven/mavencentral/org.springdoc/springdoc-openapi-starter-common/2.8.16, Apache-2.0, approved, #18209 -maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-api/2.8.16, Apache-2.0, approved, #18210 -maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-ui/2.8.16, Apache-2.0, approved, #18211 +maven/mavencentral/org.springdoc/springdoc-openapi-starter-common/3.0.3, Apache-2.0, approved, #25648 +maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-api/3.0.3, Apache-2.0, approved, #25723 +maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-ui/3.0.3, , restricted, clearlydefined maven/mavencentral/org.springframework.ai/spring-ai-autoconfigure-mcp-server-common/1.1.4, Apache-2.0, approved, #25998 maven/mavencentral/org.springframework.ai/spring-ai-autoconfigure-mcp-server-webmvc/1.1.4, Apache-2.0, approved, #25987 maven/mavencentral/org.springframework.ai/spring-ai-commons/1.1.4, Apache-2.0, approved, #25989 @@ -285,87 +204,120 @@ maven/mavencentral/org.springframework.ai/spring-ai-mcp/1.1.4, Apache-2.0, appro maven/mavencentral/org.springframework.ai/spring-ai-model/1.1.4, Apache-2.0, approved, #25994 maven/mavencentral/org.springframework.ai/spring-ai-starter-mcp-server-webmvc/1.1.4, Apache-2.0 AND BSD-3-Clause, approved, #25996 maven/mavencentral/org.springframework.ai/spring-ai-template-st/1.1.4, Apache-2.0, approved, #25990 -maven/mavencentral/org.springframework.amqp/spring-amqp/3.2.9, Apache-2.0, approved, #18234 -maven/mavencentral/org.springframework.amqp/spring-rabbit-junit/3.2.9, Apache-2.0, approved, #23456 -maven/mavencentral/org.springframework.amqp/spring-rabbit-test/3.2.9, Apache-2.0, approved, #23489 -maven/mavencentral/org.springframework.amqp/spring-rabbit/3.2.9, Apache-2.0, approved, #18214 -maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/3.5.13, Apache-2.0, approved, #23038 -maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.5.13, Apache-2.0, approved, #23035 -maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.5.13, Apache-2.0, approved, #23034 -maven/mavencentral/org.springframework.boot/spring-boot-configuration-processor/3.5.13, Apache-2.0, approved, #23037 -maven/mavencentral/org.springframework.boot/spring-boot-devtools/3.5.13, Apache-2.0, approved, #23515 -maven/mavencentral/org.springframework.boot/spring-boot-starter-amqp/3.5.13, Apache-2.0, approved, #21951 -maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/3.5.13, Apache-2.0, approved, #22162 -maven/mavencentral/org.springframework.boot/spring-boot-starter-hateoas/3.5.13, Apache-2.0, approved, #21971 -maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.5.13, Apache-2.0, approved, #22180 -maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.5.13, Apache-2.0, approved, #23033 -maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.5.13, Apache-2.0, approved, #22825 -maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-client/3.5.13, Apache-2.0, approved, #22178 -maven/mavencentral/org.springframework.boot/spring-boot-starter-reactor-netty/3.5.13, Apache-2.0, approved, #22185 -maven/mavencentral/org.springframework.boot/spring-boot-starter-security/3.5.13, Apache-2.0, approved, #22151 -maven/mavencentral/org.springframework.boot/spring-boot-starter-test/3.5.13, Apache-2.0, approved, #21921 -maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.5.13, Apache-2.0, approved, #23031 -maven/mavencentral/org.springframework.boot/spring-boot-starter-validation/3.5.13, Apache-2.0, approved, #22150 -maven/mavencentral/org.springframework.boot/spring-boot-starter-web/3.5.13, Apache-2.0, approved, #23027 -maven/mavencentral/org.springframework.boot/spring-boot-starter-webflux/3.5.13, Apache-2.0, approved, #22118 -maven/mavencentral/org.springframework.boot/spring-boot-starter/3.5.13, Apache-2.0, approved, #23030 -maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.5.13, Apache-2.0, approved, #22215 -maven/mavencentral/org.springframework.boot/spring-boot-test/3.5.13, Apache-2.0, approved, #22213 -maven/mavencentral/org.springframework.boot/spring-boot/3.5.13, Apache-2.0, approved, #23032 -maven/mavencentral/org.springframework.cloud/spring-cloud-commons/4.3.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.cloud/spring-cloud-context/4.3.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.cloud/spring-cloud-function-context/4.3.1, Apache-2.0, approved, #21964 -maven/mavencentral/org.springframework.cloud/spring-cloud-function-core/4.3.1, Apache-2.0, approved, #22002 -maven/mavencentral/org.springframework.cloud/spring-cloud-openfeign-core/4.3.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.cloud/spring-cloud-starter-openfeign/4.3.1, MIT AND Apache-2.0, approved, #25561 -maven/mavencentral/org.springframework.cloud/spring-cloud-starter-stream-rabbit/4.3.1, Apache-2.0, approved, #25560 -maven/mavencentral/org.springframework.cloud/spring-cloud-starter/4.3.1, Apache-2.0, approved, #25562 -maven/mavencentral/org.springframework.cloud/spring-cloud-stream-binder-rabbit-core/4.3.1, Apache-2.0, approved, #21992 -maven/mavencentral/org.springframework.cloud/spring-cloud-stream-binder-rabbit/4.3.1, Apache-2.0, approved, #21988 -maven/mavencentral/org.springframework.cloud/spring-cloud-stream/4.3.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.data/spring-data-commons/3.5.10, Apache-2.0, approved, #21920 -maven/mavencentral/org.springframework.data/spring-data-jpa/3.5.10, Apache-2.0, approved, #21922 -maven/mavencentral/org.springframework.hateoas/spring-hateoas/2.5.2, Apache-2.0, approved, #22189 -maven/mavencentral/org.springframework.integration/spring-integration-amqp/6.5.8, Apache-2.0, approved, #21953 -maven/mavencentral/org.springframework.integration/spring-integration-core/6.5.8, Apache-2.0, approved, #23444 -maven/mavencentral/org.springframework.integration/spring-integration-jdbc/6.5.8, Apache-2.0, approved, #21987 -maven/mavencentral/org.springframework.integration/spring-integration-jmx/6.5.8, Apache-2.0, approved, #23494 -maven/mavencentral/org.springframework.plugin/spring-plugin-core/3.0.0, Apache-2.0, approved, #7104 -maven/mavencentral/org.springframework.retry/spring-retry/2.0.12, Apache-2.0, approved, #16889 -maven/mavencentral/org.springframework.security/spring-security-aspects/6.5.9, Apache-2.0, approved, #21979 -maven/mavencentral/org.springframework.security/spring-security-config/6.5.9, Apache-2.0, approved, #22177 -maven/mavencentral/org.springframework.security/spring-security-core/6.5.9, Apache-2.0, approved, #23039 -maven/mavencentral/org.springframework.security/spring-security-crypto/6.5.9, Apache-2.0 AND ISC, approved, #22171 -maven/mavencentral/org.springframework.security/spring-security-oauth2-client/6.5.9, Apache-2.0, approved, #22136 -maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.5.9, Apache-2.0, approved, #22138 -maven/mavencentral/org.springframework.security/spring-security-oauth2-jose/6.5.9, Apache-2.0, approved, #22174 -maven/mavencentral/org.springframework.security/spring-security-oauth2-resource-server/6.5.9, Apache-2.0, approved, #22113 -maven/mavencentral/org.springframework.security/spring-security-test/6.5.9, Apache-2.0, approved, #22420 -maven/mavencentral/org.springframework.security/spring-security-web/6.5.9, Apache-2.0, approved, #22173 -maven/mavencentral/org.springframework.shell/spring-shell-autoconfigure/3.4.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.shell/spring-shell-core/3.4.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.shell/spring-shell-standard-commands/3.4.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.shell/spring-shell-standard/3.4.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.shell/spring-shell-starter/3.4.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework.shell/spring-shell-table/3.4.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.springframework/spring-aop/6.2.17, Apache-2.0, approved, #17530 -maven/mavencentral/org.springframework/spring-aspects/6.2.17, Apache-2.0, approved, #17550 -maven/mavencentral/org.springframework/spring-beans/6.2.17, Apache-2.0, approved, #17528 -maven/mavencentral/org.springframework/spring-context-support/6.2.17, Apache-2.0, approved, #18233 -maven/mavencentral/org.springframework/spring-context/6.2.17, Apache-2.0, approved, #17554 -maven/mavencentral/org.springframework/spring-core/6.2.17, Apache-2.0 AND BSD-3-Clause, approved, #17535 -maven/mavencentral/org.springframework/spring-expression/6.2.17, Apache-2.0, approved, #17544 -maven/mavencentral/org.springframework/spring-jcl/6.2.17, Apache-2.0, approved, #17571 -maven/mavencentral/org.springframework/spring-jdbc/6.2.17, Apache-2.0, approved, #17543 -maven/mavencentral/org.springframework/spring-messaging/6.2.17, Apache-2.0, approved, #18225 -maven/mavencentral/org.springframework/spring-orm/6.2.17, Apache-2.0, approved, #17572 -maven/mavencentral/org.springframework/spring-test/6.2.17, Apache-2.0, approved, #17559 -maven/mavencentral/org.springframework/spring-tx/6.2.17, Apache-2.0, approved, #17547 -maven/mavencentral/org.springframework/spring-web/6.2.17, Apache-2.0, approved, #17558 -maven/mavencentral/org.springframework/spring-webflux/6.2.17, Apache-2.0, approved, #17567 -maven/mavencentral/org.springframework/spring-webmvc/6.2.17, Apache-2.0, approved, #17532 -maven/mavencentral/org.springframework/spring-websocket/6.2.17, Apache-2.0, approved, #18223 -maven/mavencentral/org.webjars/swagger-ui/5.32.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.springframework.amqp/spring-amqp/4.0.2, , restricted, clearlydefined +maven/mavencentral/org.springframework.amqp/spring-rabbit/4.0.2, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.springframework.amqp/spring-rabbitmq-client/4.0.2, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/4.0.5, Apache-2.0, approved, #26090 +maven/mavencentral/org.springframework.boot/spring-boot-actuator/4.0.5, Apache-2.0, approved, #26087 +maven/mavencentral/org.springframework.boot/spring-boot-amqp/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/4.0.5, Apache-2.0, approved, #24987 +maven/mavencentral/org.springframework.boot/spring-boot-cache/4.0.5, Apache-2.0, approved, #26128 +maven/mavencentral/org.springframework.boot/spring-boot-configuration-processor/4.0.5, Apache-2.0, approved, #26123 +maven/mavencentral/org.springframework.boot/spring-boot-data-commons/4.0.5, Apache-2.0, approved, #25784 +maven/mavencentral/org.springframework.boot/spring-boot-data-jpa/4.0.5, Apache-2.0, approved, #25785 +maven/mavencentral/org.springframework.boot/spring-boot-devtools/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-flyway/4.0.5, Apache-2.0, approved, #25631 +maven/mavencentral/org.springframework.boot/spring-boot-hateoas/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-health/4.0.5, Apache-2.0, approved, #26072 +maven/mavencentral/org.springframework.boot/spring-boot-hibernate/4.0.5, Apache-2.0, approved, #25787 +maven/mavencentral/org.springframework.boot/spring-boot-http-client/4.0.5, Apache-2.0, approved, #26125 +maven/mavencentral/org.springframework.boot/spring-boot-http-codec/4.0.5, Apache-2.0, approved, #26127 +maven/mavencentral/org.springframework.boot/spring-boot-http-converter/4.0.5, Apache-2.0, approved, #26122 +maven/mavencentral/org.springframework.boot/spring-boot-integration/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-jackson/4.0.5, Apache-2.0, approved, #26138 +maven/mavencentral/org.springframework.boot/spring-boot-jdbc/4.0.5, Apache-2.0, approved, #25788 +maven/mavencentral/org.springframework.boot/spring-boot-jpa/4.0.5, Apache-2.0, approved, #25783 +maven/mavencentral/org.springframework.boot/spring-boot-micrometer-metrics/4.0.5, Apache-2.0, approved, #26096 +maven/mavencentral/org.springframework.boot/spring-boot-micrometer-observation/4.0.5, Apache-2.0, approved, #26082 +maven/mavencentral/org.springframework.boot/spring-boot-persistence/4.0.5, Apache-2.0, approved, #25782 +maven/mavencentral/org.springframework.boot/spring-boot-reactor-netty/4.0.5, Apache-2.0, approved, #26121 +maven/mavencentral/org.springframework.boot/spring-boot-reactor/4.0.5, Apache-2.0, approved, #25618 +maven/mavencentral/org.springframework.boot/spring-boot-restclient/4.0.5, Apache-2.0, approved, #26124 +maven/mavencentral/org.springframework.boot/spring-boot-security-oauth2-client/4.0.5, Apache-2.0, approved, #26194 +maven/mavencentral/org.springframework.boot/spring-boot-security/4.0.5, Apache-2.0, approved, #26195 +maven/mavencentral/org.springframework.boot/spring-boot-servlet/4.0.5, Apache-2.0, approved, #26101 +maven/mavencentral/org.springframework.boot/spring-boot-sql/4.0.5, Apache-2.0, approved, #25605 +maven/mavencentral/org.springframework.boot/spring-boot-starter-actuator/4.0.5, Apache-2.0, approved, #25622 +maven/mavencentral/org.springframework.boot/spring-boot-starter-amqp/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-starter-cache/4.0.5, Apache-2.0, approved, #26077 +maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/4.0.5, Apache-2.0, approved, #25626 +maven/mavencentral/org.springframework.boot/spring-boot-starter-flyway/4.0.5, Apache-2.0, approved, #26186 +maven/mavencentral/org.springframework.boot/spring-boot-starter-hateoas/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-starter-jackson/4.0.5, Apache-2.0, approved, #26126 +maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/4.0.5, Apache-2.0, approved, #25616 +maven/mavencentral/org.springframework.boot/spring-boot-starter-json/4.0.5, , restricted, clearlydefined +maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/4.0.5, Apache-2.0, approved, #25602 +maven/mavencentral/org.springframework.boot/spring-boot-starter-micrometer-metrics/4.0.5, Apache-2.0, approved, #26120 +maven/mavencentral/org.springframework.boot/spring-boot-starter-reactor-netty/4.0.5, Apache-2.0, approved, #26130 +maven/mavencentral/org.springframework.boot/spring-boot-starter-security-oauth2-client/4.0.5, Apache-2.0, approved, #26192 +maven/mavencentral/org.springframework.boot/spring-boot-starter-security/4.0.5, Apache-2.0, approved, #25630 +maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat-runtime/4.0.5, Apache-2.0, approved, #25612 +maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/4.0.5, Apache-2.0, approved, #26097 +maven/mavencentral/org.springframework.boot/spring-boot-starter-validation/4.0.5, Apache-2.0, approved, #25629 +maven/mavencentral/org.springframework.boot/spring-boot-starter-web/4.0.5, Apache-2.0, approved, #26075 +maven/mavencentral/org.springframework.boot/spring-boot-starter-webflux/4.0.5, Apache-2.0, approved, #26129 +maven/mavencentral/org.springframework.boot/spring-boot-starter-webmvc/4.0.5, Apache-2.0, approved, #26187 +maven/mavencentral/org.springframework.boot/spring-boot-starter/4.0.5, Apache-2.0, approved, #25636 +maven/mavencentral/org.springframework.boot/spring-boot-tomcat/4.0.5, Apache-2.0, approved, #26083 +maven/mavencentral/org.springframework.boot/spring-boot-transaction/4.0.5, Apache-2.0, approved, #25786 +maven/mavencentral/org.springframework.boot/spring-boot-validation/4.0.5, Apache-2.0, approved, #26084 +maven/mavencentral/org.springframework.boot/spring-boot-web-server/4.0.5, Apache-2.0, approved, #24984 +maven/mavencentral/org.springframework.boot/spring-boot-webflux/4.0.5, Apache-2.0, approved, #26135 +maven/mavencentral/org.springframework.boot/spring-boot-webmvc/4.0.5, Apache-2.0, approved, #26105 +maven/mavencentral/org.springframework.boot/spring-boot/4.0.5, Apache-2.0, approved, #24993 +maven/mavencentral/org.springframework.cloud/spring-cloud-commons/5.0.1, Apache-2.0, approved, #26106 +maven/mavencentral/org.springframework.cloud/spring-cloud-context/5.0.1, Apache-2.0, approved, #26094 +maven/mavencentral/org.springframework.cloud/spring-cloud-function-context/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-function-core/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-openfeign-core/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-starter-openfeign/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-starter-stream-rabbit/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-starter/5.0.1, Apache-2.0, approved, #26100 +maven/mavencentral/org.springframework.cloud/spring-cloud-stream-binder-rabbit-core/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-stream-binder-rabbit/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.cloud/spring-cloud-stream/5.0.1, , restricted, clearlydefined +maven/mavencentral/org.springframework.data/spring-data-commons/4.0.4, Apache-2.0, approved, #25623 +maven/mavencentral/org.springframework.data/spring-data-jpa/4.0.4, Apache-2.0, approved, #25600 +maven/mavencentral/org.springframework.hateoas/spring-hateoas/3.0.3, , restricted, clearlydefined +maven/mavencentral/org.springframework.integration/spring-integration-amqp/7.0.4, , restricted, clearlydefined +maven/mavencentral/org.springframework.integration/spring-integration-core/7.0.4, , restricted, clearlydefined +maven/mavencentral/org.springframework.integration/spring-integration-jdbc/7.0.4, , restricted, clearlydefined +maven/mavencentral/org.springframework.integration/spring-integration-jmx/7.0.4, , restricted, clearlydefined +maven/mavencentral/org.springframework.plugin/spring-plugin-core/4.0.0, Apache-2.0, approved, #24785 +maven/mavencentral/org.springframework.security/spring-security-aspects/7.0.4, , restricted, clearlydefined +maven/mavencentral/org.springframework.security/spring-security-config/7.0.4, Apache-2.0, approved, #26189 +maven/mavencentral/org.springframework.security/spring-security-core/7.0.4, Apache-2.0, approved, #25609 +maven/mavencentral/org.springframework.security/spring-security-crypto/7.0.4, Apache-2.0 AND ISC, approved, #25599 +maven/mavencentral/org.springframework.security/spring-security-oauth2-client/7.0.4, Apache-2.0, approved, #25621 +maven/mavencentral/org.springframework.security/spring-security-oauth2-core/7.0.4, Apache-2.0, approved, #25634 +maven/mavencentral/org.springframework.security/spring-security-oauth2-jose/7.0.4, Apache-2.0, approved, #25601 +maven/mavencentral/org.springframework.security/spring-security-oauth2-resource-server/7.0.4, Apache-2.0, approved, #25624 +maven/mavencentral/org.springframework.security/spring-security-web/7.0.4, Apache-2.0, approved, #25617 +maven/mavencentral/org.springframework.shell/spring-shell-core-autoconfigure/4.0.0, , restricted, clearlydefined +maven/mavencentral/org.springframework.shell/spring-shell-core/4.0.0, , restricted, clearlydefined +maven/mavencentral/org.springframework.shell/spring-shell-jline/4.0.0, , restricted, clearlydefined +maven/mavencentral/org.springframework.shell/spring-shell-starter/4.0.0, , restricted, clearlydefined +maven/mavencentral/org.springframework/spring-aop/7.0.6, Apache-2.0, approved, #24985 +maven/mavencentral/org.springframework/spring-aspects/7.0.6, Apache-2.0, approved, #25619 +maven/mavencentral/org.springframework/spring-beans/7.0.6, Apache-2.0, approved, #24991 +maven/mavencentral/org.springframework/spring-context-support/7.0.6, Apache-2.0, approved, #26103 +maven/mavencentral/org.springframework/spring-context/7.0.6, Apache-2.0, approved, #24986 +maven/mavencentral/org.springframework/spring-core/7.0.6, Apache-2.0 AND BSD-3-Clause, approved, #24992 +maven/mavencentral/org.springframework/spring-expression/7.0.6, Apache-2.0, approved, #24988 +maven/mavencentral/org.springframework/spring-jdbc/7.0.6, Apache-2.0, approved, #25610 +maven/mavencentral/org.springframework/spring-messaging/7.0.6, , restricted, clearlydefined +maven/mavencentral/org.springframework/spring-orm/7.0.6, Apache-2.0, approved, #25628 +maven/mavencentral/org.springframework/spring-tx/7.0.6, Apache-2.0, approved, #25615 +maven/mavencentral/org.springframework/spring-web/7.0.6, Apache-2.0, approved, #24989 +maven/mavencentral/org.springframework/spring-webflux/7.0.6, Apache-2.0, approved, #25625 +maven/mavencentral/org.springframework/spring-webmvc/7.0.6, Apache-2.0, approved, #25606 +maven/mavencentral/org.springframework/spring-websocket/7.0.6, , restricted, clearlydefined +maven/mavencentral/org.webjars/swagger-ui/5.32.2, , restricted, clearlydefined maven/mavencentral/org.webjars/webjars-locator-lite/1.1.3, MIT, approved, #24484 -maven/mavencentral/org.xmlunit/xmlunit-core/2.10.4, Apache-2.0, approved, #14590 -maven/mavencentral/org.yaml/snakeyaml/2.4, Apache-2.0, approved, #19469 +maven/mavencentral/org.yaml/snakeyaml/2.5, Apache-2.0, approved, #23100 +maven/mavencentral/tools.jackson.core/jackson-core/3.0.3, Apache-2.0 AND BSD-2-Clause AND MIT, approved, clearlydefined +maven/mavencentral/tools.jackson.core/jackson-core/3.1.0, Apache-2.0 AND MIT, approved, #26415 +maven/mavencentral/tools.jackson.core/jackson-databind/3.0.3, Apache-2.0, approved, clearlydefined +maven/mavencentral/tools.jackson.core/jackson-databind/3.1.0, Apache-2.0, approved, #26439 +maven/mavencentral/tools.jackson.dataformat/jackson-dataformat-cbor/3.1.0, , restricted, clearlydefined +maven/mavencentral/tools.jackson.datatype/jackson-datatype-joda/3.1.0, , restricted, clearlydefined diff --git a/.3rd-party/README.md b/.3rd-party/README.md index 94a755e46..cca49f24f 100644 --- a/.3rd-party/README.md +++ b/.3rd-party/README.md @@ -12,5 +12,5 @@ $ cd .. && mvn license-tool:license-check -Ddash.fail=false -PcheckLicense Note: Some projects (e.g. test artifacts) could be excluded with *--projects* parameter, e.g: ```shell -$ cd .. && mvn license-tool:license-check -Ddash.fail=false -PcheckLicense \ --projects '!org.eclipse.hawkbit:hawkbit-repository-test,!org.eclipse.hawkbit:hawkbit-dmf-rabbitmq-test' +$ cd .. && mvn license-tool:license-check -Ddash.fail=false -PcheckLicense --projects '!org.eclipse.hawkbit:hawkbit-repository-test,!org.eclipse.hawkbit:hawkbit-dmf-rabbitmq-test' ``` diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/auth/StaticAuthenticationProvider.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/auth/StaticAuthenticationProvider.java index b400384c1..f4a404176 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/auth/StaticAuthenticationProvider.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/auth/StaticAuthenticationProvider.java @@ -20,6 +20,7 @@ import java.util.regex.Pattern; import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails; import org.eclipse.hawkbit.tenancy.TenantAwareUser; import org.eclipse.hawkbit.tenancy.TenantAwareUserProperties; +import org.jspecify.annotations.NonNull; import org.springframework.boot.security.autoconfigure.SecurityProperties; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; @@ -44,7 +45,8 @@ public class StaticAuthenticationProvider extends DaoAuthenticationProvider { } @Override - protected Authentication createSuccessAuthentication(final Object principal, final Authentication authentication, final UserDetails user) { + protected @NonNull Authentication createSuccessAuthentication( + @NonNull final Object principal, final Authentication authentication, final UserDetails user) { final UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken( principal, authentication.getCredentials(), user.getAuthorities()); result.setDetails(user instanceof TenantAwareUser tenantAwareUser @@ -58,15 +60,13 @@ public class StaticAuthenticationProvider extends DaoAuthenticationProvider { final List userPrincipals = new ArrayList<>(); tenantAwareUserProperties.getUser().forEach((username, user) -> { final String password = password(user.getPassword()); - - final List credentials = - createAuthorities(user.getRoles(), user.getPermissions(), Collections::emptyList); + final List credentials = createAuthorities(user.getRoles(), user.getPermissions(), Collections::emptyList); userPrincipals.add(ObjectUtils.isEmpty(user.getTenant()) ? new User(username, password, credentials) : new TenantAwareUser(username, password, credentials, user.getTenant())); }); - if (securityProperties != null && securityProperties.getUser() != null && !securityProperties.getUser().isPasswordGenerated()) { + if (securityProperties != null && !securityProperties.getUser().isPasswordGenerated()) { // explicitly setup system user - add is as a regular (non-tenant scoped) user userPrincipals.add(new User( securityProperties.getUser().getName(), @@ -119,7 +119,7 @@ public class StaticAuthenticationProvider extends DaoAuthenticationProvider { } @Override - public UserDetails loadUserByUsername(final String username) { + public @NonNull UserDetails loadUserByUsername(@NonNull final String username) { final User user = userMap.get(username); if (user == null) { throw new UsernameNotFoundException("No such user"); diff --git a/hawkbit-core/src/main/resources/hawkbit-jackson-defaults.properties b/hawkbit-core/src/main/resources/hawkbit-jackson-defaults.properties index 86c26c4fb..47dab8891 100644 --- a/hawkbit-core/src/main/resources/hawkbit-jackson-defaults.properties +++ b/hawkbit-core/src/main/resources/hawkbit-jackson-defaults.properties @@ -8,7 +8,7 @@ # SPDX-License-Identifier: EPL-2.0 # -# sets MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS to true +# sets MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS to true, jackson 3 doesn't override finals which we need spring.jackson.mapper.allow-final-fields-as-mutators=true # sets DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY to true # this feature allow sending single value instead of array of single value for array fields. diff --git a/hawkbit-ddi/hawkbit-ddi-api/pom.xml b/hawkbit-ddi/hawkbit-ddi-api/pom.xml index 06458461f..9a91761ac 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/pom.xml +++ b/hawkbit-ddi/hawkbit-ddi-api/pom.xml @@ -35,6 +35,11 @@ + + tools.jackson.core + jackson-databind + test + io.github.classgraph classgraph diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionFeedbackTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionFeedbackTest.java index 62479f71d..bf4131074 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionFeedbackTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionFeedbackTest.java @@ -16,10 +16,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; import java.util.Collections; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serialization of DDI api model 'DdiActionFeedback' @@ -74,15 +73,15 @@ class DdiActionFeedbackTest { void shouldFailForObjectWithWrongDataTypes() { // Setup final String serializedDdiActionFeedback = """ - { - "timestamp" : "1627997501890", - "status" : { - "execution" : "[closed]", - "result" : null, - "details" : [] - } - } - """; + { + "timestamp" : "1627997501890", + "status" : { + "execution" : "[closed]", + "result" : null, + "details" : [] + } + } + """; assertThatExceptionOfType(MismatchedInputException.class).isThrownBy( () -> mapper.readValue(serializedDdiActionFeedback, DdiActionFeedback.class)); } @@ -91,19 +90,19 @@ class DdiActionFeedbackTest { * Verify that deserialization works if optional fields are not parsed */ @Test - void shouldConvertItWithoutOptionalFieldTimestamp() throws JsonProcessingException { + void shouldConvertItWithoutOptionalFieldTimestamp() { // Setup final String serializedDdiActionFeedback = """ - { - "status" : { - "result" : { - "finished" : "none" - }, - "execution" : "download", - "details" : [ "Some message" ] - } - } - """; + { + "status" : { + "result" : { + "finished" : "none" + }, + "execution" : "download", + "details" : [ "Some message" ] + } + } + """; assertThat(mapper.readValue(serializedDdiActionFeedback, DdiActionFeedback.class)).satisfies(deserializedDdiActionFeedback -> { assertThat(deserializedDdiActionFeedback.getTimestamp()).isNotNull(); diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionHistoryTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionHistoryTest.java index 76ef5d318..7f81dcd57 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionHistoryTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiActionHistoryTest.java @@ -17,9 +17,9 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiActionHistory' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHashTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHashTest.java index 897bc66f4..c17e7ff10 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHashTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHashTest.java @@ -14,10 +14,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiArtifactHash' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactTest.java index 4924d2cc4..b74c88b55 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiArtifact' @@ -78,7 +78,6 @@ class DdiArtifactTest { final String serializedDdiArtifact = "{\"filename\": [\"test.file\"],\"hashes\":{\"sha1\":\"123\",\"md5\":\"456\",\"sha256\":\"789\"},\"size\":111,\"links\":[]}"; // Test - assertThatExceptionOfType(MismatchedInputException.class) - .isThrownBy(() -> OBJECT_MAPPER.readValue(serializedDdiArtifact, DdiArtifact.class)); + assertThatExceptionOfType(MismatchedInputException.class).isThrownBy(() -> OBJECT_MAPPER.readValue(serializedDdiArtifact, DdiArtifact.class)); } } \ No newline at end of file diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelActionToStopTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelActionToStopTest.java index 9566a25a8..6948f3654 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelActionToStopTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelActionToStopTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiCancelActionToStop' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelTest.java index 69e9501d6..4c5916ed9 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiCancelTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiArtifact' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiChunkTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiChunkTest.java index b198ee4fe..30b3155be 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiChunkTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiChunkTest.java @@ -17,9 +17,9 @@ import java.io.IOException; import java.util.Collections; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiChunk' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigDataTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigDataTest.java index 901ff7594..97bfb7e19 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigDataTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigDataTest.java @@ -17,9 +17,9 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiConfigData' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigTest.java index 7b78488b8..ad931cad7 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfigTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiConfig' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfirmationBaseTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfirmationBaseTest.java index 7feb1650b..0dbbfa71d 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfirmationBaseTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiConfirmationBaseTest.java @@ -20,9 +20,9 @@ import java.io.IOException; import java.util.Collections; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiConfirmationBase' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBaseTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBaseTest.java index c35d6c834..4e92b63f5 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBaseTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBaseTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiControllerBase' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBaseTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBaseTest.java index e2ea4ba19..864825a6b 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBaseTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBaseTest.java @@ -20,9 +20,9 @@ import java.io.IOException; import java.util.Collections; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiDeploymentBase' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentTest.java index 8cc8335ba..f612be598 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentTest.java @@ -19,9 +19,9 @@ import static org.eclipse.hawkbit.ddi.json.model.DdiDeployment.HandlingType.FORC import java.io.IOException; import java.util.Collections; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiDeployment' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiMetadataTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiMetadataTest.java index 44efce78e..ea377e28e 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiMetadataTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiMetadataTest.java @@ -14,10 +14,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiMetadata' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiPollingTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiPollingTest.java index 0e878930e..2f1e140a9 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiPollingTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiPollingTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiPolling' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiProgressTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiProgressTest.java index 1c8be63f9..62dc04331 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiProgressTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiProgressTest.java @@ -15,9 +15,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiProgress' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiResultTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiResultTest.java index 90a187542..8ab271fec 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiResultTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiResultTest.java @@ -16,9 +16,9 @@ import static org.eclipse.hawkbit.ddi.json.model.DdiResult.FinalResult.NONE; import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiResult' diff --git a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiStatusTest.java b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiStatusTest.java index 20952e428..d0fc16b6b 100644 --- a/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiStatusTest.java +++ b/hawkbit-ddi/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/DdiStatusTest.java @@ -19,12 +19,12 @@ import java.io.IOException; import java.util.Collections; import java.util.stream.Stream; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.exc.MismatchedInputException; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.exc.MismatchedInputException; /** * Test serializability of DDI api model 'DdiStatus' diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/integration/AmqpMessageHandlerServiceIntegrationTest.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/integration/AmqpMessageHandlerServiceIntegrationTest.java index c003a2e5a..bfc203d1b 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/integration/AmqpMessageHandlerServiceIntegrationTest.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/integration/AmqpMessageHandlerServiceIntegrationTest.java @@ -25,8 +25,6 @@ import java.util.Objects; import java.util.Optional; import java.util.UUID; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.eclipse.hawkbit.amqp.AmqpMessageHandlerService; import org.eclipse.hawkbit.amqp.AmqpProperties; import org.eclipse.hawkbit.dmf.amqp.api.EventTopic; @@ -73,6 +71,8 @@ import org.mockito.Mockito; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.beans.factory.annotation.Autowired; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; /** * Feature: Component Tests - Device Management Federation API
@@ -1103,7 +1103,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr assertActionStatusList(actionId, 2, Status.WAIT_FOR_CONFIRMATION); } - private static String getActionIdFromBody(final byte[] body) throws IOException { + private static String getActionIdFromBody(final byte[] body) { final ObjectMapper objectMapper = new ObjectMapper(); final ObjectNode node = objectMapper.readValue(new String(body, Charset.defaultCharset()), ObjectNode.class); assertThat(node.has("actionId")).isTrue(); @@ -1130,8 +1130,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr private void updateAttributesWithUpdateModeMerge() { // get the current attributes - final Map attributes = new HashMap<>( - targetManagement.getControllerAttributes(DMF_ATTR_TEST_CONTROLLER_ID)); + final Map attributes = new HashMap<>(targetManagement.getControllerAttributes(DMF_ATTR_TEST_CONTROLLER_ID)); // send an update message with update mode MERGE final Map mergeAttributes = new HashMap<>(); diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/pom.xml b/hawkbit-mgmt/hawkbit-mgmt-api/pom.xml index cbdf6e3fb..6bf84f6fe 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/pom.xml +++ b/hawkbit-mgmt/hawkbit-mgmt-api/pom.xml @@ -32,6 +32,11 @@ ${project.version}
+ + tools.jackson.core + jackson-databind + + org.springframework.boot spring-boot-starter-hateoas-test diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignments.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignments.java index 7aebe81ed..2c2f3977e 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignments.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignments.java @@ -11,11 +11,10 @@ package org.eclipse.hawkbit.mgmt.json.model.target; import java.io.Serial; import java.util.ArrayList; -import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import lombok.NoArgsConstructor; +import tools.jackson.databind.annotation.JsonDeserialize; /** * Class to hold multiple distribution set assignments. A JSON object diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignmentsDeserializer.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignmentsDeserializer.java index 596f19250..6e56c4d16 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignmentsDeserializer.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target/MgmtDistributionSetAssignmentsDeserializer.java @@ -9,46 +9,30 @@ */ package org.eclipse.hawkbit.mgmt.json.model.target; -import java.io.IOException; -import java.io.Serial; import java.util.Arrays; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.deser.std.StdDeserializer; /** - * Deserializes a single object or a List of - * {@link MgmtDistributionSetAssignment}s + * Deserializes a single object or a List of {@link MgmtDistributionSetAssignment}s */ public class MgmtDistributionSetAssignmentsDeserializer extends StdDeserializer { - @Serial - private static final long serialVersionUID = 1L; - - /** - * Mandatory constructor - */ public MgmtDistributionSetAssignmentsDeserializer() { - this(null); - } - - protected MgmtDistributionSetAssignmentsDeserializer(final Class vc) { - super(vc); + super(MgmtDistributionSetAssignments.class); } @Override - public MgmtDistributionSetAssignments deserialize(final JsonParser jp, final DeserializationContext ctx) - throws IOException { + public MgmtDistributionSetAssignments deserialize(final JsonParser jp, final DeserializationContext ctx) { final MgmtDistributionSetAssignments assignments = new MgmtDistributionSetAssignments(); - final ObjectCodec codec = jp.getCodec(); - final JsonNode node = codec.readTree(jp); + final JsonNode node = jp.readValueAsTree(); if (node.isArray()) { - assignments.addAll(Arrays.asList(codec.treeToValue(node, MgmtDistributionSetAssignment[].class))); + assignments.addAll(Arrays.asList(ctx.readTreeAsValue(node, MgmtDistributionSetAssignment[].class))); } else { - assignments.add(codec.treeToValue(node, MgmtDistributionSetAssignment.class)); + assignments.add(ctx.readTreeAsValue(node, MgmtDistributionSetAssignment.class)); } return assignments; } diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/AuditFieldSerializationTest.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/AuditFieldSerializationTest.java index ca8c6fa8e..de543904a 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/AuditFieldSerializationTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/AuditFieldSerializationTest.java @@ -11,10 +11,9 @@ package org.eclipse.hawkbit.mgmt.json.model; import static org.assertj.core.api.Assertions.assertThat; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTarget; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; /** * Feature: Unit Tests - Management API
@@ -23,7 +22,7 @@ import org.junit.jupiter.api.Test; class AuditFieldSerializationTest { @Test - void assertAuditingFields() throws JsonProcessingException { + void assertAuditingFields() { final MgmtTarget mgmtTarget = new MgmtTarget(); mgmtTarget.setCreatedBy("user"); mgmtTarget.setCreatedAt(System.currentTimeMillis() - 1_000_000); diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtTargetAssignmentResponseBodyTest.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtTargetAssignmentResponseBodyTest.java index a335662dc..2282bcc0a 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtTargetAssignmentResponseBodyTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/test/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtTargetAssignmentResponseBodyTest.java @@ -11,13 +11,12 @@ package org.eclipse.hawkbit.mgmt.json.model.distributionset; import static org.assertj.core.api.Assertions.assertThat; -import java.io.IOException; import java.util.Arrays; import java.util.List; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Feature: Tests for the MgmtTargetAssignmentResponseBody
@@ -33,7 +32,7 @@ class MgmtTargetAssignmentResponseBodyTest { * Tests that the ActionIds are serialized correctly in MgmtTargetAssignmentResponseBody */ @Test - void testActionIdsSerialization() throws IOException { + void testActionIdsSerialization() { final MgmtTargetAssignmentResponseBody responseBody = generateResponseBody(); final ObjectMapper objectMapper = new ObjectMapper(); final String responseBodyAsString = objectMapper.writeValueAsString(responseBody); diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtOpenApiConfiguration.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtOpenApiConfiguration.java index 17eff71f9..a3f14c657 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtOpenApiConfiguration.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtOpenApiConfiguration.java @@ -9,7 +9,10 @@ */ package org.eclipse.hawkbit.mgmt.rest.resource; +import java.util.Comparator; import java.util.List; +import java.util.Map; +import java.util.Optional; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.security.SecurityRequirement; @@ -17,6 +20,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.ServerVariable; import io.swagger.v3.oas.models.servers.ServerVariables; +import io.swagger.v3.oas.models.tags.Tag; import org.eclipse.hawkbit.rest.OpenApi; import org.springdoc.core.models.GroupedOpenApi; import org.springframework.beans.factory.annotation.Value; @@ -52,10 +56,10 @@ public class MgmtOpenApiConfiguration { """)) .servers(tenantEndpointEnabled ? List.of( - new Server() - .url("/{tenant}/") - .variables(new ServerVariables().addServerVariable("tenant", tenantSeverVariable())), - new Server().url("/")) + new Server() + .url("/{tenant}/") + .variables(new ServerVariables().addServerVariable("tenant", tenantSeverVariable())), + new Server().url("/")) : List.of(new Server().url("/"))) .addSecurityItem(new SecurityRequirement() .addList(BASIC_AUTH_SEC_SCHEME_NAME) @@ -74,7 +78,7 @@ public class MgmtOpenApiConfiguration { .type(SecurityScheme.Type.HTTP) .bearerFormat("JWT") .scheme("bearer"))) - .tags(OpenApi.sort(openApi.getTags()))) + .tags(sort(openApi.getTags()))) .build(); } @@ -84,4 +88,35 @@ public class MgmtOpenApiConfiguration { tenantServerVariable.setDefault("DEFAULT"); return tenantServerVariable; } + + private static final String ORDER = "order"; + private static final Comparator TAG_COMPARATOR = new Comparator<>() { + + @Override + public int compare(final Tag o1, final Tag o2) { + final int o1Order = order(o1); + final int o2Order = order(o2); + if (o1Order == o2Order) { + return o1.getName().compareTo(o2.getName()); + } else { + return Integer.compare(o1Order, o2Order); + } + } + + private static int order(final Tag tag) { + return Optional.ofNullable(tag.getExtensions()) + .map(extensions -> extensions.get(OpenApi.X_HAWKBIT)) + .filter(extension -> Map.class.isAssignableFrom(extension.getClass())) + .map(Map.class::cast) + .map(propertiesMap -> propertiesMap.get(ORDER)) + .map(String.class::cast) + .map(Integer::parseInt) + .orElse(0); + } + }; + + private static List sort(final List tags) { + tags.sort(TAG_COMPARATOR); + return tags; + } } \ No newline at end of file diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java index 66308ae53..5531a4bf3 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java @@ -45,7 +45,6 @@ import java.util.stream.Stream; import jakarta.validation.ConstraintViolationException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.jsonpath.JsonPath; import org.eclipse.hawkbit.auth.SpPermission; import org.eclipse.hawkbit.exception.SpServerError; @@ -115,7 +114,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest { private static final String JSON_PATH_ROOT = "$"; // fields, attributes private static final String JSON_PATH_FIELD_ID = ".id"; - private static final String JSON_PATH_FIELD_CONTROLLERID = ".controllerId"; + private static final String JSON_PATH_FIELD_CONTROLLER_ID = ".controllerId"; private static final String JSON_PATH_FIELD_NAME = ".name"; private static final String JSON_PATH_FIELD_DESCRIPTION = ".description"; private static final String JSON_PATH_FIELD_CONTENT = ".content"; @@ -133,7 +132,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest { private static final String JSON_PATH_FIELD_TARGET_TYPE = ".targetType"; private static final String JSON_PATH_NAME = JSON_PATH_ROOT + JSON_PATH_FIELD_NAME; private static final String JSON_PATH_ID = JSON_PATH_ROOT + JSON_PATH_FIELD_ID; - private static final String JSON_PATH_CONTROLLERID = JSON_PATH_ROOT + JSON_PATH_FIELD_CONTROLLERID; + private static final String JSON_PATH_CONTROLLER_ID = JSON_PATH_ROOT + JSON_PATH_FIELD_CONTROLLER_ID; private static final String JSON_PATH_DESCRIPTION = JSON_PATH_ROOT + JSON_PATH_FIELD_DESCRIPTION; private static final String JSON_PATH_LAST_REQUEST_AT = JSON_PATH_ROOT + JSON_PATH_FIELD_LAST_REQUEST_AT; private static final String JSON_PATH_TYPE = JSON_PATH_ROOT + JSON_PATH_FIELD_TARGET_TYPE; @@ -853,7 +852,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest { .andDo(MockMvcResultPrinter.print()) .andExpect(status().isOk()) .andExpect(jsonPath(JSON_PATH_NAME, equalTo(knownName))) - .andExpect(jsonPath(JSON_PATH_CONTROLLERID, equalTo(knownControllerId))) + .andExpect(jsonPath(JSON_PATH_CONTROLLER_ID, equalTo(knownControllerId))) .andExpect(jsonPath(JSON_PATH_DESCRIPTION, equalTo(TARGET_DESCRIPTION_TEST))) .andExpect(jsonPath(JSON_PATH_LAST_REQUEST_AT, equalTo(target.getLastTargetQuery()))) .andExpect(jsonPath("$.pollStatus", hasKey("lastRequestAt"))) @@ -2353,7 +2352,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest { .andDo(MockMvcResultPrinter.print()) .andExpect(status().isOk()) .andExpect(jsonPath(JSON_PATH_NAME, equalTo("targetOfType1"))) - .andExpect(jsonPath(JSON_PATH_CONTROLLERID, equalTo("id2"))) + .andExpect(jsonPath(JSON_PATH_CONTROLLER_ID, equalTo("id2"))) .andExpect(jsonPath(JSON_PATH_TYPE, equalTo(type1.getId().intValue()))) .andExpect(jsonPath(JSON_PATH_DESCRIPTION, equalTo("testid2"))) .andExpect(jsonPath("$._links.targetType.href", equalTo(hrefType1))) diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTenantManagementResourceTest.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTenantManagementResourceTest.java index 24b9051b1..9f7542b56 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTenantManagementResourceTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTenantManagementResourceTest.java @@ -25,7 +25,6 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.auth.SpPermission; import org.eclipse.hawkbit.mgmt.json.model.system.MgmtSystemTenantConfigurationValueRequest; import org.eclipse.hawkbit.repository.DistributionSetTypeManagement; @@ -35,6 +34,7 @@ import org.json.JSONObject; import org.junit.jupiter.api.Test; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.ResultMatcher; +import tools.jackson.databind.ObjectMapper; /** * Spring MVC Tests against the MgmtTenantManagementResource. diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/util/ResourceUtility.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/util/ResourceUtility.java index 8619f0bcb..afeefd0a1 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/util/ResourceUtility.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/util/ResourceUtility.java @@ -9,11 +9,9 @@ */ package org.eclipse.hawkbit.mgmt.rest.resource.util; -import java.io.IOException; - -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.mgmt.json.model.artifact.MgmtArtifact; import org.eclipse.hawkbit.rest.json.model.ExceptionInfo; +import tools.jackson.databind.ObjectMapper; /** * Utility additions for the REST API tests. @@ -22,11 +20,11 @@ public final class ResourceUtility { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - public static ExceptionInfo convertException(final String jsonExceptionResponse) throws IOException { + public static ExceptionInfo convertException(final String jsonExceptionResponse) { return OBJECT_MAPPER.readValue(jsonExceptionResponse, ExceptionInfo.class); } - public static MgmtArtifact convertArtifactResponse(final String jsonResponse) throws IOException { + public static MgmtArtifact convertArtifactResponse(final String jsonResponse) { return OBJECT_MAPPER.readValue(jsonResponse, MgmtArtifact.class); } } \ No newline at end of file diff --git a/hawkbit-mgmt/hawkbit-mgmt-server/src/test/java/org/eclipse/hawkbit/app/mgmt/PreAuthorizeEnabledTest.java b/hawkbit-mgmt/hawkbit-mgmt-server/src/test/java/org/eclipse/hawkbit/app/mgmt/PreAuthorizeEnabledTest.java index 25d1e349f..d30c9db43 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-server/src/test/java/org/eclipse/hawkbit/app/mgmt/PreAuthorizeEnabledTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-server/src/test/java/org/eclipse/hawkbit/app/mgmt/PreAuthorizeEnabledTest.java @@ -16,13 +16,13 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.auth.SpPermission; import org.eclipse.hawkbit.auth.SpRole; import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.jupiter.api.Test; import org.springframework.http.HttpStatus; import org.springframework.test.context.TestPropertySource; +import tools.jackson.databind.ObjectMapper; /** * Feature: Integration Test - Security
@@ -96,7 +96,7 @@ class PreAuthorizeEnabledTest extends AbstractSecurityTest { mvc.perform(get("/rest/v1/system/configs")).andExpect(result -> { // returns default DS type because of READ_TARGET assertThat(result.getResponse().getStatus()).isEqualTo(HttpStatus.OK.value()); - assertThat((Map) new ObjectMapper().reader().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1); + assertThat((Map) new ObjectMapper().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1); }); } diff --git a/hawkbit-monolith/hawkbit-update-server/src/test/java/org/eclipse/hawkbit/app/PreAuthorizeEnabledTest.java b/hawkbit-monolith/hawkbit-update-server/src/test/java/org/eclipse/hawkbit/app/PreAuthorizeEnabledTest.java index 6919ed96e..1e780c211 100644 --- a/hawkbit-monolith/hawkbit-update-server/src/test/java/org/eclipse/hawkbit/app/PreAuthorizeEnabledTest.java +++ b/hawkbit-monolith/hawkbit-update-server/src/test/java/org/eclipse/hawkbit/app/PreAuthorizeEnabledTest.java @@ -16,13 +16,13 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.auth.SpPermission; import org.eclipse.hawkbit.auth.SpRole; import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.jupiter.api.Test; import org.springframework.http.HttpStatus; import org.springframework.test.context.TestPropertySource; +import tools.jackson.databind.ObjectMapper; /** * Feature: Integration Test - Security
@@ -98,7 +98,7 @@ class PreAuthorizeEnabledTest extends AbstractSecurityTest { mvc.perform(get("/rest/v1/system/configs")).andExpect(result -> { // returns default DS type because of READ_TARGET assertThat(result.getResponse().getStatus()).isEqualTo(HttpStatus.OK.value()); - assertThat((Map) new ObjectMapper().reader().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1); + assertThat((Map) new ObjectMapper().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1); }); } diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEvent.java index 0860cf1b6..7ec0567c0 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEvent.java @@ -27,7 +27,7 @@ public abstract class AbstractRemoteEvent extends ApplicationEvent { @Serial private static final long serialVersionUID = 1L; - private String id; // not a final - jackson 3 doesn't override finals + private final String id; // for serialization libs like jackson protected AbstractRemoteEvent() { diff --git a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml index ea8e22cea..f9be81db3 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml @@ -58,7 +58,7 @@ com.ethlo.persistence.tools eclipselink-maven-plugin - ${eclipselink.maven.plugin.version} + ${eclipselink-maven-plugin.version} process-classes diff --git a/hawkbit-repository/hawkbit-repository-jpa/pom.xml b/hawkbit-repository/hawkbit-repository-jpa/pom.xml index d751e278d..c8ed77ecd 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa/pom.xml @@ -51,7 +51,7 @@ com.ethlo.persistence.tools eclipselink-maven-plugin - ${eclipselink.maven.plugin.version} + ${eclipselink-maven-plugin.version} process-classes diff --git a/hawkbit-rest/hawkbit-rest-api/pom.xml b/hawkbit-rest/hawkbit-rest-api/pom.xml index ac0fabb1f..91a9ab3e6 100644 --- a/hawkbit-rest/hawkbit-rest-api/pom.xml +++ b/hawkbit-rest/hawkbit-rest-api/pom.xml @@ -21,23 +21,19 @@ hawkbit-rest-api hawkBit :: REST :: API - - - - org.springdoc - springdoc-openapi - ${springdoc-openapi.version} - pom - import - - - - - + jakarta.validation + jakarta.validation-api + + + com.fasterxml.jackson.core + jackson-annotations + + io.swagger.core.v3 - swagger-core-jakarta + swagger-annotations-jakarta + ${swagger-annotations-jakarta.version} org.springframework.hateoas diff --git a/hawkbit-rest/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/OpenApi.java b/hawkbit-rest/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/OpenApi.java index a3a64ec50..59b56db1f 100644 --- a/hawkbit-rest/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/OpenApi.java +++ b/hawkbit-rest/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/OpenApi.java @@ -9,12 +9,6 @@ */ package org.eclipse.hawkbit.rest; -import java.util.Comparator; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import io.swagger.v3.oas.models.tags.Tag; import lombok.NoArgsConstructor; @NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) @@ -23,35 +17,4 @@ public class OpenApi { public static final String HAWKBIT_SERVER_OPENAPI_ENABLED = "hawkbit.server.openapi.enabled"; public static final String X_HAWKBIT = "x-hawkbit"; - public static final String ORDER = "order"; - - public static List sort(final List tags) { - tags.sort(TAG_COMPARATOR); - return tags; - } - - private static final Comparator TAG_COMPARATOR = new Comparator<>() { - - @Override - public int compare(final Tag o1, final Tag o2) { - final int o1Order = order(o1); - final int o2Order = order(o2); - if (o1Order == o2Order) { - return o1.getName().compareTo(o2.getName()); - } else { - return Integer.compare(o1Order, o2Order); - } - } - - private static int order(final Tag tag) { - return Optional.ofNullable(tag.getExtensions()) - .map(extensions -> extensions.get(X_HAWKBIT)) - .filter(extension -> Map.class.isAssignableFrom(extension.getClass())) - .map(Map.class::cast) - .map(propertiesMap -> propertiesMap.get(ORDER)) - .map(String.class::cast) - .map(Integer::parseInt) - .orElse(0); - } - }; } \ No newline at end of file diff --git a/hawkbit-rest/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java b/hawkbit-rest/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java index 2454ec87c..3e4760a4a 100644 --- a/hawkbit-rest/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java +++ b/hawkbit-rest/hawkbit-rest-core/src/test/java/org/eclipse/hawkbit/rest/AbstractRestIntegrationTest.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.rest; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.repository.jpa.JpaRepositoryConfiguration; import org.eclipse.hawkbit.repository.jpa.model.AbstractJpaBaseEntity_; import org.eclipse.hawkbit.repository.jpa.model.JpaAction; @@ -29,6 +27,7 @@ import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.filter.CharacterEncodingFilter; +import tools.jackson.databind.ObjectMapper; /** * Abstract Test for Rest tests. @@ -65,7 +64,7 @@ public abstract class AbstractRestIntegrationTest extends AbstractIntegrationTes return createMvcWebAppContext; } - protected static String toJson(final Object obj) throws JsonProcessingException { + protected static String toJson(final Object obj) { return OBJECT_MAPPER.writeValueAsString(obj); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/MainLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/MainLayout.java index 0abd0c40c..0d4749538 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/MainLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/MainLayout.java @@ -109,7 +109,7 @@ public class MainLayout extends AppLayout { final HorizontalLayout layout = new HorizontalLayout(); layout.setPadding(true); layout.setJustifyContentMode(FlexComponent.JustifyContentMode.CENTER); - final Image icon = new Image("images/header_icon.png", "hawkBit icon"); + final Image icon = new Image("images/hawkbit.png", "hawkBit icon"); icon.setMaxHeight(24, Unit.PIXELS); icon.setMaxWidth(24, Unit.PIXELS); appName.addClassNames(LumoUtility.AlignItems.BASELINE, LumoUtility.FontSize.LARGE, LumoUtility.Margin.NONE); @@ -141,9 +141,9 @@ public class MainLayout extends AppLayout { if (accessChecker.hasAccess(ConfigView.class)) { nav.addItem(new SideNavItem("Config", ConfigView.class, VaadinIcon.COG.create())); } -// if (accessChecker.hasAccess(AboutView.class)) { -// nav.addItem(new SideNavItem("About", AboutView.class, VaadinIcon.INFO_CIRCLE.create())); -// } + if (accessChecker.hasAccess(AboutView.class)) { + nav.addItem(new SideNavItem("About", AboutView.class, VaadinIcon.INFO_CIRCLE.create())); + } defaultView = DEFAULT_VIEW_PRIORITY.stream().filter(accessChecker::hasAccess).findFirst().orElse(null); return nav; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/AboutView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/AboutView.java index 225c34b35..afcaf0972 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/AboutView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/AboutView.java @@ -34,7 +34,7 @@ public final class AboutView extends VerticalLayout { public AboutView() { setSpacing(false); - final Image img = new Image("images/about_image.png", "hawkBit"); + final Image img = new Image("images/hawkbit_logo.png", "hawkBit"); img.setWidth("200px"); add(img); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetFilterQueryView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetFilterQueryView.java index 931a81580..8e34f75df 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetFilterQueryView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetFilterQueryView.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.ui.view; -import com.fasterxml.jackson.databind.ObjectMapper; import com.vaadin.flow.component.Component; import com.vaadin.flow.component.Key; import com.vaadin.flow.component.Unit; @@ -49,6 +48,7 @@ import org.eclipse.hawkbit.ui.view.util.Filter; import org.eclipse.hawkbit.ui.view.util.SelectionGrid; import org.eclipse.hawkbit.ui.view.util.TableView; import org.eclipse.hawkbit.ui.view.util.Utils; +import tools.jackson.databind.ObjectMapper; import java.io.Serial; import java.util.List; @@ -374,7 +374,7 @@ public class TargetFilterQueryView extends TableView ds; - static ObjectMapper objectMapper = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); public static TargetFilterQueryGridItem from(final HawkbitMgmtClient hawkbitClient, MgmtTargetFilterQuery filter) { - TargetFilterQueryGridItem filterGridItem = objectMapper.convertValue(filter, TargetFilterQueryGridItem.class); + TargetFilterQueryGridItem filterGridItem = OBJECT_MAPPER.convertValue(filter, TargetFilterQueryGridItem.class); if (filterGridItem.getAutoAssignDistributionSet() != null) { filterGridItem.ds = Optional.ofNullable( diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetView.java index 6a0af2b53..82111ac18 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/TargetView.java @@ -28,7 +28,6 @@ import java.util.stream.Stream; import jakarta.annotation.security.RolesAllowed; -import com.fasterxml.jackson.databind.ObjectMapper; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.component.ClickEvent; import com.vaadin.flow.component.Component; @@ -86,6 +85,7 @@ import org.eclipse.hawkbit.ui.view.util.TableView; import org.eclipse.hawkbit.ui.view.util.Utils; import org.springframework.http.ResponseEntity; import org.springframework.util.ObjectUtils; +import tools.jackson.databind.ObjectMapper; @PageTitle("Targets") @Route(value = "targets", layout = MainLayout.class) diff --git a/hawkbit-ui/src/main/resources/META-INF/resources/images/about_image.png b/hawkbit-ui/src/main/resources/META-INF/resources/images/about_image.png deleted file mode 100644 index 1158488c1198a04d3ddec5d5e40af72e6eaa2fcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6797 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 K(zTMNA^!(4ajaJW literal 0 HcmV?d00001 diff --git a/hawkbit-ui/src/main/resources/META-INF/resources/images/hawkbit_logo.png b/hawkbit-ui/src/main/resources/META-INF/resources/images/hawkbit_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e67acf6dceddbd35d0474e6736d2dd74bcbc82d6 GIT binary patch literal 34562 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 CuwN(u literal 0 HcmV?d00001 diff --git a/hawkbit-ui/src/main/resources/META-INF/resources/images/header_icon.png b/hawkbit-ui/src/main/resources/META-INF/resources/images/header_icon.png deleted file mode 100644 index cb867393adaf5fb85c88f83f24d24216bcb109f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2191 zcmV;A2ypj_P)$b_^RGu}TOO6{JpS6=)gjC~9?dMs2k(cIs%g zw9^*H+824L3fgo~i=YvCDX@f61CBs+pqdyA@2+Hblij`dKBphZQtV*cZ|w*FAD`#B z=l?(dd+vG8h0pLmhOi*_>3g83+o+A>^!Jz}klvEzrMd)zjBu4zwzlN>0FZt6#o5>z zj_jY1L)X6;=J(wn7l3D83*^Qrp1!^7KI4);>ytjS zDm~8d42u>10APe`eNR>Z5B9~-&2L3hDiYG(TjXJYCtnJja~>_|4|iC5&Z7k#HQX2g z_jFnBDi8rwdfea|mL`3^qp;ieWKuTJ0|`%7W&>RXyxsR)&|TDhafjDW1`;lcB2c9l zU}2jLpZT&Ik1UT`W&O0}!ONcz&`>3&IjuUWza)xQ?*!T+C9M{$;-{` zF`y}xWognUW|gute7UgckY)guPIYGidyQf6yfxvm-k+7p@>h$aBg+I4W*Ydg#CuXe zb6PDx(dy8+BM%oMO}FG2nDn_4$OCGGHT(1IIIEnhLc}2etIUc!yk8<;(&)}M0&`Y} zD*zTZy5~OM9GvSoa@=$Ho98m_`WM6evT5!`#X$GCCEG7aP~iyE1>P$}dM9wnlq&IF zOY6G21V63!DJtAGq920;%V1z*LzQ^BK;4bqC#-+E!I@(Wy>nKFO#r`}?36i%M82RK zZ+;^>UP|`YUveCvx^2I{Wg4o)1#pCm%3OI);fYk1Ujp}L0{wnnf;uByrf{XeE(Omj zmm6VfHqa*5@b(yw*y9tOtHnrmZXY>7%#(Yp<`MAv3JlMMysJ=g>qLh{nOtBkyFHhkVZ?}va^Ah}Phr^S zLjN%03E;VTYr-|9A{-erGNx$t&U&9k3I~C`z$n+SJyO2c9q3iSP=zoPXs7S;c)d?N zRE}@UvH8*pZV4=R?>nfo7q&%D0xX;6*3MfK?gIGjRZiKr)<(U+5MZ*%iMkOM;n4*nick?vTUtOFdi6Vm3~$^E}$ZO;?7Wu7y$uCA#z3H0h%mx7-8w zFc8Q`%7D0oe>|YK{fL$itCB*@#WMntrPzK{U4`8vD)`|2Rd~A)alaAXPi0wIm*5LVxYQ~WjIgQ9 zVZzq^cA635BL|DB!oEYceER{VzsHKs3{tcVi977-%IW83G=(n!EhV>}o$elJKd6I5 zXa=}vym4=OJ?aJ4p4tbl1FjL+st^N`z$=mB#tiL6%lzJmYx^1cM~V%UPT%GC0;@tL zkqg=CyZqP)7aQRLtAxHMJG*)`zN>KJHar#k?u*Ozw#fP7cqb|eNco;j%m(`PRF>sQ zpR0l8R=FI=x`qj^NOfQfY*DtYVGOVwG7&Xa&Yv<*t?-V{79$zRS&y5JXCkBdk`aa)j@8VtO8OkB_nEXM%LWQOneMZh`(fv3SGqeMBTXWo3?cqB@dn(KF8jl(g z)~B+p7!f1hS!7RVkv%mYw~vf7v)UtNguT5X14LNXS>#|tmAHS;V^2p8{IkK7=7M}g zOu+)Xl0G$#@CzW`cWj4Mx&XDxprp?X03)1T;mIwI@YPh7buBq&q_XS;q&cnOzpH_h z0-Dnr*2ZzR<>;`=_*9nZR+&{9lexeZbqQ*X@Pd&O6>Wr@9bsj?&p4|*lnL|^Bdj{b z@=vw>RD5D8E=|KNIga!#t<41bv=Np7qvDRl3z44Px7QjeF`(Fz;~ijUpOXgA=CuAt z@)Jr=^JCIbC8n!Kr6j0t&FwB~y=!ROoZ&Da4OQZloCByX7yI85e}?}X`~x*H(;Rxa R;feqN002ovPDHLkV1m1rDH;F( diff --git a/pom.xml b/pom.xml index c1b9d62f3..fa3ff394f 100644 --- a/pom.xml +++ b/pom.xml @@ -56,8 +56,9 @@ 17 - 4.0.5 - 2025.1.1 + 4.0.5 + 2025.1.1 + 1.1.4 3.0.3 @@ -74,12 +75,9 @@ Ethlo plugin uses 4.x dependencies - since it only does static weaving - it should be fine - but should eventually upgrade its dependencies. --> 5.0.0 - 3.0.2 + 3.0.2 - - 1.1.4 - 9.2.1 1.22.1 @@ -87,24 +85,26 @@ 2.21.0 4.5.0 1.8.0 + + 2.2.47 - 5.5.0 + 5.5.0 4.8.184 4.3.0 - 3.6.2 - 1.7.3 + 3.6.2 + 1.7.3 - 3.5.5 - 0.8.14 + 3.5.5 + 0.8.14 - 1.1.0 - 5.0.0 - 0.10.0 - 3.2.8 + 1.1.0 + 5.0.0 + 0.10.0 + 3.2.8 3.4.0 @@ -238,7 +238,7 @@ com.rabbitmq http-client - ${rabbitmq.http-client.version} + ${rabbitmq-http-client.version} com.cronutils @@ -255,7 +255,7 @@ org.springframework.cloud spring-cloud-dependencies - ${spring.cloud.version} + ${spring-cloud.version} pom import @@ -270,7 +270,7 @@ org.springframework.boot spring-boot-starter - ${spring.boot.version} + ${spring-boot.version} org.apache.logging.log4j @@ -281,7 +281,7 @@ org.springframework.boot spring-boot-starter-data-jpa - ${spring.boot.version} + ${spring-boot.version} org.hibernate.orm @@ -430,7 +430,7 @@ org.apache.maven.plugins maven-enforcer-plugin - ${maven.enforcer.plugin.version} + ${maven-enforcer-plugin.version} enforce-maven-and-java @@ -476,7 +476,7 @@ org.codehaus.mojo flatten-maven-plugin - ${flatten.maven.plugin.version} + ${flatten-maven-plugin.version} resolveCiFriendliesOnly true @@ -533,7 +533,7 @@ org.jacoco jacoco-maven-plugin - ${jacoco.maven.plugin.version} + ${jacoco-maven-plugin.version} prepare-ut-agent @@ -574,7 +574,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven.surefire.plugin.version} + ${maven-surefire-plugin.version} true ${surefire.forkcount} @@ -596,7 +596,7 @@ com.mycila license-maven-plugin - ${license.maven.plugin.version} + ${license-maven-plugin.version} @@ -653,7 +653,7 @@ org.eclipse.dash license-tool-plugin - ${license.tool.plugin.version} + ${license-tool-plugin.version} license-check @@ -693,7 +693,7 @@ org.apache.maven.plugins maven-gpg-plugin - ${maven.gpg.plugin.version} + ${maven-gpg-plugin.version} sign-artifacts @@ -707,7 +707,7 @@ org.sonatype.central central-publishing-maven-plugin - ${central.publishing.maven.plugin.version} + ${central-publishing-maven-plugin.version} true central @@ -738,7 +738,7 @@ org.apache.maven.plugins maven-surefire-report-plugin - ${maven.surefire.plugin.version} + ${maven-surefire-plugin.version} generate-surefire-report