diff --git a/.classpath b/.classpath
index ac5d2ad..dda1718 100644
--- a/.classpath
+++ b/.classpath
@@ -6,12 +6,6 @@
-
-
-
-
-
-
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 0e8e488..c8aa868 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -3,8 +3,10 @@
-
+
+ uses
+
diff --git a/pom.xml b/pom.xml
index f6d1e25..2b105f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
org.gcube.portlets.user
invite-friends-vre
war
- 1.0.1-SNAPSHOT
+ 1.1.0-SNAPSHOT
Invite Friends to VRE
scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}
@@ -53,6 +53,11 @@
+
+ org.gcube.common.portal
+ portal-manager
+ provided
+
com.google.gwt
gwt-servlet
@@ -71,6 +76,11 @@
${gwtVersion}
provided
+
+ org.gcube.portal
+ invites-common-library
+ [0.1.0-SNAPSHOT,)
+
com.github.gwtbootstrap
gwt-bootstrap
@@ -149,7 +159,7 @@
compile
- generateAsync
+
diff --git a/src/main/java/org/gcube/portlets/user/invitefriends/client/InviteServiceAsync.java b/src/main/java/org/gcube/portlets/user/invitefriends/client/InviteServiceAsync.java
new file mode 100644
index 0000000..a8a4dcb
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/invitefriends/client/InviteServiceAsync.java
@@ -0,0 +1,9 @@
+package org.gcube.portlets.user.invitefriends.client;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public interface InviteServiceAsync {
+
+ void sendInviteEmail(String name, String lastName, String email, AsyncCallback callback);
+
+}
diff --git a/src/main/java/org/gcube/portlets/user/invitefriends/server/InviteServiceImpl.java b/src/main/java/org/gcube/portlets/user/invitefriends/server/InviteServiceImpl.java
index cdca7eb..0d57aad 100644
--- a/src/main/java/org/gcube/portlets/user/invitefriends/server/InviteServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/invitefriends/server/InviteServiceImpl.java
@@ -1,26 +1,12 @@
package org.gcube.portlets.user.invitefriends.server;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-import javax.mail.Message;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager;
+import org.gcube.common.portal.PortalContext;
import org.gcube.portal.custom.communitymanager.OrganizationsUtil;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
+import org.gcube.portal.invites.InvitesManager;
import org.gcube.portlets.user.invitefriends.client.InviteService;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.nodes.Node;
-import org.jsoup.nodes.TextNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,10 +21,7 @@ import com.liferay.portal.util.PortalUtil;
public class InviteServiceImpl extends RemoteServiceServlet implements InviteService {
private final static Logger _log = LoggerFactory.getLogger(InviteServiceImpl.class);
- private final static String MAIL_SERVICE_HOST = "localhost";
- private final static String MAIL_SERVICE_PORT = "25";
- private static final String SENDER_EMAIL = "notificationSenderEmail";
-
+
/**
* the current ASLSession
* @return the session
@@ -61,44 +44,8 @@ public class InviteServiceImpl extends RemoteServiceServlet implements InviteSer
@Override
public Boolean sendInviteEmail(String name, String lastName, String email) throws IllegalArgumentException {
ASLSession aslSession = getASLSession();
- String vreName = aslSession.getGroupName();
String fromFullName = aslSession.getUserFullName();
-
- Properties props = System.getProperties();
- Session session = null;
- props.put("mail.smtp.host", MAIL_SERVICE_HOST);
- props.put("mail.smtp.port", MAIL_SERVICE_PORT);
- session = Session.getDefaultInstance(props);
- session.setDebug(true);
-
- try {
- MimeMessage message = new MimeMessage(session);
- message.setHeader("Content-Type", "text/plain; charset=UTF-8");
- // Set From: header field of the header.
- message.setFrom(new InternetAddress(getSenderEmail(), fromFullName));
- message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
- message.addRecipient(Message.RecipientType.CC, new InternetAddress(aslSession.getUserEmailAddress()));
-
- // Set Subject: header field
- message.setSubject("Join me on " + vreName);
-
- // Now set the actual message
- message.setText(getTextEmail(name, lastName, email, fromFullName, vreName));
-
- // Send message
- Transport.send(message);
- _log.debug("Sent message successfully to " + email );
- } catch (Exception mex) {
- mex.printStackTrace();
- _log.error("Sent message ERROR to " + email );
- return false;
- }
- return true;
- }
-
-
- private String getTextEmail(String name, String lastName, String email, String fromFullName, String vreName) {
String portalUrl = null;
String vreDescription = null;
long organizationId = getASLSession().getGroupId();
@@ -110,98 +57,12 @@ public class InviteServiceImpl extends RemoteServiceServlet implements InviteSer
_log.warn("While trying to send email for invitation to " + email);
return null;
}
-
- StringBuilder body = new StringBuilder();
-
- body.append("Dear " + name)
- .append(",\n")
- .append(fromFullName).append(" has invited you to " + vreName + ", you can find a brief description below:")
- .append("\n")
- .append("\n").append(convertHTML2Text(vreDescription))
- .append("\n\n")
- .append("To accept the invite just follow this link: " + portalUrl + "/group/data-e-infrastructure-gateway/join-new?orgid="+organizationId)
- .append("\n\n")
- .append("Please note: if you do not have an account yet, sign up first: " + portalUrl + "/web/guest/home?p_p_id=58&_58_struts_action=%2Flogin%2Fcreate_account")
- .append("\n\n\n\n")
- .append("WARNING / LEGAL TEXT: This message is intended only for the use of the individual or entity to which it is addressed and may contain")
- .append("information which is privileged, confidential, proprietary, or exempt from disclosure under applicable law. "
- + "If you are not the intended recipient or the person responsible for delivering the message to the intended recipient, "
- + "you are strictly prohibited from disclosing, distributing, copying, or in any way using this message.")
- .append("If you have received this communication in error, please notify the and destroy and delete any copies you may have received.");
-
- return body.toString();
-
- }
-
- /**
- * read the sender email for notifications name from a property file and returns it
- */
- private static String getSenderEmail() {
- //get the portles to look for from the property file
- Properties props = new Properties();
- String toReturn = "";
-
- try {
- String propertyfile = OrganizationsUtil.getTomcatFolder()+"conf/gcube-data.properties";
- File propsFile = new File(propertyfile);
- FileInputStream fis = new FileInputStream(propsFile);
- props.load( fis);
- toReturn = props.getProperty(SENDER_EMAIL);
- }
- //catch exception in case properties file does not exist
- catch(IOException e) {
- toReturn = "do-not-reply@d4science.org";
- _log.error("gcube-data.properties file not found under $CATALINA_HOME/conf dir, returning default Email" + toReturn);
- return toReturn;
- }
- _log.debug("Returning SENDER_EMAIL: " + toReturn );
- return toReturn;
- }
-
- /**
- * Convert html into simple text
- *
- */
- protected static String convertHTML2Text(String html) {
- if (html == null) {
- return null;
- }
- String removedMarkup = html.replaceAll("&", "&");
- removedMarkup = removedMarkup.replaceAll(">", ">");
- removedMarkup = removedMarkup.replaceAll("<", "<");
- String text = removedMarkup;
- try {
- Document document = Jsoup.parse(removedMarkup);
- Element body = document.body();
- text = buildStringFromNode(body).toString();
- }
- catch (Exception e) {
- _log.error("While converting HTML into text: " +e.getMessage());
- return removedMarkup;
- }
- return text;
+ String portalSenderEmail = PortalContext.getConfiguration().getSenderEmail();
+ return InvitesManager.getInstance().sendInviteEmail(aslSession, portalSenderEmail, portalUrl, fromFullName, lastName, email, vreDescription);
}
- private static StringBuffer buildStringFromNode(Node node) {
- StringBuffer buffer = new StringBuffer();
- if (node instanceof TextNode) {
- TextNode textNode = (TextNode) node;
- buffer.append(textNode.text().trim());
- }
+
- for (Node childNode : node.childNodes()) {
- buffer.append(buildStringFromNode(childNode));
- }
- if (node instanceof Element) {
- Element element = (Element) node;
- String tagName = element.tagName();
- if ("p".equals(tagName) || "br".equals(tagName) || "div".equals(tagName) || "h1".equals(tagName) || "h2".equals(tagName) || "h3".equals(tagName) || "h4".equals(tagName)) {
- buffer.append("\n");
- }
- }
-
- return buffer;
- }
}