You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2008/01/24 18:53:51 UTC
svn commit: r614941 - in /incubator/sling/trunk/scripting/javascript: ./
src/main/java/org/apache/sling/scripting/javascript/
src/main/java/org/apache/sling/scripting/javascript/helper/
Author: bdelacretaz
Date: Thu Jan 24 09:53:45 2008
New Revision: 614941
URL: http://svn.apache.org/viewvc?rev=614941&view=rev
Log:
SLING-193 - Rhino debugger, for server-side javascript
Added:
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java (with props)
Modified:
incubator/sling/trunk/scripting/javascript/pom.xml
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/RhinoJavaScriptEngineFactory.java
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingContextFactory.java
Modified: incubator/sling/trunk/scripting/javascript/pom.xml
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/javascript/pom.xml?rev=614941&r1=614940&r2=614941&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/javascript/pom.xml (original)
+++ incubator/sling/trunk/scripting/javascript/pom.xml Thu Jan 24 09:53:45 2008
@@ -62,7 +62,6 @@
<Private-Package>
org.apache.sling.scripting.javascript.*,
org.mozilla.classfile,
- !org.mozilla.javascript.tools.*,
!org.mozilla.javascript.xml.impl.xmlbeans,
org.mozilla.javascript.*
</Private-Package>
Modified: incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/RhinoJavaScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/RhinoJavaScriptEngineFactory.java?rev=614941&r1=614940&r2=614941&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/RhinoJavaScriptEngineFactory.java (original)
+++ incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/RhinoJavaScriptEngineFactory.java Thu Jan 24 09:53:45 2008
@@ -32,11 +32,12 @@
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
+import org.mozilla.javascript.tools.debugger.ScopeProvider;
/**
* The <code>RhinoJavaScriptEngineFactory</code> TODO
*/
-public class RhinoJavaScriptEngineFactory extends AbstractScriptEngineFactory {
+public class RhinoJavaScriptEngineFactory extends AbstractScriptEngineFactory implements ScopeProvider {
public final static String JS_SCRIPT_EXTENSION = "js";
@@ -48,13 +49,12 @@
ScriptablePrintWriter.class };
private final String languageVersion;
-
private Scriptable rootScope;
public RhinoJavaScriptEngineFactory() {
// initialize the Rhino Context Factory
- SlingContextFactory.setup();
+ SlingContextFactory.setup(this);
Context cx = Context.enter();
setEngineName(getEngineName() + " (" + cx.getImplementationVersion()
@@ -79,6 +79,10 @@
public String getLanguageVersion() {
return languageVersion;
+ }
+
+ public Scriptable getScope() {
+ return getRootScope();
}
private Scriptable getRootScope() {
Modified: incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingContextFactory.java?rev=614941&r1=614940&r2=614941&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingContextFactory.java (original)
+++ incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingContextFactory.java Thu Jan 24 09:53:45 2008
@@ -18,8 +18,11 @@
*/
package org.apache.sling.scripting.javascript.helper;
+import java.io.File;
+
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
+import org.mozilla.javascript.tools.debugger.ScopeProvider;
/**
* The <code>SlingContextFactory</code> extends the standard Rhino
@@ -29,17 +32,29 @@
*/
public class SlingContextFactory extends ContextFactory {
+ private SlingRhinoDebugger debugger;
+ private ScopeProvider scopeProvider;
+ private boolean debuggerActive;
+
// conditionally setup the global ContextFactory to be ours. If
// a global context factory has already been set, we have lost
// and cannot set this one.
- public static void setup() {
+ public static void setup(ScopeProvider sp) {
+ // TODO what do we do in the other case? debugger won't work
if (!hasExplicitGlobal()) {
- initGlobal(new SlingContextFactory());
+ initGlobal(new SlingContextFactory(sp));
}
}
// private as instances of this class are only used by setup()
- private SlingContextFactory() {}
+ private SlingContextFactory(ScopeProvider sp)
+ {
+ scopeProvider = sp;
+
+ // TODO make this configurable via OSGi
+ File f = new File("/tmp/sling.debug");
+ debuggerActive = f.exists();
+ }
@Override
protected boolean hasFeature(Context cx, int featureIndex) {
@@ -49,5 +64,27 @@
return super.hasFeature(cx, featureIndex);
}
+
+ @Override
+ protected void onContextCreated(Context cx) {
+ super.onContextCreated(cx);
+ initDebugger(cx);
+ }
+ private void initDebugger(Context cx) {
+ if(!debuggerActive) {
+ return;
+ }
+ try {
+ if (debugger == null) {
+ debugger = new SlingRhinoDebugger(getClass().getSimpleName());
+ debugger.setScopeProvider(scopeProvider);
+ debugger.attachTo(this);
+ }
+ } catch (Exception e) {
+ // TODO log
+ System.err.println("SlingContextFactory.initDebugger(): " + e);
+ }
+ }
+
}
Added: incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java?rev=614941&view=auto
==============================================================================
--- incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java (added)
+++ incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java Thu Jan 24 09:53:45 2008
@@ -0,0 +1,12 @@
+package org.apache.sling.scripting.javascript.helper;
+
+import org.mozilla.javascript.tools.debugger.Dim;
+import org.mozilla.javascript.tools.debugger.SwingGui;
+
+class SlingRhinoDebugger extends Dim {
+ SlingRhinoDebugger(String windowTitle) {
+ final SwingGui gui = new SwingGui(this, windowTitle);
+ gui.pack();
+ gui.setVisible(true);
+ }
+}
Propchange: incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/helper/SlingRhinoDebugger.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL