From 7fa89d7d3cb63c41fe8936d4891d48663de8be22 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 12:39:12 +0200 Subject: [PATCH 1/7] Add entity lifercycle interceptor interface and add a entity listener. Signed-off-by: SirWayne --- .../repository/model/EntityInterceptor.java | 79 +++++++++++++++++++ .../RepositoryApplicationConfiguration.java | 9 +++ .../jpa/model/AbstractJpaBaseEntity.java | 3 +- .../jpa/model/EntityInterceptorListener.java | 69 ++++++++++++++++ .../model/helper/EntityInterceptorHolder.java | 42 ++++++++++ 5 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/EntityInterceptor.java create mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java create mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/EntityInterceptor.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/EntityInterceptor.java new file mode 100644 index 000000000..b6fff3f91 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/EntityInterceptor.java @@ -0,0 +1,79 @@ +/** + * 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.model; + +/** + * Interface for the entity interceptor lifecycle. + */ +public interface EntityInterceptor { + + /** + * Callback for the {@link @PrePersist} lifecycle event. + * + * @param entity + * the model entity + */ + default void prePersist(final Object entity) { + }; + + /** + * Callback for the {@link @PostPersist} lifecycle event. + * + * @param entity + * the model entity + */ + default void postPersist(final Object entity) { + }; + + /** + * Callback for the {@link @PostRemove} lifecycle event. + * + * @param entity + * the model entity + */ + default void postRemove(final Object entity) { + }; + + /** + * Callback for the {@link @PreRemove} lifecycle event. + * + * @param entity + * the model entity + */ + default void preRemove(final Object entity) { + }; + + /** + * Callback for the {@link @PostLoad} lifecycle event. + * + * @param entity + * the model entity + */ + default void postLoad(final Object entity) { + }; + + /** + * Callback for the {@link @PreUpdate} lifecycle event. + * + * @param entity + * the model entity + */ + default void preUpdate(final Object entity) { + }; + + /** + * Callback for the {@link @PostUpdate} lifecycle event. + * + * @param entity + * the model entity + */ + default void postUpdate(final Object entity) { + }; + +} diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java index 7236cbe79..f06d44516 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java @@ -46,6 +46,7 @@ import org.eclipse.hawkbit.repository.jpa.aspects.ExceptionMappingAspectHandler; import org.eclipse.hawkbit.repository.jpa.configuration.MultiTenantJpaTransactionManager; import org.eclipse.hawkbit.repository.jpa.model.helper.AfterTransactionCommitExecutorHolder; import org.eclipse.hawkbit.repository.jpa.model.helper.CacheManagerHolder; +import org.eclipse.hawkbit.repository.jpa.model.helper.EntityInterceptorHolder; import org.eclipse.hawkbit.repository.jpa.model.helper.SecurityTokenGeneratorHolder; import org.eclipse.hawkbit.repository.jpa.model.helper.SystemManagementHolder; import org.eclipse.hawkbit.repository.jpa.model.helper.SystemSecurityContextHolder; @@ -144,6 +145,14 @@ public class RepositoryApplicationConfiguration extends JpaBaseConfiguration { return SecurityTokenGeneratorHolder.getInstance(); } + /** + * @return the singleton instance of the {@link EntityInterceptorHolder} + */ + @Bean + public EntityInterceptorHolder entityInterceptorHolder() { + return EntityInterceptorHolder.getInstance(); + } + /** * @return the singleton instance of the {@link CacheManagerHolder} */ diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java index 257828c6f..ca8ac60df 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java @@ -31,7 +31,8 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; */ @MappedSuperclass @Access(AccessType.FIELD) -@EntityListeners({ AuditingEntityListener.class, CacheFieldEntityListener.class, EntityPropertyChangeListener.class }) +@EntityListeners({ AuditingEntityListener.class, CacheFieldEntityListener.class, EntityPropertyChangeListener.class, + EntityInterceptorListener.class }) public abstract class AbstractJpaBaseEntity implements BaseEntity { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java new file mode 100644 index 000000000..15062f27f --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java @@ -0,0 +1,69 @@ +/** + * 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.jpa.model; + +import javax.persistence.PostLoad; +import javax.persistence.PostPersist; +import javax.persistence.PostRemove; +import javax.persistence.PostUpdate; +import javax.persistence.PrePersist; +import javax.persistence.PreRemove; +import javax.persistence.PreUpdate; + +import org.eclipse.hawkbit.repository.jpa.model.helper.EntityInterceptorHolder; + +/** + * Entity listener which calls all entity interceptor for the lifecyles + * callbacks. + */ +public class EntityInterceptorListener { + + @PrePersist + protected void prePersist(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.prePersist(entity)); + } + + @PostPersist + protected void postPersist(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.postPersist(entity)); + } + + @PostRemove + protected void postRemove(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.postRemove(entity)); + } + + @PreRemove + protected void preRemove(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.preRemove(entity)); + } + + @PostLoad + protected void postLoad(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.postLoad(entity)); + } + + @PreUpdate + protected void preUpdate(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.preUpdate(entity)); + } + + @PostUpdate + protected void postUpdate(final Object entity) { + EntityInterceptorHolder.getInstance().getEntityInterceptors() + .forEach(interceptor -> interceptor.postUpdate(entity)); + } + +} diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java new file mode 100644 index 000000000..8153ddc32 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java @@ -0,0 +1,42 @@ +/** + * 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.jpa.model.helper; + +import java.util.List; + +import org.eclipse.hawkbit.repository.model.EntityInterceptor; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * A singleton bean which holds the {@link EntityInterceptor} to have all + * interceptors in spring beans. + * + */ +public final class EntityInterceptorHolder { + + private static final EntityInterceptorHolder SINGLETON = new EntityInterceptorHolder(); + + @Autowired + private List entityInterceptors; + + private EntityInterceptorHolder() { + + } + + /** + * @return the entity intreceptor holder singleton instance + */ + public static EntityInterceptorHolder getInstance() { + return SINGLETON; + } + + public List getEntityInterceptors() { + return entityInterceptors; + } +} From 37eea0e16ac1648a42b554e17010f01e3d5e87cd Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 14:51:50 +0200 Subject: [PATCH 2/7] Add test cases refacor after pr review Signed-off-by: SirWayne --- .../jpa/model/EntityInterceptorListener.java | 32 +-- .../model/helper/EntityInterceptorHolder.java | 5 +- .../model/EntityInterceptorListenerTest.java | 188 ++++++++++++++++++ .../test/util/AbstractIntegrationTest.java | 3 + 4 files changed, 210 insertions(+), 18 deletions(-) create mode 100644 hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java index 15062f27f..1e9c39237 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.repository.jpa.model; +import java.util.function.Consumer; + import javax.persistence.PostLoad; import javax.persistence.PostPersist; import javax.persistence.PostRemove; @@ -17,53 +19,51 @@ import javax.persistence.PreRemove; import javax.persistence.PreUpdate; import org.eclipse.hawkbit.repository.jpa.model.helper.EntityInterceptorHolder; +import org.eclipse.hawkbit.repository.model.EntityInterceptor; /** - * Entity listener which calls all entity interceptor for the lifecyles - * callbacks. + * Entity listener which calls the callback's of all registered entity + * interceptors. */ public class EntityInterceptorListener { @PrePersist protected void prePersist(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.prePersist(entity)); + notifyAll(interceptor -> interceptor.prePersist(entity)); } @PostPersist protected void postPersist(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.postPersist(entity)); + notifyAll(interceptor -> interceptor.postPersist(entity)); } @PostRemove protected void postRemove(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.postRemove(entity)); + notifyAll(interceptor -> interceptor.postRemove(entity)); } @PreRemove protected void preRemove(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.preRemove(entity)); + notifyAll(interceptor -> interceptor.preRemove(entity)); } @PostLoad protected void postLoad(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.postLoad(entity)); + notifyAll(interceptor -> interceptor.postLoad(entity)); } @PreUpdate protected void preUpdate(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.preUpdate(entity)); + notifyAll(interceptor -> interceptor.preUpdate(entity)); } @PostUpdate protected void postUpdate(final Object entity) { - EntityInterceptorHolder.getInstance().getEntityInterceptors() - .forEach(interceptor -> interceptor.postUpdate(entity)); + notifyAll(interceptor -> interceptor.postUpdate(entity)); + } + + private void notifyAll(final Consumer action) { + EntityInterceptorHolder.getInstance().getEntityInterceptors().forEach(action); } } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java index 8153ddc32..c374f219a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/helper/EntityInterceptorHolder.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.repository.jpa.model.helper; +import java.util.ArrayList; import java.util.List; import org.eclipse.hawkbit.repository.model.EntityInterceptor; @@ -22,8 +23,8 @@ public final class EntityInterceptorHolder { private static final EntityInterceptorHolder SINGLETON = new EntityInterceptorHolder(); - @Autowired - private List entityInterceptors; + @Autowired(required = false) + private final List entityInterceptors = new ArrayList<>(); private EntityInterceptorHolder() { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java new file mode 100644 index 000000000..05e27ae08 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java @@ -0,0 +1,188 @@ +/** + * 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.jpa.model; + +import static org.fest.assertions.Assertions.assertThat; + +import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest; +import org.eclipse.hawkbit.repository.jpa.model.helper.EntityInterceptorHolder; +import org.eclipse.hawkbit.repository.model.EntityInterceptor; +import org.eclipse.hawkbit.repository.model.SoftwareModuleType; +import org.eclipse.hawkbit.repository.model.Target; +import org.junit.Test; + +import ru.yandex.qatools.allure.annotations.Description; +import ru.yandex.qatools.allure.annotations.Features; +import ru.yandex.qatools.allure.annotations.Stories; + +/** + * Test the entity listener interceptor. + */ +@Features("Component Tests - Repository") +@Stories("Entity Listener Interceptor") +public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { + + @Test + @Description("Verfies that the pre persist is called after a entity creation.") + public void prePersistIsCalledWhenPersistingATarget() { + executePersistAndAssertCallbackResult(new PrePersistEntityListener()); + } + + @Test + @Description("Verfies that the post persist is called after a entity creation.") + public void postPersistIsCalledWhenPersistingATarget() { + executePersistAndAssertCallbackResult(new PostPersistEntityListener()); + } + + @Test + @Description("Verfies that the post load is called after a entity is loaded.") + public void postLoadIsCalledWhenLoadgATarget() { + final PostLoadEntityListener postLoadEntityListener = new PostLoadEntityListener(); + EntityInterceptorHolder.getInstance().getEntityInterceptors().add(postLoadEntityListener); + + final Target targetToBeCreated = entityFactory.generateTarget("targetToBeCreated"); + + targetManagement.createTarget(targetToBeCreated); + + final Target loadedTarget = targetManagement.findTargetByControllerID(targetToBeCreated.getControllerId()); + EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(postLoadEntityListener); + assertThat(postLoadEntityListener.getEntity()).isNotNull(); + assertThat(postLoadEntityListener.getEntity()).isEqualTo(loadedTarget); + } + + @Test + @Description("Verfies that the pre update is called after a entity update.") + public void preUpdateIsCalledWhenUpdateATarget() { + executeUpdateAndAssertCallbackResult(new PreUpdateEntityListener()); + } + + @Test + @Description("Verfies that the post update is called after a entity update.") + public void postUpdateIsCalledWhenUpdateATarget() { + executeUpdateAndAssertCallbackResult(new PostUpdateEntityListener()); + } + + @Test + @Description("Verfies that the pre remove is called after a entity deletion.") + public void preRemoveIsCalledWhenDeletingATarget() { + executeDeleteAndAssertCallbackResult(new PreRemoveEntityListener()); + } + + @Test + @Description("Verfies that the post remove is called after a entity deletion.") + public void postRemoveIsCalledWhenDeletinggATarget() { + executeDeleteAndAssertCallbackResult(new PostRemoveEntityListener()); + } + + private void executePersistAndAssertCallbackResult(final AbstractEntityListener entityInterceptor) { + final Target targetToBeCreated = entityFactory.generateTarget("targetToBeCreated"); + addListenerAndCreateTarget(entityInterceptor, targetToBeCreated); + + EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(entityInterceptor); + assertThat(entityInterceptor.getEntity()).isNotNull(); + assertThat(entityInterceptor.getEntity()).isEqualTo(targetToBeCreated); + } + + private void executeUpdateAndAssertCallbackResult(final AbstractEntityListener entityInterceptor) { + Target updateTarget = addListenerAndCreateTarget(entityInterceptor, + entityFactory.generateTarget("targetToBeCreated")); + updateTarget.setDescription("New"); + + updateTarget = targetManagement.updateTarget(updateTarget); + + EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(entityInterceptor); + assertThat(entityInterceptor.getEntity()).isNotNull(); + assertThat(entityInterceptor.getEntity()).isEqualTo(updateTarget); + } + + private void executeDeleteAndAssertCallbackResult(final AbstractEntityListener entityInterceptor) { + EntityInterceptorHolder.getInstance().getEntityInterceptors().add(entityInterceptor); + final SoftwareModuleType type = softwareManagement + .createSoftwareModuleType(entityFactory.generateSoftwareModuleType("test", "test", "test", 1)); + + softwareManagement.deleteSoftwareModuleType(type); + EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(entityInterceptor); + + assertThat(entityInterceptor.getEntity()).isNotNull(); + assertThat(entityInterceptor.getEntity()).isEqualTo(type); + } + + private Target addListenerAndCreateTarget(final AbstractEntityListener entityInterceptor, + final Target targetToBeCreated) { + EntityInterceptorHolder.getInstance().getEntityInterceptors().add(entityInterceptor); + + final Target createTarget = targetManagement.createTarget(targetToBeCreated); + + return createTarget; + } + + private static abstract class AbstractEntityListener implements EntityInterceptor { + + private Object entity; + + public Object getEntity() { + return entity; + } + + public void setEntity(final Object entity) { + this.entity = entity; + } + } + + private static class PrePersistEntityListener extends AbstractEntityListener { + @Override + public void prePersist(final Object entity) { + setEntity(entity); + } + } + + private static class PostPersistEntityListener extends AbstractEntityListener { + @Override + public void postPersist(final Object entity) { + setEntity(entity); + } + + } + + private static class PostLoadEntityListener extends AbstractEntityListener { + @Override + public void postLoad(final Object entity) { + setEntity(entity); + } + + } + + private static class PreUpdateEntityListener extends AbstractEntityListener { + @Override + public void preUpdate(final Object entity) { + setEntity(entity); + } + } + + private static class PostUpdateEntityListener extends AbstractEntityListener { + @Override + public void postUpdate(final Object entity) { + setEntity(entity); + } + } + + private static class PreRemoveEntityListener extends AbstractEntityListener { + @Override + public void preRemove(final Object entity) { + setEntity(entity); + } + } + + private static class PostRemoveEntityListener extends AbstractEntityListener { + @Override + public void postRemove(final Object entity) { + setEntity(entity); + } + } +} \ No newline at end of file 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 3d09fabc3..a101ac755 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 @@ -182,6 +182,9 @@ public abstract class AbstractIntegrationTest implements EnvironmentAware { @After public void after() { testRepositoryManagement.clearTestRepository(); + + targetManagement.findAllTargetIds(); + } protected DefaultMockMvcBuilder createMvcWebAppContext() { From faac47d6e497e0c8d641f5c22c14ebeaee8d6259 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 14:56:33 +0200 Subject: [PATCH 3/7] Remove useless findAllTargets Signed-off-by: SirWayne --- .../src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java index 689f5b01a..35199774a 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java @@ -55,7 +55,7 @@ public interface TenantAware { * the return type of the runner */ @FunctionalInterface - interface TenantRunner { + public interface TenantRunner { /** * Called to run specific code and a given tenant. * From a74ec2897c4cc2e02be7fdf409a4acbfb850df33 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 14:57:56 +0200 Subject: [PATCH 4/7] revert tenantaware remove useless findAlltargets fix typo Signed-off-by: SirWayne --- .../src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java | 2 +- .../repository/jpa/model/EntityInterceptorListenerTest.java | 2 +- .../hawkbit/repository/test/util/AbstractIntegrationTest.java | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java index 35199774a..689f5b01a 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/TenantAware.java @@ -55,7 +55,7 @@ public interface TenantAware { * the return type of the runner */ @FunctionalInterface - public interface TenantRunner { + interface TenantRunner { /** * Called to run specific code and a given tenant. * diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java index 05e27ae08..0bad51a3a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java @@ -76,7 +76,7 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { @Test @Description("Verfies that the post remove is called after a entity deletion.") - public void postRemoveIsCalledWhenDeletinggATarget() { + public void postRemoveIsCalledWhenDeletingATarget() { executeDeleteAndAssertCallbackResult(new PostRemoveEntityListener()); } 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 a101ac755..3d09fabc3 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 @@ -182,9 +182,6 @@ public abstract class AbstractIntegrationTest implements EnvironmentAware { @After public void after() { testRepositoryManagement.clearTestRepository(); - - targetManagement.findAllTargetIds(); - } protected DefaultMockMvcBuilder createMvcWebAppContext() { From c4b10982c52f4711e119ad4e489670872229059a Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 15:04:31 +0200 Subject: [PATCH 5/7] Fix clean code Signed-off-by: SirWayne --- .../repository/jpa/model/EntityInterceptorListenerTest.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java index 0bad51a3a..760faa795 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java @@ -116,10 +116,7 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { private Target addListenerAndCreateTarget(final AbstractEntityListener entityInterceptor, final Target targetToBeCreated) { EntityInterceptorHolder.getInstance().getEntityInterceptors().add(entityInterceptor); - - final Target createTarget = targetManagement.createTarget(targetToBeCreated); - - return createTarget; + return targetManagement.createTarget(targetToBeCreated); } private static abstract class AbstractEntityListener implements EntityInterceptor { From 2c70e7db1fa407964ddac3a81a6aa3ae4acd1a8f Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 15:11:22 +0200 Subject: [PATCH 6/7] Refactor some clean code staff Signed-off-by: SirWayne --- .../jpa/model/EntityInterceptorListenerTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java index 760faa795..6dd86b3c4 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java @@ -28,6 +28,12 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Entity Listener Interceptor") public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { + @Override + public void after() { + EntityInterceptorHolder.getInstance().getEntityInterceptors().clear(); + super.after(); + } + @Test @Description("Verfies that the pre persist is called after a entity creation.") public void prePersistIsCalledWhenPersistingATarget() { @@ -51,7 +57,6 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { targetManagement.createTarget(targetToBeCreated); final Target loadedTarget = targetManagement.findTargetByControllerID(targetToBeCreated.getControllerId()); - EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(postLoadEntityListener); assertThat(postLoadEntityListener.getEntity()).isNotNull(); assertThat(postLoadEntityListener.getEntity()).isEqualTo(loadedTarget); } @@ -84,7 +89,6 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { final Target targetToBeCreated = entityFactory.generateTarget("targetToBeCreated"); addListenerAndCreateTarget(entityInterceptor, targetToBeCreated); - EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(entityInterceptor); assertThat(entityInterceptor.getEntity()).isNotNull(); assertThat(entityInterceptor.getEntity()).isEqualTo(targetToBeCreated); } @@ -96,7 +100,6 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { updateTarget = targetManagement.updateTarget(updateTarget); - EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(entityInterceptor); assertThat(entityInterceptor.getEntity()).isNotNull(); assertThat(entityInterceptor.getEntity()).isEqualTo(updateTarget); } From 53136d48fdf3d9798b7f518939782f2258da5aae Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 28 Jul 2016 15:22:52 +0200 Subject: [PATCH 7/7] Refactor some clean code staff Signed-off-by: SirWayne --- .../repository/jpa/model/EntityInterceptorListenerTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java index 6dd86b3c4..c3db7ab76 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListenerTest.java @@ -48,7 +48,7 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { @Test @Description("Verfies that the post load is called after a entity is loaded.") - public void postLoadIsCalledWhenLoadgATarget() { + public void postLoadIsCalledWhenLoadATarget() { final PostLoadEntityListener postLoadEntityListener = new PostLoadEntityListener(); EntityInterceptorHolder.getInstance().getEntityInterceptors().add(postLoadEntityListener); @@ -110,8 +110,6 @@ public class EntityInterceptorListenerTest extends AbstractJpaIntegrationTest { .createSoftwareModuleType(entityFactory.generateSoftwareModuleType("test", "test", "test", 1)); softwareManagement.deleteSoftwareModuleType(type); - EntityInterceptorHolder.getInstance().getEntityInterceptors().remove(entityInterceptor); - assertThat(entityInterceptor.getEntity()).isNotNull(); assertThat(entityInterceptor.getEntity()).isEqualTo(type); }