This is an automated email from the ASF dual-hosted git repository.

ikamga pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-notifications.git

commit 6b0cd7aacdfe4776ec5df59ccef17b7259c0d978
Author: Ebenezer Graham <[email protected]>
AuthorDate: Mon Jun 24 14:56:43 2019 +0400

    Retained JMS Configuration
---
 .../api/v1/events/NotificationEventConstants.java  |  3 +
 .../cn/notification/AbstractNotificationTest.java  |  3 +-
 .../fineract/cn/notification/TestEmailService.java | 14 +++-
 .../fineract/cn/notification/TestSMSService.java   | 13 +++-
 .../listener/ConfigurationEventListener.java       |  3 +-
 .../cn/notification/listener/EventListener.java    | 77 ++++++++++++++++++++++
 .../fineract/cn/notification/listener/TestJMS.java | 47 +++++++++++++
 .../handler/EmailConfigurationCommandHandler.java  |  4 +-
 .../handler/SMSConfigurationCommandHandler.java    |  4 +-
 .../internal/config/NotificationConfiguration.java | 31 +++++++--
 .../EmailGatewayConfigurationRepository.java       |  3 +-
 .../SMSGatewayConfigurationRepository.java         |  2 +-
 .../service/internal/service/EmailService.java     | 12 +---
 .../internal/service/NotificationService.java      |  2 +-
 .../service/internal/service/SMSService.java       |  6 +-
 .../service/listener/CustomerEventListener.java    |  4 +-
 .../db/migrations/mariadb/V1__initial_setup.sql    |  5 +-
 17 files changed, 198 insertions(+), 35 deletions(-)

diff --git 
a/api/src/main/java/org/apache/fineract/cn/notification/api/v1/events/NotificationEventConstants.java
 
b/api/src/main/java/org/apache/fineract/cn/notification/api/v1/events/NotificationEventConstants.java
index 4711a87..05bcfa3 100644
--- 
a/api/src/main/java/org/apache/fineract/cn/notification/api/v1/events/NotificationEventConstants.java
+++ 
b/api/src/main/java/org/apache/fineract/cn/notification/api/v1/events/NotificationEventConstants.java
@@ -59,4 +59,7 @@ public interface NotificationEventConstants {
        
        String SELECTOR_SEND_EMAIL_NOTIFICATION = SELECTOR_NAME + " = '" + 
SEND_EMAIL_NOTIFICATION + "'";
        String SELECTOR_SEND_SMS_NOTIFICATION = SELECTOR_NAME + " = '" + 
SEND_SMS_NOTIFICATION + "'";
+       
+       String TEST = "jms-test";
+       String SELECTOR_TEST = SELECTOR_NAME + " = '" + TEST + "'";
 }
diff --git 
a/component-test/src/main/java/org/apache/fineract/cn/notification/AbstractNotificationTest.java
 
b/component-test/src/main/java/org/apache/fineract/cn/notification/AbstractNotificationTest.java
index 194c6c5..4f0dbc1 100644
--- 
a/component-test/src/main/java/org/apache/fineract/cn/notification/AbstractNotificationTest.java
+++ 
b/component-test/src/main/java/org/apache/fineract/cn/notification/AbstractNotificationTest.java
@@ -53,8 +53,9 @@ public class AbstractNotificationTest extends 
SuiteTestEnvironment {
        public final static TenantDataStoreContextTestRule 
tenantDataStoreContext = 
TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, 
mariaDBInitializer);
        public static final String LOGGER_NAME = "test-logger";
        public static final String TEST_USER = "homer";
-       public static final String TEST_ADDRESS = "[email protected]";
+       public static final String TEST_ADDRESS = "[email protected]"; 
// Replace with developer's dummy testing email
        public static final String TEST_TEMPLATE= "sample";
+       public static final String SMS_TEST_NUMBER= "+23058409206"; // Replace 
with developers dummy testing number
        
        @SuppressWarnings("WeakerAccess")
        @Autowired
diff --git 
a/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
 
