Author: lhein
Date: Fri Sep 10 08:19:51 2010
New Revision: 995696

URL: http://svn.apache.org/viewvc?rev=995696&view=rev
Log:
cleaned up code and added further flexible configuration possibilities for the 
connection attributes
(see SMXCOMP-767)

Modified:
    
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java
    
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java
    
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/utils/MailConnectionConfiguration.java

Modified: 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java?rev=995696&r1=995695&r2=995696&view=diff
==============================================================================
--- 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java
 (original)
+++ 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java
 Fri Sep 10 08:19:51 2010
@@ -58,9 +58,6 @@ public class MailSenderEndpoint extends 
     private Map<String, String> customProperties = new HashMap<String, 
String>();
     private IgnoreList ignoreMessageProperties = new IgnoreList();
 
-    public static final String MAIL_USERNAME = 
"org.apache.servicemix.mail.username";
-    public static final String MAIL_PASSWORD = 
"org.apache.servicemix.mail.password";
-
     /*
      * (non-Javadoc)
      * @see org.apache.servicemix.common.Endpoint#validate()
@@ -142,42 +139,72 @@ public class MailSenderEndpoint extends 
     }
 
     private String getUsername(NormalizedMessage in) {
-        if (in.getProperty(MAIL_USERNAME) != null) {
-            return (String)in.getProperty(MAIL_USERNAME);
+        if (in.getProperty(AbstractMailMarshaler.MSG_TAG_USER) != null) {
+            return (String)in.getProperty(AbstractMailMarshaler.MSG_TAG_USER);
         } else {
             return config.getUsername();
         }
     }
 
     private String getPassword(NormalizedMessage in) {
-        if (in.getProperty(MAIL_PASSWORD) != null) {
-            return (String)in.getProperty(MAIL_PASSWORD);
+        if (in.getProperty(AbstractMailMarshaler.MSG_TAG_PASSWORD) != null) {
+            return 
(String)in.getProperty(AbstractMailMarshaler.MSG_TAG_PASSWORD);
         } else {
             return config.getPassword();
         }
     }
 
+    private String getProtocol(NormalizedMessage in) {
+        if (in.getProperty(AbstractMailMarshaler.MSG_TAG_PROTOCOL) != null) {
+            return 
(String)in.getProperty(AbstractMailMarshaler.MSG_TAG_PROTOCOL);
+        } else {
+            return config.getProtocol();
+        }
+    }
+
+    private String getHost(NormalizedMessage in) {
+        if (in.getProperty(AbstractMailMarshaler.MSG_TAG_HOST) != null) {
+            return (String)in.getProperty(AbstractMailMarshaler.MSG_TAG_HOST);
+        } else {
+            return config.getHost();
+        }
+    }
+
+    private int getPort(NormalizedMessage in) {
+        if (in.getProperty(AbstractMailMarshaler.MSG_TAG_PORT) != null) {
+            return (Integer)in.getProperty(AbstractMailMarshaler.MSG_TAG_PORT);
+        } else {
+            return config.getPort();
+        }
+    }
+
     private void sendMail(MessageExchange exchange, NormalizedMessage in) 
throws Exception {
         Session session;
         Properties props = MailUtils.getPropertiesForProtocol(this.config, 
this.customTrustManagers);
         props.put("mail.debug", isDebugMode() ? "true" : "false");
 
+        String user = getUsername(in);
+        String passwd = getPassword(in);
+        String protocol = getProtocol(in);
+        String host = getHost(in);
+        int port = getPort(in);
+
         // apply the custom properties
         applyCustomProperties(props);
 
         // Get session
-        session = Session.getInstance(props, config.getAuthenticator());
+        session = Session.getInstance(props, config.getAuthenticator(user, 
passwd));
 
         // debug the session
         session.setDebug(this.debugMode);
 
         // get the transport from session
-        Transport transport = session.getTransport(config.getProtocol());
+        Transport transport = session.getTransport(protocol);
 
         // Connect only once here
         // Transport.send() disconnects after each send
         // Usually, no username and password is required for SMTP
-        transport.connect(config.getHost(), config.getPort(), getUsername(in), 
getPassword(in));
+        transport.connect(host, port, user, passwd);
 
         // Define message
         MimeMessage msg = new MimeMessage(session);

Modified: 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java?rev=995696&r1=995695&r2=995696&view=diff
==============================================================================
--- 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java
 (original)
+++ 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java
 Fri Sep 10 08:19:51 2010
@@ -158,6 +158,31 @@ public abstract class AbstractMailMarsha
     public static final String DEFAULT_SENDER = "no-re...@localhost";
 
     /**
+     * this tag is used in normalized messages to represent the user which 
owns the mail account
+     */
+    public static final String MSG_TAG_USER = 
"org.apache.servicemix.mail.username";
+
+    /**
+     * this tag is used in normalized messages to represent the password of 
the mail account
+     */
+    public static final String MSG_TAG_PASSWORD = 
"org.apache.servicemix.mail.password";
+
+    /**
+     * this tag is used in normalized messages to represent the mail server 
hostname
+     */
+    public static final String MSG_TAG_HOST = 
"org.apache.servicemix.mail.host";
+
+    /**
+     * this tag is used in normalized messages to represent the used protocol
+     */
+    public static final String MSG_TAG_PROTOCOL = 
"org.apache.servicemix.mail.protocol";
+
+    /**
+     * this tag is used in normalized messages to represent the port number 
used for mail server
+     */
+    public static final String MSG_TAG_PORT = 
"org.apache.servicemix.mail.port";
+
+    /**
      * the dummy subject - set if no subject was provided
      */
     public static final String DUMMY_SUBJECT = "no subject";

Modified: 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/utils/MailConnectionConfiguration.java
URL: 
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/utils/MailConnectionConfiguration.java?rev=995696&r1=995695&r2=995696&view=diff
==============================================================================
--- 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/utils/MailConnectionConfiguration.java
 (original)
+++ 
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/utils/MailConnectionConfiguration.java
 Fri Sep 10 08:19:51 2010
@@ -127,12 +127,23 @@ public class MailConnectionConfiguration
                || this.protocol.equalsIgnoreCase("imaps");
     }
 
-    /**
+     /**
      * returns an authenticator object for use in sessions
-     * 
+     *
      * @return  the authenticator object
      */
     public Authenticator getAuthenticator() {
+        return getAuthenticator(getUsername(), getPassword());
+    }
+
+    /**
+     * returns an authenticator object for use in sessions
+     *
+     * @param user  the user name
+     * @param password  the password
+     * @return  the authenticator object
+     */
+    public Authenticator getAuthenticator(final String user, final String 
password) {
         return new Authenticator() {
             /*
              * (non-Javadoc)
@@ -141,7 +152,7 @@ public class MailConnectionConfiguration
              */
             @Override
             protected PasswordAuthentication getPasswordAuthentication() {
-                return new PasswordAuthentication(getUsername(), 
getPassword());
+                return new PasswordAuthentication(user, password);
             }
         };
     }


Reply via email to