You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2019/11/12 21:37:28 UTC

[james-project] 06/15: [Refactoring] CharsetUtils now only handle utf7, change it accordingly

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

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

commit 853b846e1687306ccf95c99f4b89e307d28543a9
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Thu Nov 7 22:15:18 2019 +0100

    [Refactoring] CharsetUtils now only handle utf7, change it accordingly
---
 .../{CharsetUtil.java => ModifiedUtf7.java}        | 31 +++++++++-------------
 .../james/imap/decode/ImapRequestLineReader.java   |  6 ++---
 .../james/imap/encode/ImapResponseComposer.java    |  4 +--
 .../imap/encode/base/ImapResponseComposerImpl.java |  4 +--
 .../apache/james/imap/processor/LSubProcessor.java |  6 ++---
 .../apache/james/imap/processor/ListProcessor.java |  8 +++---
 6 files changed, 27 insertions(+), 32 deletions(-)

diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/display/CharsetUtil.java b/protocols/imap/src/main/java/org/apache/james/imap/api/display/ModifiedUtf7.java
similarity index 71%
rename from protocols/imap/src/main/java/org/apache/james/imap/api/display/CharsetUtil.java
rename to protocols/imap/src/main/java/org/apache/james/imap/api/display/ModifiedUtf7.java
index 915716c..f132e87 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/display/CharsetUtil.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/display/ModifiedUtf7.java
@@ -24,36 +24,31 @@ import java.nio.charset.Charset;
 import com.beetstra.jutf7.CharsetProvider;
 
 /**
- * Utility class which can be used to get a list of supported {@link Charset}'s 
- * 
- * Beside this it has some methods included which helps to encode/decode modified UTF7
+ * This class has some methods included which helps to encode/decode modified UTF7
  */
