From c64a2e7ecc4a3e8dcd3f84d6e526a40718030b93 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 26 Feb 2018 12:33:41 +0100 Subject: [PATCH] Feature add missing entity events (#640) * introduce CRD event interfaces and add missing events for entities Signed-off-by: Michael Hirsch * extend EntityIdEvent by TenantAwareEvent Signed-off-by: Michael Hirsch * add tests for additional events and skip test preperation events Signed-off-by: Michael Hirsch * add missing expected events to tests Signed-off-by: Michael Hirsch * add target filter query CUD events Signed-off-by: Michael Hirsch * fix order imports Signed-off-by: Michael Hirsch * fix javadoc link Signed-off-by: Michael Hirsch * add neccessary EventType mapping for serialization Signed-off-by: Michael Hirsch --- .../rest/resource/DdiRootControllerTest.java | 8 +- .../event/entitiy/EntityCreatedEvent.java | 16 ++++ .../event/entitiy/EntityDeletedEvent.java | 16 ++++ .../event/entitiy/EntityIdEvent.java | 27 ++++++ .../event/entitiy/EntityUpdatedEvent.java | 16 ++++ .../remote/DistributionSetDeletedEvent.java | 3 +- .../DistributionSetTagDeletedEvent.java | 3 +- .../DistributionSetTypeDeletedEvent.java | 46 ++++++++++ .../event/remote/RolloutDeletedEvent.java | 3 +- .../remote/RolloutGroupDeletedEvent.java | 3 +- .../remote/SoftwareModuleDeletedEvent.java | 3 +- .../SoftwareModuleTypeDeletedEvent.java | 46 ++++++++++ .../event/remote/TargetDeletedEvent.java | 3 +- .../remote/TargetFilterQueryDeletedEvent.java | 44 +++++++++ .../event/remote/TargetTagDeletedEvent.java | 3 +- .../remote/entity/ActionCreatedEvent.java | 3 +- .../remote/entity/ActionUpdatedEvent.java | 3 +- .../entity/DistributionSetCreatedEvent.java | 3 +- .../DistributionSetTagCreatedEvent.java | 4 +- .../DistributionSetTagUpdatedEvent.java | 4 +- .../DistributionSetTypeCreatedEvent.java | 41 +++++++++ .../DistributionSetTypeUpdatedEvent.java | 43 +++++++++ .../entity/DistributionSetUpdatedEvent.java | 3 +- .../remote/entity/RolloutCreatedEvent.java | 40 ++++++++ .../entity/RolloutGroupCreatedEvent.java | 3 +- .../entity/RolloutGroupUpdatedEvent.java | 3 +- .../remote/entity/RolloutUpdatedEvent.java | 3 +- .../entity/SoftwareModuleCreatedEvent.java | 3 +- .../SoftwareModuleTypeCreatedEvent.java | 41 +++++++++ .../SoftwareModuleTypeUpdatedEvent.java | 40 ++++++++ .../entity/SoftwareModuleUpdatedEvent.java | 3 +- .../remote/entity/TargetCreatedEvent.java | 3 +- .../entity/TargetFilterQueryCreatedEvent.java | 40 ++++++++ .../entity/TargetFilterQueryUpdatedEvent.java | 41 +++++++++ .../remote/entity/TargetTagCreatedEvent.java | 3 +- .../remote/entity/TargetTagUpdatedEvent.java | 3 +- .../remote/entity/TargetUpdatedEvent.java | 3 +- .../org/eclipse/hawkbit/event/EventType.java | 27 ++++++ .../jpa/model/JpaDistributionSetType.java | 24 ++++- .../repository/jpa/model/JpaRollout.java | 4 +- .../jpa/model/JpaSoftwareModuleType.java | 25 ++++- .../jpa/model/JpaTargetFilterQuery.java | 26 +++++- .../DistributionSetTypeManagementTest.java | 12 ++- .../jpa/RolloutGroupManagementTest.java | 17 ++-- .../repository/jpa/RolloutManagementTest.java | 15 +-- .../jpa/TargetFilterQueryManagementTest.java | 91 +++++++++---------- .../test/matcher/EventVerifier.java | 34 +++++++ .../test/util/AbstractIntegrationTest.java | 14 +++ 48 files changed, 768 insertions(+), 94 deletions(-) create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityCreatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityDeletedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityIdEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityUpdatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTypeDeletedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleTypeDeletedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetFilterQueryDeletedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeCreatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeUpdatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutCreatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeCreatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeUpdatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryCreatedEvent.java create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryUpdatedEvent.java diff --git a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java index bfbdbd7ed..a104f4096 100644 --- a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java +++ b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootControllerTest.java @@ -31,7 +31,9 @@ import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent; import org.eclipse.hawkbit.repository.event.remote.entity.ActionCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.ActionUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTypeCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleTypeCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetUpdatedEvent; import org.eclipse.hawkbit.repository.model.Action; @@ -73,13 +75,15 @@ public class DdiRootControllerTest extends AbstractDDiApiIntegrationTest { @WithUser(tenantId = "tenantDoesNotExists", allSpPermissions = true, authorities = { CONTROLLER_ROLE, SYSTEM_ROLE }, autoCreateTenant = false) @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), - @Expect(type = TargetPollEvent.class, count = 1) }) + @Expect(type = TargetPollEvent.class, count = 1), + @Expect(type = DistributionSetTypeCreatedEvent.class, count = 3), + @Expect(type = SoftwareModuleTypeCreatedEvent.class, count = 2) }) public void targetCannotBeRegisteredIfTenantDoesNotExistsButWhenExists() throws Exception { mvc.perform(get("/default-tenant/", tenantAware.getCurrentTenant())).andDo(MockMvcResultPrinter.print()) .andExpect(status().isNotFound()); - // create tenant + // create tenant -- creates softwaremoduletypes and distributionsettypes systemManagement.getTenantMetadata("tenantDoesNotExists"); mvc.perform(get("/{}/controller/v1/aControllerId", tenantAware.getCurrentTenant())) diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityCreatedEvent.java new file mode 100644 index 000000000..00fe41547 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityCreatedEvent.java @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.entitiy; + +/** + * Marker interface to indicate event has created a newly entity. + */ +public interface EntityCreatedEvent extends EntityIdEvent { + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityDeletedEvent.java new file mode 100644 index 000000000..c6d37ed33 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityDeletedEvent.java @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.entitiy; + +/** + * Marker interface to indicate event has deleted an entity. + */ +public interface EntityDeletedEvent extends EntityIdEvent { + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityIdEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityIdEvent.java new file mode 100644 index 000000000..a060c47b3 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityIdEvent.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.entitiy; + +import org.eclipse.hawkbit.repository.event.TenantAwareEvent; + +/** + * Interface to indicate an entity event which contains at least an entity id. + */ +public interface EntityIdEvent extends TenantAwareEvent { + + /** + * @return the class of the entity of this event. + */ + String getEntityClass(); + + /** + * @return the ID of the entity of this event. + */ + Long getEntityId(); +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityUpdatedEvent.java new file mode 100644 index 000000000..bc3c43cb2 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/entitiy/EntityUpdatedEvent.java @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.entitiy; + +/** + * Marker interface to indicate event has updated an entity. + */ +public interface EntityUpdatedEvent extends EntityIdEvent { + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetDeletedEvent.java index 8b145cc5b..cc674f7b1 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetDeletedEvent.java @@ -8,12 +8,13 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.DistributionSet; /** * Defines the remote event for deletion of {@link DistributionSet}. */ -public class DistributionSetDeletedEvent extends RemoteIdEvent { +public class DistributionSetDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTagDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTagDeletedEvent.java index d4f782b98..c722dc28b 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTagDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTagDeletedEvent.java @@ -8,12 +8,13 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.DistributionSetTag; /** * Defines the the remote event of delete a {@link DistributionSetTag}. */ -public class DistributionSetTagDeletedEvent extends RemoteIdEvent { +public class DistributionSetTagDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTypeDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTypeDeletedEvent.java new file mode 100644 index 000000000..ed01448b4 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/DistributionSetTypeDeletedEvent.java @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; +import org.eclipse.hawkbit.repository.model.DistributionSetType; + +/** + * + * Defines the remote event of deleting a {@link DistributionSetType}. + */ +public class DistributionSetTypeDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { + + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public DistributionSetTypeDeletedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor for json serialization. + * + * @param tenant + * the tenant + * @param entityId + * the entity id + * @param entityClass + * the entity class + * @param applicationId + * the origin application id + */ + public DistributionSetTypeDeletedEvent(final String tenant, final Long entityId, final String entityClass, + final String applicationId) { + super(entityId, tenant, entityClass, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutDeletedEvent.java index d1bd515fa..92be42838 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutDeletedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.Rollout; /** * * Defines the remote event of deleting a {@link Rollout}. */ -public class RolloutDeletedEvent extends RemoteIdEvent { +public class RolloutDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutGroupDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutGroupDeletedEvent.java index 7512f8b20..36ab96121 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutGroupDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/RolloutGroupDeletedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.RolloutGroup; /** * * Defines the remote event of deleting a {@link RolloutGroup}. */ -public class RolloutGroupDeletedEvent extends RemoteIdEvent { +public class RolloutGroupDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleDeletedEvent.java index b19d003a5..21255f983 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleDeletedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.SoftwareModule; /** * * Defines the remote event of deleting a {@link SoftwareModule}. */ -public class SoftwareModuleDeletedEvent extends RemoteIdEvent { +public class SoftwareModuleDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleTypeDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleTypeDeletedEvent.java new file mode 100644 index 000000000..abc0ed2d1 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/SoftwareModuleTypeDeletedEvent.java @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; +import org.eclipse.hawkbit.repository.model.SoftwareModuleType; + +/** + * + * Defines the remote event of deleting a {@link SoftwareModuleType}. + */ +public class SoftwareModuleTypeDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { + + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public SoftwareModuleTypeDeletedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor for json serialization. + * + * @param tenant + * the tenant + * @param entityId + * the entity id + * @param entityClass + * the entity class + * @param applicationId + * the origin application id + */ + public SoftwareModuleTypeDeletedEvent(final String tenant, final Long entityId, final String entityClass, + final String applicationId) { + super(entityId, tenant, entityClass, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetDeletedEvent.java index 3dba10c86..44417aa32 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetDeletedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.Target; /** * * Defines the remote event of deleting a {@link Target}. */ -public class TargetDeletedEvent extends RemoteIdEvent { +public class TargetDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 2L; private String controllerId; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetFilterQueryDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetFilterQueryDeletedEvent.java new file mode 100644 index 000000000..21fb506a6 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetFilterQueryDeletedEvent.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2015 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; +import org.eclipse.hawkbit.repository.model.TargetFilterQuery; + +/** + * + * Defines the remote event of deleting a {@link TargetFilterQuery}. + */ +public class TargetFilterQueryDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { + + private static final long serialVersionUID = 2L; + + /** + * Default constructor. + */ + public TargetFilterQueryDeletedEvent() { + // for serialization libs like jackson + } + + /** + * + * @param tenant + * the tenant + * @param entityId + * the entity id + * @param entityClass + * the entity class + * @param applicationId + * the origin application id + */ + public TargetFilterQueryDeletedEvent(final String tenant, final Long entityId, final String entityClass, + final String applicationId) { + super(entityId, tenant, entityClass, applicationId); + } +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetTagDeletedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetTagDeletedEvent.java index 755430c07..1d889c739 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetTagDeletedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetTagDeletedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote; +import org.eclipse.hawkbit.repository.event.entitiy.EntityDeletedEvent; import org.eclipse.hawkbit.repository.model.TargetTag; /** * Defines the remote event of delete a {@link TargetTag}. * */ -public class TargetTagDeletedEvent extends RemoteIdEvent { +public class TargetTagDeletedEvent extends RemoteIdEvent implements EntityDeletedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionCreatedEvent.java index 133c485e0..4b4ade6f7 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionCreatedEvent.java @@ -8,12 +8,13 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.Action; /** * Defines the remote event of creating a new {@link Action}. */ -public class ActionCreatedEvent extends AbstractActionEvent { +public class ActionCreatedEvent extends AbstractActionEvent implements EntityCreatedEvent { private static final long serialVersionUID = 2L; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionUpdatedEvent.java index 6906c0940..d5e9e545d 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/ActionUpdatedEvent.java @@ -8,12 +8,13 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.Action; /** * Defines the remote event of updated a {@link Action}. */ -public class ActionUpdatedEvent extends AbstractActionEvent { +public class ActionUpdatedEvent extends AbstractActionEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 2L; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetCreatedEvent.java index 27d36f2de..40bd2cd36 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetCreatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.DistributionSet; /** * Defines the the remote of creating a new {@link DistributionSet}. * */ -public class DistributionSetCreatedEvent extends RemoteEntityEvent { +public class DistributionSetCreatedEvent extends RemoteEntityEvent implements EntityCreatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagCreatedEvent.java index 82e4b62fb..04d48011e 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagCreatedEvent.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.DistributionSetTag; /** @@ -15,7 +16,8 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag; * {@link DistributionSetTag}. * */ -public class DistributionSetTagCreatedEvent extends RemoteEntityEvent { +public class DistributionSetTagCreatedEvent extends RemoteEntityEvent + implements EntityCreatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagUpdatedEvent.java index 288dd12c6..50d036b6b 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTagUpdatedEvent.java @@ -8,13 +8,15 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.DistributionSetTag; /** * Defines the remote event for update a {@link DistributionSetTag}. * */ -public class DistributionSetTagUpdatedEvent extends RemoteEntityEvent { +public class DistributionSetTagUpdatedEvent extends RemoteEntityEvent + implements EntityUpdatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeCreatedEvent.java new file mode 100644 index 000000000..65b576a72 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeCreatedEvent.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; +import org.eclipse.hawkbit.repository.model.DistributionSetType; + +/** + * Defines the remote event of creating a new {@link DistributionSetType}. + * + */ +public class DistributionSetTypeCreatedEvent extends RemoteEntityEvent + implements EntityCreatedEvent { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public DistributionSetTypeCreatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * the DistributionSetType + * @param applicationId + * the origin application id + */ + public DistributionSetTypeCreatedEvent(final DistributionSetType baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeUpdatedEvent.java new file mode 100644 index 000000000..fe3f48cad --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetTypeUpdatedEvent.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; +import org.eclipse.hawkbit.repository.model.DistributionSetType; +import org.eclipse.hawkbit.repository.model.SoftwareModuleType; + +/** + * Defines the remote event for updating a {@link SoftwareModuleType}. + * + */ +public class DistributionSetTypeUpdatedEvent extends RemoteEntityEvent + implements EntityUpdatedEvent { + + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public DistributionSetTypeUpdatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * DistributionSetType + * @param applicationId + * the origin application id + */ + public DistributionSetTypeUpdatedEvent(final DistributionSetType baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetUpdatedEvent.java index ae8fa5b03..fbcde8a33 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/DistributionSetUpdatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.DistributionSet; /** * Defines the remote event for updating a {@link DistributionSet}. * */ -public class DistributionSetUpdatedEvent extends RemoteEntityEvent { +public class DistributionSetUpdatedEvent extends RemoteEntityEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutCreatedEvent.java new file mode 100644 index 000000000..f191398e4 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutCreatedEvent.java @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; +import org.eclipse.hawkbit.repository.model.Rollout; + +/** + * Defines the remote event of creating a new {@link Rollout}. + * + */ +public class RolloutCreatedEvent extends RemoteEntityEvent implements EntityCreatedEvent { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public RolloutCreatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * the Rollout + * @param applicationId + * the origin application id + */ + public RolloutCreatedEvent(final Rollout baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupCreatedEvent.java index adac4baac..fb63318eb 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupCreatedEvent.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.RolloutGroup; /** @@ -15,7 +16,7 @@ import org.eclipse.hawkbit.repository.model.RolloutGroup; * has been created for a specific rollout. * */ -public class RolloutGroupCreatedEvent extends AbstractRolloutGroupEvent { +public class RolloutGroupCreatedEvent extends AbstractRolloutGroupEvent implements EntityCreatedEvent { private static final long serialVersionUID = 1L; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupUpdatedEvent.java index 22c703270..4dfa9bf31 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutGroupUpdatedEvent.java @@ -8,12 +8,13 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.RolloutGroup; /** * Defines the remote event of updated a {@link RolloutGroup}. */ -public class RolloutGroupUpdatedEvent extends AbstractRolloutGroupEvent { +public class RolloutGroupUpdatedEvent extends AbstractRolloutGroupEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 2L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutUpdatedEvent.java index fb0b85125..2baee7665 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/RolloutUpdatedEvent.java @@ -8,12 +8,13 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.Rollout; /** * Defines the remote event of updated a {@link Rollout}. */ -public class RolloutUpdatedEvent extends RemoteEntityEvent { +public class RolloutUpdatedEvent extends RemoteEntityEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 1L; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleCreatedEvent.java index d1db96275..ba2f1a925 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleCreatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.SoftwareModule; /** * Defines the remote event of creating a new {@link SoftwareModule}. * */ -public class SoftwareModuleCreatedEvent extends RemoteEntityEvent { +public class SoftwareModuleCreatedEvent extends RemoteEntityEvent implements EntityCreatedEvent { private static final long serialVersionUID = 1L; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeCreatedEvent.java new file mode 100644 index 000000000..0219d9fe8 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeCreatedEvent.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; +import org.eclipse.hawkbit.repository.model.SoftwareModuleType; + +/** + * Defines the remote event of creating a new {@link SoftwareModuleType}. + * + */ +public class SoftwareModuleTypeCreatedEvent extends RemoteEntityEvent + implements EntityCreatedEvent { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public SoftwareModuleTypeCreatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * the SoftwareModuleType + * @param applicationId + * the origin application id + */ + public SoftwareModuleTypeCreatedEvent(final SoftwareModuleType baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeUpdatedEvent.java new file mode 100644 index 000000000..fc3a6c207 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleTypeUpdatedEvent.java @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.model.SoftwareModuleType; + +/** + * Defines the remote event for updating a {@link SoftwareModuleType}. + * + */ +public class SoftwareModuleTypeUpdatedEvent extends RemoteEntityEvent { + + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public SoftwareModuleTypeUpdatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * SoftwareModuleType entity + * @param applicationId + * the origin application id + */ + public SoftwareModuleTypeUpdatedEvent(final SoftwareModuleType baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleUpdatedEvent.java index d83edfdb1..3cd890f0d 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/SoftwareModuleUpdatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.SoftwareModule; /** * Defines the remote event for updating a {@link SoftwareModule}. * */ -public class SoftwareModuleUpdatedEvent extends RemoteEntityEvent { +public class SoftwareModuleUpdatedEvent extends RemoteEntityEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetCreatedEvent.java index 04fe01827..4146f7ff5 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetCreatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.Target; /** * Defines the remote event of creating a new {@link Target}. * */ -public class TargetCreatedEvent extends RemoteEntityEvent { +public class TargetCreatedEvent extends RemoteEntityEvent implements EntityCreatedEvent { private static final long serialVersionUID = 1L; /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryCreatedEvent.java new file mode 100644 index 000000000..8480c4e5f --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryCreatedEvent.java @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; +import org.eclipse.hawkbit.repository.model.TargetFilterQuery; + +/** + * Defines the remote event of creating a new {@link TargetFilterQuery}. + * + */ +public class TargetFilterQueryCreatedEvent extends RemoteEntityEvent implements EntityCreatedEvent { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public TargetFilterQueryCreatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * the TargetFilterQuery + * @param applicationId + * the origin application id + */ + public TargetFilterQueryCreatedEvent(final TargetFilterQuery baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryUpdatedEvent.java new file mode 100644 index 000000000..41819840f --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetFilterQueryUpdatedEvent.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2018 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.repository.event.remote.entity; + +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; +import org.eclipse.hawkbit.repository.model.TargetFilterQuery; + +/** + * Defines the remote event for updating a {@link TargetFilterQuery}. + * + */ +public class TargetFilterQueryUpdatedEvent extends RemoteEntityEvent implements EntityUpdatedEvent { + + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public TargetFilterQueryUpdatedEvent() { + // for serialization libs like jackson + } + + /** + * Constructor. + * + * @param baseEntity + * TargetFilterQuery entity + * @param applicationId + * the origin application id + */ + public TargetFilterQueryUpdatedEvent(final TargetFilterQuery baseEntity, final String applicationId) { + super(baseEntity, applicationId); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagCreatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagCreatedEvent.java index f2d6ac7f9..d25d345fc 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagCreatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagCreatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityCreatedEvent; import org.eclipse.hawkbit.repository.model.TargetTag; /** * Defines the remote event for the creation of a new {@link TargetTag}. * */ -public class TargetTagCreatedEvent extends RemoteEntityEvent { +public class TargetTagCreatedEvent extends RemoteEntityEvent implements EntityCreatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagUpdatedEvent.java index 351031ac9..6dce0f727 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetTagUpdatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.TargetTag; /** * Defines the remote event for updating a {@link TargetTag}. * */ -public class TargetTagUpdatedEvent extends RemoteEntityEvent { +public class TargetTagUpdatedEvent extends RemoteEntityEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetUpdatedEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetUpdatedEvent.java index f8e89a674..901249b08 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetUpdatedEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/entity/TargetUpdatedEvent.java @@ -8,13 +8,14 @@ */ package org.eclipse.hawkbit.repository.event.remote.entity; +import org.eclipse.hawkbit.repository.event.entitiy.EntityUpdatedEvent; import org.eclipse.hawkbit.repository.model.Target; /** * Defines the remote event for updating a {@link Target}. * */ -public class TargetUpdatedEvent extends RemoteEntityEvent { +public class TargetUpdatedEvent extends RemoteEntityEvent implements EntityUpdatedEvent { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java index 7ab3bb215..afdcd19d0 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java @@ -14,12 +14,15 @@ import java.util.Optional; import org.eclipse.hawkbit.repository.event.remote.DistributionSetDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.DistributionSetTagDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.DistributionSetTypeDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.DownloadProgressEvent; import org.eclipse.hawkbit.repository.event.remote.RolloutDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.RolloutGroupDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.SoftwareModuleDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.SoftwareModuleTypeDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEvent; import org.eclipse.hawkbit.repository.event.remote.TargetDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.TargetFilterQueryDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent; import org.eclipse.hawkbit.repository.event.remote.TargetTagDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.ActionCreatedEvent; @@ -28,13 +31,20 @@ import org.eclipse.hawkbit.repository.event.remote.entity.CancelTargetAssignment import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTagCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTagUpdatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTypeCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTypeUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetUpdatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.RolloutCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutGroupCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutGroupUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleTypeCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleTypeUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.TargetFilterQueryCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.TargetFilterQueryUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetTagCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetTagUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetUpdatedEvent; @@ -101,6 +111,23 @@ public class EventType { TYPES.put(24, TargetPollEvent.class); TYPES.put(25, RolloutDeletedEvent.class); TYPES.put(26, RolloutGroupDeletedEvent.class); + TYPES.put(27, RolloutCreatedEvent.class); + + // distribution set type + TYPES.put(28, DistributionSetTypeCreatedEvent.class); + TYPES.put(29, DistributionSetTypeUpdatedEvent.class); + TYPES.put(30, DistributionSetTypeDeletedEvent.class); + + // software module type + TYPES.put(31, SoftwareModuleTypeCreatedEvent.class); + TYPES.put(32, SoftwareModuleTypeUpdatedEvent.class); + TYPES.put(33, SoftwareModuleTypeDeletedEvent.class); + + // target filter query + TYPES.put(34, TargetFilterQueryCreatedEvent.class); + TYPES.put(35, TargetFilterQueryUpdatedEvent.class); + TYPES.put(36, TargetFilterQueryDeletedEvent.class); + } private int value; 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 ce48f0c01..88eb1085b 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 @@ -25,11 +25,16 @@ import javax.persistence.UniqueConstraint; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import org.eclipse.hawkbit.repository.event.remote.DistributionSetDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTypeCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTypeUpdatedEvent; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; +import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder; import org.eclipse.persistence.annotations.CascadeOnDelete; +import org.eclipse.persistence.descriptors.DescriptorEvent; import org.springframework.util.CollectionUtils; /** @@ -46,7 +51,7 @@ import org.springframework.util.CollectionUtils; // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for // sub entities @SuppressWarnings("squid:S2160") -public class JpaDistributionSetType extends AbstractJpaNamedEntity implements DistributionSetType { +public class JpaDistributionSetType extends AbstractJpaNamedEntity implements DistributionSetType, EventAwareEntity { private static final long serialVersionUID = 1L; @CascadeOnDelete @@ -230,4 +235,21 @@ public class JpaDistributionSetType extends AbstractJpaNamedEntity implements Di return "DistributionSetType [key=" + key + ", isDeleted()=" + isDeleted() + ", getId()=" + getId() + "]"; } + @Override + public void fireCreateEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent( + new DistributionSetTypeCreatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); + } + + @Override + public void fireUpdateEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent( + new DistributionSetTypeUpdatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); + } + + @Override + public void fireDeleteEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent(new DistributionSetDeletedEvent(getTenant(), + getId(), getClass().getName(), EventPublisherHolder.getInstance().getApplicationId())); + } } 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 36433322c..4941ebf7a 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 @@ -27,6 +27,7 @@ import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.eclipse.hawkbit.repository.event.remote.RolloutDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.RolloutCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutUpdatedEvent; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.ActionType; @@ -230,7 +231,8 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event @Override public void fireCreateEvent(final DescriptorEvent descriptorEvent) { - // there is no rollout creation event + EventPublisherHolder.getInstance().getEventPublisher() + .publishEvent(new RolloutCreatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); } @Override 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 0ebcdb3a9..643138d3a 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 @@ -17,7 +17,12 @@ import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import org.eclipse.hawkbit.repository.event.remote.SoftwareModuleTypeDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleTypeCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleTypeUpdatedEvent; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; +import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder; +import org.eclipse.persistence.descriptors.DescriptorEvent; /** * Type of a software modules. @@ -32,7 +37,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for // sub entities @SuppressWarnings("squid:S2160") -public class JpaSoftwareModuleType extends AbstractJpaNamedEntity implements SoftwareModuleType { +public class JpaSoftwareModuleType extends AbstractJpaNamedEntity implements SoftwareModuleType, EventAwareEntity { private static final long serialVersionUID = 1L; @Column(name = "type_key", nullable = false, length = SoftwareModuleType.KEY_MAX_SIZE) @@ -138,4 +143,22 @@ public class JpaSoftwareModuleType extends AbstractJpaNamedEntity implements Sof public void setKey(final String key) { this.key = key; } + + @Override + public void fireCreateEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent( + new SoftwareModuleTypeCreatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); + } + + @Override + public void fireUpdateEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent( + new SoftwareModuleTypeUpdatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); + } + + @Override + public void fireDeleteEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent(new SoftwareModuleTypeDeletedEvent( + getTenant(), getId(), getClass().getName(), EventPublisherHolder.getInstance().getApplicationId())); + } } 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 02228dd92..6755bf5a6 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 @@ -20,9 +20,14 @@ import javax.persistence.UniqueConstraint; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; +import org.eclipse.hawkbit.repository.event.remote.TargetFilterQueryDeletedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.TargetFilterQueryCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.TargetFilterQueryUpdatedEvent; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.TargetFilterQuery; +import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder; +import org.eclipse.persistence.descriptors.DescriptorEvent; /** * Stored target filter. @@ -34,7 +39,8 @@ import org.eclipse.hawkbit.repository.model.TargetFilterQuery; // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for // sub entities @SuppressWarnings("squid:S2160") -public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity implements TargetFilterQuery { +public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity + implements TargetFilterQuery, EventAwareEntity { private static final long serialVersionUID = 7493966984413479089L; @Column(name = "name", length = NamedEntity.NAME_MAX_SIZE, nullable = false) @@ -98,4 +104,22 @@ public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity imple public void setAutoAssignDistributionSet(final JpaDistributionSet distributionSet) { this.autoAssignDistributionSet = distributionSet; } + + @Override + public void fireCreateEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent( + new TargetFilterQueryCreatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); + } + + @Override + public void fireUpdateEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent( + new TargetFilterQueryUpdatedEvent(this, EventPublisherHolder.getInstance().getApplicationId())); + } + + @Override + public void fireDeleteEvent(final DescriptorEvent descriptorEvent) { + EventPublisherHolder.getInstance().getEventPublisher().publishEvent(new TargetFilterQueryDeletedEvent( + getTenant(), getId(), getClass().getName(), EventPublisherHolder.getInstance().getApplicationId())); + } } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java index ab84db67a..e9775cffd 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.repository.jpa; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - import java.util.Arrays; import javax.validation.ConstraintViolationException; @@ -19,6 +15,7 @@ import javax.validation.ConstraintViolationException; import org.apache.commons.lang3.RandomStringUtils; import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetTypeCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleCreatedEvent; import org.eclipse.hawkbit.repository.exception.EntityReadOnlyException; @@ -31,6 +28,10 @@ import org.junit.Test; import com.google.common.collect.Sets; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; import ru.yandex.qatools.allure.annotations.Step; @@ -56,7 +57,8 @@ public class DistributionSetTypeManagementTest extends AbstractJpaIntegrationTes @Test @Description("Verifies that management queries react as specfied on calls for non existing entities " + " by means of throwing EntityNotFoundException.") - @ExpectEvents({ @Expect(type = DistributionSetCreatedEvent.class, count = 0) }) + @ExpectEvents({ @Expect(type = DistributionSetCreatedEvent.class, count = 0), + @Expect(type = DistributionSetTypeCreatedEvent.class, count = 1) }) public void entityQueriesReferringToNotExistingEntitiesThrowsException() { verifyThrownExceptionBy(() -> distributionSetTypeManagement.assignMandatorySoftwareModuleTypes(NOT_EXIST_IDL, diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutGroupManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutGroupManagementTest.java index 75ba66ec9..00117c88e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutGroupManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutGroupManagementTest.java @@ -8,10 +8,9 @@ */ package org.eclipse.hawkbit.repository.jpa; -import static org.assertj.core.api.Assertions.assertThat; - import org.eclipse.hawkbit.repository.event.remote.RolloutDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.RolloutCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutGroupCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutGroupUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutUpdatedEvent; @@ -21,6 +20,8 @@ import org.eclipse.hawkbit.repository.test.matcher.Expect; import org.eclipse.hawkbit.repository.test.matcher.ExpectEvents; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; import ru.yandex.qatools.allure.annotations.Stories; @@ -47,24 +48,26 @@ public class RolloutGroupManagementTest extends AbstractJpaIntegrationTest { @Expect(type = RolloutGroupUpdatedEvent.class, count = 10), @Expect(type = DistributionSetCreatedEvent.class, count = 1), @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), - @Expect(type = RolloutUpdatedEvent.class, count = 1), - @Expect(type = TargetCreatedEvent.class, count = 10) }) + @Expect(type = RolloutUpdatedEvent.class, count = 1), @Expect(type = TargetCreatedEvent.class, count = 10), + @Expect(type = RolloutCreatedEvent.class, count = 1) }) public void entityQueriesReferringToNotExistingEntitiesThrowsException() { testdataFactory.createRollout("xxx"); verifyThrownExceptionBy(() -> rolloutGroupManagement.countByRollout(NOT_EXIST_IDL), "Rollout"); verifyThrownExceptionBy(() -> rolloutGroupManagement.countTargetsOfRolloutsGroup(NOT_EXIST_IDL), "RolloutGroup"); + verifyThrownExceptionBy(() -> rolloutGroupManagement.findByRolloutWithDetailedStatus(PAGE, NOT_EXIST_IDL), + "Rollout"); verifyThrownExceptionBy( - () -> rolloutGroupManagement.findByRolloutWithDetailedStatus(PAGE, NOT_EXIST_IDL), "Rollout"); - verifyThrownExceptionBy(() -> rolloutGroupManagement.findAllTargetsOfRolloutGroupWithActionStatus(PAGE, NOT_EXIST_IDL), + () -> rolloutGroupManagement.findAllTargetsOfRolloutGroupWithActionStatus(PAGE, NOT_EXIST_IDL), "RolloutGroup"); verifyThrownExceptionBy(() -> rolloutGroupManagement.findByRolloutAndRsql(PAGE, NOT_EXIST_IDL, "name==*"), "Rollout"); verifyThrownExceptionBy(() -> rolloutGroupManagement.findTargetsOfRolloutGroup(PAGE, NOT_EXIST_IDL), "RolloutGroup"); - verifyThrownExceptionBy(() -> rolloutGroupManagement.findTargetsOfRolloutGroupByRsql(PAGE, NOT_EXIST_IDL, "name==*"), + verifyThrownExceptionBy( + () -> rolloutGroupManagement.findTargetsOfRolloutGroupByRsql(PAGE, NOT_EXIST_IDL, "name==*"), "RolloutGroup"); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java index 4f126e1c9..8a2a336cf 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/RolloutManagementTest.java @@ -8,9 +8,6 @@ */ package org.eclipse.hawkbit.repository.jpa; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -33,6 +30,7 @@ import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEv import org.eclipse.hawkbit.repository.event.remote.entity.ActionCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.ActionUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.RolloutCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutGroupCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutGroupUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.RolloutUpdatedEvent; @@ -71,6 +69,9 @@ import org.springframework.data.domain.Slice; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; + import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; import ru.yandex.qatools.allure.annotations.Step; @@ -137,7 +138,7 @@ public class RolloutManagementTest extends AbstractJpaIntegrationTest { @Expect(type = RolloutGroupUpdatedEvent.class, count = 10), @Expect(type = DistributionSetCreatedEvent.class, count = 1), @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), - @Expect(type = RolloutUpdatedEvent.class, count = 1), + @Expect(type = RolloutUpdatedEvent.class, count = 1), @Expect(type = RolloutCreatedEvent.class, count = 1), @Expect(type = TargetCreatedEvent.class, count = 10) }) public void entityQueriesReferringToNotExistingEntitiesThrowsException() { testdataFactory.createRollout("xxx"); @@ -1419,7 +1420,8 @@ public class RolloutManagementTest extends AbstractJpaIntegrationTest { @Expect(type = RolloutGroupCreatedEvent.class, count = 5), @Expect(type = RolloutGroupDeletedEvent.class, count = 5), @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), - @Expect(type = RolloutGroupUpdatedEvent.class, count = 5) }) + @Expect(type = RolloutGroupUpdatedEvent.class, count = 5), + @Expect(type = RolloutCreatedEvent.class, count = 1) }) public void deleteRolloutWhichHasNeverStartedIsHardDeleted() { final int amountTargetsForRollout = 10; final int amountOtherTargets = 15; @@ -1450,7 +1452,8 @@ public class RolloutManagementTest extends AbstractJpaIntegrationTest { @Expect(type = RolloutGroupCreatedEvent.class, count = 5), @Expect(type = RolloutGroupDeletedEvent.class, count = 5), @Expect(type = ActionCreatedEvent.class, count = 10), @Expect(type = ActionUpdatedEvent.class, count = 2), - @Expect(type = RolloutDeletedEvent.class, count = 1) }) + @Expect(type = RolloutDeletedEvent.class, count = 1), + @Expect(type = RolloutCreatedEvent.class, count = 1) }) public void deleteRolloutWhichHasBeenStartedBeforeIsSoftDeleted() { final int amountTargetsForRollout = 10; final int amountOtherTargets = 15; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetFilterQueryManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetFilterQueryManagementTest.java index 904453436..753fbe26e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetFilterQueryManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetFilterQueryManagementTest.java @@ -8,7 +8,6 @@ */ package org.eclipse.hawkbit.repository.jpa; -import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -23,6 +22,7 @@ import org.eclipse.hawkbit.repository.TargetFilterQueryManagement; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.TargetFilterQueryCreatedEvent; import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldException; import org.eclipse.hawkbit.repository.model.DistributionSet; @@ -34,6 +34,8 @@ import org.junit.Test; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import static org.assertj.core.api.Assertions.assertThat; + import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; import ru.yandex.qatools.allure.annotations.Stories; @@ -59,38 +61,38 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Verifies that management queries react as specfied on calls for non existing entities " + " by means of throwing EntityNotFoundException.") @ExpectEvents({ @Expect(type = DistributionSetCreatedEvent.class, count = 1), - @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3), + @Expect(type = TargetFilterQueryCreatedEvent.class, count = 1) }) public void entityQueriesReferringToNotExistingEntitiesThrowsException() { final DistributionSet set = testdataFactory.createDistributionSet(); final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( entityFactory.targetFilterQuery().create().name("test filter").query("name==PendingTargets001")); - verifyThrownExceptionBy(() -> targetFilterQueryManagement.delete(NOT_EXIST_IDL), - "TargetFilterQuery"); + verifyThrownExceptionBy(() -> targetFilterQueryManagement.delete(NOT_EXIST_IDL), "TargetFilterQuery"); verifyThrownExceptionBy( () -> targetFilterQueryManagement.findByAutoAssignDSAndRsql(PAGE, NOT_EXIST_IDL, "name==*"), "DistributionSet"); verifyThrownExceptionBy( - () -> targetFilterQueryManagement - .update(entityFactory.targetFilterQuery().update(NOT_EXIST_IDL)), + () -> targetFilterQueryManagement.update(entityFactory.targetFilterQuery().update(NOT_EXIST_IDL)), "TargetFilterQuery"); - verifyThrownExceptionBy(() -> targetFilterQueryManagement - .updateAutoAssignDS(targetFilterQuery.getId(), NOT_EXIST_IDL), "DistributionSet"); verifyThrownExceptionBy( - () -> targetFilterQueryManagement.updateAutoAssignDS(1234L, set.getId()), + () -> targetFilterQueryManagement.updateAutoAssignDS(targetFilterQuery.getId(), NOT_EXIST_IDL), + "DistributionSet"); + verifyThrownExceptionBy(() -> targetFilterQueryManagement.updateAutoAssignDS(1234L, set.getId()), "TargetFilterQuery"); - verifyThrownExceptionBy(() -> targetFilterQueryManagement - .updateAutoAssignDS(targetFilterQuery.getId(), NOT_EXIST_IDL), "DistributionSet"); + verifyThrownExceptionBy( + () -> targetFilterQueryManagement.updateAutoAssignDS(targetFilterQuery.getId(), NOT_EXIST_IDL), + "DistributionSet"); } @Test @Description("Test creation of target filter query.") public void createTargetFilterQuery() { final String filterName = "new target filter"; - final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); assertEquals("Retrieved newly created custom target filter", targetFilterQuery, targetFilterQueryManagement.getByName(filterName).get()); } @@ -99,8 +101,8 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Test searching a target filter query.") public void searchTargetFilterQuery() { final String filterName = "targetFilterQueryName"; - final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); targetFilterQueryManagement.create( entityFactory.targetFilterQuery().create().name("someOtherFilter").query("name==PendingTargets002")); @@ -115,8 +117,7 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Test searching a target filter query with an invalid filter.") public void searchTargetFilterQueryInvalidField() { // Should throw an exception - targetFilterQueryManagement.findByRsql(new PageRequest(0, 10), "unknownField==testValue") - .getContent(); + targetFilterQueryManagement.findByRsql(new PageRequest(0, 10), "unknownField==testValue").getContent(); } @@ -124,8 +125,8 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Checks if the EntityAlreadyExistsException is thrown if a targetfilterquery with the same name are created more than once.") public void createDuplicateTargetFilterQuery() { final String filterName = "new target filter duplicate"; - targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); try { targetFilterQueryManagement.create( @@ -140,8 +141,8 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Test deletion of target filter query.") public void deleteTargetFilterQuery() { final String filterName = "delete_target_filter_query"; - final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); targetFilterQueryManagement.delete(targetFilterQuery.getId()); assertFalse("Returns null as the target filter is deleted", targetFilterQueryManagement.get(targetFilterQuery.getId()).isPresent()); @@ -152,12 +153,12 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Test updation of target filter query.") public void updateTargetFilterQuery() { final String filterName = "target_filter_01"; - final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); final String newQuery = "status==UNKNOWN"; - targetFilterQueryManagement.update( - entityFactory.targetFilterQuery().update(targetFilterQuery.getId()).query(newQuery)); + targetFilterQueryManagement + .update(entityFactory.targetFilterQuery().update(targetFilterQuery.getId()).query(newQuery)); assertEquals("Returns updated target filter query", newQuery, targetFilterQueryManagement.getByName(filterName).get().getQuery()); @@ -167,13 +168,12 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Test assigning a distribution set") public void assignDistributionSet() { final String filterName = "target_filter_02"; - final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); final DistributionSet distributionSet = testdataFactory.createDistributionSet(); - targetFilterQueryManagement.updateAutoAssignDS(targetFilterQuery.getId(), - distributionSet.getId()); + targetFilterQueryManagement.updateAutoAssignDS(targetFilterQuery.getId(), distributionSet.getId()); final TargetFilterQuery tfq = targetFilterQueryManagement.getByName(filterName).get(); @@ -185,13 +185,12 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Description("Test removing distribution set while it has a relation to a target filter query") public void removeAssignDistributionSet() { final String filterName = "target_filter_03"; - final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); + final TargetFilterQuery targetFilterQuery = targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")); final DistributionSet distributionSet = testdataFactory.createDistributionSet(); - targetFilterQueryManagement.updateAutoAssignDS(targetFilterQuery.getId(), - distributionSet.getId()); + targetFilterQueryManagement.updateAutoAssignDS(targetFilterQuery.getId(), distributionSet.getId()); // Check if target filter query is there TargetFilterQuery tfq = targetFilterQueryManagement.getByName(filterName).get(); @@ -218,8 +217,7 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest assignDistributionSet(distributionSet.getId(), target.getControllerId()); targetFilterQueryManagement.updateAutoAssignDS(targetFilterQueryManagement - .create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")) + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==PendingTargets001")) .getId(), distributionSet.getId()); // Check if target filter query is there with the distribution set @@ -247,30 +245,27 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest assertEquals(0L, targetFilterQueryManagement.count()); - targetFilterQueryManagement - .create(entityFactory.targetFilterQuery().create().name("a").query("name==*")); - targetFilterQueryManagement - .create(entityFactory.targetFilterQuery().create().name("b").query("name==*")); + targetFilterQueryManagement.create(entityFactory.targetFilterQuery().create().name("a").query("name==*")); + targetFilterQueryManagement.create(entityFactory.targetFilterQuery().create().name("b").query("name==*")); final DistributionSet distributionSet = testdataFactory.createDistributionSet(); final DistributionSet distributionSet2 = testdataFactory.createDistributionSet("2"); - final TargetFilterQuery tfq = targetFilterQueryManagement - .updateAutoAssignDS( - targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name("c").query("name==x")).getId(), - distributionSet.getId()); + final TargetFilterQuery tfq = targetFilterQueryManagement.updateAutoAssignDS( + targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name("c").query("name==x")).getId(), + distributionSet.getId()); final TargetFilterQuery tfq2 = targetFilterQueryManagement.updateAutoAssignDS( - targetFilterQueryManagement.create( - entityFactory.targetFilterQuery().create().name(filterName).query("name==z*")).getId(), + targetFilterQueryManagement + .create(entityFactory.targetFilterQuery().create().name(filterName).query("name==z*")).getId(), distributionSet2.getId()); assertEquals(4L, targetFilterQueryManagement.count()); // check if find works - Page tfqList = targetFilterQueryManagement - .findByAutoAssignDSAndRsql(new PageRequest(0, 500), distributionSet.getId(), null); + Page tfqList = targetFilterQueryManagement.findByAutoAssignDSAndRsql(new PageRequest(0, 500), + distributionSet.getId(), null); assertThat(1L).as("Target filter query").isEqualTo(tfqList.getTotalElements()); assertEquals("Returns correct target filter query", tfq.getId(), tfqList.iterator().next().getId()); diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java index 08406a89c..a56200a6c 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java @@ -27,6 +27,7 @@ import org.junit.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.bus.event.RemoteApplicationEvent; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationListener; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.event.ApplicationEventMulticaster; @@ -47,6 +48,25 @@ public class EventVerifier extends AbstractTestExecutionListener { private EventCaptor eventCaptor; + /** + * Publishes a reset counter marker event on the context to reset the + * current counted events. This allows test to prepare a setup such in + * {@code @Before} annotations which are actually counted to the executed + * test-method and maybe fire events which are not covered / recognized by + * the test-method itself and reset the counter again. + * + * Note that this approach is only working when using a single-thread + * executor in the ApplicationEventMultiCaster, so the order of the events + * keep the same. + * + * @param publisher + * the {@link ApplicationEventPublisher} to publish the marker + * event to + */ + public static void publishResetMarkerEvent(final ApplicationEventPublisher publisher) { + publisher.publishEvent(new ResetCounterMarkerEvent()); + } + @Override public void beforeTestMethod(final TestContext testContext) throws Exception { final Optional expectedEvents = getExpectationsFrom(testContext.getTestMethod()); @@ -123,6 +143,12 @@ public class EventVerifier extends AbstractTestExecutionListener { public void onApplicationEvent(final RemoteApplicationEvent event) { LOGGER.debug("Received event {}", event.getClass().getSimpleName()); + if (ResetCounterMarkerEvent.class.isAssignableFrom(event.getClass())) { + LOGGER.debug("Retrieving reset counter marker event - resetting counters"); + capturedEvents.clear(); + return; + } + if (event instanceof RemoteTenantAwareEvent) { assertThat(((RemoteTenantAwareEvent) event).getTenant()).isNotEmpty(); } @@ -150,4 +176,12 @@ public class EventVerifier extends AbstractTestExecutionListener { } + private static final class ResetCounterMarkerEvent extends RemoteApplicationEvent { + private static final long serialVersionUID = 1L; + + private ResetCounterMarkerEvent() { + super(new Object(), "resetcounter"); + } + } + } 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 ef042cae4..115e0d546 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 @@ -70,6 +70,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.cloud.bus.ServiceMatcher; import org.springframework.cloud.stream.test.binder.TestSupportBinderAutoConfiguration; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.auditing.AuditingHandler; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -196,6 +197,9 @@ public abstract class AbstractIntegrationTest { @Autowired protected ServiceMatcher serviceMatcher; + @Autowired + private ApplicationEventPublisher eventPublisher; + @Rule public final WithSpringAuthorityRule securityRule = new WithSpringAuthorityRule(); @@ -263,6 +267,7 @@ public abstract class AbstractIntegrationTest { @Before public void before() throws Exception { + final String description = "Updated description."; osType = securityRule @@ -281,6 +286,15 @@ public abstract class AbstractIntegrationTest { .update(entityFactory.softwareModuleType().update(runtimeType.getId()).description(description))); standardDsType = securityRule.runAsPrivileged(() -> testdataFactory.findOrCreateDefaultTestDsType()); + + // publish the reset counter market event to reset the counters after + // setup. The setup is transparent by the test and its @ExpectedEvent + // counting so we reset the counter here after the setup. Note that this + // approach is only working when using a single-thread executor in the + // ApplicationEventMultiCaster which the TestConfiguration is doing so + // the order of the events keep the same. + EventVerifier.publishResetMarkerEvent(eventPublisher); + } private static String artifactDirectory = "./artifactrepo/" + RandomStringUtils.randomAlphanumeric(20);