From 8ce8d8e571586873a041d96e74fca1b8182ba464 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 5 Sep 2016 09:17:15 +0200 Subject: [PATCH 1/3] Fixed DMF sending out wrong message if action on CANCELING Signed-off-by: Kai Zimmermann --- .../rest/resource/DataConversionHelper.java | 25 ++++++++----------- .../ddi/rest/resource/DdiRootController.java | 2 +- .../amqp/AmqpMessageHandlerService.java | 20 ++++++++++----- .../amqp/AmqpMessageHandlerServiceTest.java | 7 +++--- .../repository/ControllerManagement.java | 12 +++++++++ .../repository/jpa/ActionRepository.java | 23 ++++++++++++----- .../jpa/JpaControllerManagement.java | 6 +++++ pom.xml | 2 +- 8 files changed, 65 insertions(+), 32 deletions(-) diff --git a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DataConversionHelper.java b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DataConversionHelper.java index d87de67d0..deda60646 100644 --- a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DataConversionHelper.java +++ b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DataConversionHelper.java @@ -14,6 +14,7 @@ import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; @@ -29,7 +30,6 @@ import org.eclipse.hawkbit.ddi.json.model.DdiControllerBase; import org.eclipse.hawkbit.ddi.json.model.DdiPolling; import org.eclipse.hawkbit.ddi.rest.api.DdiRestConstants; import org.eclipse.hawkbit.repository.model.Action; -import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.tenancy.TenantAware; @@ -108,30 +108,25 @@ public final class DataConversionHelper { return file; } - static DdiControllerBase fromTarget(final Target target, final List actions, + static DdiControllerBase fromTarget(final Target target, final Optional action, final String defaultControllerPollTime, final TenantAware tenantAware) { final DdiControllerBase result = new DdiControllerBase( new DdiConfig(new DdiPolling(defaultControllerPollTime))); - boolean addedUpdate = false; - boolean addedCancel = false; - final long countCancelingActions = actions.stream().filter(a -> a.getStatus() == Status.CANCELING).count(); - for (final Action action : actions) { - if (countCancelingActions <= 0 && !action.isCancelingOrCanceled() && !addedUpdate) { + if (action.isPresent()) { + if (action.get().isCancelingOrCanceled()) { + result.add(linkTo(methodOn(DdiRootController.class, tenantAware.getCurrentTenant()) + .getControllerCancelAction(target.getControllerId(), action.get().getId())) + .withRel(DdiRestConstants.CANCEL_ACTION)); + } else { // we need to add the hashcode here of the actionWithStatus // because the action might // have changed from 'soft' to 'forced' type and we need to // change the payload of the // response because of eTags. result.add(linkTo(methodOn(DdiRootController.class, tenantAware.getCurrentTenant()) - .getControllerBasedeploymentAction(target.getControllerId(), action.getId(), - calculateEtag(action))).withRel(DdiRestConstants.DEPLOYMENT_BASE_ACTION)); - addedUpdate = true; - } else if (action.isCancelingOrCanceled() && !addedCancel) { - result.add(linkTo(methodOn(DdiRootController.class, tenantAware.getCurrentTenant()) - .getControllerCancelAction(target.getControllerId(), action.getId())) - .withRel(DdiRestConstants.CANCEL_ACTION)); - addedCancel = true; + .getControllerBasedeploymentAction(target.getControllerId(), action.get().getId(), + calculateEtag(action.get()))).withRel(DdiRestConstants.DEPLOYMENT_BASE_ACTION)); } } diff --git a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java index 9dd65d5fc..f1ce7e812 100644 --- a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java +++ b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java @@ -130,7 +130,7 @@ public class DdiRootController implements DdiRootControllerRestApi { } return new ResponseEntity<>( - DataConversionHelper.fromTarget(target, controllerManagement.findActionByTargetAndActive(target), + DataConversionHelper.fromTarget(target, controllerManagement.findOldestActionByTargetAndActive(target), controllerManagement.getPollingTime(), tenantAware), HttpStatus.OK); } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index dd152bd5a..a8723a63a 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -13,6 +13,7 @@ import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.UUID; import org.apache.commons.lang3.ArrayUtils; @@ -32,6 +33,7 @@ import org.eclipse.hawkbit.dmf.json.model.ArtifactHash; import org.eclipse.hawkbit.dmf.json.model.DownloadResponse; import org.eclipse.hawkbit.dmf.json.model.TenantSecurityToken; import org.eclipse.hawkbit.dmf.json.model.TenantSecurityToken.FileResource; +import org.eclipse.hawkbit.eventbus.event.CancelTargetAssignmentEvent; import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions; import org.eclipse.hawkbit.im.authentication.TenantAwareAuthenticationDetails; import org.eclipse.hawkbit.repository.ArtifactManagement; @@ -344,18 +346,24 @@ public class AmqpMessageHandlerService extends BaseAmqpService { } private void lookIfUpdateAvailable(final Target target) { - final List actions = controllerManagement.findActionByTargetAndActive(target); - if (actions.isEmpty()) { + final Optional action = controllerManagement.findOldestActionByTargetAndActive(target); + if (!action.isPresent()) { return; } - // action are ordered by ASC - final Action action = actions.get(0); - final DistributionSet distributionSet = action.getDistributionSet(); + + if (action.get().isCancelingOrCanceled()) { + amqpMessageDispatcherService.targetCancelAssignmentToDistributionSet( + new CancelTargetAssignmentEvent(target.getOptLockRevision(), target.getTenant(), + target.getControllerId(), action.get().getId(), target.getTargetInfo().getAddress())); + return; + } + + final DistributionSet distributionSet = action.get().getDistributionSet(); final List softwareModuleList = controllerManagement .findSoftwareModulesByDistributionSet(distributionSet); final String targetSecurityToken = systemSecurityContext.runAsSystem(() -> target.getSecurityToken()); amqpMessageDispatcherService.targetAssignDistributionSet(new TargetAssignDistributionSetEvent( - target.getOptLockRevision(), target.getTenant(), target.getControllerId(), action.getId(), + target.getOptLockRevision(), target.getTenant(), target.getControllerId(), action.get().getId(), softwareModuleList, target.getTargetInfo().getAddress(), targetSecurityToken)); } diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java index 9ed314ebc..5937d8126 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java @@ -23,6 +23,7 @@ import java.net.URI; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.eclipse.hawkbit.api.HostnameResolver; import org.eclipse.hawkbit.artifact.repository.ArtifactRepository; @@ -155,6 +156,7 @@ public class AmqpMessageHandlerServiceTest { final ArgumentCaptor uriCaptor = ArgumentCaptor.forClass(URI.class); when(controllerManagementMock.findOrRegisterTargetIfItDoesNotexist(targetIdCaptor.capture(), uriCaptor.capture())).thenReturn(null); + when(controllerManagementMock.findOldestActionByTargetAndActive(Matchers.any())).thenReturn(Optional.empty()); amqpMessageHandlerService.onMessage(message, MessageType.THING_CREATED.name(), TENANT, "vHost"); @@ -362,9 +364,8 @@ public class AmqpMessageHandlerServiceTest { when(controllerManagementMock.addUpdateActionStatus(Matchers.any())).thenReturn(action); when(entityFactoryMock.generateActionStatus()).thenReturn(new JpaActionStatus()); // for the test the same action can be used - final List actionList = new ArrayList<>(); - actionList.add(action); - when(controllerManagementMock.findActionByTargetAndActive(Matchers.any())).thenReturn(actionList); + when(controllerManagementMock.findOldestActionByTargetAndActive(Matchers.any())) + .thenReturn(Optional.of(action)); final List softwareModuleList = createSoftwareModuleList(); when(controllerManagementMock.findSoftwareModulesByDistributionSet(Matchers.any())) diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java index f06621fd4..14780cee6 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.repository; import java.net.URI; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.validation.constraints.NotNull; @@ -113,6 +114,17 @@ public interface ControllerManagement { @PreAuthorize(SpringEvalExpressions.IS_CONTROLLER) List findActionByTargetAndActive(@NotNull Target target); + /** + * Retrieves oldest {@link Action} that is active and assigned to a + * {@link Target}. + * + * @param target + * the target to retrieve the actions from + * @return a list of actions assigned to given target which are active + */ + @PreAuthorize(SpringEvalExpressions.IS_CONTROLLER) + Optional findOldestActionByTargetAndActive(@NotNull Target target); + /** * Get the {@link Action} entity for given actionId with all lazy * attributes. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/ActionRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/ActionRepository.java index 0eebbced1..8989a5a41 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/ActionRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/ActionRepository.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository.jpa; import java.util.Collection; import java.util.List; +import java.util.Optional; import org.eclipse.hawkbit.repository.jpa.model.JpaAction; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet; @@ -79,21 +80,31 @@ public interface ActionRepository extends BaseEntityRepository, Slice findByTarget(Pageable pageable, JpaTarget target); /** - * Retrieves all {@link Action}s which are active and referring the given - * {@link Target} in a specified order. Loads also the lazy - * {@link Action#getDistributionSet()} field. + * Retrieves all {@link Action}s which are active and referring to the given + * {@link Target} order by ID ascending. * - * @param pageable - * page parameters * @param target * the target to find assigned actions * @param active * the action active flag * @return the found {@link Action}s */ - @EntityGraph(value = "Action.ds", type = EntityGraphType.LOAD) List findByTargetAndActiveOrderByIdAsc(final JpaTarget target, boolean active); + /** + * Retrieves the oldest {@link Action} that is active and referring to the + * given {@link Target}. + * + * @param target + * the target to find assigned actions + * @param active + * the action active flag + * + * @return the found {@link Action} + */ + @EntityGraph(value = "Action.ds", type = EntityGraphType.LOAD) + Optional findFirstByTargetAndActiveOrderByIdAsc(final JpaTarget target, boolean active); + /** * Retrieves latest {@link UpdateAction} for given target and * {@link SoftwareModule}. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java index 34160aa37..7d02b3bd8 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java @@ -12,6 +12,7 @@ import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; @@ -160,6 +161,11 @@ public class JpaControllerManagement implements ControllerManagement { return actionRepository.findByTargetAndActiveOrderByIdAsc((JpaTarget) target, true); } + @Override + public Optional findOldestActionByTargetAndActive(final Target target) { + return actionRepository.findFirstByTargetAndActiveOrderByIdAsc((JpaTarget) target, true); + } + @Override public List findSoftwareModulesByDistributionSet(final DistributionSet distributionSet) { return new ArrayList<>(softwareModuleRepository.findByAssignedTo((JpaDistributionSet) distributionSet)); diff --git a/pom.xml b/pom.xml index 31a175bd6..4684aa7b9 100644 --- a/pom.xml +++ b/pom.xml @@ -96,7 +96,7 @@ 1.5.4 1.0.2 19.0 - 1.4.3 + 1.5.2 1.50.5 2.2.4 1.1.7 From 47e3417f558cbbf74d7f11683388b7cd41f1fff5 Mon Sep 17 00:00:00 2001 From: kaizimmerm Date: Wed, 7 Sep 2016 12:17:50 +0200 Subject: [PATCH 2/3] Improved method naming Signed-off-by: kaizimmerm --- .../eclipse/hawkbit/ddi/rest/resource/DdiRootController.java | 2 +- .../org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java | 2 +- .../eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java | 4 ++-- .../org/eclipse/hawkbit/repository/ControllerManagement.java | 4 ++-- .../hawkbit/repository/jpa/JpaControllerManagement.java | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java index f1ce7e812..9456cd63e 100644 --- a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java +++ b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java @@ -130,7 +130,7 @@ public class DdiRootController implements DdiRootControllerRestApi { } return new ResponseEntity<>( - DataConversionHelper.fromTarget(target, controllerManagement.findOldestActionByTargetAndActive(target), + DataConversionHelper.fromTarget(target, controllerManagement.findOldestActiveActionByTarget(target), controllerManagement.getPollingTime(), tenantAware), HttpStatus.OK); } diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index a8723a63a..ef4f3387f 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -346,7 +346,7 @@ public class AmqpMessageHandlerService extends BaseAmqpService { } private void lookIfUpdateAvailable(final Target target) { - final Optional action = controllerManagement.findOldestActionByTargetAndActive(target); + final Optional action = controllerManagement.findOldestActiveActionByTarget(target); if (!action.isPresent()) { return; } diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java index 5937d8126..f8dd4f645 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java @@ -156,7 +156,7 @@ public class AmqpMessageHandlerServiceTest { final ArgumentCaptor uriCaptor = ArgumentCaptor.forClass(URI.class); when(controllerManagementMock.findOrRegisterTargetIfItDoesNotexist(targetIdCaptor.capture(), uriCaptor.capture())).thenReturn(null); - when(controllerManagementMock.findOldestActionByTargetAndActive(Matchers.any())).thenReturn(Optional.empty()); + when(controllerManagementMock.findOldestActiveActionByTarget(Matchers.any())).thenReturn(Optional.empty()); amqpMessageHandlerService.onMessage(message, MessageType.THING_CREATED.name(), TENANT, "vHost"); @@ -364,7 +364,7 @@ public class AmqpMessageHandlerServiceTest { when(controllerManagementMock.addUpdateActionStatus(Matchers.any())).thenReturn(action); when(entityFactoryMock.generateActionStatus()).thenReturn(new JpaActionStatus()); // for the test the same action can be used - when(controllerManagementMock.findOldestActionByTargetAndActive(Matchers.any())) + when(controllerManagementMock.findOldestActiveActionByTarget(Matchers.any())) .thenReturn(Optional.of(action)); final List softwareModuleList = createSoftwareModuleList(); diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java index 14780cee6..1cc752ea7 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java @@ -112,7 +112,7 @@ public interface ControllerManagement { * @return a list of actions assigned to given target which are active */ @PreAuthorize(SpringEvalExpressions.IS_CONTROLLER) - List findActionByTargetAndActive(@NotNull Target target); + List findActiveActionByTarget(@NotNull Target target); /** * Retrieves oldest {@link Action} that is active and assigned to a @@ -123,7 +123,7 @@ public interface ControllerManagement { * @return a list of actions assigned to given target which are active */ @PreAuthorize(SpringEvalExpressions.IS_CONTROLLER) - Optional findOldestActionByTargetAndActive(@NotNull Target target); + Optional findOldestActiveActionByTarget(@NotNull Target target); /** * Get the {@link Action} entity for given actionId with all lazy diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java index 7d02b3bd8..f38eac00f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java @@ -157,12 +157,12 @@ public class JpaControllerManagement implements ControllerManagement { } @Override - public List findActionByTargetAndActive(final Target target) { + public List findActiveActionByTarget(final Target target) { return actionRepository.findByTargetAndActiveOrderByIdAsc((JpaTarget) target, true); } @Override - public Optional findOldestActionByTargetAndActive(final Target target) { + public Optional findOldestActiveActionByTarget(final Target target) { return actionRepository.findFirstByTargetAndActiveOrderByIdAsc((JpaTarget) target, true); } From 0986b9985bede9b3368587d905076efdb425ea57 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 12 Sep 2016 09:27:43 +0200 Subject: [PATCH 3/3] don't requeue too many status entries ex, fix typo of ex Signed-off-by: Michael Hirsch --- .../eclipse/hawkbit/amqp/AmqpMessageHandlerService.java | 8 ++++---- .../eclipse/hawkbit/repository/ControllerManagement.java | 4 ++-- ...sException.java => TooManyStatusEntriesException.java} | 8 ++++---- .../hawkbit/repository/jpa/JpaControllerManagement.java | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) rename hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/{ToManyStatusEntriesException.java => TooManyStatusEntriesException.java} (81%) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index dd152bd5a..1b607f852 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -41,7 +41,7 @@ import org.eclipse.hawkbit.repository.RepositoryConstants; import org.eclipse.hawkbit.repository.eventbus.event.TargetAssignDistributionSetEvent; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.exception.TenantNotExistException; -import org.eclipse.hawkbit.repository.exception.ToManyStatusEntriesException; +import org.eclipse.hawkbit.repository.exception.TooManyStatusEntriesException; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.ActionStatus; @@ -155,7 +155,7 @@ public class AmqpMessageHandlerService extends BaseAmqpService { return handleAuthentifiactionMessage(message); } catch (final IllegalArgumentException ex) { throw new AmqpRejectAndDontRequeueException("Invalid message!", ex); - } catch (final TenantNotExistException | ToManyStatusEntriesException e) { + } catch (final TenantNotExistException | TooManyStatusEntriesException e) { throw new AmqpRejectAndDontRequeueException(e); } finally { SecurityContextHolder.setContext(oldContext); @@ -196,8 +196,8 @@ public class AmqpMessageHandlerService extends BaseAmqpService { } } catch (final IllegalArgumentException ex) { throw new AmqpRejectAndDontRequeueException("Invalid message!", ex); - } catch (final TenantNotExistException teex) { - throw new AmqpRejectAndDontRequeueException(teex); + } catch (final TenantNotExistException | TooManyStatusEntriesException e) { + throw new AmqpRejectAndDontRequeueException(e); } finally { SecurityContextHolder.setContext(oldContext); } diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java index f06621fd4..401004d65 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.repository.eventbus.event.DownloadProgressEvent; import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.exception.ToManyAttributeEntriesException; -import org.eclipse.hawkbit.repository.exception.ToManyStatusEntriesException; +import org.eclipse.hawkbit.repository.exception.TooManyStatusEntriesException; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.ActionStatus; @@ -95,7 +95,7 @@ public interface ControllerManagement { * * @throws EntityAlreadyExistsException * if a given entity already exists - * @throws ToManyStatusEntriesException + * @throws TooManyStatusEntriesException * if more than the allowed number of status entries are * inserted */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TooManyStatusEntriesException.java similarity index 81% rename from hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java rename to hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TooManyStatusEntriesException.java index 7b8f4a1b0..3f3399a88 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TooManyStatusEntriesException.java @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.AbstractServerRtException; * * */ -public final class ToManyStatusEntriesException extends AbstractServerRtException { +public final class TooManyStatusEntriesException extends AbstractServerRtException { /** * */ @@ -28,7 +28,7 @@ public final class ToManyStatusEntriesException extends AbstractServerRtExceptio * Creates a new FileUploadFailedException with * {@link SpServerError#SP_REST_BODY_NOT_READABLE} error. */ - public ToManyStatusEntriesException() { + public TooManyStatusEntriesException() { super(SpServerError.SP_ACTION_STATUS_TO_MANY_ENTRIES); } @@ -36,7 +36,7 @@ public final class ToManyStatusEntriesException extends AbstractServerRtExceptio * @param cause * for the exception */ - public ToManyStatusEntriesException(final Throwable cause) { + public TooManyStatusEntriesException(final Throwable cause) { super(SpServerError.SP_ACTION_STATUS_TO_MANY_ENTRIES, cause); } @@ -44,7 +44,7 @@ public final class ToManyStatusEntriesException extends AbstractServerRtExceptio * @param message * of the error */ - public ToManyStatusEntriesException(final String message) { + public TooManyStatusEntriesException(final String message) { super(message, SpServerError.SP_ACTION_STATUS_TO_MANY_ENTRIES); } } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java index 34160aa37..e0b352e99 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java @@ -26,7 +26,7 @@ import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.exception.ToManyAttributeEntriesException; -import org.eclipse.hawkbit.repository.exception.ToManyStatusEntriesException; +import org.eclipse.hawkbit.repository.exception.TooManyStatusEntriesException; import org.eclipse.hawkbit.repository.jpa.cache.CacheWriteNotify; import org.eclipse.hawkbit.repository.jpa.model.JpaAction; import org.eclipse.hawkbit.repository.jpa.model.JpaActionStatus; @@ -326,7 +326,7 @@ public class JpaControllerManagement implements ControllerManagement { LOG_DOS.error( "Potential denial of service (DOS) attack identfied. More status entries in the system than permitted ({})!", securityProperties.getDos().getMaxStatusEntriesPerAction()); - throw new ToManyStatusEntriesException( + throw new TooManyStatusEntriesException( String.valueOf(securityProperties.getDos().getMaxStatusEntriesPerAction())); } }