You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2012/04/20 07:57:01 UTC

svn commit: r1328204 - in /incubator/openmeetings/trunk/singlewebapp: WebContent/WEB-INF/ src/org/openmeetings/app/data/conference/ src/org/openmeetings/app/data/flvrecord/converter/ src/org/openmeetings/app/installation/ src/org/openmeetings/app/persi...

Author: solomax
Date: Fri Apr 20 05:57:01 2012
New Revision: 1328204

URL: http://svn.apache.org/viewvc?rev=1328204&view=rev
Log:
OPENMEETINGS-186 is fixed; code clean up.

Modified:
    incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java
    incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml Fri Apr 20 05:57:01 2012
@@ -70,12 +70,6 @@
 	<bean id="chatservice.service" class="org.openmeetings.app.remote.ChatService" />
 	<bean id="calendarservice.service" class="org.openmeetings.app.remote.CalendarService" />
 	<bean id="flvrecorderservice.service" class="org.openmeetings.app.remote.FLVRecorderService" />
-	<bean id="openmeetings.TaskExecutor"
-		class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
-		<property name="corePoolSize" value="5" />
-		<property name="maxPoolSize" value="10" />
-		<property name="queueCapacity" value="25" />
-	</bean>
 	<bean id="openmeetings.FlvRecorderConverterTask"
 		class="org.openmeetings.app.data.flvrecord.converter.FlvRecorderConverterTask" />
 	<bean id="openmeetings.FlvInterviewConverterTask"
@@ -233,20 +227,15 @@
 	<bean id="resetPasswordTemplate" class="org.openmeetings.app.templates.ResetPasswordTemplate" />
 
 	<!-- Thread Executor -->
-	<bean id="mailTaskExecutor"
+	<bean id="taskExecutor"
 		class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
 		<property name="corePoolSize" value="5" />
 		<property name="maxPoolSize" value="10" />
 		<property name="queueCapacity" value="25" />
 	</bean>
 
