@Override public void dispose() { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Disposing core extensions"); } for (MuleCoreExtension extension : coreExtensions) { if (initializedCoreExtensions.contains(extension)) { try { extension.dispose(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Core extension '{}' disposed", extension.toString()); } } catch (Exception ex) { LOGGER.error("Error disposing core extension " + extension.getName(), ex); } } } initializedCoreExtensions.clear(); }
public void addCoreExtension(MuleCoreExtension coreExtension) { coreExtension.setContainerClassLoader(containerClassLoader); coreExtensions.add(coreExtension); }
@Override public void start() throws MuleException { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Starting core extensions"); } for (MuleCoreExtension extension : orderedCoreExtensions) { extension.start(); startedCoreExtensions.add(extension); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Core extension '{}' started", extension.toString()); } } }
@Override public void stop() throws MuleException { if (orderedCoreExtensions == null) { return; } if (LOGGER.isDebugEnabled()) { LOGGER.debug("Stopping core extensions"); } for (int i = orderedCoreExtensions.size() - 1; i >= 0; i--) { MuleCoreExtension extension = orderedCoreExtensions.get(i); if (startedCoreExtensions.contains(extension)) { try { extension.stop(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Core extension '{}' stopped", extension.toString()); } } catch (Throwable e) { LOGGER.warn("Error stopping core extension: " + extension.getName(), e); } } } startedCoreExtensions.clear(); }
@Test public void disposesCoreExtensionsAfterStartFail() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); Exception firstStartFailure = new RuntimeException(); doThrow(firstStartFailure).when(extension1).initialise(); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); extensions.add(extension1); extensions.add(extension2); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension1); orderedExtensions.add(extension2); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); try { coreExtensionManager.initialise(); fail(); } catch (Exception e) { assertThat(e.getCause(), sameInstance(firstStartFailure)); } coreExtensionManager.dispose(); verify(extension2, never()).dispose(); }
@Test public void stopsCoreExtensionsAfterStartFail() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); Exception firstStartFailure = new RuntimeException(); doThrow(firstStartFailure).when(extension1).start(); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); extensions.add(extension1); extensions.add(extension2); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension1); orderedExtensions.add(extension2); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); try { coreExtensionManager.start(); fail(); } catch (Exception e) { assertThat(e, sameInstance(firstStartFailure)); } coreExtensionManager.stop(); verify(extension2, never()).stop(); }
@Test public void initializesCoreExtensionsInOrder() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); extensions.add(extension1); extensions.add(extension2); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension2); orderedExtensions.add(extension1); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); InOrder ordered = inOrder(extension1, extension2); ordered.verify(extension2).initialise(); ordered.verify(extension1).initialise(); }
@Test public void stopsCoreExtensionsInOrder() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); extensions.add(extension1); extensions.add(extension2); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension1); orderedExtensions.add(extension2); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); coreExtensionManager.start(); coreExtensionManager.stop(); InOrder ordered = inOrder(extension1, extension2); ordered.verify(extension2).stop(); ordered.verify(extension1).stop(); }
@Test public void disposesCoreExtensions() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); TestDeploymentServiceAwareExtension extension1 = mock(TestDeploymentServiceAwareExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); extensions.add(extension1); extensions.add(extension2); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension1); orderedExtensions.add(extension2); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); coreExtensionManager.dispose(); InOrder inOrder = inOrder(extension1, extension2); inOrder.verify(extension1).dispose(); inOrder.verify(extension2).dispose(); }
@Override public void stop() throws MuleException { if (orderedCoreExtensions == null) { return; } LOGGER.info("Stopping core extensions"); for (int i = orderedCoreExtensions.size() - 1; i >= 0; i--) { MuleCoreExtension extension = orderedCoreExtensions.get(i); try { extension.stop(); LOGGER.info("Core extension '{}' stopped", extension.toString()); } catch (Throwable e) { LOGGER.warn("Error stopping core extension: " + extension.getName(), e); } } }
private MuleCoreExtension mockCoreExtension(String extension11) { MuleCoreExtension extension1 = mock(CoreExtensionsAwareExtension.class); when(extension1.getName()).thenReturn(extension11); return extension1; }
extension.initialise(); initializedCoreExtensions.add(extension); if (LOGGER.isDebugEnabled()) {
@Override public void dispose() { LOGGER.info("Disposing core extensions"); for (MuleCoreExtension extension : coreExtensions) { try { extension.dispose(); LOGGER.info("Core extension '{}' disposed", extension.toString()); } catch (Exception ex) { LOGGER.error("Error disposing core extension " + extension.getName(), ex); } } }
try { MuleCoreExtension extension = (MuleCoreExtension) ClassUtils.instantiateClass(extClass); extension.setContainerClassLoader(containerClassLoader); result.add(extension); } catch (Throwable t) {
@Test public void startsCoreExtensionsInOrder() throws Exception { List<MuleCoreExtension> extensions = new LinkedList<>(); MuleCoreExtension extension1 = mock(MuleCoreExtension.class); MuleCoreExtension extension2 = mock(MuleCoreExtension.class); extensions.add(extension1); extensions.add(extension2); when(coreExtensionDiscoverer.discover()).thenReturn(extensions); List<MuleCoreExtension> orderedExtensions = new LinkedList<>(); orderedExtensions.add(extension2); orderedExtensions.add(extension1); when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(orderedExtensions); coreExtensionManager.initialise(); coreExtensionManager.start(); InOrder ordered = inOrder(extension1, extension2); ordered.verify(extension2).start(); ordered.verify(extension1).start(); }
extension.initialise(); LOGGER.info("Core extension '{}' initialized", extension.toString());
extension.setContainerClassLoader(containerClassLoader);
@Override public void start() throws MuleException { LOGGER.info("Starting core extensions"); for (MuleCoreExtension extension : orderedCoreExtensions) { extension.start(); LOGGER.info("Core extension '{}' started", extension.toString()); } }