vhardy      02/05/13 02:23:11

  Modified:    sources/org/apache/batik/script/rhino RhinoInterpreter.java
  Log:
  Fixed Context creation bug. Code would have failed if invoked from different threads
  
  Revision  Changes    Path
  1.16      +11 -6     
xml-batik/sources/org/apache/batik/script/rhino/RhinoInterpreter.java
  
  Index: RhinoInterpreter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/script/rhino/RhinoInterpreter.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- RhinoInterpreter.java     30 Apr 2002 15:05:18 -0000      1.15
  +++ RhinoInterpreter.java     13 May 2002 09:23:10 -0000      1.16
  @@ -42,7 +42,7 @@
    * A simple implementation of <code>Interpreter</code> interface to use
    * Rhino ECMAScript interpreter.
    * @author <a href="mailto:[EMAIL PROTECTED]";>Christophe Jolif</a>
  - * @version $Id: RhinoInterpreter.java,v 1.15 2002/04/30 15:05:18 vhardy Exp $
  + * @version $Id: RhinoInterpreter.java,v 1.16 2002/05/13 09:23:10 vhardy Exp $
    */
   public class RhinoInterpreter implements Interpreter {
       private static String[] TO_BE_IMPORTED = {
  @@ -89,7 +89,8 @@
       protected RhinoClassLoader rhinoClassLoader;
   
       /**
  -     * Default Context for scripts
  +     * Default Context for scripts. This is used only for efficiency
  +     * reason. 
        */
       protected Context defaultContext;
   
  @@ -97,7 +98,7 @@
        * Context vector, to make sure we are not 
        * setting the security context too many times
        */
  -    protected Vector contexts;
  +    protected Vector contexts = new Vector();
   
       /**
        * Build a <code>Interpreter</code> for ECMAScript using Rhino.
  @@ -113,8 +114,8 @@
           Context.setCachingEnabled(false); // reset the cache
           Context.setCachingEnabled(true);  // enable caching again
           // entering a context
  -        defaultContext = new Context(securitySupport);
  -        Context ctx = enterContext();
  +        defaultContext = enterContext();
  +        Context ctx = defaultContext;
               
           try {
   
  @@ -140,13 +141,17 @@
        * on the context.
        */
       public Context enterContext(){
  -        Context ctx = Context.enter(defaultContext);
  +        Context ctx = Context.enter();
           if (ctx != defaultContext){
               // Set the SecuritySupport the Context should
               // use.
               if (!contexts.contains(ctx)) {
                   ctx.setSecuritySupport(securitySupport);
                   contexts.add(ctx);
  +
  +                // Hopefully, we are not switching threads too 
  +                // often ....
  +                defaultContext = ctx;
               }
           }
           return ctx;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to