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);
}