You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2016/02/23 15:29:37 UTC
svn commit: r1731860 - in /sling/trunk/bundles/scripting/sightly:
engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/
testing-content/ testing-content/src/main/resources/SLING-INF/
testing-content/src/main/resources/SLING-INF/apps/si...
Author: radu
Date: Tue Feb 23 14:29:37 2016
New Revision: 1731860
URL: http://svn.apache.org/viewvc?rev=1731860&view=rev
Log:
SLING-5543 - Sightly Use POJOs with CR+LF line endings are not compiled correctly
* improved package declaration detection in SightlyJavaCompilerService
Added:
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/README
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/org.apache.sling.scripting.sightly.testing-content-crlf.jar
Modified:
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
sling/trunk/bundles/scripting/sightly/testing-content/pom.xml
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json
sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt
sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.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=1731860&r1=1731859&r2=1731860&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 Tue Feb 23 14:29:37 2016
@@ -68,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;
@@ -163,24 +163,27 @@ public class SightlyJavaCompilerService
IOUtils.closeQuietly(os);
}
- StringBuilder sourceCodeSB = new StringBuilder();
- String[] sourceCodeLines = sourceCode.split("\n");
+ String[] sourceCodeLines = sourceCode.split("\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029]");
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);
+ /**
+ * This matching might return false positives like:
+ * // package a.b.c;
+ *
+ * where from a syntactic point of view the source code doesn't have a package declaration and the expectancy is that our
+ * SightlyJavaCompilerService will add one.
+ */
foundPackageDeclaration = true;
}
- sourceCodeSB.append(line).append("\n");
}
if (!foundPackageDeclaration) {
- sourceCodeSB.insert(0, "package " + Utils.getPackageNameFromFQCN(fqcn) + ";\n");
+ sourceCode = "package " + Utils.getPackageNameFromFQCN(fqcn) + ";\n" + sourceCode;
}
- CompilationUnit compilationUnit = new SightlyCompilationUnit(sourceCodeSB.toString(), fqcn);
-
+ CompilationUnit compilationUnit = new SightlyCompilationUnit(sourceCode, fqcn);
long start = System.currentTimeMillis();
CompilationResult compilationResult = javaCompiler.compile(new CompilationUnit[]{compilationUnit}, options);
long end = System.currentTimeMillis();
Modified: sling/trunk/bundles/scripting/sightly/testing-content/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/pom.xml?rev=1731860&r1=1731859&r2=1731860&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/pom.xml Tue Feb 23 14:29:37 2016
@@ -141,7 +141,7 @@
javax.inject;version=1.0.0,
*
</Import-Package>
- <Sling-Initial-Content>SLING-INF;uninstall:=true</Sling-Initial-Content>
+ <Sling-Initial-Content>SLING-INF;uninstall:=true;ignoreImportProviders:=jar</Sling-Initial-Content>
<Sling-Model-Packages>org.apache.sling.scripting.sightly.testing.models</Sling-Model-Packages>
<Require-Capability>io.sightly; filter:="(&(version>=1.0)(!(version>=2.0)))"</Require-Capability>
</instructions>
Added: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/README
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/README?rev=1731860&view=auto
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/README (added)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/README Tue Feb 23 14:29:37 2016
@@ -0,0 +1,2 @@
+The org.apache.sling.scripting.sightly.testing-content-crlf provides testing content for SLING-5543 which can not be easily saved into
+SCM in a reliable way so that line endings are maintained without alteration.
Added: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/org.apache.sling.scripting.sightly.testing-content-crlf.jar
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/org.apache.sling.scripting.sightly.testing-content-crlf.jar?rev=1731860&view=auto
==============================================================================
Binary files sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/org.apache.sling.scripting.sightly.testing-content-crlf.jar (added) and sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/install/org.apache.sling.scripting.sightly.testing-content-crlf.jar Tue Feb 23 14:29:37 2016 differ
Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json?rev=1731860&r1=1731859&r2=1731860&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json Tue Feb 23 14:29:37 2016
@@ -32,5 +32,9 @@
"attributequotes": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "/apps/sightly/scripts/attributequotes"
+ },
+ "crlf": {
+ "jcr:primaryType": "nt:unstructured",
+ "sling:resourceType": "/apps/sightly/scripts/crlf"
}
}
Modified: sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt?rev=1731860&r1=1731859&r2=1731860&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt (original)
+++ sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt Tue Feb 23 14:29:37 2016
@@ -20,7 +20,7 @@
# Dependencies
[artifacts]
org.apache.sling/org.apache.sling.launchpad/8/slingstart
- org.apache.sling/org.apache.sling.scripting.javascript/2.0.27-SNAPSHOT
+ org.apache.sling/org.apache.sling.scripting.javascript/2.0.29-SNAPSHOT
org.apache.sling/org.apache.sling.scripting.sightly/1.0.13-SNAPSHOT
org.apache.sling/org.apache.sling.scripting.sightly.js.provider/1.0.11-SNAPSHOT
org.apache.sling/org.apache.sling.scripting.sightly.models.provider/1.0.1-SNAPSHOT
Modified: sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java?rev=1731860&r1=1731859&r2=1731860&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java (original)
+++ sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java Tue Feb 23 14:29:37 2016
@@ -52,6 +52,11 @@ public class SlingSpecificsSightlyIT {
private static final String SLING_USE_INHERITANCE_WITHOUTOVERLAY = "/sightly/useinheritance.notoverlaid.html";
private static final String SLING_JAVA_USE_POJO_UPDATE = "/sightly/use.repopojo.html";
private static final String SLING_ATTRIBUTE_QUOTES = "/sightly/attributequotes.html";
+ private static final String SLING_CRLF = "/sightly/crlf";
+ private static final String SLING_CRLF_NOPKG = SLING_CRLF + ".nopkg.html";
+ private static final String SLING_CRLF_PKG = SLING_CRLF + ".pkg.html";
+ private static final String SLING_CRLF_WRONGPKG = SLING_CRLF + ".wrongpkg.html";
+
@BeforeClass
public static void init() {
@@ -189,6 +194,27 @@ public class SlingSpecificsSightlyIT {
assertTrue(pageContent.contains("<span data-resource=\"/sightly/attributequotes\">/sightly/attributequotes</span>"));
}
+ @Test
+ public void testCRLFNoPkg() {
+ String url = launchpadURL + SLING_CRLF_NOPKG;
+ String pageContent = client.getStringContent(url, 200);
+ assertEquals("nopkg", HTMLExtractor.innerHTML(url, pageContent, "#repopojocrlf-nopkg"));
+ }
+
+ @Test
+ public void testCRLFPkg() {
+ String url = launchpadURL + SLING_CRLF_PKG;
+ String pageContent = client.getStringContent(url, 200);
+ assertEquals("pkg", HTMLExtractor.innerHTML(url, pageContent, "#repopojocrlf-pkg"));
+ }
+
+ @Test
+ public void testCRLFWrongPkg() {
+ String url = launchpadURL + SLING_CRLF_WRONGPKG;
+ String pageContent = client.getStringContent(url, 500);
+ assertTrue(pageContent.contains("CompilerException"));
+ }
+
private void uploadFile(String fileName, String serverFileName, String url) throws IOException {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(launchpadURL + url);