test_class.declarator: searchIndexUpdateJmsMessageListener
test_class.modifier: @InjectMocks
      private
test_class.original_string: @InjectMocks
      private SearchIndexUpdateJmsMessageListener searchIndexUpdateJmsMessageListener;
test_class.type: SearchIndexUpdateJmsMessageListener
test_class.var_name: searchIndexUpdateJmsMessageListener
test_class.declarator: configurationHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private ConfigurationHelper configurationHelper;
test_class.type: ConfigurationHelper
test_class.var_name: configurationHelper
test_class.declarator: businessObjectDefinitionService
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private BusinessObjectDefinitionService businessObjectDefinitionService;
test_class.type: BusinessObjectDefinitionService
test_class.var_name: businessObjectDefinitionService
test_class.declarator: jsonHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private JsonHelper jsonHelper;
test_class.type: JsonHelper
test_class.var_name: jsonHelper
test_class.declarator: tagService
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private TagService tagService;
test_class.type: TagService
test_class.var_name: tagService
test_class.file: herd-code/herd-service/src/test/java/org/finra/herd/service/helper/SearchIndexUpdateJmsMessageListenerTest.java
test_class.identifier: SearchIndexUpdateJmsMessageListenerTest
test_class.superclass: extends AbstractServiceTest
test_case.body: @Test
      public void testControlListener()
      {
          ReflectionTestUtils.setField(searchIndexUpdateJmsMessageListener, "configurationHelper", configurationHelper);
          MessageListenerContainer mockMessageListenerContainer = Mockito.mock(MessageListenerContainer.class);
  
          // The listener is not enabled
          when(configurationHelper.getProperty(ConfigurationValue.SEARCH_INDEX_UPDATE_JMS_LISTENER_ENABLED)).thenReturn("false");
          JmsListenerEndpointRegistry registry = ApplicationContextHolder.getApplicationContext()
              .getBean("org.springframework.jms.config.internalJmsListenerEndpointRegistry", JmsListenerEndpointRegistry.class);
          when(registry.getListenerContainer(HerdJmsDestinationResolver.SQS_DESTINATION_SEARCH_INDEX_UPDATE_QUEUE)).thenReturn(mockMessageListenerContainer);
  
          // The listener is not running, nothing happened
          when(mockMessageListenerContainer.isRunning()).thenReturn(false);
          searchIndexUpdateJmsMessageListener.controlSearchIndexUpdateJmsMessageListener();
          verify(mockMessageListenerContainer, times(0)).stop();
          verify(mockMessageListenerContainer, times(0)).start();
  
          // The listener is running, but it is not enable, should stop
          when(mockMessageListenerContainer.isRunning()).thenReturn(true);
          searchIndexUpdateJmsMessageListener.controlSearchIndexUpdateJmsMessageListener();
          verify(mockMessageListenerContainer, times(1)).stop();
  
          // The listener is enabled
          when(configurationHelper.getProperty(ConfigurationValue.SEARCH_INDEX_UPDATE_JMS_LISTENER_ENABLED)).thenReturn("true");
  
          // The listener is running, should not call the start method
          when(mockMessageListenerContainer.isRunning()).thenReturn(true);
          searchIndexUpdateJmsMessageListener.controlSearchIndexUpdateJmsMessageListener();
          verify(mockMessageListenerContainer, times(0)).start();
  
          // The listener is not running, but it is enabled, should start
          when(mockMessageListenerContainer.isRunning()).thenReturn(false);
          searchIndexUpdateJmsMessageListener.controlSearchIndexUpdateJmsMessageListener();
          verify(mockMessageListenerContainer, times(1)).start();
      }
