Email test Connector using Bonitasoft 6.2.3

1
0
-1

Hi,

When testing an email connector i have an error when i hit the test button to test if the email had been opened by Bonitasoft saying :

"java.lang.reflect.InvocationTargetException
org.bonitasoft.engine.bpm.connector.ConnectorExecutionException: org.bonitasoft.engine.core.connector.exception.SConnectorException: org.bonitasoft.engine.core.connector.exception.SConnectorException: org.bonitasoft.engine.connector.exception.SConnectorException: java.lang.NullPointerException"

Can someone help me please?
How can i solve it to get the email confirmation by Bonitasoft?

Thanking you in advance for any help.

1 answer

1
0
-1

Hello ryanphenix11

Are you using java objects or methods in some point of your connector?

Comments

Submitted by ryanphenix11 on Sat, 03/15/2014 - 02:24

hello

Thanking you for just replying me.

yes there are some java codes when you implement the connector.

I have follow a video which was made in French here:

http://fr.bonitasoft.com/ressources/videos/creez-votre-propre-connecteur....

if you need further information to help me please ask.

I put it here what i have use in the java code:

/**
*
*/
package org.mycompany.connector;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;

import javax.mail.Flags;
import javax.mail.Flags.Flag;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;

import org.bonitasoft.engine.connector.ConnectorException;


/**
*The connector execution will follow the steps
* 1 - setInputParameters() --> the connector receives input parameters values
* 2 - validateInputParameters() --> the connector can validate input parameters values
* 3 - connect() --> the connector can establish a connection to a remote server (if necessary)
* 4 - executeBusinessLogic() --> execute the connector
* 5 - getOutputParameters() --> output are retrieved from connector
* 6 - disconnect() --> the connector can close connection to remote server (if any)
*/
public class EmailReceiverConnector1Impl extends
AbstractEmailReceiverConnector1Impl {

2 Logger logger = Logger.getLogger("org.bonitasoft.emailtest");
private Store emailStore;
private Folder inbox;

@Override
protected void executeBusinessLogic() throws ConnectorException{
//Get access to the connector input parameters
//getEmailHost();
//getAccountUsername();
//getAccountPassword();

List mails = new ArrayList>();
try {
Message[] messages = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
for (Message message : messages) {
HashMap mailMap = new HashMap();
mailMap.put("subject", message.getSubject());
if (message.isMimeType("Multipart/*")) {
Multipart multipart = (Multipart) message.getContent();
for (int i = 0; i < multipart.getCount(); i++) {
if (multipart.getBodyPart(i).isMimeType("text/plain")) {
mailMap.put("body)",(String) multipart.getBodyPart(i).getContent());

}
}
}
mails.add(mailMap);
message.setFlag(Flag.SEEN, true);
}
setEmails(mails);
} catch (Exception e) {
logger.severe(e.getMessage());
setEmails(mails);
}


//WARNING : Set the output of the connector execution. If outputs are not set, connector fails
//setEmails(emails);

}

@Override
public void connect() throws ConnectorException{
//[Optional] Open a connection to remote server
Properties properties = new Properties();
properties.setProperty("mail.store.protocol","imaps");

Session session = Session.getDefaultInstance(properties);
try {
emailStore = session.getStore("imaps");
emailStore.connect(getEmailHost(), getAccountUsername(),
getAccountPassword());
inbox = emailStore.getFolder("Inbox");
inbox.open(Folder.READ_WRITE);
} catch (Exception e) {
logger.severe("Failed to get store - " + e.getMessage());
throw new ConnectorException(e);
}

}

@Override
public void disconnect() throws ConnectorException{
//[Optional] Close connection to remote server
try {
inbox.close(false);
emailStore.close();
} catch (MessagingException e) {
throw new ConnectorException(e);
}


}

}

Notifications