チェンジセット 116

差分発生行の前後
無視リスト:
コミット日時:
2007/09/26 16:11:38 (13 年前)
コミッタ:
shinomiya
ログメッセージ:

#517:im-Jssp RPCの統合

  • 通信エラー発生時のエラー内容伝達方法の修正。
  • CSJSライブラリの追加を自動化
ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-jssp-sample/.settings/org.eclipse.core.resources.prefs

    r77 r116  
    1 #Tue Dec 19 13:14:57 JST 2006 
     1#Tue Sep 25 14:06:31 JST 2007 
    22eclipse.preferences.version=1 
    33encoding//src/main/resources/org/intra_mart/common/aid/jdk/util/charset/iana2jdk.properties=Shift-JIS 
    44encoding//src/main/webapp/index.html=UTF-8 
    55encoding//src/main/webapp/sample.html=UTF-8 
     6encoding//src/main/webapp/sample/jssp_rpc/hello/hello_jssp_rpc_main.html=UTF-8 
    67encoding//src/main/webapp/sample/script/file/file_main.html=UTF-8 
    78encoding//src/main/webapp/sample/script/page/execute/page_execute.html=UTF-8 
  • trunk/im-jssp-sample/src/main/webapp/csjs/im_jssp_rpc.js

    r105 r116  
    1 /** 
    2  * Send request 
    3  */ 
    4 function sendJsspRpcRequest(url, jsonString, callBack, method, unmarshallFunc) { 
     1var ImJsspRpc = { 
    52 
    6         method = (method == undefined) ? "post" : method; 
    7         unmarshallFunc = (unmarshallFunc == undefined) ? unmarshall : unmarshallFunc; 
     3        JSON_CONTENT_TYPE : "application/json; charset=utf-8", 
    84 
    9         var http = createXMLHttpRequest(); 
     5        /** 
     6         * Default callback function when error occurs 
     7         */ 
     8        defaultOnErrorCallback : function(ex){ 
    109 
    11         if(callBack != null){ 
    12                 if(window.ActiveXObject){ 
    13                         http.onreadystatechange = function () { 
    14                                 if (http.readyState == 4) { 
    15                                         callBack(receive(http, unmarshallFunc)); 
    16                                 } 
    17                         }; 
    18                 } else { 
    19                         http.onload = function () { 
    20                                 callBack(receive(http, unmarshallFunc)); 
    21                         }; 
    22                 } 
    23         } 
    24         else { 
    25                 if(window.ActiveXObject){ 
    26                         http.onreadystatechange = function () {}; 
     10                var errorStr = "" + ex.message; 
     11 
     12                // errorStr += "\n"; 
     13                // errorStr += "httpStatus : "  + ex.httpStatus  + "\n"; 
     14                // errorStr += "code: "         + ex.code        + "\n"; 
     15                // errorStr += "contentType : " + ex.contentType + "\n"; 
     16                // errorStr += "data : "        + ex.data        + "\n"; 
     17 
     18                alert(errorStr); 
     19                return; 
     20        }, 
     21 
     22        /** 
     23         * Send request 
     24         */ 
     25        sendJsspRpcRequest : function(url, argsArray, callback, onErrorCallback, method){ 
     26 
     27                onErrorCallback = (onErrorCallback == null) ? ImJsspRpc.defaultOnErrorCallback : onErrorCallback; 
     28                method = (method == undefined) ? "post" : method; 
     29 
     30                var jsonString = ImJson.toJSONString(argsArray); 
     31                var asynFlag   = (callback != null); 
     32 
     33                //==================================== 
     34                // Create XMLHttpRequest(=xhr) 
     35                //==================================== 
     36                var xhr = ImAjax.createXMLHttpRequest(); 
     37 
     38                //==================================== 
     39                // Set callback function 
     40                //==================================== 
     41                if(asynFlag){ 
     42                        if(window.ActiveXObject){ 
     43                                xhr.onreadystatechange = function () { 
     44                                        if (xhr.readyState == 4) { 
     45                                                var result; 
     46 
     47                                                try{ 
     48                                                        result = ImJsspRpc.receive(xhr); 
     49                                                } 
     50                                                catch(ex){ 
     51                                                        onErrorCallback(ex); 
     52                                                        return; 
     53                                                } 
     54 
     55                                                callback(result); 
     56                                        } 
     57                                }; 
     58                        } 
     59                        else { 
     60                                xhr.onload = function () { 
     61                                                var result; 
     62 
     63                                                try{ 
     64                                                        result = ImJsspRpc.receive(xhr); 
     65                                                } 
     66                                                catch(ex){ 
     67                                                        onErrorCallback(ex); 
     68                                                        return; 
     69                                                } 
     70 
     71                                                callback(result); 
     72                                }; 
     73                        } 
    2774                } 
    2875                else { 
    29                         http.onload = function () {}; 
     76                        if(window.ActiveXObject){ 
     77                                xhr.onreadystatechange = function(){}; 
     78                        } 
     79                        else { 
     80                                xhr.onload = function(){}; 
     81                        } 
    3082                } 
    31         } 
    3283 
    33         http.open(method, url, (callBack != null)); 
    34         setContentType(http); 
    35         try { 
    36                 http.send(jsonString); 
    37         } 
    38         catch(ex) { 
    39                 // For IE on WinXP (Error: 0x800c0008(-2146697208)) 
    40                 writeDocument(http.responseText); 
    41                 throw ex; 
    42         } 
     84                //==================================== 
     85                // Send Request 
     86                //==================================== 
     87                xhr.open(method, url, asynFlag); 
     88                xhr = ImAjax.setContentTypeAndReqHeaders(xhr, ImJsspRpc.JSON_CONTENT_TYPE); 
     89                xhr.send(jsonString); 
    4390 
    44         if(callBack != null){ 
    45                 return; 
    46         } 
    47         else{ 
    48                 return receive(http, unmarshallFunc); 
     91 
     92                //==================================== 
     93                // Return result 
     94                //==================================== 
     95                if(asynFlag){ 
     96                        return; 
     97                } 
     98                else{ 
     99                        return ImJsspRpc.receive(xhr); 
     100                } 
     101        }, 
     102 
     103        /** 
     104         * Receive response data 
     105         */ 
     106        receive : function(xhr){ 
     107 
     108                var objResult = ImAjax.createResultObject(xhr); 
     109 
     110                if(objResult.error == true){ 
     111                        var err = new Error(objResult.message); 
     112                                err.httpStatus  = objResult.httpStatus; 
     113                                err.code        = objResult.code; 
     114                                err.message     = objResult.message; 
     115                                err.contentType = objResult.contentType; 
     116                                err.data        = objResult.data; 
     117 
     118                        // **** THROW ERROR **** 
     119                        throw err; 
     120                } 
     121                else{ 
     122                        return objResult.data; 
     123                } 
     124 
    49125        } 
    50126} 
    51  
    52  
    53 /** 
    54  * Create XMLHttpRequest 
    55  */ 
    56 function createXMLHttpRequest(){ 
    57         var msxmlNames = 
    58                         new Array("MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); 
    59  
    60         /* Mozilla XMLHttpRequest */ 
    61         try { 
    62                 return new XMLHttpRequest(); 
    63         } catch(e) {} 
    64  
    65         /* Microsoft MSXML ActiveX */ 
    66         for (var i=0;i < msxmlNames.length; i++) { 
    67                 try { 
    68                         return new ActiveXObject(msxmlNames[i]); 
    69                 } catch (e) {} 
    70         } 
    71 } 
    72  
    73  
    74 /** 
    75  * Receive response data 
    76  */ 
    77 function receive(http, unmarshallFunc){ 
    78         /* Get request results */ 
    79         var status, statusText, data; 
    80         try { 
    81                 status     = http.status; 
    82                 statusText = http.statusText; 
    83                 data       = http.responseText; 
    84         } 
    85         catch(ex) { 
    86                 throw ex; 
    87         } 
    88  
    89         if(status != 200){ 
    90                 // When error happens with session timeout, or internal server error. 
    91                 writeDocument(data); 
    92                 throw new Error(status, statusText); 
    93         } 
    94  
    95         /* un-marshall */ 
    96         try{ 
    97                 return unmarshallFunc(data); 
    98         } 
    99         catch(ex){ 
    100                                  
    101                 // if(ex.name == "SyntaxError" && ex.message == "parseJSON"){ 
    102                 //     alert("Error occurred!! \n" + ex.name + ": " + ex.message); 
    103                 //     throw ex; 
    104                 // } 
    105  
    106                 // For Debug.Browse() page, mostly. 
    107                 writeDocument(data); 
    108                 return; 
    109         } 
    110 } 
    111  
    112  
    113 /** 
    114  * Set Content-Type value 
    115  */ 
    116 function setContentType(http){ 
    117         var contentTypeUrlenc = 'application/json; charset=utf-8'; 
    118  
    119         if(!window.opera){ 
    120                 http.setRequestHeader('Content-Type',contentTypeUrlenc); 
    121         } 
    122         else { 
    123                 if((typeof http.setRequestHeader) == 'function'){ 
    124                         http.setRequestHeader('Content-Type',contentTypeUrlenc); 
    125                 } 
    126         } 
    127  
    128         return http; 
    129 } 
    130  
    131  
    132 /** 
    133  * Write document 
    134  */ 
    135 function writeDocument(value){ 
    136         document.write(value); 
    137         document.close(); 
    138         return; 
    139 }