You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2009/05/27 16:37:56 UTC

svn commit: r779189 - /incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java

Author: gbrown
Date: Wed May 27 14:37:56 2009
New Revision: 779189

URL: http://svn.apache.org/viewvc?rev=779189&view=rev
Log:
Defer loading script engine until a <wtkx:script> tag is actually encountered.

Modified:
    incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java

Modified: incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java?rev=779189&r1=779188&r2=779189&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java (original)
+++ incubator/pivot/trunk/wtk/src/pivot/wtkx/WTKXSerializer.java Wed May 27 14:37:56 2009
@@ -220,8 +220,9 @@
     private NamedObjectDictionary namedObjectDictionary = new NamedObjectDictionary();
 
     private XMLInputFactory xmlInputFactory;
-    private Object scriptEngineManager;
+
     private Class<?> scriptEngineManagerClass;
+    private Object scriptEngineManager;
     private java.util.Map<String, Object> scriptEngineBindings;
 
     public static final char URL_PREFIX = '@';
@@ -250,19 +251,6 @@
 
         xmlInputFactory = XMLInputFactory.newInstance();
         xmlInputFactory.setProperty("javax.xml.stream.isCoalescing", true);
-
-        try {
-            scriptEngineManagerClass = Class.forName("javax.script.ScriptEngineManager");
-            scriptEngineManager = scriptEngineManagerClass.newInstance();
-            Method getBindingsMethod = scriptEngineManagerClass.getMethod
-                ("getBindings", new Class<?>[] {});
-            scriptEngineBindings = (java.util.Map<String, Object>)
-                getBindingsMethod.invoke(scriptEngineManager, new Object[] {});
-        } catch(Exception exception) {
-            scriptEngineManagerClass = null;
-            scriptEngineManager = null;
-            scriptEngineBindings = null;
-        }
     }
 
     public Resources getResources() {
@@ -430,8 +418,24 @@
 
                                 element = new Element(element, Element.Type.INCLUDE, attributes, value);
                             } else if (localName.equals(SCRIPT_TAG)) {
-                                if (scriptEngineManagerClass == null) {
-                                    throw new SerializationException("Scripting is not supported on this platform.");
+                                // Load the script engine manager if it has not been loaded
+                                if (scriptEngineManager == null) {
+                                    try {
+                                        scriptEngineManagerClass = Class.forName("javax.script.ScriptEngineManager");
+                                    } catch(ClassNotFoundException exception) {
+                                        throw new SerializationException("Scripting is not supported on this platform.");
+                                    }
+
+                                    try {
+                                        scriptEngineManager = scriptEngineManagerClass.newInstance();
+                                        Method getBindingsMethod = scriptEngineManagerClass.getMethod
+                                            ("getBindings", new Class<?>[] {});
+                                        scriptEngineBindings = (java.util.Map<String, Object>)
+                                            getBindingsMethod.invoke(scriptEngineManager, new Object[] {});
+                                    } catch(Exception exception) {
+                                        scriptEngineManager = null;
+                                        scriptEngineBindings = null;
+                                    }
                                 }
 
                                 // The element represents a script