Author: radu
Date: Fri Jan 8 17:45:30 2016
New Revision: 1723769
URL: http://svn.apache.org/viewvc?rev=1723769&view=rev
Log:
SLING-5409 - Enhance the SightlyJavaCompilerService to not enforce a package
name for Use objects stored in the repository
* corrected source alignment after processing the class' package name
Modified:
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
Modified:
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java?rev=1723769&r1=1723768&r2=1723769&view=diff
==============================================================================
---
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
(original)
+++
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
Fri Jan 8 17:45:30 2016
@@ -31,6 +31,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
@@ -67,7 +68,7 @@ public class SightlyJavaCompilerService
private static final Logger LOG =
LoggerFactory.getLogger(SightlyJavaCompilerService.class);
- public static final Pattern PACKAGE_DECL_PATTERN =
Pattern.compile("package\\s+([a-zA-Z_$][a-zA-Z\\d_$]*\\.?)*;");
+ public static final Pattern PACKAGE_DECL_PATTERN =
Pattern.compile("(.*)(package\\s+([a-zA-Z_$][a-zA-Z\\d_$]*\\.?)*;)(.*)");
@Reference
private ClassLoaderWriter classLoaderWriter = null;
@@ -169,11 +170,24 @@ public class SightlyJavaCompilerService
IOUtils.write(sourceCode, os, "UTF-8");
IOUtils.closeQuietly(os);
}
- sourceCode = PACKAGE_DECL_PATTERN.matcher(sourceCode).replaceFirst("");
- sourceCode = "package " + Utils.getPackageNameFromFQCN(fqcn) + ";\n" +
sourceCode;
+ StringBuilder sourceCodeSB = new StringBuilder();
+ String[] sourceCodeLines = sourceCode.split("\n");
+ boolean foundPackageDeclaration = false;
+ for (String line : sourceCodeLines) {
+ Matcher matcher = PACKAGE_DECL_PATTERN.matcher(line);
+ if (matcher.matches()) {
+ line = matcher.group(1) + "package " +
Utils.getPackageNameFromFQCN(fqcn) + ";" + matcher.group(4);
+ foundPackageDeclaration = true;
+ }
+ sourceCodeSB.append(line).append("\n");
+ }
+
+ if (!foundPackageDeclaration) {
+ sourceCodeSB.insert(0, "package " +
Utils.getPackageNameFromFQCN(fqcn) + ";\n");
+ }
- CompilationUnit compilationUnit = new
SightlyCompilationUnit(sourceCode, fqcn);
+ CompilationUnit compilationUnit = new
SightlyCompilationUnit(sourceCodeSB.toString(), fqcn);
long start = System.currentTimeMillis();
CompilationResult compilationResult = javaCompiler.compile(new
CompilationUnit[]{compilationUnit}, options);