チェンジセット 300

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

渡されたJSオブジェクト内のプロパティに、Javaの例外が含まれていた場合の対応を追加。

ファイル:

凡例:

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

    r173 r300  
    1111import org.mozilla.javascript.ScriptableObject; 
    1212import org.mozilla.javascript.Undefined; 
     13import org.mozilla.javascript.Wrapper; 
    1314 
    1415/** 
     
    566567                } 
    567568                 
    568                 String msgOrFormat = Context.toString(arg0); 
     569                String msgOrFormat = Context.toString(arg0);  
    569570                 
    570571                // パラメータ指定なし 
     
    616617                                } 
    617618                        } 
     619 
     620                        // Javaの例外がプロパティに含まれているかをチェック 
     621                        Throwable throwable = null;  
     622                        if(arg1 instanceof Scriptable){ 
     623                                Scriptable scriptable = (Scriptable) arg1; 
     624                                Object prop = scriptable.get("javaException", scriptable); 
     625                                 
     626                                if(prop instanceof Wrapper){ 
     627                                        Wrapper wrapper = (Wrapper) prop; 
     628                                        Object unwrapped = wrapper.unwrap(); 
     629                                         
     630                                        if(unwrapped instanceof Throwable){ 
     631                                                throwable = (Throwable) unwrapped; 
     632                                        } 
     633                                } 
     634                        } 
     635 
     636                        if(throwable != null){ 
     637                                thisLogger.log(level, msgOrFormat, throwable); 
     638                                return; 
     639                        } 
    618640                        else { 
    619641                                thisLogger.log(level, msgOrFormat, Context.toString(arg1));