You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/12/16 06:52:08 UTC

[james-project] 01/08: JAMES-3431 [REFACTORING] Extract SMTP parameter parsing

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 66b5e3303726c2c1368e4b5c928af0d625fb4435
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Dec 10 10:55:35 2020 +0700

    JAMES-3431 [REFACTORING] Extract SMTP parameter parsing
---
 .../james/protocols/smtp/core/RcptCmdHandler.java  | 26 +++++++++++++---------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
index 93ce9d6..42769a8 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
@@ -27,6 +27,7 @@ import java.util.StringTokenizer;
 
 import javax.inject.Inject;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.MaybeSender;
 import org.apache.james.metrics.api.MetricFactory;
@@ -163,21 +164,15 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme
                     rcptOptionString, " ");
             while (optionTokenizer.hasMoreElements()) {
                 String rcptOption = optionTokenizer.nextToken();
-                int equalIndex = rcptOption.indexOf('=');
-                String rcptOptionName = rcptOption;
-                String rcptOptionValue = "";
-                if (equalIndex > 0) {
-                    rcptOptionName = rcptOption.substring(0, equalIndex)
-                            .toUpperCase(Locale.US);
-                    rcptOptionValue = rcptOption.substring(equalIndex + 1);
-                }
+                Pair<String, String> parameter = parseParameter(rcptOption);
                 // Unexpected option attached to the RCPT command
-                LOGGER.debug("RCPT command had unrecognized/unexpected option {} with value {}{}", rcptOptionName, rcptOptionValue, getContext(session, recipientAddress, recipient));
+                LOGGER.debug("RCPT command had unrecognized/unexpected option {} with value {}{}",
+                    parameter.getKey(), parameter.getValue(), getContext(session, recipientAddress, recipient));
 
                 return new SMTPResponse(
                         SMTPRetCode.PARAMETER_NOT_IMPLEMENTED,
                         "Unrecognized or unsupported option: "
-                                + rcptOptionName);
+                                + parameter.getKey());
             }
             optionTokenizer = null;
         }
@@ -218,6 +213,17 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme
         return rawHook.doRcpt(session, sender, session.getAttachment(CURRENT_RECIPIENT, State.Transaction).orElse(MailAddress.nullSender()));
     }
 
+    private Pair<String, String> parseParameter(String rcptOption) {
+        int equalIndex = rcptOption.indexOf('=');
+        if (equalIndex > 0) {
+            return Pair.of(rcptOption.substring(0, equalIndex)
+                    .toUpperCase(Locale.US),
+                rcptOption.substring(equalIndex + 1));
+        } else {
+            return Pair.of(rcptOption, "");
+        }
+    }
+
     protected String getDefaultDomain() {
         return "localhost";
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org