-	<bean id="mailThread" class="org.openmeetings.utils.mail.MailThread">
-		<constructor-arg ref="mailTaskExecutor" />
-	</bean>
-
-	<bean id="mailiCalThread" class="org.openmeetings.utils.mail.MailiCalThread">
-		<constructor-arg ref="mailTaskExecutor" />
-	</bean>
+	<bean id="mailThread" class="org.openmeetings.utils.mail.MailThread"/>
+	<bean id="mailiCalThread" class="org.openmeetings.utils.mail.MailiCalThread"/>
 
 	<!-- Axis2 Service Proxy's -->
 	<bean id="userWebService" class="org.openmeetings.axis.services.UserWebService" />

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java Fri Apr 20 05:57:01 2012
@@ -187,7 +187,7 @@ public class Invitationmanagement {
 
 					if (sendMail) {
 						this.sendInvitionLink(username, message, baseurl,
-								email, subject, invitation.getHash(),
+								email, us.getAdresses().getEmail(), subject, invitation.getHash(),
 								validFrom, validTo, language_id);
 					}
 
@@ -602,13 +602,14 @@ public class Invitationmanagement {
      * @param message
      * @param baseurl
      * @param email
+     * @param replyTo
      * @param subject
      * @param invitationsHash
      * @param dStart
      * @param dEnd
 	 * @param language_id   If it is >0 then "&language=" is added to the link
 	 */
-	private String sendInvitionLink(String username, String message,
+	private String sendInvitionLink(String replyTo, String username, String message,
 			String baseurl, String email, String subject,
 			String invitationsHash, Date dStart, Date dEnd, Long language_id) {
 		try {
@@ -632,7 +633,7 @@ public class Invitationmanagement {
 
 			System.out.println(template);
 
-			return mailHandler.sendMail(email, subject, template);
+			return mailHandler.sendMail(email, replyTo, subject, template);
 
 		} catch (Exception err) {
 			log.error("sendInvitationLink", err);
@@ -699,15 +700,17 @@ public class Invitationmanagement {
 	 * 
 	 * @param email
 	 * @param point
-	 * @param cancelling_person
+	 * @param replyTo
+	 * @param subject
+	 * @param mesage
 	 * @return
 	 */
 	// --------------------------------------------------------------------------------------------------------------
 	private String sendInvitationUpdateMail(String email, Appointment point,
-			String cancelling_person, String subject, String message) {
+			String replyTo, String subject, String message) {
 		log.debug("sendInvitationUpdateMail");
 		try {
-			return mailHandler.sendMail(email, subject, message);
+			return mailHandler.sendMail(email, replyTo, subject, message);
 		} catch (Exception e) {
 			log.error("sendInvitationUpdateMail : " + e.getMessage());
 		}
@@ -765,7 +768,7 @@ public class Invitationmanagement {
 
 		log.debug(handler.getICalDataAsString());
 
-		mailiCalThread.doSend(email, subject, handler.getIcalAsByteArray(),
+		mailiCalThread.doSend(email, user.getAdresses().getEmail(), subject, handler.getIcalAsByteArray(),
 				message);
 
 		return null;
@@ -817,7 +820,7 @@ public class Invitationmanagement {
 
 		log.debug(handler.getICalDataAsString());
 
-		mailiCalThread.doSend(email, subject, handler.getIcalAsByteArray(),
+		mailiCalThread.doSend(email, user.getAdresses().getEmail(), subject, handler.getIcalAsByteArray(),
 				message);
 
 		return null;
@@ -908,7 +911,7 @@ public class Invitationmanagement {
 
 			log.debug(handler.getICalDataAsString());
 
-			mailiCalThread.doSend(email, subject, handler.getIcalAsByteArray(),
+			mailiCalThread.doSend(email, user.getAdresses().getEmail(), subject, handler.getIcalAsByteArray(),
 					template);
 
 			return "success";
@@ -936,7 +939,7 @@ public class Invitationmanagement {
 	 */
 	public String sendInvitionLink(Long user_level, String username,
 			String message, String domain, String room, String roomtype,
-			String baseurl, String email, String subject, Long room_id,
+			String baseurl, String email, String replyTo, String subject, Long room_id,
 			Date starttime, Date endtime) {
 		try {
 			if (authLevelManagement.checkUserLevel(user_level)) {
@@ -955,7 +958,7 @@ public class Invitationmanagement {
 								invitation_link, default_lang_id, starttime,
 								endtime);
 
-				return mailHandler.sendMail(email, subject, template);
+				return mailHandler.sendMail(email, replyTo, subject, template);
 
 			}
 		} catch (Exception err) {

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewConverterTask.java Fri Apr 20 05:57:01 2012
@@ -22,14 +22,12 @@ import org.openmeetings.app.Openmeetings
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.core.task.TaskExecutor;
 
 public class FlvInterviewConverterTask {
 	private static final Logger log = Red5LoggerFactory.getLogger(FlvInterviewConverterTask.class, OpenmeetingsVariables.webAppRootKey);
 
 	@Autowired
-	@Qualifier("openmeetings.TaskExecutor")
 	private TaskExecutor taskExecutor;
 	@Autowired
 	private FlvInterviewConverter flvInterviewConverter;

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvInterviewReConverterTask.java Fri Apr 20 05:57:01 2012
@@ -22,7 +22,6 @@ import org.openmeetings.app.Openmeetings
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.core.task.TaskExecutor;
 
 public class FlvInterviewReConverterTask {
@@ -31,7 +30,6 @@ public class FlvInterviewReConverterTask
 			OpenmeetingsVariables.webAppRootKey);
 
 	@Autowired
-	@Qualifier("openmeetings.TaskExecutor")
 	private TaskExecutor taskExecutor;
 	@Autowired
 	private FlvInterviewConverter flvInterviewConverter;

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/flvrecord/converter/FlvRecorderConverterTask.java Fri Apr 20 05:57:01 2012
@@ -22,7 +22,6 @@ import org.openmeetings.app.Openmeetings
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.core.task.TaskExecutor;
 
 public class FlvRecorderConverterTask {
@@ -30,7 +29,6 @@ public class FlvRecorderConverterTask {
 	private static final Logger log = Red5LoggerFactory.getLogger(FlvRecorderConverterTask.class, OpenmeetingsVariables.webAppRootKey);
 
 	@Autowired
-	@Qualifier("openmeetings.TaskExecutor")
 	private TaskExecutor taskExecutor;
 	@Autowired
 	private FlvRecorderConverter flvRecorderConverter;

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/installation/ImportInitvalues.java Fri Apr 20 05:57:01 2012
@@ -546,6 +546,14 @@ public class ImportInitvalues {
 						null,
 						"Ldap domain selected by default in the login screen");
 		
+		// set inviter's email address as ReplyTo in email invitations
+		cfgManagement.addConfByKey(
+						3, 
+						"inviter.email.as.replyto", 
+						"1", 
+						null,
+						"Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set)");
+		
 		log.debug("Configuration ADDED");
 	}
 

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/persistence/beans/calendar/AppointmentReminderTyps.java Fri Apr 20 05:57:01 2012
@@ -21,20 +21,18 @@ package org.openmeetings.app.persistence
 import java.io.Serializable;
 import java.util.Date;
 
-import org.openmeetings.app.persistence.beans.user.Users;
-
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
 import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
+import org.openmeetings.app.persistence.beans.user.Users;
+
 
 @Entity
 @Table(name = "appointmentremindertyps")

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/MainService.java Fri Apr 20 05:57:01 2012
@@ -885,7 +885,7 @@ public class MainService implements IPen
 		Long user_level = userManagement.getUserLevelByID(users_id);
 		return invitationManagement.sendInvitionLink(user_level,
 				username, message, domain, room, roomtype, baseurl, email,
-				subject, room_id, null, null);
+				usersDao.getUser(users_id).getAdresses().getEmail(), subject, room_id, null, null);
 	}
 
 	/**

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailHandler.java Fri Apr 20 05:57:01 2012
@@ -19,7 +19,6 @@
 package org.openmeetings.utils.mail;
 
 import org.openmeetings.app.OpenmeetingsVariables;
-import org.openmeetings.app.data.basic.Configurationmanagement;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,11 +29,9 @@ import org.springframework.beans.factory
  * 
  */
 public class MailHandler {
-
 	private static final Logger log = Red5LoggerFactory.getLogger(
 			MailHandler.class, OpenmeetingsVariables.webAppRootKey);
-	@Autowired
-	private Configurationmanagement cfgManagement;
+	
 	@Autowired
 	private MailThread mailThread;
 
@@ -44,32 +41,24 @@ public class MailHandler {
 	 * @param toEmail
 	 * @param subj
 	 * @param message
-	 * @return
+	 * @return "success" or "Error: err description"
 	 */
 	public String sendMail(String toEmail, String subj, String message) {
+		return sendMail(toEmail, null, subj, message);
+	}
+	
+	/**
+	 * send mail to address
+	 * 
+	 * @param toEmail
+	 * @param replyTo
+	 * @param subj
+	 * @param message
+	 * @return "success" or "Error: err description"
+	 */
+	public String sendMail(String toEmail, String replyTo, String subj, String message) {
 		try {
-
-			// String smtpServer="smtp.xmlcrm.org";
-			String smtpServer = cfgManagement.getConfKey(3, "smtp_server")
-					.getConf_value();
-			String smtpPort = cfgManagement.getConfKey(3, "smtp_port")
-					.getConf_value();
-			String to = toEmail;
-			// String from = "openmeetings@xmlcrm.org";
-			String from = cfgManagement.getConfKey(3, "system_email_addr")
-					.getConf_value();
-			String subject = subj;
-			String body = message;
-
-			String emailUsername = cfgManagement
-					.getConfKey(3, "email_username").getConf_value();
-			String emailUserpass = cfgManagement
-					.getConfKey(3, "email_userpass").getConf_value();
-
-			// return send(smtpServer, smtpPort, to, from, subject, body);
-
-			mailThread.doSend(smtpServer, smtpPort, to, from, subject, body,
-					emailUsername, emailUserpass);
+			mailThread.doSend(toEmail, replyTo, subj, message);
 
 			return "success";
 
@@ -78,27 +67,4 @@ public class MailHandler {
 			return "Error: " + ex;
 		}
 	}
-
-	/**
-	 * @author o.becherer
-	 * @param recipients
-	 *            (List of valid mail adresses)
-	 * @param subject
-	 *            mailSubject
-	 * @param iCalMimeBody
-	 *            byte[] containing Icaldata Sending Ical Invitation
-	 */
-	// ---------------------------------------------------------------------------------------------
-	// public static void sendIcalMessage(String recipients, String subject,
-	// byte[] iCalMimeBody, String htmlBody) throws Exception {
-	// log.debug("sendIcalMessage");
-	//
-	// MailiCalThread mailiCalThread = new MailiCalThread(recipients, subject,
-	// iCalMimeBody, htmlBody);
-	//
-	// mailiCalThread.start();
-	//
-	// }
-	// ---------------------------------------------------------------------------------------------
-
 }

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailThread.java Fri Apr 20 05:57:01 2012
@@ -23,14 +23,15 @@ import java.util.Properties;
 
 import javax.activation.DataHandler;
 import javax.mail.Message;
+import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.Transport;
+import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 
 import org.openmeetings.app.OpenmeetingsVariables;
 import org.openmeetings.app.data.basic.Configurationmanagement;
-import org.openmeetings.app.persistence.beans.basic.Configuration;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,51 +43,92 @@ public class MailThread {
 			MailHandler.class, OpenmeetingsVariables.webAppRootKey);
 
 	@Autowired
-	private Configurationmanagement cfgManagement;
-
-	private final TaskExecutor taskExecutor;
+	protected Configurationmanagement cfgManagement;
+	@Autowired
+	protected TaskExecutor taskExecutor;
 
-	public MailThread(TaskExecutor taskExecutor) {
-		this.taskExecutor = taskExecutor;
+	public void doSend(String to, String subject, String body) {
+		doSend(to, null, subject, body);
 	}
 
-	public void doSend(String smtpServer, String smtpPort, String to,
-			String from, String subject, String body, String emailUsername,
-			String emailUserpass) {
-
-		this.taskExecutor.execute(new MailSenderTask(smtpServer, smtpPort, to,
-				from, subject, body, emailUsername, emailUserpass));
-
+	public void doSend(String to, String replyTo, String subject, String body) {
+		taskExecutor.execute(new MailSenderTask(to, replyTo, subject, body));
 	}
 
-	private class MailSenderTask implements Runnable {
+	protected class MailSenderTask implements Runnable {
 
-		private final String smtpServer;
-		private final String smtpPort;
-		private final String to;
-		private final String from;
+		private final String recipients;
+		private final String replyTo;
 		private final String subject;
 		private final String body;
-		private final String emailUsername;
-		private final String emailUserpass;
 
-		public MailSenderTask(String smtpServer, String smtpPort, String to,
-				String from, String subject, String body, String emailUsername,
-				String emailUserpass) {
-			this.smtpServer = smtpServer;
-			this.smtpPort = smtpPort;
-			this.to = to;
-			this.from = from;
+		public MailSenderTask(String recipients, String replyTo, String subject, String body) {
+			this.recipients = recipients;
+			this.replyTo = replyTo;
 			this.subject = subject;
 			this.body = body;
-			this.emailUsername = emailUsername;
-			this.emailUserpass = emailUserpass;
 		}
 
 		public void run() {
 			this.send();
 		}
 
+		protected MimeMessage getMessage() throws AddressException, MessagingException {
+			log.debug("getMessage");
+
+			// Evaluating Configuration Data
+			String smtpServer = cfgManagement.getConfValue("smtp_server", String.class, null);
+			String smtpPort = cfgManagement.getConfValue("smtp_port", String.class, "25");
+			String from = cfgManagement.getConfValue("system_email_addr", String.class, null);
+			String mailAuthUser = cfgManagement.getConfValue("email_username", String.class, null);
+			String mailAuthPass = cfgManagement.getConfValue("email_userpass", String.class, null);
+
+			Properties props = System.getProperties();
+
+			props.put("mail.smtp.host", smtpServer);
+			props.put("mail.smtp.port", smtpPort);
+
+			if ("1".equals(cfgManagement.getConfValue("mail.smtp.starttls.enable", String.class, "0"))) {
+				props.put("mail.smtp.starttls.enable", "true");
+			}
+
+			// Check for Authentification
+			Session session = null;
+			if (mailAuthUser != null && mailAuthUser.length() > 0
+					&& mailAuthPass != null && mailAuthPass.length() > 0) {
+				// use SMTP Authentication
+				props.put("mail.smtp.auth", "true");
+				session = Session.getDefaultInstance(props,
+						new SmtpAuthenticator(mailAuthUser, mailAuthPass));
+			} else {
+				// not use SMTP Authentication
+				session = Session.getDefaultInstance(props, null);
+			}
+
+			// Building MimeMessage
+			MimeMessage msg = new MimeMessage(session);
+			msg.setSubject(subject);
+			msg.setFrom(new InternetAddress(from));
+			if (replyTo != null && "1".equals(cfgManagement.getConfValue("inviter.email.as.replyto", String.class, "1"))) {
+				msg.setReplyTo(new InternetAddress[]{new InternetAddress(replyTo)});
+			}
+			msg.addRecipients(Message.RecipientType.TO,
+					InternetAddress.parse(recipients, false));
+			
+			return msg;
+		}
+		
+		protected MimeMessage setMessageBody(MimeMessage msg) throws Exception {
+			// -- Set the subject and body text --
+			msg.setDataHandler(new DataHandler(new ByteArrayDataSource(
+					body, "text/html; charset=\"utf-8\"")));
+
+			// -- Set some other header information --
+			msg.setHeader("X-Mailer", "XML-Mail");
+			msg.setSentDate(new Date());
+			
+			return msg;
+		}
 		/**
 		 * Sending a mail with given values.<br>
 		 * If the parameter "emailUsername" and "emailUserpass" is exist, use
@@ -103,65 +145,12 @@ public class MailThread {
 		 */
 		public String send() {
 			try {
-
 				log.debug("Message sending in progress");
-				log.debug("  From: " + from);
-				log.debug("  To: " + to);
+				log.debug("  To: " + recipients);
 				log.debug("  Subject: " + subject);
 
-				Properties props = System.getProperties();
-
-				// -- Attaching to default Session, or we could start a new one
-				// --
-				// smtpPort 25 or 587
-				props.put("mail.smtp.host", smtpServer);
-				props.put("mail.smtp.port", smtpPort);
-
-				Configuration conf = cfgManagement.getConfKey(3,
-						"mail.smtp.starttls.enable");
-				if (conf != null) {
-					if (conf.getConf_value().equals("1")) {
-						props.put("mail.smtp.starttls.enable", "true");
-					}
-				}
-
-				Session session = null;
-				if (emailUsername != null && emailUsername.length() > 0
-						&& emailUserpass != null && emailUserpass.length() > 0) {
-					// use SMTP Authentication
-					props.put("mail.smtp.auth", "true");
-					session = Session
-							.getDefaultInstance(props, new SmtpAuthenticator(
-									emailUsername, emailUserpass));
-				} else {
-					// not use SMTP Authentication
-					session = Session.getDefaultInstance(props, null);
-				}
-
-				// -- Create a new message --
-				Message msg = new MimeMessage(session);
-
-				// -- Set the FROM and TO fields --
-				msg.setFrom(new InternetAddress(from));
-				msg.setRecipients(Message.RecipientType.TO,
-						InternetAddress.parse(to, false));
-
-				// -- We could include CC recipients too --
-				// if (cc != null)
-				// msg.setRecipients(Message.RecipientType.CC
-				// ,InternetAddress.parse(cc, false));
-
-				// -- Set the subject and body text --
-				msg.setSubject(subject);
-				msg.setDataHandler(new DataHandler(new ByteArrayDataSource(
-						body, "text/html; charset=\"utf-8\"")));
-
-				// -- Set some other header information --
-				msg.setHeader("X-Mailer", "XML-Mail");
-				msg.setSentDate(new Date());
-
 				// -- Send the message --
-				Transport.send(msg);
+				Transport.send(setMessageBody(getMessage()));
 
 				return "success";
 			} catch (Exception ex) {

Modified: incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java?rev=1328204&r1=1328203&r2=1328204&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java Fri Apr 20 05:57:01 2012
@@ -19,161 +19,63 @@
 package org.openmeetings.utils.mail;
 
 import java.io.ByteArrayInputStream;
-import java.util.Properties;
 
 import javax.activation.DataHandler;
 import javax.mail.BodyPart;
-import javax.mail.Message;
 import javax.mail.Multipart;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
 
 import org.openmeetings.app.OpenmeetingsVariables;
-import org.openmeetings.app.data.basic.Configurationmanagement;
-import org.openmeetings.app.persistence.beans.basic.Configuration;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.task.TaskExecutor;
 
-public class MailiCalThread extends Thread {
+public class MailiCalThread extends MailThread {
 
 	private static final Logger log = Red5LoggerFactory.getLogger(
 			MailiCalThread.class, OpenmeetingsVariables.webAppRootKey);
 
-	@Autowired
-	private Configurationmanagement cfgManagement;
-
-	private final TaskExecutor taskExecutor;
-
-	public MailiCalThread(TaskExecutor taskExecutor) {
-		this.taskExecutor = taskExecutor;
-	}
-
-	public void doSend(String recipients, String subject, byte[] iCalMimeBody,
+	public void doSend(String recipients, String replyTo, String subject, byte[] iCalMimeBody,
 			String htmlBody) {
-
-		this.taskExecutor.execute(new MailSenderTask(recipients, subject,
+		taskExecutor.execute(new MailSenderTask(recipients, replyTo, subject,
 				iCalMimeBody, htmlBody));
 
 	}
 
-	private class MailSenderTask implements Runnable {
-
-		private final String recipients;
-		private final String subject;
+	protected class MailSenderTask extends MailThread.MailSenderTask {
 		private final byte[] iCalMimeBody;
 		private final String htmlBody;
 
-		public MailSenderTask(String recipients, String subject,
+		public MailSenderTask(String recipients, String replyTo, String subject,
 				byte[] iCalMimeBody, String htmlBody) {
-			super();
-			this.recipients = recipients;
-			this.subject = subject;
+			super(recipients, replyTo, subject, null);
 			this.iCalMimeBody = iCalMimeBody;
 			this.htmlBody = htmlBody;
 		}
 
-		public void run() {
-			try {
-
-				this.sendIcalMessage();
-
-			} catch (Exception err) {
-				log.error("MailSenderTask ", err);
-			}
-		}
-
-		/**
-		 * @author o.becherer
-		 * @param recipients
-		 *            (List of valid mail adresses)
-		 * @param subject
-		 *            mailSubject
-		 * @param iCalMimeBody
-		 *            byte[] containing Icaldata Sending Ical Invitation
-		 */
-		// ---------------------------------------------------------------------------------------------
-		public void sendIcalMessage() throws Exception {
-			log.debug("sendIcalMessage");
-
-			// Evaluating Configuration Data
-			String smtpServer = cfgManagement.getConfKey(3, "smtp_server")
-					.getConf_value();
-			String smtpPort = cfgManagement.getConfKey(3, "smtp_port")
-					.getConf_value();
-			// String from = "openmeetings@xmlcrm.org";
-			String from = cfgManagement.getConfKey(3, "system_email_addr")
-					.getConf_value();
-
-			String emailUsername = cfgManagement
-					.getConfKey(3, "email_username").getConf_value();
-			String emailUserpass = cfgManagement
-					.getConfKey(3, "email_userpass").getConf_value();
-
-			Properties props = System.getProperties();
-
-			props.put("mail.smtp.host", smtpServer);
-			props.put("mail.smtp.port", smtpPort);
-
-			Configuration conf = cfgManagement.getConfKey(3,
-					"mail.smtp.starttls.enable");
-			if (conf != null) {
-				if (conf.getConf_value().equals("1")) {
-					props.put("mail.smtp.starttls.enable", "true");
-				}
-			}
-
-			// Check for Authentification
-			Session session = null;
-			if (emailUsername != null && emailUsername.length() > 0
-					&& emailUserpass != null && emailUserpass.length() > 0) {
-				// use SMTP Authentication
-				props.put("mail.smtp.auth", "true");
-				session = Session.getDefaultInstance(props,
-						new SmtpAuthenticator(emailUsername, emailUserpass));
-			} else {
-				// not use SMTP Authentication
-				session = Session.getDefaultInstance(props, null);
-			}
-
-			// Building MimeMessage
-			MimeMessage mimeMessage = new MimeMessage(session);
-			mimeMessage.setSubject(subject);
-			mimeMessage.setFrom(new InternetAddress(from));
-			mimeMessage.addRecipients(Message.RecipientType.TO,
-					InternetAddress.parse(recipients, false));
-
+		@Override
+		protected MimeMessage setMessageBody(MimeMessage msg) throws Exception {
+			log.debug("setMessageBody for iCal message");
 			// -- Create a new message --
-			BodyPart msg = new MimeBodyPart();
-			msg.setDataHandler(new DataHandler(new ByteArrayDataSource(
-					htmlBody, "text/html; charset=\"utf-8\"")));
-
 			Multipart multipart = new MimeMultipart();
 
+			BodyPart html = new MimeBodyPart();
+			html.setDataHandler(new DataHandler(new ByteArrayDataSource(
+					htmlBody, "text/html; charset=\"utf-8\"")));
+
 			BodyPart iCalAttachment = new MimeBodyPart();
 			iCalAttachment.setDataHandler(new DataHandler(
-					new javax.mail.util.ByteArrayDataSource(
+					new ByteArrayDataSource(
 							new ByteArrayInputStream(iCalMimeBody),
 							"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
 
+			multipart.addBodyPart(html);
 			multipart.addBodyPart(iCalAttachment);
-			multipart.addBodyPart(msg);
-
-			mimeMessage.setContent(multipart);
-
-			// -- Set some other header information --
-			// mimeMessage.setHeader("X-Mailer", "XML-Mail");
-			// mimeMessage.setSentDate(new Date());
-
-			// Transport trans = session.getTransport("smtp");
-			Transport.send(mimeMessage);
 
+			msg.setContent(multipart);
+			return msg;
 		}
-
 	}
 }