test_class.declarator: herdJmsMessageListener
test_class.modifier: @Autowired
test_class.original_string: @Autowired
      HerdJmsMessageListener herdJmsMessageListener;
test_class.type: HerdJmsMessageListener
test_class.var_name: herdJmsMessageListener
test_class.declarator: jsonHelper
test_class.modifier: @Autowired
test_class.original_string: @Autowired
      JsonHelper jsonHelper;
test_class.type: JsonHelper
test_class.var_name: jsonHelper
test_class.declarator: uploadDownloadService
test_class.modifier: @Autowired
test_class.original_string: @Autowired
      UploadDownloadService uploadDownloadService;
test_class.type: UploadDownloadService
test_class.var_name: uploadDownloadService
test_class.file: herd-code/herd-service/src/test/java/org/finra/herd/service/helper/HerdJmsMessageListenerTest.java
test_class.identifier: HerdJmsMessageListenerTest
test_class.superclass: extends AbstractServiceTest
test_case.body: @Test
      public void testControlListener()
      {
          configurationHelper = Mockito.mock(ConfigurationHelper.class);
  
          ReflectionTestUtils.setField(herdJmsMessageListener, "configurationHelper", configurationHelper);
          MessageListenerContainer mockMessageListenerContainer = Mockito.mock(MessageListenerContainer.class);
  
          //The listener is not enabled
          when(configurationHelper.getProperty(ConfigurationValue.JMS_LISTENER_ENABLED)).thenReturn("false");
          JmsListenerEndpointRegistry registry = ApplicationContextHolder.getApplicationContext()
              .getBean("org.springframework.jms.config.internalJmsListenerEndpointRegistry", JmsListenerEndpointRegistry.class);
          when(registry.getListenerContainer(HerdJmsDestinationResolver.SQS_DESTINATION_HERD_INCOMING)).thenReturn(mockMessageListenerContainer);
          //the listener is not running, nothing happened
          when(mockMessageListenerContainer.isRunning()).thenReturn(false);
          herdJmsMessageListener.controlHerdJmsMessageListener();
          verify(mockMessageListenerContainer, Mockito.times(0)).stop();
          verify(mockMessageListenerContainer, Mockito.times(0)).start();
          // the listener is running, but it is not enable, should stop
          when(mockMessageListenerContainer.isRunning()).thenReturn(true);
          herdJmsMessageListener.controlHerdJmsMessageListener();
          verify(mockMessageListenerContainer).stop();
  
          //The listener is enabled
          when(configurationHelper.getProperty(ConfigurationValue.JMS_LISTENER_ENABLED)).thenReturn("true");
          //the listener is running, should not call the start method
          when(mockMessageListenerContainer.isRunning()).thenReturn(true);
          herdJmsMessageListener.controlHerdJmsMessageListener();
          verify(mockMessageListenerContainer, Mockito.times(0)).start();
          // the listener is not running, but it is enabled, should start
          when(mockMessageListenerContainer.isRunning()).thenReturn(false);
          herdJmsMessageListener.controlHerdJmsMessageListener();
          verify(mockMessageListenerContainer).start();
      }
