Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified EmailConnectorMigrationApp.mpr
Binary file not shown.
46 changes: 28 additions & 18 deletions javasource/email_connector/actions/CheckServerConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import com.mendix.datahub.connector.email.model.ReceiveEmailAccount;
import com.mendix.datahub.connector.email.model.SendEmailAccount;
import com.mendix.datahub.connector.email.service.EmailServiceWorker;
import com.mendix.datahub.connector.email.utils.ReceiveMailsException;
import com.mendix.datahub.connector.email.utils.SendMailsException;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.webui.CustomJavaAction;
Expand Down Expand Up @@ -44,7 +44,7 @@ public java.lang.Void executeAction() throws Exception

// BEGIN USER CODE
if (this.EmailAccount == null) {
throw new ReceiveMailsException("EmailAccount cannot be null.");
throw new EmailConnectorException(Error.EMPTY_EMAIL_ACCOUNT.getMessage());
}
var finalErrorMsg = new StringBuilder();

Expand All @@ -53,7 +53,7 @@ public java.lang.Void executeAction() throws Exception

if (!isIncomingServerConnected || !isOutgoingServerConnected)
{
throw new CoreException(finalErrorMsg.toString());
throw new EmailConnectorException(finalErrorMsg.toString());
}
return null;
// END USER CODE
Expand All @@ -69,23 +69,27 @@ public java.lang.String toString()
}

