/** * Will register message sending modules dynamically. This method is used to bind the notification sending * modules in to msg mgt component * * @param module MessageSendingModule */ protected void addNotificationSendingModule(NotificationSendingModule module) throws MessageRemovedException { ModuleConfiguration moduleConfiguration; if (StringUtils.isEmpty(module.getModuleName())) { if (log.isDebugEnabled()) { log.debug("Cannot register module without a valid module name"); } return; } if (log.isDebugEnabled()) { log.debug("Registering a message sending module " + module.getModuleName()); } if (configBuilder != null) { moduleConfiguration = configBuilder.getModuleConfigurations(module.getModuleName()); } else { moduleConfiguration = new ModuleConfiguration(); } try { module.init(moduleConfiguration); notificationSendingModules.add(module); } catch (NotificationManagementException e) { log.error("Error while initializing Notification sending module " + module.getModuleName(), e); } }
/** * Will register message sending modules dynamically. This method is used to bind the notification sending * modules in to msg mgt component * * @param module MessageSendingModule */ @Reference( name = "ldap.tenant.manager.listener.service", service = NotificationSendingModule.class, cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC, unbind = "removeNotificationSendingModule") protected void addNotificationSendingModule(NotificationSendingModule module) throws MessageRemovedException { ModuleConfiguration moduleConfiguration; if (StringUtils.isEmpty(module.getModuleName())) { if (log.isDebugEnabled()) { log.debug("Cannot register module without a valid module name"); } return; } if (log.isDebugEnabled()) { log.debug("Registering a message sending module " + module.getModuleName()); } if (configBuilder != null) { moduleConfiguration = configBuilder.getModuleConfigurations(module.getModuleName()); } else { moduleConfiguration = new ModuleConfiguration(); } try { module.init(moduleConfiguration); notificationSendingModules.add(module); } catch (NotificationManagementException e) { log.error("Error while initializing Notification sending module " + module.getModuleName(), e); } }
/** * This method read verification e-mail from Gmail inbox and returns the verification URL. * * @return verification redirection URL. * @throws Exception */ public static String readGmailInboxForVerification() throws Exception { boolean isEmailVerified = false; long waitTime = 10000; String pointBrowserURL = ""; Properties props = new Properties(); props.load(new FileInputStream(new File( TestConfigurationProvider.getResourceLocation("GREG") + File.separator + "axis2" + File.separator + "smtp.properties"))); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("imaps"); store.connect("smtp.gmail.com", emailAddress, java.nio.CharBuffer.wrap(emailPassword).toString()); Folder inbox = store.getFolder("inbox"); inbox.open(Folder.READ_WRITE); Thread.sleep(waitTime); long startTime = System.currentTimeMillis(); long endTime = 0; int count = 1; while (endTime - startTime < 180000 && !isEmailVerified) { Message[] messages = inbox.getMessages(); for (Message message : messages) { if (!message.isExpunged()) { try { log.info("Mail Subject:- " + message.getSubject()); if (message.getSubject().contains("EmailVerification")) { pointBrowserURL = getBodyFromMessage(message); isEmailVerified = true; } // Optional : deleting the mail message.setFlag(Flags.Flag.DELETED, true); } catch (MessageRemovedException e){ log.error("Could not read the message subject. Message is removed from inbox"); } } } endTime = System.currentTimeMillis(); Thread.sleep(waitTime); endTime += count*waitTime; count++; } inbox.close(true); store.close(); return pointBrowserURL; }
/** * This method read e-mails from Gmail inbox and find whether the notification of particular type is found. * * @param notificationType Notification types supported by publisher and store. * @return whether email is found for particular type. * @throws Exception */ public static boolean readGmailInboxForNotification(String notificationType) throws Exception { boolean isNotificationMailAvailable = false; long waitTime = 10000; Properties props = new Properties(); props.load(new FileInputStream(new File( TestConfigurationProvider.getResourceLocation("GREG") + File.separator + "axis2" + File.separator + "smtp.properties"))); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore("imaps"); store.connect("smtp.gmail.com", emailAddress, java.nio.CharBuffer.wrap(emailPassword).toString()); Folder inbox = store.getFolder("inbox"); inbox.open(Folder.READ_WRITE); Thread.sleep(waitTime); long startTime = System.currentTimeMillis(); long endTime = 0; int count = 1; while (endTime - startTime < 180000 && !isNotificationMailAvailable) { Message[] messages = inbox.getMessages(); for (Message message : messages) { if(!message.isExpunged()) { try { log.info("Mail Subject:- " + message.getSubject()); if (message.getSubject().contains(notificationType)) { isNotificationMailAvailable = true; } // Optional : deleting the mail message.setFlag(Flags.Flag.DELETED, true); } catch (MessageRemovedException e) { log.error("Could not read the message subject. Message is removed from inbox"); } } } endTime = System.currentTimeMillis(); Thread.sleep(waitTime); endTime += count*waitTime; count++; } inbox.close(true); store.close(); return isNotificationMailAvailable; }