diff --git a/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/FileSizeQuotaExceededException.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/FileSizeQuotaExceededException.java index ca3910215..fe81f3e72 100644 --- a/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/FileSizeQuotaExceededException.java +++ b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/FileSizeQuotaExceededException.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.artifact.exception; +import java.io.Serial; + import lombok.EqualsAndHashCode; import lombok.ToString; import org.eclipse.hawkbit.exception.AbstractServerRtException; @@ -21,6 +23,9 @@ import org.eclipse.hawkbit.exception.SpServerError; @ToString(callSuper = true) public class FileSizeQuotaExceededException extends AbstractServerRtException { + @Serial + private static final long serialVersionUID = 1L; + private static final String MAX_ARTIFACT_SIZE_EXCEEDED = "Maximum artifact size (%s) exceeded."; private static final SpServerError errorType = SpServerError.SP_FILE_SIZE_QUOTA_EXCEEDED; diff --git a/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/StorageQuotaExceededException.java b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/StorageQuotaExceededException.java index d06b907a1..86ac5154e 100644 --- a/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/StorageQuotaExceededException.java +++ b/hawkbit-artifact/hawkbit-artifact-api/src/main/java/org/eclipse/hawkbit/artifact/exception/StorageQuotaExceededException.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.artifact.exception; +import java.io.Serial; + import lombok.EqualsAndHashCode; import lombok.ToString; import org.eclipse.hawkbit.exception.AbstractServerRtException; @@ -21,6 +23,9 @@ import org.eclipse.hawkbit.exception.SpServerError; @ToString(callSuper = true) public class StorageQuotaExceededException extends AbstractServerRtException { + @Serial + private static final long serialVersionUID = 1L; + private static final String MAX_ARTIFACT_SIZE_TOTAL_EXCEEDED = "Storage quota exceeded, %s left."; private static final SpServerError errorType = SpServerError.SP_STORAGE_QUOTA_EXCEEDED; diff --git a/hawkbit-ddi/hawkbit-ddi-security/src/main/java/org/eclipse/hawkbit/security/controller/Authenticator.java b/hawkbit-ddi/hawkbit-ddi-security/src/main/java/org/eclipse/hawkbit/security/controller/Authenticator.java index 22164fc2c..79b658e09 100644 --- a/hawkbit-ddi/hawkbit-ddi-security/src/main/java/org/eclipse/hawkbit/security/controller/Authenticator.java +++ b/hawkbit-ddi/hawkbit-ddi-security/src/main/java/org/eclipse/hawkbit/security/controller/Authenticator.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.security.controller; import static org.eclipse.hawkbit.context.AccessContext.asTenant; +import java.io.Serial; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -61,6 +62,9 @@ public interface Authenticator { @EqualsAndHashCode(callSuper = true) private static class AuthenticatedController extends AbstractAuthenticationToken { + @Serial + private static final long serialVersionUID = 1L; + private static final Collection CONTROLLER_AUTHORITY = List.of(new SimpleGrantedAuthority(SpRole.CONTROLLER_ROLE)); private final String controllerId; diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java index b3e3d5b74..254ea0b8f 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/ConfigurableRabbitListenerContainerFactory.java @@ -16,19 +16,13 @@ import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.util.ErrorHandler; /** - * {@link RabbitListenerContainerFactory} that can be configured through - * hawkBit's {@link AmqpProperties}. + * {@link RabbitListenerContainerFactory} that can be configured through hawkBit's {@link AmqpProperties}. */ -public class ConfigurableRabbitListenerContainerFactory extends SimpleRabbitListenerContainerFactory { +public final class ConfigurableRabbitListenerContainerFactory extends SimpleRabbitListenerContainerFactory { private final int declarationRetries; /** - * Constructor. - * - * @param missingQueuesFatal the missingQueuesFatal to set. - * @param declarationRetries The number of retries - * @param errorHandler the error handler which should be use * @see SimpleMessageListenerContainer#setMissingQueuesFatal */ public ConfigurableRabbitListenerContainerFactory( diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/RequeueExceptionStrategy.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/RequeueExceptionStrategy.java index 6ddf957f4..76c77949d 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/RequeueExceptionStrategy.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/RequeueExceptionStrategy.java @@ -32,7 +32,7 @@ import org.springframework.util.ObjectUtils; */ @ToString @Slf4j -class RequeueExceptionStrategy implements FatalExceptionStrategy { +final class RequeueExceptionStrategy implements FatalExceptionStrategy { private final List fatalExceptionStrategies = new ArrayList<>(); diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java index 09bbaad29..2a94275b4 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java @@ -43,7 +43,6 @@ import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.ActionProperties; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.model.TenantConfigurationValue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -427,8 +426,8 @@ class AmqpMessageHandlerServiceTest { * Test next update is provided on finished action */ @Test + @SuppressWarnings("unchecked") void lookupNextUpdateActionAfterFinished() { - // Mock final Action action = createActionWithTarget(22L); when(controllerManagementMock.findActionWithDetails(anyLong())).thenReturn(Optional.of(action)); @@ -460,7 +459,7 @@ class AmqpMessageHandlerServiceTest { * Test feedback code is persisted in messages when provided with DmfActionUpdateStatus */ @Test - void feedBackCodeIsPersistedInMessages() throws IllegalAccessException { + void feedBackCodeIsPersistedInMessages() { // Mock final Action action = createActionWithTarget(22L); when(controllerManagementMock.findActionWithDetails(anyLong())).thenReturn(Optional.of(action)); @@ -471,9 +470,7 @@ class AmqpMessageHandlerServiceTest { final MessageProperties messageProperties = createMessageProperties(MessageType.EVENT); messageProperties.setHeader(MessageHeaderKey.TOPIC, EventTopic.UPDATE_ACTION_STATUS.name()); - final DmfActionUpdateStatus actionUpdateStatus = new DmfActionUpdateStatus( - 23L, DmfActionStatus.RUNNING, null, 2L, null, 12); - + final DmfActionUpdateStatus actionUpdateStatus = new DmfActionUpdateStatus(23L, DmfActionStatus.RUNNING, null, 2L, null, 12); final Message message = createMessage(actionUpdateStatus, messageProperties); // test 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 0cd7be792..57717533a 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 @@ -84,7 +84,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr private static final String DMF_ATTR_TEST_CONTROLLER_ID = "Dmf_hand_updateAttributes"; private static final String UPDATE_ATTR_TEST_CONTROLLER_ID = "ControllerAttributeTestTarget"; private static final String TARGET_PREFIX = "Dmf_hand_"; - + @Autowired private AmqpProperties amqpProperties; @@ -133,11 +133,8 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr void registerTargetWithName() { final String controllerId = TARGET_PREFIX + "registerTargetWithName"; final String name = "NonDefaultTargetName"; - registerAndAssertTargetWithExistingTenant(controllerId, name, 1, TargetUpdateStatus.REGISTERED, CREATED_BY, - null); - - registerSameTargetAndAssertBasedOnVersion(controllerId, name + "_updated", 1, TargetUpdateStatus.REGISTERED, - null); + registerAndAssertTargetWithExistingTenant(controllerId, name, 1, TargetUpdateStatus.REGISTERED, CREATED_BY, null); + registerSameTargetAndAssertBasedOnVersion(controllerId, name + "_updated", 1, TargetUpdateStatus.REGISTERED, null); Mockito.verifyNoInteractions(getDeadletterListener()); } @@ -156,8 +153,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr attributes.put("testKey1", "testValue1"); attributes.put("testKey2", "testValue2"); - registerAndAssertTargetWithExistingTenant(controllerId, null, 1, TargetUpdateStatus.REGISTERED, CREATED_BY, - attributes); + registerAndAssertTargetWithExistingTenant(controllerId, null, 1, TargetUpdateStatus.REGISTERED, CREATED_BY, attributes); attributes.put("testKey3", "testValue3"); registerSameTargetAndAssertBasedOnVersion(controllerId, null, 1, TargetUpdateStatus.REGISTERED, attributes); @@ -176,24 +172,22 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr void registerTargetWithNameAndAttributes() { final String controllerId = TARGET_PREFIX + "registerTargetWithAttributes"; final String name = "NonDefaultTargetName"; + final Map attributes = new HashMap<>(); attributes.put("testKey1", "testValue1"); attributes.put("testKey2", "testValue2"); - - registerAndAssertTargetWithExistingTenant(controllerId, name, 1, TargetUpdateStatus.REGISTERED, CREATED_BY, - attributes); + registerAndAssertTargetWithExistingTenant(controllerId, name, 1, TargetUpdateStatus.REGISTERED, CREATED_BY, attributes); attributes.put("testKey3", "testValue3"); - registerSameTargetAndAssertBasedOnVersion(controllerId, name + "_updated", 1, TargetUpdateStatus.REGISTERED, - attributes); + registerSameTargetAndAssertBasedOnVersion(controllerId, name + "_updated", 1, TargetUpdateStatus.REGISTERED, attributes); Mockito.verifyNoInteractions(getDeadletterListener()); } - @ParameterizedTest /** * Tests register invalid target with empty controller id. */ + @ParameterizedTest @ValueSource(strings = { "", "Invalid Invalid" }) @NullSource @ExpectEvents({ @Expect(type = TargetCreatedEvent.class) }) @@ -328,10 +322,10 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr assertAllTargetsCount(0); } - @ParameterizedTest /** * Tests null type message header. This message should forwarded to the deadletter queue */ + @ParameterizedTest @ValueSource(strings = { "", "NotExist" }) @NullSource @ExpectEvents({ @Expect(type = TargetCreatedEvent.class) }) @@ -344,10 +338,10 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr assertAllTargetsCount(0); } - @ParameterizedTest /** * Tests null topic message header. This message should forwarded to the deadletter queue */ + @ParameterizedTest @ValueSource(strings = { "", "NotExist" }) @NullSource @ExpectEvents({ @Expect(type = TargetCreatedEvent.class) }) @@ -372,10 +366,10 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr verifyOneDeadLetterMessage(); } - @ParameterizedTest /** * Tests invalid null message content. This message should forwarded to the deadletter queue */ + @ParameterizedTest @ValueSource(strings = { "", "Invalid Content" }) @NullSource @ExpectEvents({ @Expect(type = TargetCreatedEvent.class) }) @@ -431,7 +425,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void runningActionStatus() { final String controllerId = TARGET_PREFIX + "runningActionStatus"; @@ -451,7 +445,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void downloadedActionStatus() { final String controllerId = TARGET_PREFIX + "downloadedActionStatus"; @@ -470,7 +464,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void downloadActionStatus() { final String controllerId = TARGET_PREFIX + "downloadActionStatus"; @@ -490,7 +484,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = TargetUpdatedEvent.class, count = 2), @Expect(type = TargetPollEvent.class, count = 1) }) void errorActionStatus() { final String controllerId = TARGET_PREFIX + "errorActionStatus"; @@ -509,7 +503,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void warningActionStatus() { final String controllerId = TARGET_PREFIX + "warningActionStatus"; @@ -528,7 +522,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void retrievedActionStatus() { final String controllerId = TARGET_PREFIX + "retrievedActionStatus"; @@ -547,7 +541,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void cancelNotAllowActionStatus() { final String controllerId = TARGET_PREFIX + "cancelNotAllowActionStatus"; @@ -567,7 +561,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 2) }) void receiveDownloadAndInstallMessageAfterAssignment() { final String controllerId = TARGET_PREFIX + "receiveDownLoadAndInstallMessageAfterAssignment"; @@ -598,7 +592,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 2) }) void receiveDownloadMessageBeforeMaintenanceWindowStartTime() { final String controllerId = TARGET_PREFIX + "receiveDownLoadMessageBeforeMaintenanceWindowStartTime"; @@ -607,8 +601,8 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr registerAndAssertTargetWithExistingTenant(controllerId); final DistributionSet distributionSet = testdataFactory.createDistributionSet(UUID.randomUUID().toString()); testdataFactory.addSoftwareModuleMetadata(distributionSet); - assignDistributionSetWithMaintenanceWindow(distributionSet.getId(), controllerId, getTestSchedule(2), - getTestDuration(1), getTestTimeZone()); + assignDistributionSetWithMaintenanceWindow( + distributionSet.getId(), controllerId, getTestSchedule(2), getTestDuration(1), getTestTimeZone()); // test registerSameTargetAndAssertBasedOnVersion(controllerId, 1, TargetUpdateStatus.PENDING); @@ -630,7 +624,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 2) }) void receiveDownloadAndInstallMessageDuringMaintenanceWindow() { final String controllerId = TARGET_PREFIX + "receiveDownLoadAndInstallMessageDuringMaintenanceWindow"; @@ -639,8 +633,8 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr registerAndAssertTargetWithExistingTenant(controllerId); final DistributionSet distributionSet = testdataFactory.createDistributionSet(UUID.randomUUID().toString()); testdataFactory.addSoftwareModuleMetadata(distributionSet); - assignDistributionSetWithMaintenanceWindow(distributionSet.getId(), controllerId, getTestSchedule(-5), - getTestDuration(10), getTestTimeZone()); + assignDistributionSetWithMaintenanceWindow( + distributionSet.getId(), controllerId, getTestSchedule(-5), getTestDuration(10), getTestTimeZone()); // test registerSameTargetAndAssertBasedOnVersion(controllerId, 1, TargetUpdateStatus.PENDING); @@ -722,7 +716,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void canceledRejectedNotAllowActionStatus() { final String controllerId = TARGET_PREFIX + "canceledRejectedNotAllowActionStatus"; @@ -744,7 +738,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), @Expect(type = DistributionSetUpdatedEvent.class, count = 1), // implicit lock @Expect(type = SoftwareModuleUpdatedEvent.class, count = 9), // implicit lock - @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 1), @Expect(type = TargetPollEvent.class, count = 1) }) void canceledRejectedActionStatus() { final String controllerId = TARGET_PREFIX + "canceledRejectedActionStatus"; @@ -770,22 +764,16 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = TargetPollEvent.class, count = 1) }) void updateAttributesWithDifferentUpdateModes() { final String controllerId = TARGET_PREFIX + "updateAttributes"; - // setup registerAndAssertTargetWithExistingTenant(controllerId); - // no update mode specified updateAttributesWithoutUpdateMode(); - // update mode REPLACE updateAttributesWithUpdateModeReplace(); - // update mode MERGE updateAttributesWithUpdateModeMerge(); - // update mode REMOVE updateAttributesWithUpdateModeRemove(); - } /** @@ -827,7 +815,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr void updateAttributesWithWrongBody() { // setup registerAndAssertTargetWithExistingTenant(UPDATE_ATTR_TEST_CONTROLLER_ID); - final Message createUpdateAttributesMessageWrongBody = createUpdateAttributesMessageWrongBody( UPDATE_ATTR_TEST_CONTROLLER_ID); + final Message createUpdateAttributesMessageWrongBody = createUpdateAttributesMessageWrongBody(UPDATE_ATTR_TEST_CONTROLLER_ID); // test getDmfClient().send(createUpdateAttributesMessageWrongBody); @@ -902,8 +890,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr @Expect(type = TargetAttributesRequestedEvent.class, count = 2), @Expect(type = TargetUpdatedEvent.class, count = 3), @Expect(type = TargetPollEvent.class, count = 1) }) - void downloadOnlyAssignmentAllowsActionStatusUpdatesWhenTargetReportsFinishedAndUpdatesInstalledDS() - throws IOException { + void downloadOnlyAssignmentAllowsActionStatusUpdatesWhenTargetReportsFinishedAndUpdatesInstalledDS() throws IOException { // create target final String controllerId = TARGET_PREFIX + "registerTargets_1"; final DistributionSet distributionSet = createTargetAndDistributionSetAndAssign(controllerId, DOWNLOAD_ONLY); @@ -1125,10 +1112,8 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr } private void updateAttributesWithUpdateModeRemove() { - // assemble the expected attributes - final Map expectedAttributes = targetManagement - .getControllerAttributes(DMF_ATTR_TEST_CONTROLLER_ID); + final Map expectedAttributes = targetManagement.getControllerAttributes(DMF_ATTR_TEST_CONTROLLER_ID); expectedAttributes.remove("k1"); expectedAttributes.remove("k3"); @@ -1256,8 +1241,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr } private void sendUpdateAttributeMessage(final DmfAttributeUpdate attributeUpdate) { - final Message updateMessage = createUpdateAttributesMessage(DMF_ATTR_TEST_CONTROLLER_ID, - AbstractAmqpServiceIntegrationTest.TENANT_EXIST, attributeUpdate); + final Message updateMessage = createUpdateAttributesMessage(DMF_ATTR_TEST_CONTROLLER_ID, TENANT_EXIST, attributeUpdate); getDmfClient().send(updateMessage); } @@ -1266,8 +1250,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr await().untilAsserted(() -> { try { SecurityContextSwitch.asPrivileged(() -> { - final List actionStatusList = deploymentManagement - .findActionStatusByAction(actionId, PAGE).getContent(); + final List actionStatusList = deploymentManagement.findActionStatusByAction(actionId, PAGE).getContent(); assertThat(actionStatusList).hasSize(statusListCount); final List status = actionStatusList.stream().map(ActionStatus::getStatus) @@ -1283,9 +1266,8 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr } private int getAuthenticationMessageCount() { - return Integer - .parseInt(Objects.requireNonNull(getRabbitAdmin().getQueueProperties(amqpProperties.getReceiverQueue())) - .get(RabbitAdmin.QUEUE_MESSAGE_COUNT).toString()); + return Integer.parseInt(Objects.requireNonNull( + getRabbitAdmin().getQueueProperties(amqpProperties.getReceiverQueue())).get(RabbitAdmin.QUEUE_MESSAGE_COUNT).toString()); } private void assertEmptyReceiverQueueCount() { @@ -1298,8 +1280,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr private void verifyNumberOfDeadLetterMessages(final int numberOfInvocations) { assertEmptyReceiverQueueCount(); - await().untilAsserted( - () -> Mockito.verify(getDeadletterListener(), Mockito.times(numberOfInvocations)).handleMessage(Mockito.any())); + await().untilAsserted(() -> Mockito.verify(getDeadletterListener(), Mockito.times(numberOfInvocations)).handleMessage(Mockito.any())); Mockito.reset(getDeadletterListener()); } } \ No newline at end of file diff --git a/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml b/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml index fa61f26af..4439ebd2c 100644 --- a/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml +++ b/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml @@ -54,11 +54,6 @@ http-client compile - - org.springframework.boot - spring-boot-starter-web - compile - org.springframework.amqp spring-rabbit-test diff --git a/hawkbit-mcp/pom.xml b/hawkbit-mcp/pom.xml index f25cf8c12..12298a43f 100644 --- a/hawkbit-mcp/pom.xml +++ b/hawkbit-mcp/pom.xml @@ -61,12 +61,6 @@ spring-ai-mcp-annotations - - org.springframework.boot - spring-boot-configuration-processor - true - - com.github.ben-manes.caffeine caffeine diff --git a/hawkbit-mcp/src/main/java/org/eclipse/hawkbit/mcp/server/client/McpAuthenticationException.java b/hawkbit-mcp/src/main/java/org/eclipse/hawkbit/mcp/server/client/McpAuthenticationException.java index e56ce8248..20a176c7f 100644 --- a/hawkbit-mcp/src/main/java/org/eclipse/hawkbit/mcp/server/client/McpAuthenticationException.java +++ b/hawkbit-mcp/src/main/java/org/eclipse/hawkbit/mcp/server/client/McpAuthenticationException.java @@ -9,8 +9,13 @@ */ package org.eclipse.hawkbit.mcp.server.client; +import java.io.Serial; + public class McpAuthenticationException extends RuntimeException { + @Serial + private static final long serialVersionUID = 1L; + public McpAuthenticationException(String message) { super(message); } diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtActionId.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtActionId.java index e420d7d62..362bb1f91 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtActionId.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/distributionset/MgmtActionId.java @@ -43,7 +43,7 @@ import org.springframework.hateoas.RepresentationModel; } } }""") -public class MgmtActionId extends RepresentationModel { +public final class MgmtActionId extends RepresentationModel { @Schema(description = "ID of the action") private long id; 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 9e354df45..7aebe81ed 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 @@ -24,7 +24,7 @@ import lombok.NoArgsConstructor; */ @NoArgsConstructor @JsonDeserialize(using = MgmtDistributionSetAssignmentsDeserializer.class) -public class MgmtDistributionSetAssignments extends ArrayList { +public final class MgmtDistributionSetAssignments extends ArrayList { @Serial private static final long serialVersionUID = 1L; @@ -39,16 +39,6 @@ public class MgmtDistributionSetAssignments extends ArrayList assignments) { - super(assignments); - } - @Override @JsonIgnore public boolean isEmpty() { diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtTargetRestApi.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtTargetRestApi.java index 819d827e0..5f0dd1fd0 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtTargetRestApi.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtTargetRestApi.java @@ -308,7 +308,7 @@ public interface MgmtTargetRestApi { @Operation(summary = "Controls (confirm/deny) actions waiting for confirmation", description = """ Either confirm or deny an action which is waiting for confirmation. The action will be transferred into the RUNNING state in case confirming it. - The action will remain in WAITING_FOR_CONFIRMATION state in case denying it. + The action will remain in WAITING_FOR_CONFIRMATION state in case denying it. Required Permission: READ_REPOSITORY AND UPDATE_TARGET """) @PutNoContentResponses diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTagResourceTest.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTagResourceTest.java index 264939407..b18ea2aca 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTagResourceTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTagResourceTest.java @@ -470,6 +470,7 @@ class MgmtDistributionSetTagResourceTest extends AbstractManagementApiIntegratio final Map info = exceptionInfo.getInfo(); assertThat(info).isNotNull(); assertThat(info.get(EntityNotFoundException.TYPE)).isEqualTo(DistributionSet.class.getSimpleName()); + @SuppressWarnings("unchecked") final List notFound = (List) info.get(EntityNotFoundException.ENTITY_ID); Collections.sort(notFound); assertThat(notFound).isEqualTo(missing); diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java index 7795bed24..74fc9f2a0 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResourceTest.java @@ -97,8 +97,6 @@ class MgmtRolloutResourceTest extends AbstractManagementApiIntegrationTest { private RolloutGroupManagement rolloutGroupManagement; @Autowired private RolloutTestApprovalStrategy approvalStrategy; - @Autowired - private DistributionSetManagement distributionSetManagement; /** * Handles the GET request of retrieving a single rollout. @@ -1984,7 +1982,7 @@ class MgmtRolloutResourceTest extends AbstractManagementApiIntegrationTest { private long postRollout(final String name, final int groupSize, final Long distributionSetId, final String targetFilterQuery, final int targets, final Action.ActionType type, final Long startTime, - final Long forceTime, boolean isDynamic, String dynamicGroupSuffix, int dynamicGroupTargetsCount) throws Exception { + final Long forceTime, boolean isDynamic, final String dynamicGroupSuffix, int dynamicGroupTargetsCount) throws Exception { final String actionType = MgmtRestModelMapper.convertActionType(type).getName(); final String rollout = JsonBuilder.rollout(name, "desc", groupSize, distributionSetId, targetFilterQuery, new RolloutGroupConditionBuilder().withDefaults().build(), null, actionType, null, startTime, forceTime, diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTagResourceTest.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTagResourceTest.java index 474f467c0..d743ec671 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTagResourceTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTagResourceTest.java @@ -381,6 +381,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT final Map info = exceptionInfo.getInfo(); assertThat(info).isNotNull(); assertThat(info.get(EntityNotFoundException.TYPE)).isEqualTo(Target.class.getSimpleName()); + @SuppressWarnings("unchecked") final List notFound = (List) info.get(EntityNotFoundException.ENTITY_ID); Collections.sort(notFound); assertThat(notFound).isEqualTo(missing); @@ -424,6 +425,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT final Map info = exceptionInfo.getInfo(); assertThat(info).isNotNull(); assertThat(info.get(EntityNotFoundException.TYPE)).isEqualTo(Target.class.getSimpleName()); + @SuppressWarnings("unchecked") final List notFound = (List) info.get(EntityNotFoundException.ENTITY_ID); Collections.sort(notFound); assertThat(notFound).isEqualTo(missing); @@ -558,6 +560,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT final Map info = exceptionInfo.getInfo(); assertThat(info).isNotNull(); assertThat(info.get(EntityNotFoundException.TYPE)).isEqualTo(Target.class.getSimpleName()); + @SuppressWarnings("unchecked") final List notFound = (List) info.get(EntityNotFoundException.ENTITY_ID); Collections.sort(notFound); assertThat(notFound).isEqualTo(missing); @@ -604,6 +607,7 @@ public class MgmtTargetTagResourceTest extends AbstractManagementApiIntegrationT final Map info = exceptionInfo.getInfo(); assertThat(info).isNotNull(); assertThat(info.get(EntityNotFoundException.TYPE)).isEqualTo(Target.class.getSimpleName()); + @SuppressWarnings("unchecked") final List notFound = (List) info.get(EntityNotFoundException.ENTITY_ID); Collections.sort(notFound); assertThat(notFound).isEqualTo(missing); 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 cdc87062c..25d1e349f 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 @@ -14,6 +14,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import java.util.HashMap; +import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.auth.SpPermission; @@ -95,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(new ObjectMapper().reader().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1); + assertThat((Map) new ObjectMapper().reader().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 f797393ad..6919ed96e 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 @@ -14,6 +14,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import java.util.HashMap; +import java.util.Map; import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.hawkbit.auth.SpPermission; @@ -94,12 +95,11 @@ class PreAuthorizeEnabledTest extends AbstractSecurityTest { @Test @WithUser(authorities = { SpPermission.READ_TARGET }, autoCreateTenant = false) void onlyDSIfNoTenantConfig() throws Exception { - 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(new ObjectMapper().reader().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1); - }); + 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); + }); } /** diff --git a/hawkbit-ql-jpa/src/main/java/org/eclipse/hawkbit/ql/QueryException.java b/hawkbit-ql-jpa/src/main/java/org/eclipse/hawkbit/ql/QueryException.java index 236660db5..70825e75a 100644 --- a/hawkbit-ql-jpa/src/main/java/org/eclipse/hawkbit/ql/QueryException.java +++ b/hawkbit-ql-jpa/src/main/java/org/eclipse/hawkbit/ql/QueryException.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.ql; +import java.io.Serial; + import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; @@ -20,10 +22,13 @@ import lombok.ToString; @ToString(callSuper = true) public class QueryException extends RuntimeException { + @Serial + private static final long serialVersionUID = 1L; + public enum ErrorCode { INVALID_SYNTAX, UNSUPPORTED_FIELD, - GENERIC // an other + GENERIC // another } @Getter diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java index 0a68afdc7..2aa9e4567 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java @@ -506,6 +506,7 @@ public interface RolloutManagement extends PermissionSupport { * The name suffix, by default "" is used. */ @NotNull + @Builder.Default private String nameSuffix = ""; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeManagement.java index 6e16011f5..1b108c9f1 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeManagement.java @@ -63,7 +63,6 @@ public interface SoftwareModuleTypeManagement @Builder.Default private int maxAssignments = 1; - @Builder.Default private int minArtifacts; } diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractAssignmentEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractAssignmentEvent.java index de79ccfc1..a0d722c03 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractAssignmentEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/AbstractAssignmentEvent.java @@ -36,7 +36,7 @@ public abstract class AbstractAssignmentEvent extends RemoteTenantAwareEvent { @Serial private static final long serialVersionUID = 1L; - private final Map actions = new HashMap<>(); + private final HashMap actions = new HashMap<>(); protected AbstractAssignmentEvent(final Action a) { super(a.getTenant(), null); @@ -45,8 +45,7 @@ public abstract class AbstractAssignmentEvent extends RemoteTenantAwareEvent { protected AbstractAssignmentEvent(final String tenant, final Object source, final List a) { super(tenant, source); - actions.putAll(a.stream() - .collect(Collectors.toMap(action -> action.getTarget().getControllerId(), ActionProperties::new))); + actions.putAll(a.stream().collect(Collectors.toMap(action -> action.getTarget().getControllerId(), ActionProperties::new))); } public Optional getActionPropertiesForController(final String controllerId) { 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 403b4ff16..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 @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import java.io.Serial; import java.util.UUID; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -23,6 +24,9 @@ import org.springframework.context.ApplicationEvent; @JsonIgnoreProperties(ignoreUnknown = true) public abstract class AbstractRemoteEvent extends ApplicationEvent { + @Serial + private static final long serialVersionUID = 1L; + private final String id; // for serialization libs like jackson diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutStoppedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutStoppedEvent.java index 4931cf413..280aa7f8f 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutStoppedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutStoppedEvent.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository.event.remote; import java.io.Serial; +import java.util.ArrayList; import java.util.Collection; import lombok.Data; @@ -31,12 +32,12 @@ public class RolloutStoppedEvent extends RemoteTenantAwareEvent { @Serial private static final long serialVersionUID = 1L; - private Collection rolloutGroupIds; + private ArrayList rolloutGroupIds; private long rolloutId; public RolloutStoppedEvent(final String tenant, final long rolloutId, final Collection rolloutGroupIds) { super(tenant, rolloutId); this.rolloutId = rolloutId; - this.rolloutGroupIds = rolloutGroupIds; + this.rolloutGroupIds = new ArrayList<>(rolloutGroupIds); } } \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/service/AbstractServiceRemoteEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/service/AbstractServiceRemoteEvent.java index a77f45ced..84fb8b705 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/service/AbstractServiceRemoteEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/service/AbstractServiceRemoteEvent.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.repository.event.remote.service; +import java.io.Serial; + import lombok.EqualsAndHashCode; import lombok.Getter; import org.eclipse.hawkbit.repository.event.remote.AbstractRemoteEvent; @@ -17,6 +19,9 @@ import org.eclipse.hawkbit.repository.event.remote.AbstractRemoteEvent; @EqualsAndHashCode(callSuper = true) public abstract class AbstractServiceRemoteEvent extends AbstractRemoteEvent { + @Serial + private static final long serialVersionUID = 1L; + private final T remoteEvent; protected AbstractServiceRemoteEvent(T remoteEvent) { diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/AssignmentQuotaExceededException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/AssignmentQuotaExceededException.java index bf20ee98a..7af9ba19f 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/AssignmentQuotaExceededException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/AssignmentQuotaExceededException.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.repository.exception; +import java.io.Serial; + import lombok.EqualsAndHashCode; import lombok.ToString; import org.eclipse.hawkbit.exception.AbstractServerRtException; @@ -22,6 +24,9 @@ import org.eclipse.hawkbit.repository.model.BaseEntity; @ToString(callSuper = true) public class AssignmentQuotaExceededException extends AbstractServerRtException { + @Serial + private static final long serialVersionUID = 1L; + private static final String ASSIGNMENT_QUOTA_EXCEEDED_MESSAGE = "Quota exceeded: Cannot assign %s more %s entities to %s '%s'. The maximum is %s."; private static final SpServerError errorType = SpServerError.SP_QUOTA_EXCEEDED; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompatibleTargetTypeException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompatibleTargetTypeException.java index 66e4d69fb..5a06de725 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompatibleTargetTypeException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompatibleTargetTypeException.java @@ -11,7 +11,6 @@ package org.eclipse.hawkbit.repository.exception; import java.io.Serial; import java.util.Collection; -import java.util.Collections; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -33,22 +32,15 @@ public class IncompatibleTargetTypeException extends AbstractServerRtException { @Serial private static final long serialVersionUID = 1L; - private final Collection targetTypeNames; - private final Collection distributionSetTypeNames; - public IncompatibleTargetTypeException(final String targetTypeName, final Collection distributionSetTypeNames) { super(SpServerError.SP_TARGET_TYPE_INCOMPATIBLE, - String.format("Target of type %s is not compatible with distribution set of types %s", targetTypeName, distributionSetTypeNames) - ); - this.targetTypeNames = Collections.singleton(targetTypeName); - this.distributionSetTypeNames = distributionSetTypeNames; + String.format("Target of type %s is not compatible with distribution set of types %s", + targetTypeName, distributionSetTypeNames)); } public IncompatibleTargetTypeException(final Collection targetTypeNames, final String distributionSetTypeName) { super(SpServerError.SP_TARGET_TYPE_INCOMPATIBLE, - String.format("Targets of types %s are not compatible with distribution set of type %s", targetTypeNames, - distributionSetTypeName)); - this.targetTypeNames = targetTypeNames; - this.distributionSetTypeNames = Collections.singleton(distributionSetTypeName); + String.format("Targets of types %s are not compatible with distribution set of type %s", + targetTypeNames, distributionSetTypeName)); } } \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java index 473b33cd8..9003e965a 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.model; -import java.io.Serializable; import java.util.concurrent.TimeUnit; import org.eclipse.hawkbit.repository.Identifiable; @@ -17,7 +16,7 @@ import org.eclipse.hawkbit.repository.Identifiable; /** * Core information of all entities. */ -public interface BaseEntity extends Serializable, Identifiable { +public interface BaseEntity extends Identifiable { static Long getIdOrNull(final BaseEntity entity) { return entity == null ? null : entity.getId(); diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventJacksonMessageConverter.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventJacksonMessageConverter.java index cfd2b98d2..1344ca986 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventJacksonMessageConverter.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventJacksonMessageConverter.java @@ -19,10 +19,9 @@ public class EventJacksonMessageConverter extends MappingJackson2MessageConverte public static final MimeType APPLICATION_REMOTE_EVENT_JSON = new MimeType("application", "remote-event-json"); - public EventJacksonMessageConverter() { super(APPLICATION_REMOTE_EVENT_JSON); - ObjectMapper objectMapper = new ObjectMapper(); + final ObjectMapper objectMapper = new ObjectMapper(); EventType.getNamedTypes().forEach(objectMapper::registerSubtypes); setObjectMapper(objectMapper); } @@ -36,4 +35,4 @@ public class EventJacksonMessageConverter extends MappingJackson2MessageConverte protected Object convertFromInternal(final Message message, final Class targetClass, final Object conversionHint) { return super.convertFromInternal(message, targetClass, conversionHint); } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaConfiguration.java index b232c3bbf..d7dc6e5a1 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaConfiguration.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.jpa; +import java.io.Serial; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -142,6 +143,9 @@ public class JpaConfiguration extends JpaBaseConfiguration { static class CustomHibernateJpaDialect extends HibernateJpaDialect { + @Serial + private static final long serialVersionUID = 1L; + protected CustomHibernateJpaDialect() { super(); this.setJdbcExceptionTranslator(JpaExceptionTranslator.getTranslator()); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/acm/AccessControllerConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/acm/AccessControllerConfiguration.java index a245e517e..8bbbd0395 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/acm/AccessControllerConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/acm/AccessControllerConfiguration.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.jpa.acm; +import java.io.Serial; import java.lang.reflect.Proxy; import java.util.Collection; import java.util.List; @@ -70,7 +71,7 @@ public class AccessControllerConfiguration { return new AccessController<>() { @Override - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "rawtypes"}) public Optional> getAccessRules(final Operation operation) { return targetAccessController.getAccessRules(map(operation)).map(targetSpec -> (actionRoot, query, cb) -> { final Join targetJoin = actionRoot.join(JpaAction_.target); @@ -162,6 +163,9 @@ public class AccessControllerConfiguration { private static class RawAuthoritiesAuthentication implements Authentication { + @Serial + private static final long serialVersionUID = 1L; + private final Authentication authentication; private final transient SingletonSupplier> rawAuthoritiesSupplier; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/cluster/DistributedLockRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/cluster/DistributedLockRepository.java index e3a46775c..72db9f1e4 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/cluster/DistributedLockRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/cluster/DistributedLockRepository.java @@ -20,7 +20,6 @@ import javax.sql.DataSource; import lombok.extern.slf4j.Slf4j; import org.eclipse.hawkbit.repository.jpa.utils.DeploymentHelper; import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.dao.DeadlockLoserDataAccessException; import org.springframework.dao.PessimisticLockingFailureException; import org.springframework.dao.QueryTimeoutException; import org.springframework.integration.jdbc.lock.DefaultLockRepository; @@ -55,10 +54,8 @@ public class DistributedLockRepository extends DefaultLockRepository { // lock <-> next refresh time private final Map lockToRefreshTime = new ConcurrentHashMap<>(); - /** - * @param dataSource to use for managing the locks - */ - public DistributedLockRepository(final DataSource dataSource, final LockProperties lockProperties, final PlatformTransactionManager txManager) { + public DistributedLockRepository( + final DataSource dataSource, final LockProperties lockProperties, final PlatformTransactionManager txManager) { super(dataSource); this.txManager = txManager; @@ -91,14 +88,14 @@ public class DistributedLockRepository extends DefaultLockRepository { if (count < MAX_DELETE_RETRY) { log.debug("Failed to delete cluster lock {}. We try again.", lock, e); return delete(lock, count + 1); - } else { + } else { log.warn("Failed to delete cluster lock {}!", lock, e); return false; } } } - @Transactional(propagation=Propagation.NOT_SUPPORTED) + @Transactional(propagation = Propagation.NOT_SUPPORTED) @Override public boolean acquire(final String lock) { try { @@ -106,14 +103,13 @@ public class DistributedLockRepository extends DefaultLockRepository { // because we need to know real (after transaction commit) result Ïto know if it is really successful. // otherwise the super.acquire will return result before been committed and could be false positive final boolean acquired = DeploymentHelper.runInNewTransaction( - txManager, "lock-acquire", Isolation.READ_COMMITTED.value(), status -> super.acquire(lock)); + txManager, "lock-acquire", Isolation.READ_COMMITTED.value(), status -> super.acquire(lock)); if (acquired) { // update next refresh time - refreshAfterMillis.ifPresent( - afterMillis -> lockToRefreshTime.put(lock, Instant.now().plus(afterMillis, ChronoUnit.MILLIS))); + refreshAfterMillis.ifPresent(afterMillis -> lockToRefreshTime.put(lock, Instant.now().plus(afterMillis, ChronoUnit.MILLIS))); } return acquired; - } catch (final DataIntegrityViolationException | DeadlockLoserDataAccessException e) { + } catch (final DataIntegrityViolationException | PessimisticLockingFailureException e) { log.debug("Could not acquire cluster lock {}. I guess another node has it.", lock, e); return false; } catch (final QueryTimeoutException e) { @@ -122,7 +118,7 @@ public class DistributedLockRepository extends DefaultLockRepository { } } - @SuppressWarnings({"java:S1066"}) + @SuppressWarnings({ "java:S1066" }) @Scheduled(initialDelayString = TIC_PERIOD_MS, fixedDelayString = TIC_PERIOD_MS) public void refresh() { refreshAfterMillis.ifPresentOrElse(afterMillis -> { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java index fa2f274ac..b4fd0bd61 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java @@ -124,7 +124,8 @@ public class JpaDeploymentManagement extends JpaActionManagement implements Depl static { QUERY_DELETE_ACTIONS_BY_STATE_AND_LAST_MODIFIED = new EnumMap<>(Database.class); - QUERY_DELETE_ACTIONS_BY_STATE_AND_LAST_MODIFIED.put(Database.POSTGRESQL, + QUERY_DELETE_ACTIONS_BY_STATE_AND_LAST_MODIFIED.put( + Database.POSTGRESQL, "DELETE FROM sp_action " + "WHERE id IN (SELECT id FROM sp_action " + "WHERE tenant=" + Jpa.nativeQueryParamPrefix() + "tenant" + " AND status IN (%s)" + " AND last_modified_at<" + Jpa.nativeQueryParamPrefix() + "last_modified_at LIMIT " + ACTION_PAGE_LIMIT + ")"); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java index b9d9ee29c..46183bfcf 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java @@ -421,8 +421,8 @@ public class JpaDistributionSetManagement private List updateTag( final Collection dsIds, final long dsTagId, - final BiFunction updater) { - final DistributionSetTag tag = distributionSetTagManagement.get(dsTagId); + final BiFunction updater) { + final JpaDistributionSetTag tag = distributionSetTagManagement.get(dsTagId); final List allDs = dsIds.size() == 1 ? jpaRepository.findById(dsIds.iterator().next()) .map(List::of) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java index 969c21b4e..6d04a8f44 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedEntity.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import jakarta.validation.constraints.NotNull; @@ -36,9 +34,6 @@ import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; @SuppressWarnings("squid:S2160") public abstract class AbstractJpaNamedEntity extends AbstractJpaTenantAwareBaseEntity implements NamedEntity { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "name", nullable = false, length = NAME_MAX_SIZE) @Size(min = 1, max = NAME_MAX_SIZE) @NotNull diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java index 4a7d0572c..0259b1638 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaNamedVersionedEntity.java @@ -9,14 +9,14 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; +import lombok.AccessLevel; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; import org.eclipse.hawkbit.repository.model.NamedEntity; @@ -25,6 +25,7 @@ import org.eclipse.hawkbit.repository.model.NamedVersionedEntity; /** * Extension for {@link NamedEntity} that are versioned. */ +@NoArgsConstructor(access = AccessLevel.PROTECTED) // Default constructor needed for JPA entities @Setter @Getter @ToString(callSuper = true) @@ -33,27 +34,13 @@ import org.eclipse.hawkbit.repository.model.NamedVersionedEntity; @SuppressWarnings("squid:S2160") public abstract class AbstractJpaNamedVersionedEntity extends AbstractJpaNamedEntity implements NamedVersionedEntity { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "version", nullable = false, length = NamedVersionedEntity.VERSION_MAX_SIZE) @Size(min = 1, max = NamedVersionedEntity.VERSION_MAX_SIZE) @NotNull private String version; - /** - * parameterized constructor. - * - * @param name of the entity - * @param version of the entity - * @param description - */ AbstractJpaNamedVersionedEntity(final String name, final String version, final String description) { super(name, description); this.version = version; } - - AbstractJpaNamedVersionedEntity() { - // Default constructor needed for JPA entities - } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTypeEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTypeEntity.java index faf182c38..58df4649c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTypeEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaTypeEntity.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import jakarta.validation.constraints.NotNull; @@ -34,9 +32,6 @@ import org.eclipse.hawkbit.repository.model.Type; @SuppressWarnings("squid:S2160") public abstract class AbstractJpaTypeEntity extends AbstractJpaNamedEntity implements Type { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "type_key", nullable = false, updatable = false, length = KEY_MAX_SIZE) @Size(min = 1, max = KEY_MAX_SIZE) @NotNull diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java index 01426708a..77cdbb68c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; -import java.io.Serializable; import java.util.Objects; import jakarta.persistence.Column; @@ -35,10 +33,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @NoArgsConstructor // Default constructor for JPA @Entity @Table(name = "sp_ds_type_element") -public class DistributionSetTypeElement implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; +public class DistributionSetTypeElement { @EmbeddedId private DistributionSetTypeElementCompositeKey key; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElementCompositeKey.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElementCompositeKey.java index c06a12462..49142bfc1 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElementCompositeKey.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElementCompositeKey.java @@ -9,9 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; -import java.io.Serializable; - import jakarta.persistence.Column; import jakarta.persistence.Embeddable; @@ -25,10 +22,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PROTECTED) @Data @Embeddable -public class DistributionSetTypeElementCompositeKey implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; +public class DistributionSetTypeElementCompositeKey { @Column(name = "distribution_set_type", nullable = false, updatable = false) private Long dsType; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java index 72fb637c7..a4df2874e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java @@ -11,7 +11,6 @@ package org.eclipse.hawkbit.repository.jpa.model; import static org.eclipse.hawkbit.repository.model.BaseEntity.getIdOrNull; -import java.io.Serial; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.ArrayList; @@ -72,13 +71,9 @@ import org.eclipse.hawkbit.repository.model.Target; @SuppressWarnings({ "squid:S2160", "java:S1710", "java:S1171", "java:S3599" }) public class JpaAction extends AbstractJpaTenantAwareBaseEntity implements Action, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @Getter @ManyToOne(fetch = FetchType.LAZY, optional = false) - @JoinColumn( - name = "distribution_set", nullable = false, updatable = false) + @JoinColumn(name = "distribution_set", nullable = false, updatable = false) @NotNull private JpaDistributionSet distributionSet; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java index a01baa6c9..a44e2a841 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -46,9 +45,6 @@ import org.eclipse.hawkbit.repository.model.ActionStatus; @SuppressWarnings("squid:S2160") public class JpaActionStatus extends AbstractJpaTenantAwareBaseEntity implements ActionStatus { - @Serial - private static final long serialVersionUID = 1L; - private static final int MESSAGE_ENTRY_LENGTH = 512; @Setter diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java index 9df9366f8..b28e3a220 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -40,9 +38,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; @SuppressWarnings("squid:S2160") public class JpaArtifact extends AbstractJpaTenantAwareBaseEntity implements Artifact { - @Serial - private static final long serialVersionUID = 1L; - @ManyToOne(optional = false, cascade = { CascadeType.PERSIST }, fetch = FetchType.LAZY) @JoinColumn( name = "software_module", nullable = false, updatable = false) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java index ac604836d..7d8e0928f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -68,9 +67,6 @@ public class JpaDistributionSet extends AbstractJpaNamedVersionedEntity implements DistributionSet, WithMetadata, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @ManyToOne(fetch = FetchType.LAZY, optional = false, targetEntity = JpaDistributionSetType.class) @JoinColumn(name = "ds_type", nullable = false, updatable = false) @NotNull @@ -81,17 +77,14 @@ public class JpaDistributionSet name = "sp_ds_sm", joinColumns = { @JoinColumn(name = "ds_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "sm_id", nullable = false) }) - private Set modules = new HashSet<>(); + private Set modules = new HashSet<>(); @ManyToMany(targetEntity = JpaDistributionSetTag.class) @JoinTable( name = "sp_ds_tag", - joinColumns = { - @JoinColumn(name = "ds", nullable = false) }, - inverseJoinColumns = { - @JoinColumn( - name = "tag", nullable = false) }) - private Set tags = new HashSet<>(); + joinColumns = { @JoinColumn(name = "ds", nullable = false) }, + inverseJoinColumns = { @JoinColumn(name = "tag", nullable = false) }) + private Set tags = new HashSet<>(); // no cascade option on an ElementCollection, the target objects are always persisted, merged, removed with their parent @Getter @@ -128,7 +121,7 @@ public class JpaDistributionSet } @SuppressWarnings("java:S1144") // used via reflection copy utils - private JpaDistributionSet setModules(final Set modules) { + private JpaDistributionSet setModules(final Set modules) { if (modules == null) { return this; // do not change } @@ -163,14 +156,14 @@ public class JpaDistributionSet }).orElse(true); } - public void addModule(final SoftwareModule softwareModule) { + public void addModule(final JpaSoftwareModule softwareModule) { if (isLocked()) { throw new LockedException(JpaDistributionSet.class, getId(), "ADD_SOFTWARE_MODULE"); } checkTypeCompatability(softwareModule); - final Optional found = modules.stream() + final Optional found = modules.stream() .filter(module -> module.getId().equals(softwareModule.getId())).findAny(); if (found.isPresent()) { return; @@ -199,14 +192,14 @@ public class JpaDistributionSet return Collections.unmodifiableSet(tags); } - public void addTag(final DistributionSetTag tag) { + public void addTag(final JpaDistributionSetTag tag) { if (tags == null) { tags = new HashSet<>(); } tags.add(tag); } - public void removeTag(final DistributionSetTag tag) { + public void removeTag(final JpaDistributionSetTag tag) { if (tags != null) { tags.remove(tag); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java index a3253696c..d9ead357f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.List; import jakarta.persistence.Entity; @@ -35,19 +34,9 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag; @SuppressWarnings("squid:S2160") public class JpaDistributionSetTag extends JpaTag implements DistributionSetTag, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @ManyToMany(mappedBy = "tags", targetEntity = JpaDistributionSet.class, fetch = FetchType.LAZY) private List assignedToDistributionSet; - /** - * Public constructor. - * - * @param name of the {@link DistributionSetTag} - * @param description of the {@link DistributionSetTag} - * @param colour of tag in UI - */ public JpaDistributionSetTag(final String name, final String description, final String colour) { super(name, description, colour); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java index 840b79248..e8ff56585 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.HashSet; import java.util.Set; import java.util.stream.Collectors; @@ -42,9 +41,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @SuppressWarnings("squid:S2160") public class JpaDistributionSetType extends AbstractJpaTypeEntity implements DistributionSetType, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @OneToMany( mappedBy = "dsType", targetEntity = DistributionSetTypeElement.class, fetch = FetchType.EAGER, @@ -125,7 +121,8 @@ public class JpaDistributionSetType extends AbstractJpaTypeEntity implements Dis .publishEvent(new DistributionSetTypeDeletedEvent(getTenant(), getId(), getClass())); } - private JpaDistributionSetType replaceOrAddModuleTypes(final Set smTypes, final boolean mandatory, final boolean replace) { + private JpaDistributionSetType replaceOrAddModuleTypes(final Set smTypes, final boolean mandatory, + final boolean replace) { if (smTypes == null) { return this; // do not change } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java index 30818dec4..f6047b714 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.ArrayList; import java.util.Collections; import java.util.EnumMap; @@ -63,9 +62,6 @@ import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; @SuppressWarnings({ "squid:S2160", "java:S1710", "java:S1171", "java:S3599" }) public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @OneToMany(targetEntity = JpaRolloutGroup.class, fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "rollout") private List rolloutGroups = new ArrayList<>(); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java index a997bf20d..a4c75c60e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.List; import java.util.Map; @@ -48,9 +47,6 @@ import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; @SuppressWarnings("squid:S2160") public class JpaRolloutGroup extends AbstractJpaNamedEntity implements RolloutGroup, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @Getter @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "rollout", nullable = false, updatable = false) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java index 70fec71f5..a4e59d169 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; -import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -67,9 +65,6 @@ public class JpaSoftwareModule extends AbstractJpaNamedVersionedEntity implements SoftwareModule, WithMetadata, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @ManyToOne @JoinColumn(name = "sm_type", nullable = false, updatable = false) @NotNull @@ -178,10 +173,7 @@ public class JpaSoftwareModule @Data @Embeddable - public static class JpaMetadataValue implements MetadataValue, Serializable { - - @Serial - private static final long serialVersionUID = 1L; + public static class JpaMetadataValue implements MetadataValue { @Column(name = "meta_value", length = SoftwareModule.METADATA_VALUE_MAX_SIZE) @Size(max = METADATA_VALUE_MAX_SIZE) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java index 24d51ce26..e7e0c6ee2 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Table; @@ -36,9 +34,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @SuppressWarnings("squid:S2160") public class JpaSoftwareModuleType extends AbstractJpaTypeEntity implements SoftwareModuleType, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @Setter(value = lombok.AccessLevel.PRIVATE) // used via reflection @Column(name = "min_artifacts", nullable = false) @Min(0) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTag.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTag.java index 193b614a2..37b30fdab 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTag.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTag.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import jakarta.validation.constraints.Size; @@ -31,9 +29,6 @@ import org.eclipse.hawkbit.repository.model.Tag; @SuppressWarnings("squid:S2160") public class JpaTag extends AbstractJpaNamedEntity implements Tag { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "colour", nullable = true, length = Tag.COLOUR_MAX_SIZE) @Size(max = Tag.COLOUR_MAX_SIZE) private String colour; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java index 8c3855cd6..edf523a95 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -84,9 +83,6 @@ import org.springframework.util.ObjectUtils; @SuppressWarnings({ "squid:S2160", "java:S1710" }) public class JpaTarget extends AbstractJpaNamedEntity implements Target, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @Setter @Getter @Column(name = "controller_id", length = Target.CONTROLLER_ID_MAX_SIZE, updatable = false, nullable = false) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java index d48fc2c6d..bf026af1d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.Optional; import jakarta.persistence.Column; @@ -46,9 +45,6 @@ import org.eclipse.hawkbit.repository.model.TargetFilterQuery; @SuppressWarnings("squid:S2160") public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity implements TargetFilterQuery, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "name", length = NamedEntity.NAME_MAX_SIZE, nullable = false) @Size(max = NamedEntity.NAME_MAX_SIZE) @NotEmpty @@ -113,7 +109,7 @@ public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity imple @Override public void fireUpdateEvent() { - EventPublisherHolder.getInstance().getEventPublisher().publishEvent( new TargetFilterQueryUpdatedEvent(this)); + EventPublisherHolder.getInstance().getEventPublisher().publishEvent(new TargetFilterQueryUpdatedEvent(this)); } @Override diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java index 8485135a2..0646ad05c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Entity; import jakarta.persistence.Table; @@ -31,9 +29,6 @@ import org.eclipse.hawkbit.repository.model.TargetTag; @Table(name = "sp_target_tag") public class JpaTargetTag extends JpaTag implements TargetTag, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - public JpaTargetTag(final String name, final String description, final String colour) { super(name, description, colour); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java index cec309ade..fe13b92a7 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -40,9 +39,6 @@ import org.eclipse.hawkbit.repository.model.TargetType; @SuppressWarnings("java:S2160") // the super class equals/hashcode shall be used public class JpaTargetType extends AbstractJpaTypeEntity implements TargetType, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @ManyToMany(targetEntity = JpaDistributionSetType.class) @JoinTable( name = "sp_target_type_ds_type", diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java index 64c7566bf..88b400560 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Basic; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -39,9 +37,6 @@ import org.eclipse.hawkbit.repository.model.TenantConfiguration; @SuppressWarnings("squid:S2160") public class JpaTenantConfiguration extends AbstractJpaTenantAwareBaseEntity implements TenantConfiguration, EventAwareEntity { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "conf_key", length = TenantConfiguration.KEY_MAX_SIZE, nullable = false, updatable = false) @Size(min = 1, max = TenantConfiguration.KEY_MAX_SIZE) @NotNull diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java index 718ce410a..517044e07 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; - import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EntityManager; @@ -47,9 +45,6 @@ import org.eclipse.hawkbit.repository.model.TenantMetaData; @SuppressWarnings("squid:S2160") public class JpaTenantMetaData extends AbstractJpaBaseEntity implements TenantMetaData { - @Serial - private static final long serialVersionUID = 1L; - @Column(name = "tenant", nullable = false, updatable = false, length = 40) @Size(min = 1, max = 40) @NotNull diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java index a512f84e6..0bd2a8f52 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java @@ -9,8 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; -import java.io.Serializable; import java.util.List; import jakarta.persistence.CascadeType; @@ -35,10 +33,7 @@ import org.eclipse.hawkbit.repository.model.Target; @IdClass(RolloutTargetGroupId.class) @Entity @Table(name = "sp_rollout_target_group") -public class RolloutTargetGroup implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; +public class RolloutTargetGroup { @Id @ManyToOne(optional = false, targetEntity = JpaRolloutGroup.class, fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST }) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroupId.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroupId.java index 53e1e682f..1ba24688f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroupId.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroupId.java @@ -9,9 +9,6 @@ */ package org.eclipse.hawkbit.repository.jpa.model; -import java.io.Serial; -import java.io.Serializable; - import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -24,10 +21,7 @@ import org.eclipse.hawkbit.repository.model.Target; @NoArgsConstructor // Default constructor for JPA @Getter @EqualsAndHashCode -public class RolloutTargetGroupId implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; +public class RolloutTargetGroupId { private Long rolloutGroup; private Long target; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/BaseEntityRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/BaseEntityRepository.java index 35cc956ea..32f11e5bf 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/BaseEntityRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/BaseEntityRepository.java @@ -136,7 +136,7 @@ public interface BaseEntityRepository return Optional.empty(); } - @SuppressWarnings("uchecked") + @SuppressWarnings("unchecked") default Class getManagementClass() { final Class domainClass = getDomainClass(); final String domainClassSimpleName = domainClass.getSimpleName(); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/HawkbitBaseRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/HawkbitBaseRepository.java index b879cba7a..139085053 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/HawkbitBaseRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/repository/HawkbitBaseRepository.java @@ -41,7 +41,7 @@ import org.springframework.util.ObjectUtils; * @param the type of the id of the entity the repository manages */ @SuppressWarnings("java:S119") // inherited from SimpleJpaRepository -public class HawkbitBaseRepository extends SimpleJpaRepository +public final class HawkbitBaseRepository extends SimpleJpaRepository implements JpaSpecificationEntityGraphExecutor, NoCountSliceRepository, ACMRepository { private final EntityManager entityManager; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/EvaluatorNotConfiguredException.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/EvaluatorNotConfiguredException.java index b5a0e3848..72bb59dff 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/EvaluatorNotConfiguredException.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/EvaluatorNotConfiguredException.java @@ -9,12 +9,17 @@ */ package org.eclipse.hawkbit.repository.jpa.rollout.condition; +import java.io.Serial; + /** * Exception indicating that a specific evaluator is missing in the application * context. */ public class EvaluatorNotConfiguredException extends RuntimeException { + @Serial + private static final long serialVersionUID = 1L; + private static final String MESSAGE_FORMAT = "Cannot find any configured evaluator for action/condition '%s'. Please ensure to configure one in the application context to make use of it."; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/utils/StatisticsUtils.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/utils/StatisticsUtils.java index e9071d7bc..cc23dbab1 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/utils/StatisticsUtils.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/utils/StatisticsUtils.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.jpa.utils; +import java.io.Serial; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -94,6 +95,9 @@ public class StatisticsUtils { // Map with user-friendly toString, sorted and without the last ", " private static class MapUFToString extends HashMap { + @Serial + private static final long serialVersionUID = 1L; + @Override public String toString() { if (isEmpty()) { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java index 2e8b0c2db..781aa7f1e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java @@ -124,6 +124,7 @@ public abstract class AbstractJpaIntegrationTest extends AbstractIntegrationTest protected static T[] toArray(final Iterable it, final Class type) { final List list = toList(it); + @SuppressWarnings("unchecked") final T[] array = (T[]) Array.newInstance(type, list.size()); for (int i = 0; i < array.length; i++) { array[i] = list.get(i); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/TargetTypeManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/TargetTypeManagementTest.java index 898a9c905..58234d9f9 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/TargetTypeManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/acm/TargetTypeManagementTest.java @@ -46,6 +46,7 @@ class TargetTypeManagementTest extends AbstractAccessControllerManagementTest { } @Test + @SuppressWarnings({"unchecked", "rawtypes"}) void verifyRead() { // permissions to read only type1 target types runAs(withAuthorities(READ_TARGET_TYPE + "/id==" + targetType1.getId()), () -> { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/event/RepositoryEntityEventTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/event/RepositoryEntityEventTest.java index eff258346..2fbb6d9a4 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/event/RepositoryEntityEventTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/event/RepositoryEntityEventTest.java @@ -150,12 +150,11 @@ class RepositoryEntityEventTest extends AbstractJpaIntegrationTest { final String successCondition = "50"; final String errorCondition = "80"; final String rolloutName = "rolloutTest"; - final String targetPrefixName = rolloutName; final DistributionSet distributionSet = testdataFactory.createDistributionSet("dsFor" + rolloutName); - testdataFactory.createTargets(amountTargetsForRollout, targetPrefixName + "-", targetPrefixName); + testdataFactory.createTargets(amountTargetsForRollout, rolloutName + "-", rolloutName); - final Rollout createdRollout = testdataFactory.createRolloutByVariables(rolloutName, "desc", amountGroups, - "controllerId==" + targetPrefixName + "-*", distributionSet, successCondition, errorCondition); + final Rollout createdRollout = testdataFactory.createRolloutByVariables( + rolloutName, "desc", amountGroups,"controllerId==" + rolloutName + "-*", distributionSet, successCondition, errorCondition); rolloutManagement.delete(createdRollout.getId()); rolloutHandler.handleAll(); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java index c4c8b8d29..8047bc8b4 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java @@ -987,12 +987,14 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { final int noOfDeployedTargets = 4; final int noOfDistributionSets = 3; - final DeploymentResult deploymentResult = prepareComplexRepo(undeployedTargetPrefix, noOfUndeployedTargets, - deployedTargetPrefix, noOfDeployedTargets, noOfDistributionSets, "myTestDS"); + final DeploymentResult deploymentResult = prepareComplexRepo( + undeployedTargetPrefix, noOfUndeployedTargets, deployedTargetPrefix, noOfDeployedTargets, noOfDistributionSets, "myTestDS"); final List deployedTargetIDs = deploymentResult.getDeployedTargetIDs(); final List undeployedTargetIDs = deploymentResult.getUndeployedTargetIDs(); + @SuppressWarnings({"unchecked", "rawtypes"}) final Collection savedNakedTargets = (Collection) deploymentResult.getUndeployedTargets(); + @SuppressWarnings({"unchecked", "rawtypes"}) final Collection savedDeployedTargets = (Collection) deploymentResult.getDeployedTargets(); // retrieving all Actions created by the assignDistributionSet call diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java index 5f1079e41..4a89ad5c9 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java @@ -123,12 +123,10 @@ public abstract class AbstractIntegrationTest { protected static final Pageable UNPAGED = Pageable.unpaged(); protected static final URI LOCALHOST = URI.create("http://127.0.0.1"); - protected static final int DEFAULT_TEST_WEIGHT = 500; protected static final Random RND = TestdataFactory.RND; /** - * Number of {@link DistributionSetType}s that exist in every test case. One - * generated by using + * Number of {@link DistributionSetType}s that exist in every test case. One generated by using * {@link TestdataFactory#findOrCreateDefaultTestDsType()} and three * {@link SystemManagement#getTenantMetadata()}; */ diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/SecurityContextSwitch.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/SecurityContextSwitch.java index 956b749e2..914d562cf 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/SecurityContextSwitch.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/SecurityContextSwitch.java @@ -139,6 +139,7 @@ public class SecurityContextSwitch { // in some cases it could be serializable, e.g. if got via {@link java.lang.reflect.AnnotatedElement} (see javadoc) or WithUserImpl, // and in some cases it used to be serialized, e.g. in {@link SecurityContextSerializer#JavaSerialization.serialize}, // must not be made transient! + @SuppressWarnings("serial") private final WithUser annotation; WithUserSecurityContext(final WithUser annotation) { @@ -197,6 +198,9 @@ public class SecurityContextSwitch { private static class WithUserImpl implements WithUser, Serializable { + @Serial + private static final long serialVersionUID = 1L; + private final String principal; private final String tenant; private final boolean autoCreateTenant; diff --git a/hawkbit-sdk/hawkbit-sdk-demo/src/main/java/org/eclipse/hawkbit/sdk/demo/dmf/DmfApp.java b/hawkbit-sdk/hawkbit-sdk-demo/src/main/java/org/eclipse/hawkbit/sdk/demo/dmf/DmfApp.java index 7c015188d..aa4a47b1e 100644 --- a/hawkbit-sdk/hawkbit-sdk-demo/src/main/java/org/eclipse/hawkbit/sdk/demo/dmf/DmfApp.java +++ b/hawkbit-sdk/hawkbit-sdk-demo/src/main/java/org/eclipse/hawkbit/sdk/demo/dmf/DmfApp.java @@ -47,7 +47,7 @@ public class DmfApp { } @Bean - DmfTenant dmfTenant(Tenant tenant, Amqp amqp) { + DmfTenant dmfTenant(final Tenant tenant, final Amqp amqp) { return new DmfTenant(tenant, amqp); } diff --git a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/DmfTenant.java b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/DmfTenant.java index e6ede88ff..c64f386b0 100644 --- a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/DmfTenant.java +++ b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/DmfTenant.java @@ -25,7 +25,7 @@ import org.springframework.amqp.core.Message; /** * An in-memory simulated DMF Tenant to hold the controller twins in memory and be able to retrieve them again. */ -public class DmfTenant { +public final class DmfTenant { @Getter private final Tenant tenant; @@ -39,8 +39,8 @@ public class DmfTenant { public DmfTenant(final Tenant tenant, final Amqp amqp, final boolean initVHost) { this.tenant = tenant; - this.vHost = amqp.getVhost(tenant.getDmf(), initVHost); - this.vHost.register(this); + vHost = amqp.getVhost(tenant.getDmf(), initVHost); + vHost.register(this); } public void destroy() { diff --git a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/VHost.java b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/VHost.java index 6f0d18572..9420f8d02 100644 --- a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/VHost.java +++ b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/VHost.java @@ -46,7 +46,7 @@ import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; * Abstract class for sender and receiver service. */ @Slf4j -public class VHost extends DmfSender implements MessageListener { +public final class VHost extends DmfSender implements MessageListener { private static final String REGEX_EXTRACT_ACTION_ID = "[^0-9]"; @@ -54,19 +54,12 @@ public class VHost extends DmfSender implements MessageListener { private final ConcurrentHashMap dmfTenants = new ConcurrentHashMap<>(); private final Set openActions = Collections.synchronizedSet(new HashSet<>()); - public VHost(final ConnectionFactory connectionFactory, final AmqpProperties amqpProperties) { - this(connectionFactory, amqpProperties, true); - } - public VHost(final ConnectionFactory connectionFactory, final AmqpProperties amqpProperties, final boolean initVHost) { super(new RabbitTemplate(connectionFactory), amqpProperties); - // It is necessary to define rabbitTemplate as a Bean and set - // Jackson2JsonMessageConverter explicitly here in order to convert only - // OUTCOMING messages to json. In case of INCOMING messages, - // Jackson2JsonMessageConverter can not handle messages with NULL - // payload (e.g. REQUEST_ATTRIBUTES_UPDATE), so the - // SimpleMessageConverter is used instead per default. + // It is necessary to define rabbitTemplate as a Bean and set Jackson2JsonMessageConverter explicitly here in order to convert only + // OUTCOMING messages to JSON. In case of INCOMING messages, Jackson2JsonMessageConverter can not handle messages with NULL + // payload (e.g. REQUEST_ATTRIBUTES_UPDATE), so the SimpleMessageConverter is used instead per default. rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter()); if (initVHost) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUiApp.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUiApp.java index f9ea4726c..5f0430603 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUiApp.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUiApp.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.ui; import static feign.Util.ISO_8859_1; +import java.io.Serial; import java.net.HttpURLConnection; import java.net.URL; import java.util.Base64; @@ -53,6 +54,9 @@ import org.springframework.security.oauth2.core.oidc.user.OidcUser; @Import(FeignClientsConfiguration.class) public class HawkbitUiApp implements AppShellConfigurator { + @Serial + private static final long serialVersionUID = 1L; + private static final String AUTHORIZATION_HEADER = "Authorization"; private static final RequestInterceptor AUTHORIZATION = requestTemplate -> { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 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 8e4702a4f..87b55fe4f 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 @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui; +import java.io.Serial; import java.util.List; import java.util.Optional; @@ -49,10 +50,13 @@ import org.eclipse.hawkbit.ui.view.TargetView; /** * The main view is a top-level placeholder for other views. */ -public class MainLayout extends AppLayout { +public final class MainLayout extends AppLayout { - static final List> DEFAULT_VIEW_PRIORITY = List.of(TargetView.class, DistributionSetView.class, - SoftwareModuleView.class, RolloutView.class); + @Serial + private static final long serialVersionUID = 1L; + + static final List> DEFAULT_VIEW_PRIORITY = List.of( + TargetView.class, DistributionSetView.class, SoftwareModuleView.class, RolloutView.class); private final transient AuthenticatedUser authenticatedUser; private final AccessAnnotationChecker accessChecker; private H2 viewTitle; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/SimpleI18NProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/SimpleI18NProvider.java index 3a8924669..1c0dd26a2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/SimpleI18NProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/SimpleI18NProvider.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui; +import java.io.Serial; import java.util.Arrays; import java.util.Locale; @@ -19,7 +20,10 @@ import org.springframework.stereotype.Component; @Component public class SimpleI18NProvider extends DefaultI18NProvider { + @Serial + private static final long serialVersionUID = 1L; + SimpleI18NProvider() { super(Arrays.stream(Locale.getAvailableLocales()).toList()); } -} +} \ No newline at end of file diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/VaadinServiceInit.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/VaadinServiceInit.java index 7848cd0ee..7c1e64573 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/VaadinServiceInit.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/VaadinServiceInit.java @@ -10,6 +10,8 @@ package org.eclipse.hawkbit.ui; +import java.io.Serial; + import com.vaadin.flow.server.ServiceInitEvent; import com.vaadin.flow.server.VaadinServiceInitListener; import com.vaadin.flow.spring.annotation.SpringComponent; @@ -19,6 +21,9 @@ import lombok.extern.slf4j.Slf4j; @SpringComponent public class VaadinServiceInit implements VaadinServiceInitListener { + @Serial + private static final long serialVersionUID = 1L; + @Override public void serviceInit(ServiceInitEvent event) { // cache zoneId of client as soon as possible diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/component/TargetActionsHistory.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/component/TargetActionsHistory.java index 2896ce7dc..49ac5b405 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/component/TargetActionsHistory.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/component/TargetActionsHistory.java @@ -12,6 +12,7 @@ package org.eclipse.hawkbit.ui.component; import static org.eclipse.hawkbit.ui.view.Constants.STATUS; +import java.io.Serial; import java.util.List; import java.util.Optional; @@ -39,7 +40,10 @@ import org.eclipse.hawkbit.ui.view.TargetView; import org.eclipse.hawkbit.ui.view.util.Utils; @Slf4j -public class TargetActionsHistory extends Grid { +public final class TargetActionsHistory extends Grid { + + @Serial + private static final long serialVersionUID = 1L; private final transient HawkbitMgmtClient hawkbitClient; private transient MgmtTarget target; 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 1b5242306..225c34b35 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 @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.ui.view; +import java.io.Serial; + import jakarta.annotation.security.RolesAllowed; import com.vaadin.flow.component.html.H2; @@ -24,7 +26,10 @@ import org.eclipse.hawkbit.ui.MainLayout; @Route(value = "about", layout = MainLayout.class) @RouteAlias(value = "", layout = MainLayout.class) @RolesAllowed({ "ANONYMOUS" }) -public class AboutView extends VerticalLayout { +public final class AboutView extends VerticalLayout { + + @Serial + private static final long serialVersionUID = 1L; public AboutView() { setSpacing(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/ConfigView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/ConfigView.java index 97c77f010..074cc97d6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/ConfigView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/ConfigView.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view; +import java.io.Serial; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -32,12 +33,15 @@ import org.eclipse.hawkbit.ui.MainLayout; @Route(value = "config", layout = MainLayout.class) @RolesAllowed({ "CONFIG_READ" }) @Slf4j -public class ConfigView extends VerticalLayout { +public final class ConfigView extends VerticalLayout { + + @Serial + private static final long serialVersionUID = 1L; private static final String WIDTH = "width"; private static final String PX_300 = "300px"; - private final Map configValue = new HashMap<>(); + private final transient Map configValue = new HashMap<>(); public ConfigView(final HawkbitMgmtClient hawkbitClient) { setSpacing(false); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/DistributionSetView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/DistributionSetView.java index e39623b74..75c440930 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/DistributionSetView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/DistributionSetView.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view; +import java.io.Serial; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -64,6 +65,9 @@ import org.eclipse.hawkbit.ui.view.util.Utils; @Uses(Icon.class) public class DistributionSetView extends TableView { + @Serial + private static final long serialVersionUID = 1L; + public DistributionSetView(final HawkbitMgmtClient hawkbitClient) { super( new DistributionSetFilter(hawkbitClient), @@ -184,6 +188,9 @@ public class DistributionSetView extends TableView { private static class DistributionSetDetails extends FormLayout { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final TextArea description = new TextArea("Description"); @@ -238,6 +245,9 @@ public class DistributionSetView extends TableView { private static class CreateDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final Select type; @@ -325,6 +335,9 @@ public class DistributionSetView extends TableView { @SuppressWarnings({ "java:S1171", "java:S3599" }) private static class AddSoftwareModulesDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final transient Set softwareModules = Collections.synchronizedSet(new HashSet<>()); private AddSoftwareModulesDialog(final long distributionSetId, final HawkbitMgmtClient hawkbitClient) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/LoginView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/LoginView.java index 1d8d3757f..baaae1cd5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/LoginView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/LoginView.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.ui.view; +import java.io.Serial; + import com.vaadin.flow.component.login.LoginI18n; import com.vaadin.flow.component.login.LoginOverlay; import com.vaadin.flow.router.BeforeEnterEvent; @@ -23,7 +25,10 @@ import org.eclipse.hawkbit.ui.security.AuthenticatedUser; @AnonymousAllowed @PageTitle("Login") @Route(value = "login") -public class LoginView extends LoginOverlay implements BeforeEnterObserver { +public final class LoginView extends LoginOverlay implements BeforeEnterObserver { + + @Serial + private static final long serialVersionUID = 1L; private final transient AuthenticatedUser authenticatedUser; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/RolloutView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/RolloutView.java index 34068910c..29f111681 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/RolloutView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/RolloutView.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view; +import java.io.Serial; import java.time.ZoneOffset; import java.util.List; import java.util.Map; @@ -63,7 +64,10 @@ import org.springframework.util.ObjectUtils; @RolesAllowed({ "ROLLOUT_READ" }) @Uses(Icon.class) @SuppressWarnings({ "java:S1171", "java:S3599" }) -public class RolloutView extends TableView { +public final class RolloutView extends TableView { + + @Serial + private static final long serialVersionUID = 1L; public RolloutView(final HawkbitMgmtClient hawkbitClient) { super( @@ -105,6 +109,9 @@ public class RolloutView extends TableView { private static class Actions extends HorizontalLayout { + @Serial + private static final long serialVersionUID = 1L; + private final long rolloutId; private final Grid grid; private final transient HawkbitMgmtClient hawkbitClient; @@ -190,6 +197,9 @@ public class RolloutView extends TableView { private static class RolloutDetails extends FormLayout { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final TextArea description = new TextArea(Constants.DESCRIPTION); @@ -283,6 +293,9 @@ public class RolloutView extends TableView { private static class CreateDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final TextField name; private final ComboBox distributionSet; private final ComboBox targetFilter; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/SoftwareModuleView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/SoftwareModuleView.java index e93468b65..848d44401 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/SoftwareModuleView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/SoftwareModuleView.java @@ -12,6 +12,7 @@ package org.eclipse.hawkbit.ui.view; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -69,6 +70,9 @@ import org.springframework.web.multipart.MultipartFile; @Slf4j public class SoftwareModuleView extends TableView { + @Serial + private static final long serialVersionUID = 1L; + @Autowired public SoftwareModuleView(final HawkbitMgmtClient hawkbitClient) { this(true, hawkbitClient); @@ -156,6 +160,9 @@ public class SoftwareModuleView extends TableView { private static class SoftwareModuleDetails extends FormLayout { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final TextArea description = new TextArea(Constants.DESCRIPTION); @@ -202,6 +209,9 @@ public class SoftwareModuleView extends TableView { private static class CreateDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final Select type; private final TextField name; private final TextField version; @@ -337,6 +347,9 @@ public class SoftwareModuleView extends TableView { private static class AddArtifactsDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final transient Set artifacts = Collections.synchronizedSet(new HashSet<>()); private AddArtifactsDialog( 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 53e07d0d5..0785bb79a 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 @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view; +import java.io.Serial; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Collections; @@ -91,7 +92,10 @@ import org.springframework.util.ObjectUtils; @Route(value = "targets", layout = MainLayout.class) @RolesAllowed({ "TARGET_READ" }) @Uses(Icon.class) -public class TargetView extends TableView { +public final class TargetView extends TableView { + + @Serial + private static final long serialVersionUID = 1L; public static final String STATUS = "Status"; public static final String UPDATE = "Sync"; @@ -344,6 +348,9 @@ public class TargetView extends TableView { protected static class TargetDetailedView extends VerticalLayout { + @Serial + private static final long serialVersionUID = 1L; + private final Span targetId; private final TargetDetails targetDetails; private final TargetAssignedInstalled targetAssignedInstalled; @@ -383,6 +390,9 @@ public class TargetView extends TableView { private static class TargetDetails extends FormLayout { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final TextArea description = new TextArea(Constants.DESCRIPTION); private final TextField createdBy = Utils.textField(Constants.CREATED_BY); @@ -444,6 +454,9 @@ public class TargetView extends TableView { private static class TargetAssignedInstalled extends FormLayout { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final LinkedTextArea assigned = new LinkedTextArea("Assigned Distribution Set", "/distribution_sets?"); private final LinkedTextArea installed = new LinkedTextArea("Installed Distribution Set", "/distribution_sets?"); @@ -489,6 +502,9 @@ public class TargetView extends TableView { private static class TargetTags extends VerticalLayout { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private final ComboBox tagSelector = new ComboBox<>(TAG); private final HorizontalLayout tagsArea = new HorizontalLayout(); @@ -601,6 +617,9 @@ public class TargetView extends TableView { private static class TargetMetadata extends VerticalLayout { + @Serial + private static final long serialVersionUID = 1L; + public static final String KEY = "Key"; public static final String VALUE = "Value"; @@ -672,7 +691,10 @@ public class TargetView extends TableView { } } - public static class TargetActionsHistoryLayout extends VerticalLayout { + public static final class TargetActionsHistoryLayout extends VerticalLayout { + + @Serial + private static final long serialVersionUID = 1L; private final TargetActionsHistory targetActionsHistory; @@ -689,6 +711,9 @@ public class TargetView extends TableView { public static class ActionStepsGrid extends Grid { + @Serial + private static final long serialVersionUID = 1L; + private final transient HawkbitMgmtClient hawkbitClient; private transient MgmtTarget target; private transient Long actionId; @@ -775,6 +800,9 @@ public class TargetView extends TableView { private static class RegisterDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final Select type; private final TextField controllerId; private final TextField name; @@ -850,6 +878,9 @@ public class TargetView extends TableView { private static class AssignDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final ComboBox distributionSet; private final Select actionType; private final DateTimePicker forceTime = new DateTimePicker("Force Time"); @@ -918,6 +949,9 @@ public class TargetView extends TableView { private static class CreateTagDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final TextField name; private final TextArea description = new TextArea(Constants.DESCRIPTION); @@ -961,6 +995,9 @@ public class TargetView extends TableView { private static class AddMetadataDialog extends Utils.BaseDialog { + @Serial + private static final long serialVersionUID = 1L; + private final TextField key; private final TextField value; @@ -1001,6 +1038,9 @@ public class TargetView extends TableView { private static class TargetStatusCell extends HorizontalLayout { + @Serial + private static final long serialVersionUID = 1L; + private TargetStatusCell(final MgmtTarget target) { final MgmtPollStatus pollStatus = target.getPollStatus(); add(pollStatusIconMapper(pollStatus)); @@ -1024,6 +1064,9 @@ public class TargetView extends TableView { private static class TargetUpdateStatusCell extends HorizontalLayout { + @Serial + private static final long serialVersionUID = 1L; + private TargetUpdateStatusCell(final MgmtTarget target) { final String targetUpdateStatus = Optional.ofNullable(target.getUpdateStatus()).orElse("unknown"); add(targetUpdateStatusMapper(targetUpdateStatus)); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Filter.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Filter.java index c6f386f96..f15356bef 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Filter.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Filter.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view.util; +import java.io.Serial; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -30,7 +31,10 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.theme.lumo.LumoUtility; import org.springframework.util.ObjectUtils; -public class Filter extends Div { +public final class Filter extends Div { + + @Serial + private static final long serialVersionUID = 1L; private transient Rsql rsql; private final transient Rsql secondaryRsql; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/LinkedTextArea.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/LinkedTextArea.java index 792852eda..b31d7ae06 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/LinkedTextArea.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/LinkedTextArea.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.ui.view.util; +import java.io.Serial; + import com.vaadin.flow.component.card.Card; import com.vaadin.flow.component.card.CardVariant; import com.vaadin.flow.component.html.Anchor; @@ -17,27 +19,29 @@ import com.vaadin.flow.component.html.Span; public class LinkedTextArea extends Div { - String queryPrefix; - Card card; + @Serial + private static final long serialVersionUID = 1L; - public LinkedTextArea(String title, String queryPrefix) { - super(); + private final String queryPrefix; + private final Card card; + + public LinkedTextArea(final String title, final String queryPrefix) { + this.queryPrefix = queryPrefix; card = new Card(); card.setTitle(title); - this.queryPrefix = queryPrefix; } public void setValueWithLink(String value, String query) { - var span = new Span(value); + final Span span = new Span(value); span.setWhiteSpace(WhiteSpace.PRE_WRAP); card.add(span); card.addThemeVariants(CardVariant.LUMO_ELEVATED); if (query != null) { - var a = new Anchor(queryPrefix + query, card); - a.addClassName("nocolor"); - add(a); + final Anchor anchor = new Anchor(queryPrefix + query, card); + anchor.addClassName("nocolor"); + add(anchor); } else { add(card); } } -} +} \ No newline at end of file diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/SelectionGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/SelectionGrid.java index 0fcf16cf4..64296eb2c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/SelectionGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/SelectionGrid.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view.util; +import java.io.Serial; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -24,7 +25,10 @@ import com.vaadin.flow.theme.lumo.LumoUtility; // id type shall have proper equals and hashCode - i.e. eligible hash set element @SuppressWarnings("java:S119") // better readability -public class SelectionGrid extends Grid { +public final class SelectionGrid extends Grid { + + @Serial + private static final long serialVersionUID = 1L; private volatile String rsqlFilter; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/TableView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/TableView.java index 24f4897a7..caa05c3cd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/TableView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/TableView.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view.util; +import java.io.Serial; import java.util.concurrent.CompletionStage; import java.util.function.BiFunction; import java.util.function.Function; @@ -38,6 +39,9 @@ import org.eclipse.hawkbit.ui.view.Constants; @SuppressWarnings("java:S119") // better readability public class TableView extends Div implements Constants, BeforeEnterObserver { + @Serial + private static final long serialVersionUID = 1L; + private static final String COLOR = "color"; private static final String VAR_LUMO_SECONDARY_TEXT_COLOR = "var(--lumo-secondary-text-color)"; private static final String VAR_LUMO_PRIMARY_COLOR = "var(--lumo-primary-color)"; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Utils.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Utils.java index 714f37857..7e71fe8b2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Utils.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/view/util/Utils.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.ui.view.util; +import java.io.Serial; import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; @@ -58,17 +59,15 @@ import com.vaadin.flow.data.renderer.ComponentRenderer; import com.vaadin.flow.data.renderer.LocalDateTimeRenderer; import com.vaadin.flow.data.value.ValueChangeMode; import com.vaadin.flow.theme.lumo.LumoUtility; +import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.eclipse.hawkbit.mgmt.json.model.distributionset.MgmtActionType; import org.eclipse.hawkbit.ui.view.Constants; +@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) // prevent initialization @Slf4j public class Utils { - private Utils() { - // prevent initialization - } - public static final String COMBO_NAME_ALLOWED_CHARS = "[0-9a-zA-Z-_./]"; public static TextField textField(final String label) { @@ -148,8 +147,8 @@ public class Utils { return layout; } - private static ConfirmDialog promptForDeleteConfirmation(Function, CompletionStage> removeHandler, - SelectionGrid selectionGrid) { + private static ConfirmDialog promptForDeleteConfirmation( + final Function, CompletionStage> removeHandler, final SelectionGrid selectionGrid) { final ConfirmDialog dialog = new ConfirmDialog(); dialog.setHeader("Confirm Deletion"); dialog.setText("Are you sure you want to delete the selected items? This action cannot be undone."); @@ -160,9 +159,7 @@ public class Utils { dialog.setConfirmButtonTheme(ButtonVariant.LUMO_ERROR.getVariantName()); dialog.setConfirmText("Delete"); dialog.addConfirmListener(event -> { - removeHandler - .apply(selectionGrid) - .thenAccept(v -> selectionGrid.refreshGrid(false)); + removeHandler.apply(selectionGrid).thenAccept(v -> selectionGrid.refreshGrid(false)); dialog.close(); }); return dialog; @@ -238,6 +235,9 @@ public class Utils { public static class BaseDialog extends Dialog { + @Serial + private static final long serialVersionUID = 1L; + protected final transient CompletableFuture result = new CompletableFuture<>(); protected BaseDialog(final String headerTitle) { diff --git a/pom.xml b/pom.xml index de4916e53..0d430a911 100644 --- a/pom.xml +++ b/pom.xml @@ -196,6 +196,12 @@ true + + org.springframework.boot + spring-boot-configuration-processor + true + + org.springframework.boot spring-boot-starter-test @@ -378,6 +384,7 @@ --> com.diffplug.spotless spotless-maven-plugin + 3.2.1 ${ratchetFrom} @@ -467,7 +474,9 @@ org.apache.maven.plugins maven-compiler-plugin - -Xlint:all + true + full + -Xlint:all,-processing true true