チェンジセット 334

差分発生行の前後
無視リスト:
コミット日時:
2008/10/01 19:01:30 (14 年前)
コミッタ:
shinomiya
ログメッセージ:

#556 oij.util.ClassNameHelper?のサロゲートペア文字対応

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-jssp/src/main/java/org/intra_mart/jssp/util/ClassNameHelper.java

    r145 r334  
    1212 */ 
    1313public final class ClassNameHelper{ 
    14         private static Map NAME_POOL = new FixedSizeMap(48); 
     14        private static Map<String, String> NAME_POOL = new FixedSizeMap(48); 
    1515        private static Map FILE_POOL = new FixedSizeMap(32); 
    1616 
     
    9191                for(int idx = 0; idx < name.length(); idx++) { 
    9292                        char c = name.charAt(idx); 
    93                         if( Character.isJavaIdentifierPart(c) ){ 
    94                                 s[idx + pad] = c;  
     93                         
     94                        if(Character.isHighSurrogate(c)){ 
     95                                char high = c; 
     96                                s[idx + pad] = high;  
     97 
     98                                idx++; 
     99 
     100                                char low = name.charAt(idx); 
     101                                s[idx + pad] = low;  
    95102                        } 
    96103                        else{ 
    97                                 s[idx + pad] = '_';  
     104                                if( Character.isJavaIdentifierPart(c) ){ 
     105                                        s[idx + pad] = c;  
     106                                } 
     107                                else{ 
     108                                        s[idx + pad] = '_';  
     109                                } 
    98110                        } 
    99111                } 
  • trunk/im-jssp/src/test/java/org/intra_mart/jssp/util/ClassNameHelperTest.java

    r145 r334  
    7373        } 
    7474 
     75 
     76        private int[] vistaAddedCharCode_1 = { 0x7626 }; // 瘦 
     77        private int[] vistaAddedCharCode_2 = { 0x4ff1 }; // 俱 
     78        private int[] vistaAddedCharCode_3 = { 0x525d }; // 剝 
     79        private int[] vistaAddedCharCode_4 = { 0x541e }; // 吞 
     80 
     81        private String vistaAdded_1 = new String(vistaAddedCharCode_1, 0, 1); // 瘦 
     82        private String vistaAdded_2 = new String(vistaAddedCharCode_2, 0, 1); // 俱 
     83        private String vistaAdded_3 = new String(vistaAddedCharCode_3, 0, 1); // 剝 
     84        private String vistaAdded_4 = new String(vistaAddedCharCode_4, 0, 1); // 吞 
     85         
     86        private String vistaAddedStrings = vistaAdded_1 + vistaAdded_2 + vistaAdded_3 + vistaAdded_4; 
     87         
     88        private int[] sPairCharCode_1 = { 0x2000B }; // 𠀋 : d840 と dc0b  
     89        private int[] sPairCharCode_2 = { 0x2123D }; // 𡈽 : d844 と de3d 
     90        private int[] sPairCharCode_3 = { 0x20B9F }; // 𠮟 : d842 と df9f 
     91 
     92        private String sPair_1 = new String(sPairCharCode_1, 0, 1); // 𠀋 
     93        private String sPair_2 = new String(sPairCharCode_2, 0, 1); // 𡈽 
     94        private String sPair_3 = new String(sPairCharCode_3, 0, 1); // 𠮟 
     95         
     96        private String sPairStrings = sPair_1 + sPair_2 + sPair_3 + vistaAddedStrings; 
     97         
     98        public void testToClassNameString_サロゲートペア_Win() throws Exception { 
     99                String actual = ClassNameHelper.toClassName("hoge\\foo\\bar\\" + sPairStrings +"\\windows.js"); 
     100                assertEquals("_hoge._foo._bar._" + sPairStrings + "._windows_js", actual); 
     101        } 
     102 
     103        public void testToClassNameString_サロゲートペア_UNIX() throws Exception { 
     104                String actual = ClassNameHelper.toClassName("hoge/foo/bar/" + sPairStrings +"/unix.js"); 
     105                assertEquals("_hoge._foo._bar._" + sPairStrings + "._unix_js", actual); 
     106        } 
     107 
    75108}