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