// BEGIN EXTRA CODE
private boolean checkIncomingServerConnection(StringBuilder finalErrorMsg) throws ReceiveMailsException, CoreException {
private boolean checkIncomingServerConnection(StringBuilder finalErrorMsg) throws EmailConnectorException, CoreException {
var isIncomingServerConnected = false;
var incomingEmailAccounts = Core.retrieveByPath(getContext(), this.EmailAccount.getMendixObject(), IncomingEmailConfiguration.MemberNames.IncomingEmailConfiguration_EmailAccount.toString());
if(Boolean.TRUE.equals(this.EmailAccount.getisIncomingEmailConfigured()) && !incomingEmailAccounts.isEmpty()) {

var incomingEmailAccount = IncomingEmailConfiguration.initialize(getContext(),incomingEmailAccounts.get(0));
var account = new ReceiveEmailAccount(getProtocol(incomingEmailAccount.getIncomingProtocol()), incomingEmailAccount.getServerHost(), incomingEmailAccount.getServerPort(), this.EmailAccount.getUsername(), Microflows.decrypt(getContext(), this.EmailAccount.getPassword())); try
try
{
var incomingEmailAccount = IncomingEmailConfiguration.initialize(getContext(),incomingEmailAccounts.get(0));
if (incomingEmailAccount.getServerPort() == null)
throw new EmailConnectorException(Error.EMPTY_SERVER_PORT.getMessage());
var account = new ReceiveEmailAccount(getProtocol(incomingEmailAccount.getIncomingProtocol()), incomingEmailAccount.getServerHost(), incomingEmailAccount.getServerPort(), this.EmailAccount.getUsername(), Microflows.decrypt(getContext(), this.EmailAccount.getPassword()));

MxMailMapper.setReceiveAccountConfigurations(this.EmailAccount, account);
var emailServiceWorker = new EmailServiceWorker(account);
isIncomingServerConnected = emailServiceWorker.isConnected();
if(!isIncomingServerConnected)
finalErrorMsg.append("Connection with incoming server is failed. ");
finalErrorMsg.append(Error.INCORRECT_INCOMING_CONFIG.getMessage());
}
catch (ReceiveMailsException | SendMailsException e) {
finalErrorMsg.append(String.format("Connection with incoming server is failed with error %s ", e.getMessage()));
Core.getLogger(Constants.getLogNode()).error("Error while connecting incoming server" , e);
catch (NullPointerException e) {
finalErrorMsg.append(String.format(Error.INVALID_INCOMING_CONFIG.getMessage(), e.getMessage()));
Core.getLogger(Constants.getLogNode()).error(Error.INCORRECT_INCOMING_CONFIG.getMessage() , e);
}

}
Expand All @@ -95,22 +99,28 @@ private boolean checkIncomingServerConnection(StringBuilder finalErrorMsg) throw
return isIncomingServerConnected;
}

private boolean checkOutgoingServerConnection(StringBuilder finalErrorMsg) throws ReceiveMailsException, CoreException {
private boolean checkOutgoingServerConnection(StringBuilder finalErrorMsg) throws EmailConnectorException, CoreException {
var isOutgoingServerConnected = false;
var outgoingEmailAccounts = Core.retrieveByPath(getContext(), this.EmailAccount.getMendixObject(), OutgoingEmailConfiguration.MemberNames.OutgoingEmailConfiguration_EmailAccount.toString());
if(Boolean.TRUE.equals(this.EmailAccount.getisOutgoingEmailConfigured()) && !outgoingEmailAccounts.isEmpty()) {
var outgoingEmailAccount = OutgoingEmailConfiguration.initialize(getContext(),outgoingEmailAccounts.get(0));
var account = new SendEmailAccount(outgoingEmailAccount.getServerHost(), outgoingEmailAccount.getServerPort(), this.EmailAccount.getUsername(), Microflows.decrypt(getContext(), this.EmailAccount.getPassword())); try
try
{
var outgoingEmailAccount = OutgoingEmailConfiguration.initialize(getContext(),outgoingEmailAccounts.get(0));
if (outgoingEmailAccount.getOutgoingProtocol() == null)
throw new EmailConnectorException(Error.EMPTY_PROTOCOL.getMessage());
if (outgoingEmailAccount.getServerPort() == null)
throw new EmailConnectorException(Error.EMPTY_SERVER_PORT.getMessage());
var account = new SendEmailAccount(outgoingEmailAccount.getServerHost(), outgoingEmailAccount.getServerPort(), this.EmailAccount.getUsername(), Microflows.decrypt(getContext(), this.EmailAccount.getPassword()));

MxMailMapper.setSendAccountConfigurations(this.EmailAccount, account,null,null,context());
var emailServiceWorker = new EmailServiceWorker(account);
isOutgoingServerConnected = emailServiceWorker.isConnected();
if(!isOutgoingServerConnected)
finalErrorMsg.append("Connection with outgoing server is failed.");
finalErrorMsg.append(Error.INCORRECT_OUTGOING_CONFIG.getMessage());
}
catch (ReceiveMailsException | SendMailsException e) {
finalErrorMsg.append(String.format("Connection with outgoing server is failed with error %s ", e.getMessage()));
Core.getLogger(Constants.getLogNode()).error("Error while connecting outgoing server" , e);
catch (NullPointerException e) {
finalErrorMsg.append(String.format(Error.INVALID_OUTGOING_CONFIG.getMessage(), e.getMessage()));
Core.getLogger(Constants.getLogNode()).error(Error.INCORRECT_OUTGOING_CONFIG.getMessage() , e);
}
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@

import com.mendix.core.Core;
import com.mendix.core.objectmanagement.member.MendixString;
import com.mendix.datahub.connector.email.utils.SendMailsException;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObjectMember;
import com.mendix.webui.CustomJavaAction;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import email_connector.implementation.MxMailMapper;
import encryption.proxies.microflows.Microflows;
import mxmodelreflection.TokenReplacer;
import java.util.List;
import java.util.Map;
Expand All @@ -44,7 +44,7 @@ public IMendixObject executeAction() throws Exception

// BEGIN USER CODE
if (this.EmailTemplate == null)
throw new SendMailsException("Email template object cannot be null");
throw new EmailConnectorException(Error.EMPTY_EMAIL_TEMPLATE.getMessage());

List<IMendixObject> tokenList = Core.retrieveByPath(getContext(), this.EmailTemplate.getMendixObject(), email_connector.proxies.EmailTemplate.MemberNames.EmailTemplate_Token.toString());
var emailMessageFromTemplate = MxMailMapper.getEmailMessageFromTemplate(getContext(), this.EmailTemplate, this.Queued);
Expand Down
5 changes: 3 additions & 2 deletions javasource/email_connector/actions/GetAutoConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
package email_connector.actions;

import com.mendix.datahub.connector.email.model.autoconfig.AutoConfiguration;
import com.mendix.datahub.connector.email.utils.ReceiveMailsException;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.webui.CustomJavaAction;
Expand All @@ -31,7 +32,7 @@ public IMendixObject executeAction() throws Exception
{
// BEGIN USER CODE
if (this.EmailID == null || this.EmailID.isBlank())
throw new ReceiveMailsException("EmailID cannot be empty");
throw new EmailConnectorException(Error.EMPTY_EMAIL_ID.getMessage());
var emailProviders = AutoConfiguration.getEmailProvider(this.EmailID);
var mxEmailProvider = new email_connector.proxies.EmailProvider(getContext());
MxMailMapper.getMappedEmailProvider(getContext(), emailProviders, mxEmailProvider);
Expand Down
5 changes: 3 additions & 2 deletions javasource/email_connector/actions/GetBaseDNList.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
package email_connector.actions;

import com.mendix.datahub.connector.email.model.LDAPConfiguration;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.datahub.connector.email.utils.LDAPHelper;
import com.mendix.datahub.connector.email.utils.ReceiveMailsException;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.webui.CustomJavaAction;
Expand All @@ -37,7 +38,7 @@ public java.util.List<IMendixObject> executeAction() throws Exception

// BEGIN USER CODE
if (this.LDAPConfiguration == null)
throw new ReceiveMailsException("LDAPConfiguration cannot be null.");
throw new EmailConnectorException(Error.EMPTY_LDAP_CONFIG.getMessage());

java.util.List<IMendixObject> newList = new ArrayList<>();
var ldapConfiguration = new LDAPConfiguration();
Expand Down
7 changes: 4 additions & 3 deletions javasource/email_connector/actions/GetFolderNames.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@

import com.mendix.datahub.connector.email.model.ReceiveEmailAccount;
import com.mendix.datahub.connector.email.service.EmailServiceWorker;
import com.mendix.datahub.connector.email.utils.ReceiveMailsException;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.webui.CustomJavaAction;
Expand Down Expand Up @@ -39,9 +40,9 @@ public java.util.List<IMendixObject> executeAction() throws Exception

// BEGIN USER CODE
if (this.MxEmailAccount == null)
throw new ReceiveMailsException("MxEmailAccount cannot be null.");
throw new EmailConnectorException(Error.EMPTY_EMAIL_ACCOUNT.getMessage());
if (Boolean.FALSE.equals(this.MxEmailAccount.getisIncomingEmailConfigured()) || this.MxEmailAccount.getIncomingEmailConfiguration_EmailAccount() == null )
throw new ReceiveMailsException("Incoming server is not configured");
throw new EmailConnectorException(Error.EMPTY_INCOMING_EMAIL_CONFIG.getMessage());
java.util.List<IMendixObject> newList = new ArrayList<>();
var account = new ReceiveEmailAccount(getProtocol(this.MxEmailAccount.getIncomingEmailConfiguration_EmailAccount().getIncomingProtocol()), this.MxEmailAccount.getIncomingEmailConfiguration_EmailAccount().getServerHost(), this.MxEmailAccount.getIncomingEmailConfiguration_EmailAccount().getServerPort(), this.MxEmailAccount.getUsername(), Microflows.decrypt(getContext(), this.MxEmailAccount.getPassword())); MxMailMapper.setReceiveAccountConfigurations(this.MxEmailAccount, account);
var emailServiceWorker = new EmailServiceWorker(account);
Expand Down
23 changes: 12 additions & 11 deletions javasource/email_connector/actions/ReplaceEmailTemplateTokens.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
package email_connector.actions;

import com.mendix.core.objectmanagement.member.MendixString;
import com.mendix.datahub.connector.email.utils.SendMailsException;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.systemwideinterfaces.core.IMendixObjectMember;
Expand Down Expand Up @@ -46,18 +47,18 @@ public java.lang.Boolean executeAction() throws Exception
this.TokenList.add(mxmodelreflection.proxies.Token.initialize(getContext(), __TokenListElement));

// BEGIN USER CODE
if (this.email == null)
throw new SendMailsException("Email object cannot be empty");
if (this.email == null)
throw new EmailConnectorException(Error.EMPTY_EMAIL_OBJECT.getMessage());

Map<String, ? extends IMendixObjectMember<?>> members = this.email.getMendixObject().getMembers(getContext());
for (Entry<String, ? extends IMendixObjectMember<?>> entry : members.entrySet()) {
Map<String, ? extends IMendixObjectMember<?>> members = this.email.getMendixObject().getMembers(getContext());
for (Entry<String, ? extends IMendixObjectMember<?>> entry : members.entrySet()) {

IMendixObjectMember<?> m = entry.getValue();
if (m instanceof MendixString && m.hasWriteAccess(this.getContext())) {
MendixString member = (MendixString) m;
member.setValue(this.getContext(), TokenReplacer.replaceTokens(this.getContext(), member.getValue(this.getContext()), this.__TokenList, this.DataObject));
}
}
IMendixObjectMember<?> m = entry.getValue();
if (m instanceof MendixString && m.hasWriteAccess(this.getContext())) {
MendixString member = (MendixString) m;
member.setValue(this.getContext(), TokenReplacer.replaceTokens(this.getContext(), member.getValue(this.getContext()), this.__TokenList, this.DataObject));
}
}

return true;
// END USER CODE
Expand Down
15 changes: 10 additions & 5 deletions javasource/email_connector/actions/RetrieveEmailMessages.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@

package email_connector.actions;

import com.mendix.core.CoreException;
import com.mendix.datahub.connector.email.model.ReceiveEmailAccount;
import com.mendix.datahub.connector.email.service.EmailServiceWorker;
import com.mendix.datahub.connector.email.utils.ReceiveMailsException;
import com.mendix.datahub.connector.email.utils.EmailConnectorException;
import com.mendix.datahub.connector.email.utils.Error;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.systemwideinterfaces.core.IMendixObject;
import com.mendix.webui.CustomJavaAction;
Expand Down Expand Up @@ -44,14 +46,17 @@ public java.lang.Void executeAction() throws Exception

// BEGIN USER CODE
if (this.emailAccount == null)
throw new ReceiveMailsException("Account object cannot be null");
if (Boolean.FALSE.equals(this.emailAccount.getisIncomingEmailConfigured()) || this.emailAccount.getIncomingEmailConfiguration_EmailAccount() == null )
throw new ReceiveMailsException("Incoming server is not configured");
var serverAccount = new ReceiveEmailAccount(getProtocol(this.emailAccount.getIncomingEmailConfiguration_EmailAccount().getIncomingProtocol()), this.emailAccount.getIncomingEmailConfiguration_EmailAccount().getServerHost(), this.emailAccount.getIncomingEmailConfiguration_EmailAccount().getServerPort(), this.emailAccount.getUsername(), Microflows.decrypt(getContext(), this.emailAccount.getPassword())); MxMailMapper.setReceiveAccountConfigurations(this.emailAccount, serverAccount);
throw new EmailConnectorException(Error.EMPTY_EMAIL_ACCOUNT.getMessage());
if (Boolean.FALSE.equals(this.emailAccount.getisIncomingEmailConfigured()) || this.emailAccount.getIncomingEmailConfiguration_EmailAccount() == null)
throw new EmailConnectorException(Error.EMPTY_INCOMING_EMAIL_CONFIG.getMessage());

var serverAccount = new ReceiveEmailAccount(getProtocol(this.emailAccount.getIncomingEmailConfiguration_EmailAccount().getIncomingProtocol()), this.emailAccount.getIncomingEmailConfiguration_EmailAccount().getServerHost(), this.emailAccount.getIncomingEmailConfiguration_EmailAccount().getServerPort(), this.emailAccount.getUsername(), Microflows.decrypt(getContext(), this.emailAccount.getPassword()));
MxMailMapper.setReceiveAccountConfigurations(this.emailAccount, serverAccount);
var emailListener = new EmailListener(this.onEmailFetchMicroflow, this.onFetchCompleteMicroflow, this.onFetchErrorMicroflow, this.emailAccount);
var emailService = new EmailServiceWorker(serverAccount);
emailService.registerOnFetchEmailListener(emailListener);
emailService.fetchEmailsInBatch();

return null;
// END USER CODE
}
Expand Down
Loading