List of usage examples for org.springframework.context SmartLifecycle start
void start();
From source file:org.springframework.integration.configuration.EnableIntegrationTests.java
@Test public void testAnnotatedServiceActivator() throws Exception { this.serviceActivatorEndpoint.setReceiveTimeout(10000); this.serviceActivatorEndpoint.start(); assertTrue(this.inputReceiveLatch.await(10, TimeUnit.SECONDS)); assertEquals(10L, TestUtils.getPropertyValue(this.serviceActivatorEndpoint, "maxMessagesPerPoll")); Trigger trigger = TestUtils.getPropertyValue(this.serviceActivatorEndpoint, "trigger", Trigger.class); assertThat(trigger, Matchers.instanceOf(PeriodicTrigger.class)); assertEquals(100L, TestUtils.getPropertyValue(trigger, "period")); assertFalse(TestUtils.getPropertyValue(trigger, "fixedRate", Boolean.class)); assertTrue(this.annotationTestService.isRunning()); Log logger = spy(TestUtils.getPropertyValue(this.serviceActivatorEndpoint, "logger", Log.class)); when(logger.isDebugEnabled()).thenReturn(true); final CountDownLatch pollerInterruptedLatch = new CountDownLatch(1); doAnswer(invocation -> {//from w w w . j av a 2s . com pollerInterruptedLatch.countDown(); invocation.callRealMethod(); return null; }).when(logger).debug("Received no Message during the poll, returning 'false'"); new DirectFieldAccessor(this.serviceActivatorEndpoint).setPropertyValue("logger", logger); this.serviceActivatorEndpoint.stop(); assertFalse(this.annotationTestService.isRunning()); // wait until the service activator's poller is interrupted. assertTrue(pollerInterruptedLatch.await(10, TimeUnit.SECONDS)); this.serviceActivatorEndpoint.start(); assertTrue(this.annotationTestService.isRunning()); trigger = TestUtils.getPropertyValue(this.serviceActivatorEndpoint1, "trigger", Trigger.class); assertThat(trigger, Matchers.instanceOf(PeriodicTrigger.class)); assertEquals(100L, TestUtils.getPropertyValue(trigger, "period")); assertTrue(TestUtils.getPropertyValue(trigger, "fixedRate", Boolean.class)); trigger = TestUtils.getPropertyValue(this.serviceActivatorEndpoint2, "trigger", Trigger.class); assertThat(trigger, Matchers.instanceOf(CronTrigger.class)); assertEquals("0 5 7 * * *", TestUtils.getPropertyValue(trigger, "sequenceGenerator.expression")); trigger = TestUtils.getPropertyValue(this.serviceActivatorEndpoint3, "trigger", Trigger.class); assertThat(trigger, Matchers.instanceOf(PeriodicTrigger.class)); assertEquals(11L, TestUtils.getPropertyValue(trigger, "period")); assertFalse(TestUtils.getPropertyValue(trigger, "fixedRate", Boolean.class)); trigger = TestUtils.getPropertyValue(this.serviceActivatorEndpoint4, "trigger", Trigger.class); assertThat(trigger, Matchers.instanceOf(PeriodicTrigger.class)); assertEquals(1000L, TestUtils.getPropertyValue(trigger, "period")); assertFalse(TestUtils.getPropertyValue(trigger, "fixedRate", Boolean.class)); assertSame(this.myTrigger, trigger); trigger = TestUtils.getPropertyValue(this.transformer, "trigger", Trigger.class); assertThat(trigger, Matchers.instanceOf(PeriodicTrigger.class)); assertEquals(10L, TestUtils.getPropertyValue(trigger, "period")); assertFalse(TestUtils.getPropertyValue(trigger, "fixedRate", Boolean.class)); this.input.send(MessageBuilder.withPayload("Foo").build()); Message<?> interceptedMessage = this.wireTapChannel.receive(10000); assertNotNull(interceptedMessage); assertEquals("Foo", interceptedMessage.getPayload()); Message<?> receive = this.output.receive(10000); assertNotNull(receive); assertEquals("FOO", receive.getPayload()); receive = this.wireTapFromOutput.receive(10000); assertNotNull(receive); assertEquals("FOO", receive.getPayload()); MessageHistory messageHistory = receive.getHeaders().get(MessageHistory.HEADER_NAME, MessageHistory.class); assertNotNull(messageHistory); String messageHistoryString = messageHistory.toString(); assertThat(messageHistoryString, Matchers.containsString("input")); assertThat(messageHistoryString, Matchers.containsString("annotationTestService.handle.serviceActivator.handler")); assertThat(messageHistoryString, Matchers.not(Matchers.containsString("output"))); receive = this.publishedChannel.receive(10000); assertNotNull(receive); assertEquals("foo", receive.getPayload()); messageHistory = receive.getHeaders().get(MessageHistory.HEADER_NAME, MessageHistory.class); assertNotNull(messageHistory); messageHistoryString = messageHistory.toString(); assertThat(messageHistoryString, Matchers.not(Matchers.containsString("input"))); assertThat(messageHistoryString, Matchers.not(Matchers.containsString("output"))); assertThat(messageHistoryString, Matchers.containsString("publishedChannel")); assertNull(this.wireTapChannel.receive(0)); assertThat(this.testChannelInterceptor.getInvoked(), Matchers.greaterThan(0)); assertThat(this.fbInterceptorCounter.get(), Matchers.greaterThan(0)); assertTrue(this.context.containsBean("annotationTestService.count.inboundChannelAdapter.source")); Object messageSource = this.context.getBean("annotationTestService.count.inboundChannelAdapter.source"); assertThat(messageSource, Matchers.instanceOf(MethodInvokingMessageSource.class)); assertNull(this.counterChannel.receive(10)); SmartLifecycle countSA = this.context.getBean("annotationTestService.count.inboundChannelAdapter", SmartLifecycle.class); assertFalse(countSA.isAutoStartup()); assertEquals(23, countSA.getPhase()); countSA.start(); for (int i = 0; i < 10; i++) { Message<?> message = this.counterChannel.receive(1000); assertNotNull(message); assertEquals(i + 1, message.getPayload()); } Message<?> message = this.fooChannel.receive(1000); assertNotNull(message); assertEquals("foo", message.getPayload()); message = this.fooChannel.receive(1000); assertNotNull(message); assertEquals("foo", message.getPayload()); assertNull(this.fooChannel.receive(10)); message = this.messageChannel.receive(1000); assertNotNull(message); assertEquals("bar", message.getPayload()); assertTrue(message.getHeaders().containsKey("foo")); assertEquals("FOO", message.getHeaders().get("foo")); MessagingTemplate messagingTemplate = new MessagingTemplate(this.controlBusChannel); assertFalse(messagingTemplate.convertSendAndReceive("@lifecycle.isRunning()", Boolean.class)); this.controlBusChannel.send(new GenericMessage<String>("@lifecycle.start()")); assertTrue(messagingTemplate.convertSendAndReceive("@lifecycle.isRunning()", Boolean.class)); this.controlBusChannel.send(new GenericMessage<String>("@lifecycle.stop()")); assertFalse(messagingTemplate.convertSendAndReceive("@lifecycle.isRunning()", Boolean.class)); }
From source file:org.springframework.integration.support.SmartLifecycleRoleController.java
/** * Start all registered {@link SmartLifecycle}s in the role. * @param role the role.//from ww w .java 2 s. c o m */ public void startLifecyclesInRole(String role) { if (this.lazyLifecycles.size() > 0) { addLazyLifecycles(); } List<SmartLifecycle> lifecycles = this.lifecycles.get(role); if (lifecycles != null) { lifecycles = new ArrayList<SmartLifecycle>(lifecycles); Collections.sort(lifecycles, (o1, o2) -> o1.getPhase() < o2.getPhase() ? -1 : o1.getPhase() > o2.getPhase() ? 1 : 0); if (logger.isDebugEnabled()) { logger.debug("Starting " + lifecycles + " in role " + role); } for (SmartLifecycle lifecycle : lifecycles) { try { lifecycle.start(); } catch (Exception e) { logger.error("Failed to start " + lifecycle + " in role " + role, e); } } } else { if (logger.isDebugEnabled()) { logger.debug("No components in role " + role + ". Nothing to start"); } } }