test_case.class_method_signature: HerdJmsMessageListenerTest.testControlListener()
test_case.full_signature: @Test public void testControlListener()
test_case.identifier: testControlListener
test_case.invocations: mock setField mock thenReturn when getProperty getBean getApplicationContext thenReturn when getListenerContainer thenReturn when isRunning controlHerdJmsMessageListener stop verify times start verify times thenReturn when isRunning controlHerdJmsMessageListener stop verify thenReturn when getProperty thenReturn when isRunning controlHerdJmsMessageListener start verify times thenReturn when isRunning controlHerdJmsMessageListener start verify
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testControlListener()
focal_class.declarator: LOGGER = LoggerFactory.getLogger(HerdJmsMessageListener.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = LoggerFactory.getLogger(HerdJmsMessageListener.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: 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: sqsNotificationEventService
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private MessageNotificationEventService sqsNotificationEventService;
focal_class.type: MessageNotificationEventService
focal_class.var_name: sqsNotificationEventService
focal_class.declarator: uploadDownloadService
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private UploadDownloadService uploadDownloadService;
focal_class.type: UploadDownloadService
focal_class.var_name: uploadDownloadService
focal_class.file: herd-code/herd-service/src/main/java/org/finra/herd/service/helper/HerdJmsMessageListener.java
focal_class.identifier: HerdJmsMessageListener
focal_class.class_method_signature: HerdJmsMessageListener.controlHerdJmsMessageListener()
focal_class.full_signature: @Scheduled(fixedDelay = 60000) public void controlHerdJmsMessageListener()
focal_class.identifier: controlHerdJmsMessageListener
focal_class.modifiers: @Scheduled(fixedDelay = 60000) public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void controlHerdJmsMessageListener()
focal_class.class_method_signature: HerdJmsMessageListener.processMessage(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.full_signature: @JmsListener(id = HerdJmsDestinationResolver.SQS_DESTINATION_HERD_INCOMING, containerFactory = "jmsListenerContainerFactory", destination = HerdJmsDestinationResolver.SQS_DESTINATION_HERD_INCOMING) public void processMessage(String payload, @Headers Map<Object, Object> allHeaders)
focal_class.identifier: processMessage
focal_class.modifiers: @JmsListener(id = HerdJmsDestinationResolver.SQS_DESTINATION_HERD_INCOMING, containerFactory = "jmsListenerContainerFactory", destination = HerdJmsDestinationResolver.SQS_DESTINATION_HERD_INCOMING) 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: HerdJmsMessageListener.processS3Notification(String payload)
focal_class.full_signature: private boolean processS3Notification(String payload)
focal_class.identifier: processS3Notification
focal_class.modifiers: private
focal_class.parameters: (String payload)
focal_class.return: boolean
focal_class.signature: boolean processS3Notification(String payload)
focal_method.body: @Scheduled(fixedDelay = 60000)
      public void controlHerdJmsMessageListener()
      {
          try
          {
              // Get the configuration setting.
              Boolean jmsMessageListenerEnabled = Boolean.valueOf(configurationHelper.getProperty(ConfigurationValue.JMS_LISTENER_ENABLED));
  
              // Get the registry bean.
              JmsListenerEndpointRegistry registry = ApplicationContextHolder.getApplicationContext()
                  .getBean("org.springframework.jms.config.internalJmsListenerEndpointRegistry", JmsListenerEndpointRegistry.class);
  
              // Get the herd JMS message listener container.
              MessageListenerContainer jmsMessageListenerContainer = registry.getListenerContainer(HerdJmsDestinationResolver.SQS_DESTINATION_HERD_INCOMING);
  
              // Get the current JMS message listener status and the configuration value.
              LOGGER.debug("controlHerdJmsMessageListener(): {}={} jmsMessageListenerContainer.isRunning()={}", ConfigurationValue.JMS_LISTENER_ENABLED.getKey(),
                  jmsMessageListenerEnabled, jmsMessageListenerContainer.isRunning());
  
              // Apply the relative action if needed.
              if (!jmsMessageListenerEnabled && jmsMessageListenerContainer.isRunning())
              {
                  LOGGER.info("controlHerdJmsMessageListener(): Stopping the herd JMS message listener ...");
                  jmsMessageListenerContainer.stop();
                  LOGGER.info("controlHerdJmsMessageListener(): Done");
              }
              else if (jmsMessageListenerEnabled && !jmsMessageListenerContainer.isRunning())
              {
                  LOGGER.info("controlHerdJmsMessageListener(): Starting the herd JMS message listener ...");
                  jmsMessageListenerContainer.start();
                  LOGGER.info("controlHerdJmsMessageListener(): Done");
              }
          }
          catch (Exception e)
          {
              LOGGER.error("controlHerdJmsMessageListener(): Failed to control the herd Jms message listener service.", e);
          }
      }
focal_method.class_method_signature: HerdJmsMessageListener.controlHerdJmsMessageListener()
focal_method.full_signature: @Scheduled(fixedDelay = 60000) public void controlHerdJmsMessageListener()
focal_method.identifier: controlHerdJmsMessageListener
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 controlHerdJmsMessageListener()