Skip to content

Commit

Permalink
Add/remove event log trigger by a container event rather than using a…
Browse files Browse the repository at this point in the history
… startup bean
  • Loading branch information
amckenzie committed Dec 2, 2019
1 parent ac098dd commit 2702153
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 64 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to
[Semantic Versioning](http://semver.org/).

## [Unreleased]
### Changed
- Event log trigger is now added/removed by a container event rather than using a startup bean

## [2.4.2] - 2019-11-25
### Added
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package uk.gov.justice.services.eventstore.management.trigger;

import uk.gov.justice.services.eventsourcing.util.sql.triggers.EventLogTriggerManipulator;
import uk.gov.justice.services.framework.utilities.cdi.CdiInstanceResolver;

import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterDeploymentValidation;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeShutdown;
import javax.enterprise.inject.spi.Extension;

public class TriggerLifecycleManager implements Extension {

private final CdiInstanceResolver cdiInstanceResolver;

public TriggerLifecycleManager() {
this(new CdiInstanceResolver());
}

public TriggerLifecycleManager(final CdiInstanceResolver cdiInstanceResolver) {
this.cdiInstanceResolver = cdiInstanceResolver;
}

public void afterDeploymentValidation(@SuppressWarnings("unused") @Observes final AfterDeploymentValidation event, final BeanManager beanManager) {

final EventLogTriggerManipulator eventLogTriggerManipulator = cdiInstanceResolver.getInstanceOf(
EventLogTriggerManipulator.class,
beanManager);

eventLogTriggerManipulator.addTriggerToEventLogTable();
}

public void beforeShutdown(@SuppressWarnings("unused") @Observes final BeforeShutdown event, final BeanManager beanManager) {

final EventLogTriggerManipulator eventLogTriggerManipulator = cdiInstanceResolver.getInstanceOf(
EventLogTriggerManipulator.class,
beanManager);

eventLogTriggerManipulator.removeTriggerFromEventLogTable();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
uk.gov.justice.services.eventstore.management.trigger.TriggerLifecycleManager

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package uk.gov.justice.services.eventstore.management.trigger;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import uk.gov.justice.services.eventsourcing.util.sql.triggers.EventLogTriggerManipulator;
import uk.gov.justice.services.framework.utilities.cdi.CdiInstanceResolver;

import javax.enterprise.inject.spi.AfterDeploymentValidation;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeShutdown;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class TriggerLifecycleManagerTest {

@Mock
private CdiInstanceResolver cdiInstanceResolver;

@InjectMocks
private TriggerLifecycleManager triggerLifecycleManager;

@Test
public void shouldAddTheTriggerOnApplicationDeployment() throws Exception {

final BeanManager beanManager = mock(BeanManager.class);
final AfterDeploymentValidation event = mock(AfterDeploymentValidation.class);
final EventLogTriggerManipulator eventLogTriggerManipulator = mock(EventLogTriggerManipulator.class);

when(cdiInstanceResolver.getInstanceOf(EventLogTriggerManipulator.class, beanManager)).thenReturn(eventLogTriggerManipulator);

triggerLifecycleManager.afterDeploymentValidation(event, beanManager);

verify(eventLogTriggerManipulator).addTriggerToEventLogTable();
}

@Test
public void shouldRemoveTheTriggerOnApplicationShutdown() throws Exception {

final BeanManager beanManager = mock(BeanManager.class);
final BeforeShutdown event = mock(BeforeShutdown.class);
final EventLogTriggerManipulator eventLogTriggerManipulator = mock(EventLogTriggerManipulator.class);

when(cdiInstanceResolver.getInstanceOf(EventLogTriggerManipulator.class, beanManager)).thenReturn(eventLogTriggerManipulator);

triggerLifecycleManager.beforeShutdown(event, beanManager);

verify(eventLogTriggerManipulator).removeTriggerFromEventLogTable();
}
}

This file was deleted.

0 comments on commit 2702153

Please sign in to comment.