/** * Create an instance of {@link MessageHeader } * */ public MessageHeader createMessageHeader() { return new MessageHeader(); }
public Object createNewInstance() { return new MessageHeader(); }
@Override public MessageHeader build() { if (_storedValue == null) { return this.init(new MessageHeader()); } else { return ((MessageHeader) _storedValue); } }
/** * Returns a list of expected message headers. * * @param expectedUuid the expected UUID * * @return the list of message headers */ protected List<MessageHeader> getExpectedMessageHeaders(String expectedUuid) { List<MessageHeader> messageHeaders = new ArrayList<>(); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_ENVIRONMENT, configurationHelper.getProperty(ConfigurationValue.HERD_ENVIRONMENT))); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_MESSAGE_TYPE, MESSAGE_TYPE)); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_MESSAGE_VERSION, MESSAGE_VERSION)); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_SOURCE_SYSTEM, SOURCE_SYSTEM)); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_MESSAGE_ID, expectedUuid)); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_USER_ID, HerdDaoSecurityHelper.SYSTEM_USER)); messageHeaders.add(new MessageHeader(MESSAGE_HEADER_KEY_NAMESPACE, BDEF_NAMESPACE)); return messageHeaders; } }
@Test public void testPublishNotificationMessage() { // Publish a notification message with SQS message type. notificationMessagePublishingService.publishNotificationMessage( new NotificationMessage(MessageTypeEntity.MessageEventTypes.SQS.name(), MESSAGE_DESTINATION, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); // Publish a notification message with SNS message type. notificationMessagePublishingService.publishNotificationMessage( new NotificationMessage(MessageTypeEntity.MessageEventTypes.SNS.name(), MESSAGE_DESTINATION, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); }
@Test public void testPublishNotificationMessageInvalidMessageType() { // Try to publish notification message with an invalid message type. try { notificationMessagePublishingService.publishNotificationMessage( new NotificationMessage(I_DO_NOT_EXIST, MESSAGE_DESTINATION, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); fail(); } catch (IllegalStateException e) { assertEquals(String.format("Notification message type \"%s\" is not supported.", I_DO_NOT_EXIST), e.getMessage()); } }
messageHeaders.add(new MessageHeader(messageHeaderDefinition.getKey(), evaluateVelocityTemplate(messageHeaderDefinition.getValueVelocityTemplate(), velocityContextMap, String.format("%s_messageHeader_%s", notificationEvent.getClass().getCanonicalName(), messageHeaderDefinition.getKey()))));
messageHeaders.add(new MessageHeader(messageHeaderDefinition.getKey(), evaluateVelocityTemplate(messageHeaderDefinition.getValueVelocityTemplate(), velocityContextMap, String.format("%s_messageHeader_%s", notificationEvent.getClass().getCanonicalName(), messageHeaderDefinition.getKey()))));
@Test public void testNotificationPublishingServiceMethodsNewTransactionPropagation() { // Validate that notification message database queue is empty. assertNull(notificationMessageDao.getOldestNotificationMessage()); // Add a notification message to the database queue. notificationMessagePublishingServiceImpl.addNotificationMessageToDatabaseQueue( new NotificationMessage(MessageTypeEntity.MessageEventTypes.SQS.name(), MESSAGE_DESTINATION, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); // Validate that the database queue is not empty now. assertNotNull(notificationMessageDao.getOldestNotificationMessage()); // Publish the notification message from the database queue. assertTrue(notificationMessagePublishingServiceImpl.publishOldestNotificationMessageFromDatabaseQueue()); // Publish notification message directly - not from the database queue. notificationMessagePublishingServiceImpl.publishNotificationMessage( new NotificationMessage(MessageTypeEntity.MessageEventTypes.SQS.name(), MESSAGE_DESTINATION, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); }
Collections.singletonList(new MessageHeader(KEY, VALUE)));
Collections.singletonList(new MessageHeader(KEY, VALUE)));
Collections.singletonList(new MessageHeader(KEY, VALUE)));
Collections.singletonList(new MessageHeader(KEY, VALUE)));
@Test public void testProcessBusinessObjectFormatVersionChangeNotificationEvent() throws Exception { // Create a business object format entity. BusinessObjectDataInvalidateUnregisteredRequest request = new BusinessObjectDataInvalidateUnregisteredRequest(BDEF_NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, NO_SUBPARTITION_VALUES, StorageEntity.MANAGED_STORAGE); BusinessObjectFormatEntity businessObjectFormatEntity = businessObjectFormatServiceTestHelper.createBusinessObjectFormat(request); // Get a business object data key. BusinessObjectFormatKey businessObjectFormatKey = businessObjectFormatHelper.getBusinessObjectFormatKey(businessObjectFormatEntity); // Override configuration. ConfigurationEntity configurationEntity = new ConfigurationEntity(); configurationEntity.setKey(ConfigurationValue.HERD_NOTIFICATION_BUSINESS_OBJECT_FORMAT_VERSION_CHANGE_MESSAGE_DEFINITIONS.getKey()); configurationEntity.setValueClob(xmlHelper.objectToXml(new NotificationMessageDefinitions(Collections.singletonList( new NotificationMessageDefinition(MESSAGE_TYPE, MESSAGE_DESTINATION, BUSINESS_OBJECT_FORMAT_VERSION_CHANGE_NOTIFICATION_MESSAGE_VELOCITY_TEMPLATE_XML, Collections.singletonList(new MessageHeaderDefinition(KEY, VALUE))))))); configurationDao.saveAndRefresh(configurationEntity); // Trigger the notification. List<NotificationMessage> result = messageNotificationEventService .processBusinessObjectFormatVersionChangeNotificationEvent(businessObjectFormatKey, NO_OLD_BUSINESS_OBJECT_FORMAT_VERSION); // Validate the results. assertEquals(1, CollectionUtils.size(result)); businessObjectFormatServiceTestHelper .validateBusinessObjectFormatVersionChangeMessageWithXmlPayload(MESSAGE_TYPE, MESSAGE_DESTINATION, businessObjectFormatKey, HerdDaoSecurityHelper.SYSTEM_USER, businessObjectFormatKey.getBusinessObjectFormatVersion().toString(), NO_OLD_BUSINESS_OBJECT_FORMAT_VERSION, Collections.singletonList(new MessageHeader(KEY, VALUE)), result.get(0)); }
@Test public void testProcessUserNamespaceAuthorizationChangeNotificationEvent() throws Exception { // Create a user namespace authorization key. UserNamespaceAuthorizationKey userNamespaceAuthorizationKey = new UserNamespaceAuthorizationKey(USER_ID, NAMESPACE); // Create and persist the relative database entities. namespaceDaoTestHelper.createNamespaceEntity(userNamespaceAuthorizationKey.getNamespace()); userNamespaceAuthorizationDaoTestHelper.createUserNamespaceAuthorizationEntity(userNamespaceAuthorizationKey, SUPPORTED_NAMESPACE_PERMISSIONS); // Override configuration. ConfigurationEntity configurationEntity = new ConfigurationEntity(); configurationEntity.setKey(ConfigurationValue.HERD_NOTIFICATION_USER_NAMESPACE_AUTHORIZATION_CHANGE_MESSAGE_DEFINITIONS.getKey()); configurationEntity.setValueClob(xmlHelper.objectToXml(new NotificationMessageDefinitions(Collections.singletonList( new NotificationMessageDefinition(MESSAGE_TYPE, MESSAGE_DESTINATION, USER_NAMESPACE_AUTHORIZATION_CHANGE_NOTIFICATION_MESSAGE_VELOCITY_TEMPLATE_XML, Collections.singletonList(new MessageHeaderDefinition(KEY, VALUE))))))); configurationDao.saveAndRefresh(configurationEntity); // Trigger the notification. List<NotificationMessage> result = messageNotificationEventService.processUserNamespaceAuthorizationChangeNotificationEvent(userNamespaceAuthorizationKey); // Validate the results. assertEquals(1, CollectionUtils.size(result)); userNamespaceAuthorizationServiceTestHelper .validateUserNamespaceAuthorizationChangeMessageWithXmlPayload(MESSAGE_TYPE, MESSAGE_DESTINATION, HerdDaoSecurityHelper.SYSTEM_USER, userNamespaceAuthorizationKey, Collections.singletonList(new MessageHeader(KEY, VALUE)), result.get(0)); }
@Test public void testPublish() { // Publish an SNS message without proxy. assertEquals(new PublishResult().withMessageId(MESSAGE_ID), snsDao.publish( new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, NO_HTTP_PROXY_HOST, NO_HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1), AWS_SNS_TOPIC_ARN, MESSAGE_TEXT, NO_MESSAGE_HEADERS)); // Publish an SNS message using proxy settings. assertEquals(new PublishResult().withMessageId(MESSAGE_ID), snsDao .publish(new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, HTTP_PROXY_HOST, HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1), AWS_SNS_TOPIC_ARN, MESSAGE_TEXT, NO_MESSAGE_HEADERS)); // Publish an SNS message with message headers. assertEquals(new PublishResult().withMessageId(MESSAGE_ID), snsDao .publish(new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, HTTP_PROXY_HOST, HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1), AWS_SNS_TOPIC_ARN, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); } }
@Test public void testSendMessage() { // Send an SQS message without specifying HTTP proxy settings. assertEquals(new SendMessageResult().withMessageId(MESSAGE_ID), sqsDao.sendMessage( new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, NO_HTTP_PROXY_HOST, NO_HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1), AWS_SQS_QUEUE_NAME, MESSAGE_TEXT, NO_MESSAGE_HEADERS)); // Send an SQS message using proxy settings. assertEquals(new SendMessageResult().withMessageId(MESSAGE_ID), sqsDao .sendMessage(new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, HTTP_PROXY_HOST, HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1), AWS_SQS_QUEUE_NAME, MESSAGE_TEXT, NO_MESSAGE_HEADERS)); // Publish an SQS message with message headers. assertEquals(new SendMessageResult().withMessageId(MESSAGE_ID), sqsDao.sendMessage( new AwsParamsDto(NO_AWS_ACCESS_KEY, NO_AWS_SECRET_KEY, NO_SESSION_TOKEN, NO_HTTP_PROXY_HOST, NO_HTTP_PROXY_PORT, AWS_REGION_NAME_US_EAST_1), AWS_SNS_TOPIC_ARN, MESSAGE_TEXT, Collections.singletonList(new MessageHeader(KEY, VALUE)))); } }
@Test public void testAddNotificationMessageToDatabaseQueue() { // Create a message type entity. messageTypeDaoTestHelper.createMessageTypeEntity(MESSAGE_TYPE); // Create a message header. List<MessageHeader> messageHeaders = Collections.singletonList(new MessageHeader(KEY, VALUE)); // Create a notification message. NotificationMessage notificationMessage = new NotificationMessage(MESSAGE_TYPE, MESSAGE_DESTINATION, MESSAGE_TEXT, messageHeaders); // Add a notification message to the database queue. notificationMessagePublishingService.addNotificationMessageToDatabaseQueue(notificationMessage); // Retrieve the oldest notification message from the database queue. NotificationMessageEntity notificationMessageEntity = notificationMessageDao.getOldestNotificationMessage(); // Validate the results. assertNotNull(notificationMessageEntity); assertEquals(MESSAGE_TYPE, notificationMessageEntity.getMessageType().getCode()); assertEquals(MESSAGE_DESTINATION, notificationMessageEntity.getMessageDestination()); assertEquals(MESSAGE_TEXT, notificationMessageEntity.getMessageText()); assertEquals(jsonHelper.objectToJson(messageHeaders), notificationMessageEntity.getMessageHeaders()); }