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 2021/08/13 04:57:28 UTC

[james-project] branch master updated: [REFACTORING] Remove more REGEX usages (#587)

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


The following commit(s) were added to refs/heads/master by this push:
     new e92fe78  [REFACTORING] Remove more REGEX usages (#587)
e92fe78 is described below

commit e92fe7807ec94942ea690deaa77ef8e21eaf4955
Author: Tellier Benoit <bt...@linagora.com>
AuthorDate: Fri Aug 13 11:57:23 2021 +0700

    [REFACTORING] Remove more REGEX usages (#587)
---
 .../james/protocols/pop3/core/AbstractApopCmdHandler.java      |  3 ++-
 .../java/org/apache/james/protocols/smtp/SMTPResponse.java     |  5 +++--
 .../apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java |  2 --
 .../apache/james/utils/DelegatedPropertiesConfiguration.java   |  6 +++---
 .../main/java/org/apache/james/utils/PropertiesProvider.java   |  3 +--
 .../apache/james/mock/smtp/server/ExtendedMailFromCommand.java |  7 ++++++-
 .../org/apache/james/jmap/draft/model/CreationMessage.java     | 10 ++++++++--
 .../scala/org/apache/james/jmap/routes/DownloadRoutes.scala    |  2 +-
 .../scala/org/apache/james/jmap/routes/EventSourceRoutes.scala |  2 +-
 .../protocols/lib/netty/AbstractConfigurableAsyncServer.java   |  5 +++--
 10 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
index 06af37e..60d0cff 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 
 import javax.inject.Inject;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.james.core.Username;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.api.ProtocolSession.State;
@@ -58,7 +59,7 @@ public abstract class AbstractApopCmdHandler extends AbstractPassCmdHandler {
         String[] parts = null;
         boolean syntaxError = false;
         if (parameters != null) {
-            parts = parameters.split(" ");
+            parts = StringUtils.split(parameters, " ");
             if (parts.length != 2) {
                 syntaxError = true;
             }
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java
index 8c5f2b2..9c8eeec 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPResponse.java
@@ -22,6 +22,7 @@ package org.apache.james.protocols.smtp;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.james.protocols.api.AbstractResponse;
 
 /**
@@ -56,7 +57,7 @@ public class SMTPResponse extends AbstractResponse {
     
 
     private  static String extractCode(String raw) {
-        String[] args = raw.split(" ");
+        String[] args = StringUtils.split(raw, " ");
         if (args != null && args.length > 1) {
             return args[0];
             
@@ -66,7 +67,7 @@ public class SMTPResponse extends AbstractResponse {
     }
     
     private  static String extractResponse(String raw) {
-        String[] args = raw.split(" ");
+        String[] args = StringUtils.split(raw, " ");
         if (args != null && args.length > 1) {
             return args[2];
             
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
index 110c361..a56f3e1 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
@@ -32,7 +32,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Optional;
 import java.util.StringTokenizer;
-import java.util.regex.Pattern;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.core.Username;
@@ -82,7 +81,6 @@ public class AuthCmdHandler
     private static final Response AUTH_READY_PASSWORD_LOGIN = new SMTPResponse(SMTPRetCode.AUTH_READY, "UGFzc3dvcmQ6").immutable(); // base64 encoded "Password:
     private static final Response AUTH_FAILED = new SMTPResponse(SMTPRetCode.AUTH_FAILED, "Authentication Failed").immutable();
     private static final Response UNKNOWN_AUTH_TYPE = new SMTPResponse(SMTPRetCode.PARAMETER_NOT_IMPLEMENTED, "Unrecognized Authentication Type").immutable();
-    public static final Pattern LINE_BREAK_PATTERN = Pattern.compile("\r\n");
 
     private abstract static class AbstractSMTPLineHandler implements LineHandler<SMTPSession> {
 
diff --git a/server/container/guice/configuration/src/main/java/org/apache/james/utils/DelegatedPropertiesConfiguration.java b/server/container/guice/configuration/src/main/java/org/apache/james/utils/DelegatedPropertiesConfiguration.java
index d188cf1..c9a7f4d 100644
--- a/server/container/guice/configuration/src/main/java/org/apache/james/utils/DelegatedPropertiesConfiguration.java
+++ b/server/container/guice/configuration/src/main/java/org/apache/james/utils/DelegatedPropertiesConfiguration.java
@@ -44,10 +44,10 @@ import com.google.common.collect.ImmutableList;
 
 public class DelegatedPropertiesConfiguration implements Configuration {
 
-    private final String delimiter;
+    private final char delimiter;
     private final Configuration configuration;
 
-    DelegatedPropertiesConfiguration(String delimiter, Configuration configuration) {
+    DelegatedPropertiesConfiguration(char delimiter, Configuration configuration) {
         this.delimiter = delimiter;
         this.configuration = configuration;
     }
@@ -378,7 +378,7 @@ public class DelegatedPropertiesConfiguration implements Configuration {
         return Optional.ofNullable(value)
             .filter(s -> !StringUtils.isAllBlank(s))
             .map(notNullValue -> Stream
-                .of(StringUtils.strip(notNullValue, "\"").split(delimiter))
+                .of(StringUtils.split(StringUtils.strip(notNullValue, "\""), delimiter))
                 .map(String::trim)
                 .filter(s -> !StringUtils.isAllBlank(s)))
             .orElseGet(Stream::empty);
diff --git a/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java b/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java
index e9fb392..d07476f 100644
--- a/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java
+++ b/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java
@@ -48,7 +48,6 @@ public class PropertiesProvider {
 
     private static final Logger LOGGER = LoggerFactory.getLogger("org.apache.james.CONFIGURATION");
     private static final char COMMA = ',';
-    private static final String COMMA_STRING = ",";
 
     @VisibleForTesting
     public static PropertiesProvider forTesting() {
@@ -96,7 +95,7 @@ public class PropertiesProvider {
                 .setListDelimiterHandler(new DefaultListDelimiterHandler(COMMA))
                 .setFile(propertiesFile));
 
-        return new DelegatedPropertiesConfiguration(COMMA_STRING, builder.getConfiguration());
+        return new DelegatedPropertiesConfiguration(COMMA, builder.getConfiguration());
     }
 
     private Optional<File> getConfigurationFile(String fileName) {
diff --git a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ExtendedMailFromCommand.java b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ExtendedMailFromCommand.java
index d4a95ae..6d9cff7 100644
--- a/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ExtendedMailFromCommand.java
+++ b/server/mailet/mock-smtp-server/src/main/java/org/apache/james/mock/smtp/server/ExtendedMailFromCommand.java
@@ -29,7 +29,12 @@ import org.subethamail.smtp.server.BaseCommand;
 import org.subethamail.smtp.server.Session;
 import org.subethamail.smtp.util.EmailUtils;
 
+import com.google.common.base.CharMatcher;
+
 public class ExtendedMailFromCommand extends BaseCommand {
+
+    public static final CharMatcher NUMBER_MATCHER = CharMatcher.inRange('0', '9');
+
     public ExtendedMailFromCommand() {
         super("MAIL", "Specifies the sender.", "FROM: <sender> [ <parameters> ]");
     }
@@ -56,7 +61,7 @@ public class ExtendedMailFromCommand extends BaseCommand {
                 int sizec = largs.indexOf(" size=");
                 if (sizec > -1) {
                     String ssize = largs.substring(sizec + 6).trim();
-                    if (ssize.length() > 0 && ssize.matches("[0-9]+")) {
+                    if (ssize.length() > 0 && NUMBER_MATCHER.matchesAllOf(ssize)) {
                         size = Integer.parseInt(ssize);
                     }
                 }
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java
index 7103cb8..7e3b403 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java
@@ -433,8 +433,14 @@ public class CreationMessage {
         }
 
         public EmailUserAndDomain getEmailUserAndDomain() {
-            String[] splitAddress = email.get().split("@", 2);
-            return new EmailUserAndDomain(Optional.ofNullable(splitAddress[0]), Optional.ofNullable(splitAddress[1]));
+            int atIndex = email.get().indexOf('@');
+            if (atIndex < 0 || atIndex == email.get().length() - 1) {
+                return new EmailUserAndDomain(Optional.of(email.get()), Optional.empty());
+            }
+            String user = email.get().substring(0, atIndex);
+            String domain = email.get().substring(atIndex + 1);
+
+            return new EmailUserAndDomain(Optional.of(user), Optional.of(domain));
         }
 
         @Override
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala
index f66be65..70aab64 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/DownloadRoutes.scala
@@ -183,7 +183,7 @@ class AttachmentBlobResolver @Inject()(val attachmentManager: AttachmentManager)
 class MessagePartBlobResolver @Inject()(val messageIdFactory: MessageId.Factory,
                                         val messageIdManager: MessageIdManager) extends BlobResolver {
   private def asMessageAndPartId(blobId: BlobId): Try[(MessageId, PartId)] = {
-    blobId.value.value.split("_").toList match {
+    blobId.value.value.split('_').toList match {
       case List(messageIdString, partIdString) => for {
         messageId <- Try(messageIdFactory.fromString(messageIdString))
         partId <- PartId.parse(partIdString)
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala
index 3889c65..3bfc965 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/EventSourceRoutes.scala
@@ -70,7 +70,7 @@ case class EventSourceOptionsFactory @Inject() (typeStateFactory: TypeStateFacto
     queryParam(request, "types") match {
       case None => Left(new IllegalArgumentException("types parameter is compulsory"))
       case Some(List("*")) => Right(typeStateFactory.all.toSet)
-      case Some(list) => list.flatMap(_.split(","))
+      case Some(list) => list.flatMap(_.split(','))
         .map(string => typeStateFactory.parse(string))
         .sequence.map(_.toSet)
     }
diff --git a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
index f171a70..ab5749a 100644
--- a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
+++ b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
@@ -40,6 +40,7 @@ import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.ex.ConfigurationException;
 import org.apache.commons.configuration2.tree.ImmutableNode;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.protocols.api.Encryption;
@@ -165,10 +166,10 @@ public abstract class AbstractConfigurableAsyncServer extends AbstractAsyncServe
             return;
         }
 
-        String[] listen = config.getString("bind", "0.0.0.0:" + getDefaultPort()).split(",");
+        String[] listen = StringUtils.split(config.getString("bind", "0.0.0.0:" + getDefaultPort()), ',');
         List<InetSocketAddress> bindAddresses = new ArrayList<>();
         for (String aListen : listen) {
-            String[] bind = aListen.split(":");
+            String[] bind = StringUtils.split(aListen, ':');
 
             InetSocketAddress address;
             String ip = bind[0].trim();

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