Home | History | Annotate | Download | only in jutf7
      1 /* ====================================================================
      2  * Copyright (c) 2006 J.T. Beetstra
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining
      5  * a copy of this software and associated documentation files (the
      6  * "Software"), to deal in the Software without restriction, including
      7  * without limitation the rights to use, copy, modify, merge, publish,
      8  * distribute, sublicense, and/or sell copies of the Software, and to
      9  * permit persons to whom the Software is furnished to do so, subject to
     10  * the following conditions:
     11  *
     12  * The above copyright notice and this permission notice shall be
     13  * included in all copies or substantial portions of the Software.
     14  *
     15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
     18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
     19  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     20  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     21  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     22  * ====================================================================
     23  */
     24 
     25 package com.beetstra.jutf7;
     26 
     27 /**
     28  * <p>
     29  * The character set specified in RFC 3501 to use for IMAP4rev1 mailbox name
     30  * encoding.
     31  * </p>
     32  *
     33  * @see <a href="http://tools.ietf.org/html/rfc3501">RFC 3501< /a>
     34  * @author Jaap Beetstra
     35  */
     36 class ModifiedUTF7Charset extends UTF7StyleCharset {
     37     private static final String MODIFIED_BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     38             + "abcdefghijklmnopqrstuvwxyz" + "0123456789+,";
     39 
     40     ModifiedUTF7Charset(String name, String[] aliases) {
     41         super(name, aliases, MODIFIED_BASE64_ALPHABET, true);
     42     }
     43 
     44     boolean canEncodeDirectly(char ch) {
     45         if (ch == shift())
     46             return false;
     47         return ch >= 0x20 && ch <= 0x7E;
     48     }
     49 
     50     byte shift() {
     51         return '&';
     52     }
     53 
     54     byte unshift() {
     55         return '-';
     56     }
     57 }
     58