Author: radu
Date: Wed May  6 08:05:59 2015
New Revision: 1677943

URL: http://svn.apache.org/r1677943
Log:
SLING-4693 - Write Sightly generated classes' source code to disk when the 
scripting engine is in dev mode

* classes' source code is generated in the ClassLoaderWriter's root when the 
Sightly Engine's dev mode is
active

Modified:
    
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
    
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java
    
sling/trunk/contrib/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerServiceTest.java

Modified: 
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java?rev=1677943&r1=1677942&r2=1677943&view=diff
==============================================================================
--- 
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
 (original)
+++ 
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
 Wed May  6 08:05:59 2015
@@ -21,6 +21,7 @@ package org.apache.sling.scripting.sight
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -46,6 +47,7 @@ import org.apache.sling.commons.compiler
 import org.apache.sling.commons.compiler.Options;
 import org.apache.sling.scripting.sightly.ResourceResolution;
 import org.apache.sling.scripting.sightly.SightlyException;
+import 
org.apache.sling.scripting.sightly.impl.engine.SightlyEngineConfiguration;
 import org.apache.sling.scripting.sightly.impl.engine.UnitChangeMonitor;
 import org.apache.sling.scripting.sightly.impl.engine.UnitLoader;
 import org.slf4j.Logger;
@@ -72,6 +74,9 @@ public class SightlyJavaCompilerService
     @Reference
     private UnitChangeMonitor unitChangeMonitor = null;
 
+    @Reference
+    private SightlyEngineConfiguration sightlyEngineConfiguration = null;
+
     private Options options;
 
     private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
@@ -145,6 +150,12 @@ public class SightlyJavaCompilerService
      */
     public Object compileSource(String sourceCode, String fqcn) {
         try {
+            if (sightlyEngineConfiguration.isDevMode()) {
+                String path = "/" + fqcn.replaceAll("\\.", "/") + ".java";
+                OutputStream os = classLoaderWriter.getOutputStream(path);
+                IOUtils.write(sourceCode, os, "UTF-8");
+                IOUtils.closeQuietly(os);
+            }
             CompilationUnit compilationUnit = new 
SightlyCompilationUnit(sourceCode, fqcn);
             return compileJavaResource(compilationUnit);
         } catch (Exception e) {

Modified: 
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java?rev=1677943&r1=1677942&r2=1677943&view=diff
==============================================================================
--- 
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java
 (original)
+++ 
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java
 Wed May  6 08:05:59 2015
@@ -103,8 +103,7 @@ public class UnitLoader {
         Object obj;
         if (needsUpdate(sourceIdentifier)) {
             String sourceCode = getSourceCodeForScript(adminResolver, 
sourceIdentifier, bindings, encoding, renderContext);
-            obj = sightlyJavaCompilerService.compileSource(sourceCode, 
sourceIdentifier
-                    .getFullyQualifiedName());
+            obj = sightlyJavaCompilerService.compileSource(sourceCode, 
sourceIdentifier.getFullyQualifiedName());
         } else {
             obj = sightlyJavaCompilerService.getInstance(adminResolver, null, 
sourceIdentifier.getFullyQualifiedName());
         }

Modified: 
sling/trunk/contrib/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerServiceTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerServiceTest.java?rev=1677943&r1=1677942&r2=1677943&view=diff
==============================================================================
--- 
sling/trunk/contrib/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerServiceTest.java
 (original)
+++ 
sling/trunk/contrib/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerServiceTest.java
 Wed May  6 08:05:59 2015
@@ -31,6 +31,7 @@ import org.apache.sling.commons.compiler
 import org.apache.sling.commons.compiler.CompilerMessage;
 import org.apache.sling.commons.compiler.JavaCompiler;
 import org.apache.sling.commons.compiler.Options;
+import 
org.apache.sling.scripting.sightly.impl.engine.SightlyEngineConfiguration;
 import org.apache.sling.scripting.sightly.impl.engine.UnitChangeMonitor;
 import org.junit.After;
 import org.junit.Before;
@@ -42,6 +43,7 @@ import org.powermock.reflect.Whitebox;
 
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -50,11 +52,15 @@ public class SightlyJavaCompilerServiceT
 
     private SightlyJavaCompilerService compiler;
     private UnitChangeMonitor ucm;
+    private SightlyEngineConfiguration sightlyEngineConfiguration;
 
     @Before
     public void setUp() throws Exception {
         compiler = new SightlyJavaCompilerService();
         ucm = spy(new UnitChangeMonitor());
+        sightlyEngineConfiguration = mock(SightlyEngineConfiguration.class);
+        when(sightlyEngineConfiguration.isDevMode()).thenReturn(false);
+        Whitebox.setInternalState(compiler, "sightlyEngineConfiguration", 
sightlyEngineConfiguration);
         Whitebox.setInternalState(compiler, "unitChangeMonitor", ucm);
     }
 


Reply via email to