Я пытаюсь убедиться, что мои скрипты Rhino (работающие под Java 6) строги, чтобы, если разработчик скриптов неправильно написал выражение, я хотел, чтобы было сгенерировано исключение. В настоящее время, что происходит, выражение просто оценивается как «неопределенное».
Теперь согласно Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6 есть функции, позволяющие осуществлять строгую проверку в контексте. Я не могу найти работающий пример этого.
На данный момент я написал класс для расширения ContextFactory, а затем переопределил метод hasFeature.
public class ScriptContextFactory extends ContextFactory {
protected boolean hasFeature(Context context, int featureIndex) {
switch (featureIndex) {
case Context.FEATURE_STRICT_EVAL:
return true;
case Context.FEATURE_STRICT_VARS:
return true;
}
return super.hasFeature(context, featureIndex);
}
}
Затем в главном я установил мой по умолчанию.
ContextFactory.initGlobal(new ScriptContextFactory());
и я получил незаконное исключение из штата. (
Есть идеи или примеры того, как это работает?
ТИА