/** * {@inheritDoc} */ @Override public Status getStatus() { return statusTransitioner.currentStatus(); }
/** * {@inheritDoc} */ @Override public Status getStatus() { return statusTransitioner.currentStatus(); }
@Override public Status getStatus() { return statusTransitioner.currentStatus(); }
private void validateHookRegistration() { if(currentStatus() != Status.UNINITIALIZED) { throw new IllegalStateException("Can't modify hooks when not in " + Status.UNINITIALIZED); } }
void checkAvailable() { final Status status = currentStatus(); if(status == Status.MAINTENANCE && Thread.currentThread() != maintenanceLease) { throw new IllegalStateException("State is " + status + ", yet you don't own it!"); } else if(status == Status.UNINITIALIZED) { throw new IllegalStateException("State is " + status); } }
void checkMaintenance() { final Status status = currentStatus(); if(status == Status.MAINTENANCE && Thread.currentThread() != maintenanceLease) { throw new IllegalStateException("State is " + status + ", yet you don't own it!"); } else if (status != Status.MAINTENANCE) { throw new IllegalStateException("State is " + status); } }
@Test public void testTransitionsToLowestStateOnFailure() { StatusTransitioner transitioner = new StatusTransitioner(LoggerFactory.getLogger(StatusTransitionerTest.class)); assertThat(transitioner.currentStatus(), CoreMatchers.is(Status.UNINITIALIZED)); transitioner.init().failed(new Throwable()); assertThat(transitioner.currentStatus(), is(Status.UNINITIALIZED)); transitioner.init().succeeded(); assertThat(transitioner.currentStatus(), is(Status.AVAILABLE)); transitioner.close().failed(new Throwable()); assertThat(transitioner.currentStatus(), is(Status.UNINITIALIZED)); }
@Test public void testTransitionDuringFailures() { StatusTransitioner transitioner = new StatusTransitioner(LoggerFactory.getLogger(StatusTransitionerTest.class)); assertThat(transitioner.currentStatus(), CoreMatchers.is(Status.UNINITIALIZED)); StatusTransitioner.Transition st = transitioner.init(); st.failed(new Throwable()); assertThat(transitioner.currentStatus(), is(Status.UNINITIALIZED)); try { st.failed(new Throwable()); fail(); } catch (AssertionError err) { assertThat(err.getMessage(), is("Throwable cannot be thrown if Transition is done.")); } st.failed(null); assertThat(transitioner.currentStatus(), is(Status.UNINITIALIZED)); StatusTransitioner.Transition st1 = transitioner.init(); assertThat(transitioner.currentStatus(), is(Status.AVAILABLE)); st1.failed(null); assertThat(transitioner.currentStatus(), is(Status.UNINITIALIZED)); }
@Test public void testFinishesTransitionOnListenerThrowing() { StatusTransitioner transitioner = new StatusTransitioner(LoggerFactory.getLogger(StatusTransitionerTest.class)); final StateChangeListener listener = mock(StateChangeListener.class); final RuntimeException runtimeException = new RuntimeException(); doThrow(runtimeException).when(listener).stateTransition(Status.UNINITIALIZED, Status.AVAILABLE); transitioner.registerListener(listener); try { transitioner.init().succeeded(); fail(); } catch (RuntimeException e) { assertThat(e, is(runtimeException)); } assertThat(transitioner.currentStatus(), is(Status.AVAILABLE)); }
@Test public void testHookThrowingVetosTransition() throws Exception { final StatusTransitioner transitioner = new StatusTransitioner(LoggerFactory.getLogger(StatusTransitionerTest.class)); final LifeCycled mock = mock(LifeCycled.class); transitioner.addHook(mock); final Exception toBeThrown = new Exception(); doThrow(toBeThrown).when(mock).init(); try { transitioner.init().succeeded(); fail(); } catch (StateTransitionException e) { assertThat(e.getCause(), CoreMatchers.<Throwable>sameInstance(toBeThrown)); } assertThat(transitioner.currentStatus(), is(Status.UNINITIALIZED)); reset(mock); doThrow(toBeThrown).when(mock).close(); transitioner.init().succeeded(); try { transitioner.close().succeeded(); fail(); } catch (StateTransitionException e) { assertThat(e.getCause(), CoreMatchers.<Throwable>sameInstance(toBeThrown)); } }
/** * {@inheritDoc} */ @Override public Status getStatus() { return statusTransitioner.currentStatus(); }
/** * {@inheritDoc} */ @Override public Status getStatus() { return statusTransitioner.currentStatus(); }
@Override public Status getStatus() { return statusTransitioner.currentStatus(); }
private void validateHookRegistration() { if(currentStatus() != Status.UNINITIALIZED) { throw new IllegalStateException("Can't modify hooks when not in " + Status.UNINITIALIZED); } }
void checkMaintenance() { final Status status = currentStatus(); if(status == Status.MAINTENANCE && Thread.currentThread() != maintenanceLease) { throw new IllegalStateException("State is " + status + ", yet you don't own it!"); } else if (status != Status.MAINTENANCE) { throw new IllegalStateException("State is " + status); } }
void checkAvailable() { final Status status = currentStatus(); if(status == Status.MAINTENANCE && Thread.currentThread() != maintenanceLease) { throw new IllegalStateException("State is " + status + ", yet you don't own it!"); } else if(status == Status.UNINITIALIZED) { throw new IllegalStateException("State is " + status); } }