@Test public void testExceptionInRenameListenerIsWrapped() throws Exception { BlobStoreConfigurationListener listener = EasyMock.createMock("listener", BlobStoreConfigurationListener.class); BlobStoreInfo goodInfo = prepForRename(); this.config.addBlobStoreListener(listener); GeoWebCacheException ex = new GeoWebCacheException("TEST"); listener.handleRenameBlobStore("test", goodInfo); EasyMock.expectLastCall().andThrow(ex); EasyMock.replay(listener); exception.expect( allOf( instanceOf(ConfigurationPersistenceException.class), hasProperty("cause", sameInstance(ex)))); this.renameInfo(this.config, "test", "test2"); }
@Test public void testExceptionInRenameListenerDoesntBlockOtherListeners() throws Exception { BlobStoreConfigurationListener listener1 = EasyMock.createMock("listener", BlobStoreConfigurationListener.class); BlobStoreConfigurationListener listener2 = EasyMock.createMock("listener", BlobStoreConfigurationListener.class); BlobStoreInfo goodInfo = prepForRename(); this.config.addBlobStoreListener(listener1); this.config.addBlobStoreListener(listener2); GeoWebCacheException ex1 = new GeoWebCacheException("TEST1"); listener1.handleRenameBlobStore("test", goodInfo); EasyMock.expectLastCall().andThrow(ex1); listener2.handleRenameBlobStore("test", goodInfo); EasyMock.expectLastCall().once(); EasyMock.replay(listener1, listener2); try { this.renameInfo(this.config, "test", "test2"); } catch (ConfigurationPersistenceException ex3) { // Do Nothing } EasyMock.verify(listener2); }
@SuppressWarnings("unchecked") @Test public void testExceptionInRenameListenerRecordsSuppressedExceptions() throws Exception { BlobStoreConfigurationListener listener1 = EasyMock.createMock("listener", BlobStoreConfigurationListener.class); BlobStoreConfigurationListener listener2 = EasyMock.createMock("listener", BlobStoreConfigurationListener.class); BlobStoreInfo goodInfo = prepForRename(); this.config.addBlobStoreListener(listener1); this.config.addBlobStoreListener(listener2); Exception ex1 = new GeoWebCacheException("TEST1"); Exception ex2 = new IOException("TEST2"); listener1.handleRenameBlobStore("test", goodInfo); EasyMock.expectLastCall().andThrow(ex1); listener2.handleRenameBlobStore("test", goodInfo); EasyMock.expectLastCall().andThrow(ex2); EasyMock.replay(listener1, listener2); exception.expect( allOf( instanceOf(ConfigurationPersistenceException.class), hasProperty( "cause", allOf( sameInstance(ex2), hasProperty( "suppressed", arrayContainingInAnyOrder(sameInstance(ex1))))))); this.renameInfo(this.config, "test", "test2"); }
@Test public void testExceptionInRenameListenerNotRolledBack() throws Exception { BlobStoreConfigurationListener listener = EasyMock.createMock("listener", BlobStoreConfigurationListener.class); BlobStoreInfo goodInfo = prepForRename(); this.config.addBlobStoreListener(listener); GeoWebCacheException ex = new GeoWebCacheException("TEST"); listener.handleRenameBlobStore("test", goodInfo); EasyMock.expectLastCall().andThrow(ex); EasyMock.replay(listener); try { this.renameInfo(this.config, "test", "test2"); } catch (ConfigurationPersistenceException ex2) { // Do Nothing } assertThat(this.getInfo(config, "test2"), isPresent(infoEquals(goodInfo))); }