2010-04-29 5 views
2

J'essaie de m'assurer que mes scripts Rhino (fonctionnant sous Java 6) sont stricts, donc si un développeur de script mal écrit une expression je veux qu'une exception soit levée. Actuellement, ce qui se passe est que l'expression évalue simplement à "indéfini".Comment puis-je spécifier mon propre contexte Rhino en Java?

Maintenant, selon Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6, il existe des fonctionnalités pour permettre une vérification stricte dans le contexte. Je ne peux pas trouver un exemple de travail de cela. Ce que j'ai fait jusqu'ici était d'écrire une classe pour étendre ContextFactory, puis de surcharger la méthode 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); 
    } 
    } 

Puis, dans la principale Je mis le mien par défaut.

ContextFactory.initGlobal(new ScriptContextFactory()); 

et j'obtiens une exception d'état non autorisé. :(

Des idées ou des échantillons sur la façon dont cela fonctionne?

TIA

Répondre

2

Si vous faites Context.enter() avant d'appeler initGlobal() essayer d'inverser l'ordre.

Questions connexes