r9832 - helma-ng/trunk/src/org/helma/javascript

[email protected] Tue, 16 Jun 2009 15:51:52 +0200 (CEST)
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090616135152.DBDDB3D0E3@mia>
Author: hannes
Date: 2009-06-16 15:51:52 +0200 (Tue, 16 Jun 2009)
New Revision: 9832

Modified:
   helma-ng/trunk/src/org/helma/javascript/HelmaContextFactory.java
   helma-ng/trunk/src/org/helma/javascript/ReloadableScript.java
   helma-ng/trunk/src/org/helma/javascript/RhinoEngine.java
Log:
Hack to disable security controller on google app engine.

Details at http://dev.helma.org/trac/helma/changeset/9832

Modified: helma-ng/trunk/src/org/helma/javascript/HelmaContextFactory.java
===================================================================
--- helma-ng/trunk/src/org/helma/javascript/HelmaContextFactory.java	2009-06-16 13:51:50 UTC (rev 9831)
+++ helma-ng/trunk/src/org/helma/javascript/HelmaContextFactory.java	2009-06-16 13:51:52 UTC (rev 9832)
@@ -65,7 +65,9 @@
         cx.setWrapFactory(engine.wrapFactory);
         cx.setLanguageVersion(languageVersion);
         cx.setOptimizationLevel(optimizationLevel);
-        cx.setSecurityController(new PolicySecurityController());
+        if (engine.useSecurity()) {
+            cx.setSecurityController(new PolicySecurityController());
+        }
         if (errorReporter != null) {
             cx.setErrorReporter(errorReporter);
         }

Modified: helma-ng/trunk/src/org/helma/javascript/ReloadableScript.java
===================================================================
--- helma-ng/trunk/src/org/helma/javascript/ReloadableScript.java	2009-06-16 13:51:50 UTC (rev 9831)
+++ helma-ng/trunk/src/org/helma/javascript/ReloadableScript.java	2009-06-16 13:51:52 UTC (rev 9832)
@@ -107,7 +107,8 @@
         Resource resource = (Resource) source;
         try {
             exception = null;
-            CodeSource source = new CodeSource(resource.getUrl(), (CodeSigner[]) null);
+            CodeSource source = engine.useSecurity() ?
+                    new CodeSource(resource.getUrl(), (CodeSigner[]) null) : null;
             script = cx.compileReader(resource.getReader(), resource.getRelativePath(), 1, source);
         } catch (Exception x) {
             exception = x;
@@ -136,7 +137,8 @@
             exception = null;
             for (Resource res: resources) {
                 if (res.getName().endsWith(".js")) {
-                    CodeSource source = new CodeSource(res.getUrl(), (CodeSigner[]) null);                    
+                    CodeSource source = engine.useSecurity() ?
+                            new CodeSource(res.getUrl(), (CodeSigner[]) null) : null;
                     scripts.add(cx.compileReader(res.getReader(), res.getRelativePath(), 1, source));
                 }
            }

Modified: helma-ng/trunk/src/org/helma/javascript/RhinoEngine.java
===================================================================
--- helma-ng/trunk/src/org/helma/javascript/RhinoEngine.java	2009-06-16 13:51:50 UTC (rev 9831)
+++ helma-ng/trunk/src/org/helma/javascript/RhinoEngine.java	2009-06-16 13:51:52 UTC (rev 9832)
@@ -453,6 +453,11 @@
         return new RhinoEngine(sandbox, globals);
     }
 
+    protected boolean useSecurity() {
+        // TODO this is just a hack to disable security on google app engine
+        return System.getProperty("java.security.manager") != null;
+    }
+
     private ReloadableScript getCurrentScript(Context cx) {
         return (ReloadableScript) cx.getThreadLocal("current_script");
     }