Как я могу указать свой собственный контекст Rhino в Java? - PullRequest
2 голосов
/ 29 апреля 2010

Я пытаюсь убедиться, что мои скрипты 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());

и я получил незаконное исключение из штата. (

Есть идеи или примеры того, как это работает?

ТИА

1 Ответ

2 голосов
/ 19 июля 2010

Если вы делаете Context.enter() перед вызовом initGlobal(), попробуйте поменять порядок.

...