今更ながらRhinoが熱い。

ここんところ自作アプリを作るのに集中してていろんな事が滞ってます。ごめんなさい。
が、これは書かないと、と思ったのでちょっと書いてみる。

RhinoはJDK6で標準添付されているJavaScriptエンジンということは有名ですね。が、JRE1.5でも動くようにしたかったので、JDK6のScriptEngineを使わないようにしようと思ったのさ。でもここまで簡単にアプリに組み込めるとは思わなかったw

String script = getScript();
if( script != null){
  Context cx = ContextFactory.getGlobal().enterContext();
  ScriptableObject global = cx.initStandardObjects();
  Object objJS = Context.javaToJS(javaObject, global);
  ScriptableObject.putProperty(global, "javaObject", objJS);
  cx.evaluateString(global, script, "extend JavaScript", 0, null);
}

getScript()で取得できるScriptの内容を外からセットできるようにしておくと、javaObjectの操作がアプリケーションの外部からできてしまう。

セキュリティに気をつけないといけないのは重々承知ですが、スクリプトの組み込みがこんなに簡単にいけちゃったので。

追記:
って思ったけど、javaObjectの値は変更できてないような…。もうちょと調べるべ。

追記2:
できたできた。他のとこでまずいところがあったっぺ。