-public class CharsetUtil {
+public class ModifiedUtf7 {
 
-    private static final String X_MODIFIED_UTF_7 = "X-MODIFIED-UTF-7";
-    private static final Charset X_MODIFIED_UTF_7_CHARSET = new CharsetProvider().charsetForName(X_MODIFIED_UTF_7);
+    private static final Charset X_MODIFIED_UTF_7_CHARSET = new CharsetProvider().charsetForName("X-MODIFIED-UTF-7");
 
     /**
      * Decode the given UTF7 encoded <code>String</code>
-     *
-     * @return decoded
+     * 
+     * @param input utf7-encoded value
+     * @return decoded value
      */
-    public static String decodeModifiedUTF7(String string) {
-        return X_MODIFIED_UTF_7_CHARSET.decode(ByteBuffer.wrap(string.getBytes())).toString();
-
+    public static String decodeModifiedUTF7(String input) {
+        return X_MODIFIED_UTF_7_CHARSET.decode(ByteBuffer.wrap(input.getBytes())).toString();
     }
-    
 
     /**
      * Encode the given <code>String</code> to modified UTF7. 
      * See RFC3501 for more details
-     *
-     * @return encoded
+     * 
+     * @param input
+     * @return utf7-encoded value
      */
-    
-    public static String encodeModifiedUTF7(String string) {
-        ByteBuffer encode = X_MODIFIED_UTF_7_CHARSET.encode(string);
+    public static String encodeModifiedUTF7(String input) {
+        ByteBuffer encode = X_MODIFIED_UTF_7_CHARSET.encode(input);
         return new String(encode.array(), 0, encode.remaining());
-
     }
 }
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
index 233d450..0981fa0 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
@@ -35,8 +35,8 @@ import java.util.List;
 import javax.mail.Flags;
 
 import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.display.CharsetUtil;
 import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.api.display.ModifiedUtf7;
 import org.apache.james.imap.api.message.IdRange;
 import org.apache.james.imap.api.message.UidRange;
 import org.apache.james.imap.api.message.request.DayMonthYear;
@@ -240,7 +240,7 @@ public abstract class ImapRequestLineReader {
 
     /**
      * 
-     * Reads the mailbox name via {@link #mailboxUTF7()} but also decode it via {@link CharsetUtil#decodeModifiedUTF7(String)}
+     * Reads the mailbox name via {@link #mailboxUTF7()} but also decode it via {@link ModifiedUtf7#decodeModifiedUTF7(String)}
      * 
      * If you really want to get the modified UTF7 version you should use {@link #mailboxUTF7()}
      * 
@@ -248,7 +248,7 @@ public abstract class ImapRequestLineReader {
      * 
      */
     public String mailbox() throws DecodingException {
-       return CharsetUtil.decodeModifiedUTF7(mailboxUTF7());
+       return ModifiedUtf7.decodeModifiedUTF7(mailboxUTF7());
     }
 
     /**
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java
index 6df18b2..3018d2b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/ImapResponseComposer.java
@@ -24,7 +24,7 @@ import java.io.IOException;
 import javax.mail.Flags;
 
 import org.apache.james.imap.api.ImapCommand;
-import org.apache.james.imap.api.display.CharsetUtil;
+import org.apache.james.imap.api.display.ModifiedUtf7;
 import org.apache.james.imap.api.message.IdRange;
 import org.apache.james.imap.api.message.UidRange;
 import org.apache.james.imap.message.response.Literal;
@@ -112,7 +112,7 @@ public interface ImapResponseComposer {
 
     /**
      * First encodes the given {@code mailboxName} using
-     * {@link CharsetUtil#encodeModifiedUTF7(String)} and then quotes the result
+     * {@link ModifiedUtf7#encodeModifiedUTF7(String)} and then quotes the result
      * with {@link #quote(String)}.
      * 
      * @param mailboxName
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java
index ce7e575..b3a1e5d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/base/ImapResponseComposerImpl.java
@@ -26,7 +26,7 @@ import javax.mail.Flags;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
-import org.apache.james.imap.api.display.CharsetUtil;
+import org.apache.james.imap.api.display.ModifiedUtf7;
 import org.apache.james.imap.api.message.IdRange;
 import org.apache.james.imap.api.message.UidRange;
 import org.apache.james.imap.encode.ImapResponseComposer;
@@ -237,7 +237,7 @@ public class ImapResponseComposerImpl implements ImapConstants, ImapResponseComp
     
     @Override
     public ImapResponseComposer mailbox(String mailboxName) throws IOException {
-        quote(CharsetUtil.encodeModifiedUTF7(mailboxName));
+        quote(ModifiedUtf7.encodeModifiedUTF7(mailboxName));
         return this;
     }
 
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
index 3befe65..a7a6115 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
@@ -25,8 +25,8 @@ import java.util.Collection;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapSessionUtils;
-import org.apache.james.imap.api.display.CharsetUtil;
 import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.api.display.ModifiedUtf7;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.api.process.ImapSession;
@@ -71,11 +71,11 @@ public class LSubProcessor extends AbstractSubscriptionProcessor<LsubRequest> {
         MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
         Collection<String> mailboxes = getSubscriptionManager().subscriptions(mailboxSession);
 
-        String decodedMailName = CharsetUtil.decodeModifiedUTF7(referenceName);
+        String decodedMailName = ModifiedUtf7.decodeModifiedUTF7(referenceName);
 
         MailboxNameExpression expression = new PrefixedRegex(
             decodedMailName,
-            CharsetUtil.decodeModifiedUTF7(mailboxName),
+            ModifiedUtf7.decodeModifiedUTF7(mailboxName),
             mailboxSession.getPathDelimiter());
         Collection<String> mailboxResponses = new ArrayList<>();
 
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
index f1972bd..7170415 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListProcessor.java
@@ -26,8 +26,8 @@ import java.util.List;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapMessage;
 import org.apache.james.imap.api.ImapSessionUtils;
-import org.apache.james.imap.api.display.CharsetUtil;
 import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.api.display.ModifiedUtf7;
 import org.apache.james.imap.api.message.response.ImapResponseMessage;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
@@ -104,7 +104,7 @@ public class ListProcessor extends AbstractMailboxProcessor<ListRequest> {
                     } else {
                         referenceRoot = referenceName.substring(0, firstDelimiter);
                     }
-                    referenceRoot = CharsetUtil.decodeModifiedUTF7(referenceRoot);
+                    referenceRoot = ModifiedUtf7.decodeModifiedUTF7(referenceRoot);
                 } else {
                     // A relative reference name, return "" to indicate it is
                     // non-rooted
@@ -127,7 +127,7 @@ public class ListProcessor extends AbstractMailboxProcessor<ListRequest> {
                 // Is the interpreted (combined) pattern relative?
                 isRelative = ((finalReferencename + mailboxName).charAt(0) != MailboxConstants.NAMESPACE_PREFIX_CHAR);
 
-                finalReferencename = CharsetUtil.decodeModifiedUTF7(finalReferencename);
+                finalReferencename = ModifiedUtf7.decodeModifiedUTF7(finalReferencename);
 
                 MailboxPath basePath = null;
                 if (isRelative) {
@@ -141,7 +141,7 @@ public class ListProcessor extends AbstractMailboxProcessor<ListRequest> {
                             .userAndNamespaceFrom(basePath)
                             .expression(new PrefixedRegex(
                                 basePath.getName(),
-                                CharsetUtil.decodeModifiedUTF7(mailboxName),
+                                ModifiedUtf7.decodeModifiedUTF7(mailboxName),
                                 mailboxSession.getPathDelimiter()))
                             .build(), mailboxSession);
             }


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