test_case.class_method_signature: SearchIndexUpdateJmsMessageListenerTest.testControlListener()
test_case.full_signature: @Test public void testControlListener()
test_case.identifier: testControlListener
test_case.invocations: setField mock thenReturn when getProperty getBean getApplicationContext thenReturn when getListenerContainer thenReturn when isRunning controlSearchIndexUpdateJmsMessageListener stop verify times start verify times thenReturn when isRunning controlSearchIndexUpdateJmsMessageListener stop verify times thenReturn when getProperty thenReturn when isRunning controlSearchIndexUpdateJmsMessageListener start verify times thenReturn when isRunning controlSearchIndexUpdateJmsMessageListener start verify times
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testControlListener()
focal_class.declarator: LOGGER = LoggerFactory.getLogger(SearchIndexUpdateJmsMessageListener.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = LoggerFactory.getLogger(SearchIndexUpdateJmsMessageListener.class);
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.declarator: configurationHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private ConfigurationHelper configurationHelper;
focal_class.type: ConfigurationHelper
focal_class.var_name: configurationHelper
focal_class.declarator: businessObjectDefinitionService
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private BusinessObjectDefinitionService businessObjectDefinitionService;
focal_class.type: BusinessObjectDefinitionService
focal_class.var_name: businessObjectDefinitionService
focal_class.declarator: jsonHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private JsonHelper jsonHelper;
focal_class.type: JsonHelper
focal_class.var_name: jsonHelper
focal_class.declarator: tagService
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private TagService tagService;
focal_class.type: TagService
focal_class.var_name: tagService
focal_class.file: herd-code/herd-service/src/main/java/org/finra/herd/service/helper/SearchIndexUpdateJmsMessageListener.java
focal_class.identifier: SearchIndexUpdateJmsMessageListener
focal_class.class_method_signature: SearchIndexUpdateJmsMessageListener.controlSearchIndexUpdateJmsMessageListener()
focal_class.full_signature: @Scheduled(fixedDelay = 60000) public void controlSearchIndexUpdateJmsMessageListener()
focal_class.identifier: controlSearchIndexUpdateJmsMessageListener
focal_class.modifiers: @Scheduled(fixedDelay = 60000) public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void controlSearchIndexUpdateJmsMessageListener()
focal_class.class_method_signature: SearchIndexUpdateJmsMessageListener.processMessage(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.full_signature: @JmsListener(id = HerdJmsDestinationResolver.SQS_DESTINATION_SEARCH_INDEX_UPDATE_QUEUE, containerFactory = "jmsListenerContainerFactory", destination = HerdJmsDestinationResolver.SQS_DESTINATION_SEARCH_INDEX_UPDATE_QUEUE) public void processMessage(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.identifier: processMessage
focal_class.modifiers: @JmsListener(id = HerdJmsDestinationResolver.SQS_DESTINATION_SEARCH_INDEX_UPDATE_QUEUE, containerFactory = "jmsListenerContainerFactory", destination = HerdJmsDestinationResolver.SQS_DESTINATION_SEARCH_INDEX_UPDATE_QUEUE) public
focal_class.parameters: (String payload, @Headers Map<Object, Object> allHeaders)
focal_class.return: void
focal_class.signature: void processMessage(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.class_method_signature: SearchIndexUpdateJmsMessageListener.processMessageWithRetry(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.full_signature: @Retryable(maxAttempts = 4, value = ListenerExecutionFailedException.class, backoff = @Backoff(delay = 2000, multiplier = 2)) private void processMessageWithRetry(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.identifier: processMessageWithRetry
focal_class.modifiers: @Retryable(maxAttempts = 4, value = ListenerExecutionFailedException.class, backoff = @Backoff(delay = 2000, multiplier = 2)) private
focal_class.parameters: (String payload, @Headers Map<Object, Object> allHeaders)
focal_class.return: void
focal_class.signature: void processMessageWithRetry(String payload, @Headers Map<Object, Object> allHeaders)
focal_method.body: @Scheduled(fixedDelay = 60000)
      public void controlSearchIndexUpdateJmsMessageListener()
      {
          try
          {
              // Get the configuration setting.
              Boolean jmsMessageListenerEnabled = Boolean.valueOf(configurationHelper.getProperty(ConfigurationValue.SEARCH_INDEX_UPDATE_JMS_LISTENER_ENABLED));
  
              // Get the registry bean.
              JmsListenerEndpointRegistry registry = ApplicationContextHolder.getApplicationContext()
                  .getBean("org.springframework.jms.config.internalJmsListenerEndpointRegistry", JmsListenerEndpointRegistry.class);
  
              // Get the search index update JMS message listener container.
              MessageListenerContainer jmsMessageListenerContainer =
                  registry.getListenerContainer(HerdJmsDestinationResolver.SQS_DESTINATION_SEARCH_INDEX_UPDATE_QUEUE);
  
              // Get the current JMS message listener status and the configuration value.
              LOGGER.debug("controlSearchIndexUpdateJmsMessageListener(): {}={} jmsMessageListenerContainer.isRunning()={}",
                  ConfigurationValue.SEARCH_INDEX_UPDATE_JMS_LISTENER_ENABLED.getKey(), jmsMessageListenerEnabled, jmsMessageListenerContainer.isRunning());
  
              // Apply the relative action if needed.
              if (!jmsMessageListenerEnabled && jmsMessageListenerContainer.isRunning())
              {
                  LOGGER.info("controlSearchIndexUpdateJmsMessageListener(): Stopping the search index update JMS message listener ...");
                  jmsMessageListenerContainer.stop();
                  LOGGER.info("controlSearchIndexUpdateJmsMessageListener(): Done");
              }
              else if (jmsMessageListenerEnabled && !jmsMessageListenerContainer.isRunning())
              {
                  LOGGER.info("controlSearchIndexUpdateJmsMessageListener(): Starting the search index update JMS message listener ...");
                  jmsMessageListenerContainer.start();
                  LOGGER.info("controlSearchIndexUpdateJmsMessageListener(): Done");
              }
          }
          catch (Exception e)
          {
              LOGGER.error("controlSearchIndexUpdateJmsMessageListener(): Failed to control the search index update Jms message listener service.", e);
          }
      }
focal_method.class_method_signature: SearchIndexUpdateJmsMessageListener.controlSearchIndexUpdateJmsMessageListener()
focal_method.full_signature: @Scheduled(fixedDelay = 60000) public void controlSearchIndexUpdateJmsMessageListener()
focal_method.identifier: controlSearchIndexUpdateJmsMessageListener
focal_method.invocations: valueOf getProperty getBean getApplicationContext getListenerContainer debug getKey isRunning isRunning info stop info isRunning info start info error
focal_method.modifiers: @Scheduled(fixedDelay = 60000) public
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void controlSearchIndexUpdateJmsMessageListener()