if (source instanceof Server) { if (this.init.get() && this.start.compareAndSet(false, true)) { this.eventHandler.start(this.factory.createServer((Server) source)); this.eventHandler.start(this.factory.createContext((Context) source)); if (this.start.get()) { this.eventHandler.stop(this.factory.createContext((Context) source)); this.eventHandler.stop(this.factory.createServer((Server) source)); if (this.statusCount == 0) { if (this.start.get()) { this.eventHandler.status(this.factory.createEngine(engine));
@Override public void stop() { Server server = this.serverProvider.getServer(); if (server == null) throw new IllegalStateException(); server.removeLifecycleListener(this); if (this.init.get() && this.start.compareAndSet(true, false)) { this.eventHandler.stop(this.factory.createServer(server)); } if (this.init.compareAndSet(true, false)) { this.destroy(server); } }
@Override public void propertyChange(PropertyChangeEvent event) { if (event.getSource() instanceof Context && "available".equals(event.getPropertyName()) && Boolean.FALSE.equals(event.getOldValue()) && Boolean.TRUE.equals(event.getNewValue())) { this.eventHandler.start(this.factory.createContext((Context) event.getSource())); } } }
@Test public void periodicEvent() throws Exception { TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); LifecycleEngine engine = mock(LifecycleEngine.class); LifecycleEvent event = new LifecycleEvent(engine, Lifecycle.PERIODIC_EVENT, null); handler.lifecycleEvent(event); Mockito.verifyZeroInteractions(this.eventHandler); LifecycleServer server = mock(LifecycleServer.class); this.initServer(handler, server); handler.lifecycleEvent(event); Mockito.verifyZeroInteractions(this.eventHandler); this.startServer(handler, server); Service service = mock(Service.class); Engine catalinaEngine = mock(Engine.class); when(engine.getService()).thenReturn(service); when(service.getServer()).thenReturn(server); when(this.factory.createEngine(same(engine))).thenReturn(catalinaEngine); handler.lifecycleEvent(event); verify(this.eventHandler).status(same(catalinaEngine)); }
/** * initialize server stuff: in jbossweb-2.1.x the server can't be destroyed so you could start (restart) one that needs * initializations... */ protected void init(Server server) { this.eventHandler.init(this.factory.createServer(server)); this.addListeners(server); }
this.eventHandler.add(this.factory.createContext((Context) child)); this.eventHandler.remove(this.factory.createContext((Context) child));
@Override public void start() { Server server = this.serverProvider.getServer(); if (server == null) throw new IllegalStateException(); if (!this.containsListener(server)) { server.addLifecycleListener(this); } if (this.init.compareAndSet(false, true)) { this.init(server); } if (this.start.compareAndSet(false, true)) { this.eventHandler.start(this.factory.createServer(server)); } }
@Test public void stopWebApp() throws Exception { TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); LifecycleContext context = mock(LifecycleContext.class); LifecycleEvent event = new LifecycleEvent(context, Lifecycle.BEFORE_STOP_EVENT, null); handler.lifecycleEvent(event); LifecycleServer server = mock(LifecycleServer.class); this.initServer(handler, server); handler.lifecycleEvent(event); this.startServer(handler, server); org.apache.catalina.Host host = mock(org.apache.catalina.Host.class); org.apache.catalina.Engine engine = mock(org.apache.catalina.Engine.class); Service service = mock(Service.class); Context catalinaContext = mock(Context.class); when(context.getParent()).thenReturn(host); when(host.getParent()).thenReturn(engine); when(engine.getService()).thenReturn(service); when(service.getServer()).thenReturn(server); when(this.factory.createContext(same(context))).thenReturn(catalinaContext); handler.lifecycleEvent(event); verify(this.eventHandler).stop(same(catalinaContext)); }
protected void startServer(TomcatEventHandler handler, LifecycleServer server) { Server catalinaServer = mock(Server.class); when(this.factory.createServer(same(server))).thenReturn(catalinaServer); handler.lifecycleEvent(new LifecycleEvent(server, Lifecycle.AFTER_START_EVENT, null)); verify(this.eventHandler).start(same(catalinaServer)); reset(this.eventHandler); }
@Test public void startWebApp() throws Exception { TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); LifecycleContext context = mock(LifecycleContext.class); LifecycleEvent event = new LifecycleEvent(context, Lifecycle.START_EVENT, null); PropertyChangeEvent prop = new PropertyChangeEvent(context, "available", Boolean.FALSE, Boolean.TRUE); handler.lifecycleEvent(event); LifecycleServer server = mock(LifecycleServer.class); this.initServer(handler, server); handler.lifecycleEvent(event); this.startServer(handler, server); org.apache.catalina.Host host = mock(org.apache.catalina.Host.class); org.apache.catalina.Engine engine = mock(org.apache.catalina.Engine.class); Service service = mock(Service.class); Context catalinaContext = mock(Context.class); when(context.getParent()).thenReturn(host); when(host.getParent()).thenReturn(engine); when(engine.getService()).thenReturn(service); when(service.getServer()).thenReturn(server); when(this.factory.createContext(context)).thenReturn(catalinaContext); // handler.lifecycleEvent(event); handler.propertyChange(prop); verify(this.eventHandler).start(same(catalinaContext)); }
protected void initServer(TomcatEventHandler handler, LifecycleServer server) { Service service = mock(Service.class); LifecycleEngine engine = mock(LifecycleEngine.class); Container container = mock(Container.class); LifecycleContainer childContainer = mock(LifecycleContainer.class); Server catalinaServer = mock(Server.class); when(server.findServices()).thenReturn(new Service[] { service }); when(service.getContainer()).thenReturn(engine); when(engine.findChildren()).thenReturn(new Container[] { container }); when(container.findChildren()).thenReturn(new Container[] { childContainer }); when(this.factory.createServer(server)).thenReturn(catalinaServer); handler.lifecycleEvent(this.createAfterInitEvent(server)); verify(this.eventHandler).init(same(catalinaServer)); verify(engine).addContainerListener(handler); verify(engine).addLifecycleListener(handler); verify(container).addContainerListener(handler); verify(childContainer).addLifecycleListener(handler); reset(this.eventHandler); }
@Test public void undeployWebApp() throws Exception { TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); org.apache.catalina.Host host = mock(org.apache.catalina.Host.class); LifecycleContext context = mock(LifecycleContext.class); ContainerEvent event = new ContainerEvent(host, Container.REMOVE_CHILD_EVENT, context); handler.containerEvent(event); verify(context).removeLifecycleListener(handler); verify(context).removePropertyChangeListener(handler); reset(context); LifecycleServer server = mock(LifecycleServer.class); this.initServer(handler, server); handler.containerEvent(event); verify(context).removeLifecycleListener(handler); verify(context).removePropertyChangeListener(handler); reset(context); this.startServer(handler, server); org.apache.catalina.Engine engine = mock(org.apache.catalina.Engine.class); Service service = mock(Service.class); Context catalinaContext = mock(Context.class); when(context.getParent()).thenReturn(host); when(host.getParent()).thenReturn(engine); when(engine.getService()).thenReturn(service); when(service.getServer()).thenReturn(server); when(this.factory.createContext(context)).thenReturn(catalinaContext); handler.containerEvent(event); verify(context).removeLifecycleListener(handler); verify(context).removePropertyChangeListener(handler); verify(this.eventHandler).remove(same(catalinaContext)); }
@Test public void start() { Service service = mock(Service.class); LifecycleListener listener = mock(LifecycleListener.class); LifecycleEngine engine = mock(LifecycleEngine.class); Container container = mock(Container.class); LifecycleContainer childContainer = mock(LifecycleContainer.class); Server server = mock(Server.class); TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); when(this.provider.getServer()).thenReturn(this.server); when(this.server.findLifecycleListeners()).thenReturn(new LifecycleListener[] { listener }); when(this.server.findServices()).thenReturn(new Service[] { service }); when(service.getContainer()).thenReturn(engine); when(engine.findChildren()).thenReturn(new Container[] { container }); when(container.findChildren()).thenReturn(new Container[] { childContainer }); when(this.factory.createServer(same(this.server))).thenReturn(server); handler.start(); verify(this.server).addLifecycleListener(same(handler)); verify(this.eventHandler).init(same(server)); verify(engine).addContainerListener(handler); verify(engine).addLifecycleListener(handler); verify(container).addContainerListener(handler); verify(childContainer).addLifecycleListener(handler); verify(childContainer).addPropertyChangeListener(handler); verify(this.eventHandler).start(same(server)); }
@Test public void deployWebApp() throws Exception { TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); org.apache.catalina.Host host = mock(org.apache.catalina.Host.class); LifecycleContext context = mock(LifecycleContext.class); Context catalinaContext = mock(Context.class); ContainerEvent event = new ContainerEvent(host, Container.ADD_CHILD_EVENT, context); handler.containerEvent(event); verify(context).addLifecycleListener(handler); verify(context).addPropertyChangeListener(handler); reset(context); LifecycleServer server = mock(LifecycleServer.class); this.initServer(handler, server); handler.containerEvent(event); verify(context).addLifecycleListener(handler); verify(context).addPropertyChangeListener(handler); reset(context); this.startServer(handler, server); org.apache.catalina.Engine engine = mock(org.apache.catalina.Engine.class); Service service = mock(Service.class); when(context.getParent()).thenReturn(host); when(host.getParent()).thenReturn(engine); when(engine.getService()).thenReturn(service); when(service.getServer()).thenReturn(server); when(this.factory.createContext(context)).thenReturn(catalinaContext); handler.containerEvent(event); verify(context).addLifecycleListener(handler); verify(context).addPropertyChangeListener(handler); verify(this.eventHandler).add(same(catalinaContext)); }
@Test public void stop() throws Exception { Server server = mock(Server.class); Service service = mock(Service.class); LifecycleEngine engine = mock(LifecycleEngine.class); Container container = mock(Container.class); LifecycleContainer childContainer = mock(LifecycleContainer.class); TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); this.initServer(handler, this.server); this.startServer(handler, this.server); when(this.provider.getServer()).thenReturn(this.server); when(this.server.findServices()).thenReturn(new Service[] { service }); when(service.getContainer()).thenReturn(engine); when(engine.findChildren()).thenReturn(new Container[] { container }); when(container.findChildren()).thenReturn(new Container[] { childContainer }); when(this.factory.createServer(this.server)).thenReturn(server); handler.stop(); verify(this.server).removeLifecycleListener(same(handler)); verify(this.eventHandler).stop(same(server)); verify(engine).removeContainerListener(handler); verify(engine).removeLifecycleListener(handler); verify(container).removeContainerListener(handler); verify(childContainer).removeLifecycleListener(handler); verify(childContainer).removePropertyChangeListener(handler); verify(this.eventHandler).shutdown(); }
@Test public void stopServer() throws Exception { TomcatEventHandler handler = this.createEventHandler(this.eventHandler, this.provider, this.factory); LifecycleServer server = mock(LifecycleServer.class); LifecycleEvent event = new LifecycleEvent(server, Lifecycle.BEFORE_STOP_EVENT, null); handler.lifecycleEvent(event); Mockito.verifyZeroInteractions(this.eventHandler); this.initServer(handler, server); handler.lifecycleEvent(event); Mockito.verifyZeroInteractions(this.eventHandler); this.startServer(handler, server); Server catalinaServer = mock(Server.class); when(this.factory.createServer(same(server))).thenReturn(catalinaServer); handler.lifecycleEvent(event); verify(this.eventHandler).stop(same(catalinaServer)); reset(this.eventHandler); handler.lifecycleEvent(event); Mockito.verifyZeroInteractions(this.eventHandler); }