Author: antelder
Date: Sun Oct 28 13:25:25 2007
New Revision: 589413

URL: http://svn.apache.org/viewvc?rev=589413&view=rev
Log:
Update to support initialization of axiom e4x. need to find a better way to do 
this

Added:
    jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/
    jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/javascript/
      - copied from r589346, 
jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/mozilla/javascript/
Removed:
    jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/mozilla/
Modified:
    
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XAxiomHelper.java
    
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XHelper.java
    
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/XMLHelper.java
    
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/javascript/ContextHelper.java
    
jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/apache/bsf/testing/e4x/HelloTestCase.java

Modified: 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XAxiomHelper.java
URL: 
http://svn.apache.org/viewvc/jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XAxiomHelper.java?rev=589413&r1=589412&r2=589413&view=diff
==============================================================================
--- 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XAxiomHelper.java
 (original)
+++ 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XAxiomHelper.java
 Sun Oct 28 13:25:25 2007
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.mozilla.javascript.Context;
 import org.mozilla.javascript.ContextFactory;
+import org.mozilla.javascript.ContextHelper;
 import org.mozilla.javascript.Scriptable;
 import org.mozilla.javascript.ScriptableObject;
 import org.mozilla.javascript.xml.XMLLib;
@@ -36,15 +37,6 @@
 
        private Scriptable scope;
 
-    class AxiomE4XContextFactory extends ContextFactory {
-
-        protected XMLLib.Factory getE4xImplementationFactory() {
-            return org.mozilla.javascript.xml.XMLLib.Factory.create(
-                    "org.wso2.javascript.xmlimpl.XMLLibImpl"
-            );
-        }
-    }
-
     JavaScriptE4XAxiomHelper(ScriptEngine engine) {
 
        // tell Rhino to use Axiom E4X impl
@@ -71,7 +63,9 @@
             return null;
         }
 
-        return (OMElement) ScriptableObject.callMethod( (Scriptable) 
scriptXML, "getXmlObject", new Object[0]);
+        Object o = ScriptableObject.callMethod( (Scriptable) scriptXML, 
"getXmlObject", new Object[0]);
+        return (OMElement) o;
+//        return (OMElement) ScriptableObject.callMethod( (Scriptable) 
scriptXML, "getXmlObject", new Object[0]);
        }
 
        public Object toScriptXML(OMElement om) throws ScriptException {
@@ -81,6 +75,9 @@
         Context cx = Context.enter();
         try {
 
+               // TODO: why is this needed? A bug in axiom-e4x?
+               ContextHelper.setTopCallScope(cx, scope);
+
            return cx.newObject(scope, "XML", new Object[]{om});
 
         } finally {
@@ -88,4 +85,18 @@
         }
        }
 
+       public static void init() {
+           ContextFactory.initGlobal(new AxiomE4XContextFactory());
+       }
+}
+
+class AxiomE4XContextFactory extends ContextFactory {
+
+    protected XMLLib.Factory getE4xImplementationFactory() {
+        return org.mozilla.javascript.xml.XMLLib.Factory.create(
+                "org.wso2.javascript.xmlimpl.XMLLibImpl"
+        );
+    }
 }
+
+

Modified: 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XHelper.java
URL: 
http://svn.apache.org/viewvc/jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XHelper.java?rev=589413&r1=589412&r2=589413&view=diff
==============================================================================
--- 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XHelper.java
 (original)
+++ 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/JavaScriptE4XHelper.java
 Sun Oct 28 13:25:25 2007
@@ -31,7 +31,7 @@
                        Class.forName("org.wso2.javascript.xmlimpl.XMLLibImpl", 
true, JavaScriptE4XHelper.class.getClassLoader());
                        return new JavaScriptE4XAxiomHelper(engine);
                } catch (ClassNotFoundException e) {
-                       // TODO: support Rhino 1.6R7 DOM based E4X impl 
+                       // TODO: also support Rhino 1.6R7 DOM based E4X impl 
                        return new JavaScriptE4XXmlBeansHelper(engine);
                }
        }

Modified: 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/XMLHelper.java
URL: 
http://svn.apache.org/viewvc/jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/XMLHelper.java?rev=589413&r1=589412&r2=589413&view=diff
==============================================================================
--- 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/XMLHelper.java
 (original)
+++ 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/apache/bsf/xml/XMLHelper.java
 Sun Oct 28 13:25:25 2007
@@ -32,8 +32,20 @@
  */
 public abstract class XMLHelper {
 
+       /**
+        * Register axiom-e4x if its available
+        * @deprecated temp approach for beta2 release
+        */
+       public static void init() {
+               try {
+                       Class.forName("org.wso2.javascript.xmlimpl.XMLLibImpl", 
true, JavaScriptE4XHelper.class.getClassLoader());
+                       JavaScriptE4XAxiomHelper.init();
+               } catch (ClassNotFoundException e) {
+               }
+       }
+
        public static XMLHelper getArgHelper(ScriptEngine engine) {
-               // TODO: better discovery mechanisim than hardcoded class names 
+               // TODO: better discovery mechanisim than hardcoded class names
                if (engine == null) {
                        return null;
                }

Modified: 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/javascript/ContextHelper.java
URL: 
http://svn.apache.org/viewvc/jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/javascript/ContextHelper.java?rev=589413&r1=589346&r2=589413&view=diff
==============================================================================
--- 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/javascript/ContextHelper.java
 (original)
+++ 
jakarta/bsf/trunk/bsf3/bsf-utils/src/main/java/org/mozilla/javascript/ContextHelper.java
 Sun Oct 28 13:25:25 2007
@@ -29,7 +29,9 @@
 public class ContextHelper {
        
        public static void setTopCallScope(Context cx, Scriptable scope) {
-               cx.topCallScope = scope;
+               if (cx.topCallScope == null) {
+                       cx.topCallScope = scope;
+               }
        }
 
 }

Modified: 
jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/apache/bsf/testing/e4x/HelloTestCase.java
URL: 
http://svn.apache.org/viewvc/jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/apache/bsf/testing/e4x/HelloTestCase.java?rev=589413&r1=589412&r2=589413&view=diff
==============================================================================
--- 
jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/apache/bsf/testing/e4x/HelloTestCase.java
 (original)
+++ 
jakarta/bsf/trunk/bsf3/testing/e4x-1.6R7-Axiom/src/test/java/org/apache/bsf/testing/e4x/HelloTestCase.java
 Sun Oct 28 13:25:25 2007
@@ -35,16 +35,18 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.bsf.xml.XMLHelper;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.ContextHelper;
 
 /**
  * Tests a basic JavaScrip/E4X invocation
  */
 public class HelloTestCase extends TestCase {
-       
+
        private XMLHelper xmlHelper;
        private ScriptEngine engine;
+       
+       static {
+        XMLHelper.init();
+       }
 
        public void testInvokeFunctionInXML() throws ScriptException, 
XMLStreamException, FactoryConfigurationError, NoSuchMethodException {
                engine.eval("function isXML(xml) { return typeof xml == 'xml'; 
}" );
@@ -91,11 +93,6 @@
     protected void setUp() {
         engine = new ScriptEngineManager().getEngineByExtension("js");
         xmlHelper = XMLHelper.getArgHelper(engine);
-        Context cx = Context.enter();
-       ContextHelper.setTopCallScope(cx, cx.initStandardObjects());
     }
 
-    protected void tearDown() {
-        Context.exit();
-    }
 }



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

Reply via email to