b/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
index e4cd844..f7c9f45 100644
--- 
a/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
+++ 
b/component-test/src/main/java/org/apache/fineract/cn/notification/TestEmailService.java
@@ -54,7 +54,6 @@ public class TestEmailService extends 
AbstractNotificationTest {
                                TEST_ADDRESS,
                                TEST_TEMPLATE,
                                null);
-               
//Assert.assertTrue(this.eventRecorder.wait(NotificationEventConstants.SEND_EMAIL_NOTIFICATION,TEST_ADDRESS
 ));
        }
        
        @Test
@@ -81,8 +80,6 @@ public class TestEmailService extends 
AbstractNotificationTest {
                                TEST_TEMPLATE,
                                templateVariables
                );
-               
-               
//Assert.assertTrue(this.eventRecorder.wait(NotificationEventConstants.SEND_EMAIL_NOTIFICATION,TEST_ADDRESS
 ));
        }
        
        @Test(expected = NotFoundException.class)
@@ -115,6 +112,17 @@ public class TestEmailService extends 
AbstractNotificationTest {
        }
        
        @Test
+       public void deleteConfiguration() throws InterruptedException {
+               logger.info("Delete Email configuration");
+               
+               
notificationManager.createEmailConfiguration(emailConfiguration);
+               
Assert.assertTrue(eventRecorder.wait(NotificationEventConstants.POST_EMAIL_CONFIGURATION,
 emailConfiguration.getIdentifier()));
+               
+               
notificationManager.deleteEmailConfiguration(emailConfiguration.getIdentifier());
+               
Assert.assertTrue(eventRecorder.wait(NotificationEventConstants.DELETE_EMAIL_CONFIGURATION,
 emailConfiguration.getIdentifier()));
+       }
+       
+       @Test
        public void shouldFindDefaultGateway() {
                this.logger.info("Find Active Gateway");
                
Assert.assertNotNull(this.emailService.getDefaultEmailConfigurationEntity());
diff --git 
a/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
 
b/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
index 4b5e251..5bf34fb 100644
--- 
a/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
+++ 
b/component-test/src/main/java/org/apache/fineract/cn/notification/TestSMSService.java
@@ -84,8 +84,19 @@ public class TestSMSService extends AbstractNotificationTest 
{
        @Test
        public void shouldSendAnSMS(){
                this.logger.info("Send SMS Notification");
-               String to = this.notificationService.sendSMS("+23058409206",
+               int to = this.notificationService.sendSMS(SMS_TEST_NUMBER,
                                "Dear Valued Customer\n\nTalk is cheap show me 
the code\n\nBest Regards\nYour MFI");
                Assert.assertNotNull(to);
        }
+       
+       @Test
+       public void deleteConfiguration() throws InterruptedException {
+               logger.info("Delete SMS configuration");
+               
+               notificationManager.createSMSConfiguration(smsConfiguration);
+               
Assert.assertTrue(eventRecorder.wait(NotificationEventConstants.POST_SMS_CONFIGURATION,
 smsConfiguration.getIdentifier()));
+               
+               
notificationManager.deleteSMSConfiguration(smsConfiguration.getIdentifier());
+               
Assert.assertTrue(eventRecorder.wait(NotificationEventConstants.DELETE_SMS_CONFIGURATION,
 smsConfiguration.getIdentifier()));
+       }
 }
diff --git 
a/component-test/src/main/java/org/apache/fineract/cn/notification/listener/ConfigurationEventListener.java
 
b/component-test/src/main/java/org/apache/fineract/cn/notification/listener/ConfigurationEventListener.java
index b4b5491..4039af6 100644
--- 
a/component-test/src/main/java/org/apache/fineract/cn/notification/listener/ConfigurationEventListener.java
+++ 
b/component-test/src/main/java/org/apache/fineract/cn/notification/listener/ConfigurationEventListener.java
@@ -108,6 +108,7 @@ public class ConfigurationEventListener {
        public void 
onDeleteEmailConfiguration(@Header(TenantHeaderFilter.TENANT_HEADER) final 
String tenant,
                                   final String payload) {
                this.eventRecorder.event(tenant, 
NotificationEventConstants.DELETE_EMAIL_CONFIGURATION, payload, String.class);
+               logger.info("onDeleteEmailConfiguration received");
        }
        
        @JmsListener(
@@ -148,6 +149,6 @@ public class ConfigurationEventListener {
                public void 
onPostTemplate(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
                final String payload) {
                        this.eventRecorder.event(tenant, 
NotificationEventConstants.POST_TEMPLATE, payload, String.class);
-               }
+       }
        
 }
diff --git 
a/component-test/src/main/java/org/apache/fineract/cn/notification/listener/EventListener.java
 
b/component-test/src/main/java/org/apache/fineract/cn/notification/listener/EventListener.java
new file mode 100644
index 0000000..f5f63f4
--- /dev/null
+++ 
b/component-test/src/main/java/org/apache/fineract/cn/notification/listener/EventListener.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one
+     * or more contributor license agreements.  See the NOTICE file
+     * distributed with this work for additional information
+     * regarding copyright ownership.  The ASF licenses this file
+     * to you under the Apache License, Version 2.0 (the
+     * "License"); you may not use this file except in compliance
+     * with the License.  You may obtain a copy of the License at
+     *
+     *   http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing,
+     * software distributed under the License is distributed on an
+     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+     * KIND, either express or implied.  See the License for the
+     * specific language governing permissions and limitations
+     * under the License.
+     */
+    package org.apache.fineract.cn.notification.listener;
+
+import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
+import 
org.apache.fineract.cn.notification.api.v1.events.NotificationEventConstants;
+import org.apache.fineract.cn.notification.service.ServiceConstants;
+import org.apache.fineract.cn.test.listener.EventRecorder;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.jms.annotation.JmsListener;
+import org.springframework.messaging.handler.annotation.Header;
+import org.springframework.stereotype.Component;
+
+import static 
org.apache.fineract.cn.notification.api.v1.events.NotificationEventConstants.SELECTOR_TEST;
+import static 
org.apache.fineract.cn.notification.api.v1.events.NotificationEventConstants.TEST;
+
+@SuppressWarnings("unused")
+@Component
+public class EventListener {
+       private final EventRecorder eventRecorder;
+       private final Logger logger;
+       
+       
+       @Autowired
+       public EventListener(final EventRecorder eventRecorder,
+                            @Qualifier(ServiceConstants.LOGGER_NAME) final 
Logger logger) {
+               this.logger = logger;
+               this.eventRecorder = eventRecorder;
+       }
+       static int counter = 0;
+       @JmsListener(
+                       destination = TEST,
+                       selector = SELECTOR_TEST
+       )
+       public void jmsTest(@Header(TenantHeaderFilter.TENANT_HEADER) final 
String tenant,
+                                        final String payload) {
+               counter++;
+               logger.info("Received {}",counter);
+               this.eventRecorder.event(tenant, 
NotificationEventConstants.TEST, payload, String.class);
+       }
+}
diff --git 
a/component-test/src/main/java/org/apache/fineract/cn/notification/listener/TestJMS.java
 
b/component-test/src/main/java/org/apache/fineract/cn/notification/listener/TestJMS.java
new file mode 100644
index 0000000..6784cdd
--- /dev/null
+++ 
b/component-test/src/main/java/org/apache/fineract/cn/notification/listener/TestJMS.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.cn.notification.listener;
+
+import org.apache.fineract.cn.notification.AbstractNotificationTest;
+import 
org.apache.fineract.cn.notification.service.internal.service.EventHelper;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.IOException;
+
+import static 
org.apache.fineract.cn.notification.api.v1.events.NotificationEventConstants.TEST;
+
+public class TestJMS extends AbstractNotificationTest {
+       
+       @Autowired
+       EventHelper eventHelper;
+       
+       
+       public TestJMS() {
+               super();
+       }
+       
+       @Test
+       public void testJMSConcurrency() throws 
InterruptedException,IOException {
+               this.logger.info("Send JMS event");
+               eventHelper.sendEvent(TEST,"test-tenant","payload");
+               Assert.assertTrue(eventRecorder.wait(TEST,"payload"));
+       }
+}
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/EmailConfigurationCommandHandler.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/EmailConfigurationCommandHandler.java
index 3c7928d..40ff7e3 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/EmailConfigurationCommandHandler.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/EmailConfigurationCommandHandler.java
@@ -63,7 +63,7 @@ public class EmailConfigurationCommandHandler {
        public String process(final UpdateEmailConfigurationCommand 
updateEmailConfigurationCommand) {
                EmailConfiguration emailConfiguration = 
updateEmailConfigurationCommand.getEmailConfiguration();
                final EmailGatewayConfigurationEntity newEntity = 
EmailConfigurationMapper.map(emailConfiguration);
-               
this.emailGatewayConfigurationRepository.deleteEmailGatewayConfigurationEntityBy(newEntity.getIdentifier());
+               
this.emailGatewayConfigurationRepository.deleteEmailGatewayConfigurationEntityByIdentifier(newEntity.getIdentifier());
                this.emailGatewayConfigurationRepository.save(newEntity);
                
                return emailConfiguration.getIdentifier();
@@ -73,7 +73,7 @@ public class EmailConfigurationCommandHandler {
        @Transactional
        @EventEmitter(selectorName = NotificationEventConstants.SELECTOR_NAME, 
selectorValue = NotificationEventConstants.DELETE_EMAIL_CONFIGURATION)
        public String process(final DeleteEmailConfigurationCommand 
deleteEmailConfigurationCommand) {
-               
this.emailGatewayConfigurationRepository.deleteEmailGatewayConfigurationEntityBy(deleteEmailConfigurationCommand.getIdentifier());
+               
this.emailGatewayConfigurationRepository.deleteEmailGatewayConfigurationEntityByIdentifier(deleteEmailConfigurationCommand.getIdentifier());
                return deleteEmailConfigurationCommand.getIdentifier();
        }
 }
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/SMSConfigurationCommandHandler.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/SMSConfigurationCommandHandler.java
index e3234db..42337fb 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/SMSConfigurationCommandHandler.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/command/handler/SMSConfigurationCommandHandler.java
@@ -60,7 +60,7 @@ public class SMSConfigurationCommandHandler {
        @Transactional
        public String process(final UpdateSMSConfigurationCommand 
updateSMSConfigurationCommand) {
                final SMSGatewayConfigurationEntity newEntity = 
SMSConfigurationMapper.map(updateSMSConfigurationCommand.getSMSConfiguration());
-               
this.smsGatewayConfigurationRepository.deleteSMSGatewayConfigurationEntityBy(newEntity.getIdentifier());
+               
this.smsGatewayConfigurationRepository.deleteSMSGatewayConfigurationEntityByIdentifier(newEntity.getIdentifier());
                this.smsGatewayConfigurationRepository.save(newEntity);
                
                return newEntity.getIdentifier();
@@ -70,7 +70,7 @@ public class SMSConfigurationCommandHandler {
        @Transactional
        @EventEmitter(selectorName = NotificationEventConstants.SELECTOR_NAME, 
selectorValue = NotificationEventConstants.DELETE_SMS_CONFIGURATION)
        public String process(final DeleteSMSConfigurationCommand 
deleteSMSConfigurationCommand) {
-               
smsGatewayConfigurationRepository.deleteSMSGatewayConfigurationEntityBy(deleteSMSConfigurationCommand.getIdentifier());
+               
smsGatewayConfigurationRepository.deleteSMSGatewayConfigurationEntityByIdentifier(deleteSMSConfigurationCommand.getIdentifier());
                return deleteSMSConfigurationCommand.getIdentifier();
        }
 }
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationConfiguration.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationConfiguration.java
index f237dff..c99b67c 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationConfiguration.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/config/NotificationConfiguration.java
@@ -18,6 +18,8 @@
  */
 package org.apache.fineract.cn.notification.service.internal.config;
 
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.command.ActiveMQTopic;
 import org.apache.activemq.jms.pool.PooledConnectionFactory;
 import org.apache.fineract.cn.anubis.config.EnableAnubis;
 import org.apache.fineract.cn.async.config.EnableAsync;
@@ -25,6 +27,7 @@ import 
org.apache.fineract.cn.cassandra.config.EnableCassandra;
 import org.apache.fineract.cn.command.config.EnableCommandProcessing;
 import org.apache.fineract.cn.customer.api.v1.client.CustomerManager;
 import org.apache.fineract.cn.identity.api.v1.client.IdentityManager;
+import org.apache.fineract.cn.lang.ApplicationName;
 import org.apache.fineract.cn.lang.config.EnableServiceException;
 import org.apache.fineract.cn.lang.config.EnableTenantContext;
 import org.apache.fineract.cn.mariadb.config.EnableMariaDB;
@@ -100,19 +103,37 @@ public class NotificationConfiguration extends 
WebMvcConfigurerAdapter {
        }
        
        @Bean
+       public PooledConnectionFactory jmsFactory() {
+               PooledConnectionFactory pooledConnectionFactory = new 
PooledConnectionFactory();
+               ActiveMQConnectionFactory activeMQConnectionFactory = new 
ActiveMQConnectionFactory();
+               
activeMQConnectionFactory.setBrokerURL(this.environment.getProperty("activemq.brokerUrl",
 "vm://localhost?broker.persistent=false"));
+               
pooledConnectionFactory.setConnectionFactory(activeMQConnectionFactory);
+               return pooledConnectionFactory;
+       }
+       
+       @Bean
        public JmsListenerContainerFactory 
jmsListenerContainerFactory(PooledConnectionFactory jmsFactory) {
-               final DefaultJmsListenerContainerFactory factory = new 
DefaultJmsListenerContainerFactory();
-               factory.setConnectionFactory(jmsFactory);
+               DefaultJmsListenerContainerFactory factory = new 
DefaultJmsListenerContainerFactory();
                factory.setPubSubDomain(true);
                factory.setConnectionFactory(jmsFactory);
                factory.setErrorHandler(ex -> {
-                       loggerBean().warn(ex.getCause().toString());
+                       loggerBean().error(ex.getCause().toString());
                });
-               
factory.setConcurrency(this.environment.getProperty("activemq.concurrency","1-1"));
+               
factory.setConcurrency(this.environment.getProperty("activemq.concurrency", 
"1"));
                return factory;
        }
        
        @Bean
+       public JmsTemplate jmsTemplate(ApplicationName applicationName, 
PooledConnectionFactory jmsFactory) {
+               ActiveMQTopic activeMQTopic = new 
ActiveMQTopic(applicationName.toString());
+               JmsTemplate jmsTemplate = new JmsTemplate();
+               jmsTemplate.setPubSubDomain(true);
+               jmsTemplate.setConnectionFactory(jmsFactory);
+               jmsTemplate.setDefaultDestination(activeMQTopic);
+               return jmsTemplate;
+       }
+       
+       @Bean
        public SpringTemplateEngine springTemplateEngine() {
                SpringTemplateEngine templateEngine = new 
SpringTemplateEngine();
                templateEngine.addTemplateResolver(htmlTemplateResolver());
@@ -120,7 +141,7 @@ public class NotificationConfiguration extends 
WebMvcConfigurerAdapter {
        }
        
        @Bean
-       public SpringResourceTemplateResolver htmlTemplateResolver(){
+       public SpringResourceTemplateResolver htmlTemplateResolver() {
                SpringResourceTemplateResolver emailTemplateResolver = new 
SpringResourceTemplateResolver();
                emailTemplateResolver.setPrefix("classpath:/templates/");
                emailTemplateResolver.setSuffix(".html");
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/EmailGatewayConfigurationRepository.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/EmailGatewayConfigurationRepository.java
index 2b5ddcb..ee94b58 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/EmailGatewayConfigurationRepository.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/EmailGatewayConfigurationRepository.java
@@ -35,5 +35,6 @@ public interface EmailGatewayConfigurationRepository extends 
JpaRepository<Email
        @Query("SELECT entity FROM EmailGatewayConfigurationEntity entity WHERE 
entity.identifier='DEFAULT'")
        Optional<EmailGatewayConfigurationEntity> defaultGateway();
        
-       void deleteEmailGatewayConfigurationEntityBy(String identifier);
+       void deleteEmailGatewayConfigurationEntityByIdentifier(String 
identifier);
+       
 }
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/SMSGatewayConfigurationRepository.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/SMSGatewayConfigurationRepository.java
index 64e8427..0e2d642 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/SMSGatewayConfigurationRepository.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/repository/SMSGatewayConfigurationRepository.java
@@ -35,5 +35,5 @@ public interface SMSGatewayConfigurationRepository extends 
JpaRepository<SMSGate
        @Query("SELECT entity FROM SMSGatewayConfigurationEntity entity WHERE 
entity.identifier='DEFAULT'")
        Optional<SMSGatewayConfigurationEntity> defaultGateway();
        
-       void deleteSMSGatewayConfigurationEntityBy(String identifier);
+       void deleteSMSGatewayConfigurationEntityByIdentifier(String identifier);
 }
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/EmailService.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/EmailService.java
index 9290e91..655f6dc 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/EmailService.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/EmailService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.fineract.cn.notification.service.internal.service;
 
-import org.apache.fineract.cn.command.annotation.Aggregate;
 import org.apache.fineract.cn.command.annotation.CommandHandler;
 import org.apache.fineract.cn.command.annotation.CommandLogLevel;
 import org.apache.fineract.cn.command.annotation.EventEmitter;
@@ -46,7 +45,6 @@ import java.util.Optional;
 import java.util.Properties;
 
 @Component
-@Aggregate
 public class EmailService {
        
        private final EmailGatewayConfigurationRepository 
emailGatewayConfigurationRepository;
@@ -113,9 +111,6 @@ public class EmailService {
                return false;
        }
        
-       @CommandHandler(logStart = CommandLogLevel.INFO, logFinish = 
CommandLogLevel.INFO)
-       @Transactional
-       @EventEmitter(selectorName = NotificationEventConstants.SELECTOR_NAME, 
selectorValue = NotificationEventConstants.SEND_EMAIL_NOTIFICATION)
        public String sendPlainEmail(String to, String subject, String message) 
{
                SimpleMailMessage mail = new SimpleMailMessage();
                
@@ -123,7 +118,7 @@ public class EmailService {
                        mail.setTo(to);
                        mail.setSubject(subject);
                        mail.setText(message);
-                       //this.mailSender.send(mail);
+                       this.mailSender.send(mail);
                        return to;
                } catch (MailException exception) {
                        logger.debug("Caused by:" + 
exception.getCause().toString());
@@ -131,9 +126,6 @@ public class EmailService {
                return to;
        }
        
-       @CommandHandler(logStart = CommandLogLevel.INFO, logFinish = 
CommandLogLevel.INFO)
-       @Transactional
-       @EventEmitter(selectorName = NotificationEventConstants.SELECTOR_NAME, 
selectorValue = NotificationEventConstants.SEND_EMAIL_NOTIFICATION)
        public String sendFormattedEmail(String to,
                                         String subject,
                                         Map<String, Object> message,
@@ -146,7 +138,7 @@ public class EmailService {
                        messageHelper.setText(content, true);
                };
                try {
-                       //this.mailSender.send(messagePreparator);
+                       this.mailSender.send(messagePreparator);
                        return to;
                } catch (MailException e) {
                        logger.error("Failed to send Formatted email{}", 
e.getMessage());
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
index 50bc1f9..6ca39b1 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/NotificationService.java
@@ -60,7 +60,7 @@ public class NotificationService {
                return customerService.findCustomer(customerIdentifier);
        }
        
-       public String sendSMS(String receiver, String template) {
+       public int sendSMS(String receiver, String template) {
                if (!this.smsService.isConfigured) 
this.smsService.configureServiceWithDefaultGateway();
                return this.smsService.sendSMS(receiver, template);
        }
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/SMSService.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/SMSService.java
index 76ce3a0..42f01f1 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/SMSService.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/internal/service/SMSService.java
@@ -106,15 +106,15 @@ public class SMSService {
        @CommandHandler(logStart = CommandLogLevel.INFO, logFinish = 
CommandLogLevel.INFO)
        @Transactional
        @EventEmitter(selectorName = NotificationEventConstants.SELECTOR_NAME, 
selectorValue = NotificationEventConstants.SEND_SMS_NOTIFICATION)
-       public String sendSMS(String receiver, String template) {
+       public int sendSMS(String receiver, String template) {
                Twilio.init(this.accountSid, this.authToken);
                MessageCreator messageCreator = Message.creator(this.accountSid,
                                new PhoneNumber(receiver),
                                new PhoneNumber(this.senderNumber),
                                template);
-               //Message message = messageCreator.create();
+               Message message = messageCreator.create();
                
                System.out.println("\n\n\nsent");
-               return "";//message;
+               return message.hashCode();
        }
 }
diff --git 
a/service/src/main/java/org/apache/fineract/cn/notification/service/listener/CustomerEventListener.java
 
b/service/src/main/java/org/apache/fineract/cn/notification/service/listener/CustomerEventListener.java
index 96524e4..2fcc300 100644
--- 
a/service/src/main/java/org/apache/fineract/cn/notification/service/listener/CustomerEventListener.java
+++ 
b/service/src/main/java/org/apache/fineract/cn/notification/service/listener/CustomerEventListener.java
@@ -98,7 +98,7 @@
            )
            public void 
customerUpdatedEvents(@Header(TenantHeaderFilter.TENANT_HEADER) final String 
tenant,
                                              final String payload) {
-                   this.logger.info("{} has been invoked", 
"customerUpdatedEvents");
+                   this.logger.info("{} has been invoked", 
"customerUpdatedEvent");
                    Customer customer = 
this.notificationService.findCustomer(payload, tenant).get();
                
                    customer.getContactDetails().forEach(contact -> {
@@ -117,7 +117,7 @@
                                    // TODO: Pass message to template
                                    notificationService.sendEmail(
                                                    emailAddress,
-                                                   "customerUpdatedEvents",
+                                                   "customerUpdatedEvent",
                                                    payload);
                            }
                    });
diff --git 
a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql 
b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
index 81fc5bf..03469b4 100644
--- a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
@@ -21,7 +21,7 @@
 -- Table wada_sms_gateway_configurations
 -- -----------------------------------------------------
 CREATE TABLE wada_sms_gateway_configurations (
-  id INT(45) NOT NULL AUTO_INCREMENT,
+  id INT NOT NULL AUTO_INCREMENT,
   identifier VARCHAR(45) NULL DEFAULT NULL,
   account_sid VARCHAR(255) NOT NULL,
   auth_token VARCHAR(255) NOT NULL,
@@ -63,7 +63,7 @@ INSERT INTO wada_email_gateway_configurations VALUES ('1', 
'DEFAULT', 'smtp.gmai
 
 /*Insert default template for supported events*/
 INSERT INTO wada_templates VALUES 
('1','customerCreatedEvent','DEFAULT','Account created','Your account has been 
created','template');
-INSERT INTO wada_templates VALUES 
('2','customerUpdatedEvents','DEFAULT','Account updated','Your account has been 
Updated','template');
+INSERT INTO wada_templates VALUES 
('2','customerUpdatedEvent','DEFAULT','Account updated','Your account has been 
Updated','template');
 INSERT INTO wada_templates VALUES 
('3','customerActivatedEvent','DEFAULT','Account Activated','Your account has 
been Activated','template');
 INSERT INTO wada_templates VALUES 
('4','customerLockedEvent','DEFAULT','Account Locked','Your account has been 
Locked','template');
 INSERT INTO wada_templates VALUES 
('5','customerUnlockedEvent','DEFAULT','Account unlocked','Your account has 
been Unlocked','template');
@@ -73,3 +73,4 @@ INSERT INTO wada_templates VALUES 
('8','contactDetailsChangedEvent','DEFAULT','C
 INSERT INTO wada_templates VALUES 
('9','addressChangedEvent','DEFAULT','Residence address has been changed','Your 
address has been changed successfully','template');
 
 INSERT INTO wada_templates VALUES ('10','sample','DEFAULT','Test 
Subject','Talk is cheap! Show me the code','template');
+

Reply via email to