Skip to content

Commit

Permalink
Fix removal of event log trigger happening after database connections…
Browse files Browse the repository at this point in the history
… destroyed
  • Loading branch information
amckenzie committed Aug 28, 2020
1 parent 8ff50ff commit de6a976
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 14 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to
[Semantic Versioning](http://semver.org/).

## [Unreleased]
### Changed
- Changed the removal of the event_log trigger to be called by a
ServletContextListener to fix call happening after database
connections destroyed

## [7.0.8] - 2020-08-14
### Changed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import uk.gov.justice.services.eventsourcing.util.sql.triggers.EventLogTriggerManipulator;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Inject;
Expand All @@ -19,9 +18,4 @@ public class TriggerManagementStartupBean {
public void addPublishingTriggerOnStartup() {
eventLogTriggerManipulator.addTriggerToEventLogTable();
}

@PreDestroy
public void dropPublishingTriggerOnShutdown() {
eventLogTriggerManipulator.removeTriggerFromEventLogTable();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package uk.gov.justice.services.eventstore.management.trigger;

import uk.gov.justice.services.eventsourcing.util.sql.triggers.EventLogTriggerManipulator;

import javax.inject.Inject;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class TriggerRemovalServletContextListener implements ServletContextListener {

@Inject
private EventLogTriggerManipulator eventLogTriggerManipulator;

@Override
public void contextInitialized(final ServletContextEvent ignored) {
}

@Override
public void contextDestroyed(final ServletContextEvent servletContextEvent) {
eventLogTriggerManipulator.removeTriggerFromEventLogTable();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,4 @@ public void shouldAddTriggerOnStartup() throws Exception {

verify(eventLogTriggerManipulator).addTriggerToEventLogTable();
}

@Test
public void shouldRemoveTriggerOnShutdown() throws Exception {

triggerManagementStartupBean.dropPublishingTriggerOnShutdown();

verify(eventLogTriggerManipulator).removeTriggerFromEventLogTable();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package uk.gov.justice.services.eventstore.management.trigger;

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

import uk.gov.justice.services.eventsourcing.util.sql.triggers.EventLogTriggerManipulator;

import javax.servlet.ServletContextEvent;

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 TriggerRemovalServletContextListenerTest {

@Mock
private EventLogTriggerManipulator eventLogTriggerManipulator;

@InjectMocks
private TriggerRemovalServletContextListener triggerRemovalServletContextListener;

@Test
public void shouldRemoveTriggerOnShutdown() throws Exception {

final ServletContextEvent servletContextEvent = mock(ServletContextEvent.class);
triggerRemovalServletContextListener.contextDestroyed(servletContextEvent);

verify(eventLogTriggerManipulator).removeTriggerFromEventLogTable();
}
}

0 comments on commit de6a976

Please sign in to comment.