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/01/05 15:10:28 UTC
svn commit: r1723074 - in /sling/trunk/bundles/scripting/sightly:
engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/
engine/src/main/java/org/apache/sling/scripting/sightly/impl/utils/
engine/src/test/java/org/apache/sling/scripting...
Author: radu
Date: Tue Jan 5 14:10:27 2016
New Revision: 1723074
URL: http://svn.apache.org/viewvc?rev=1723074&view=rev
Log:
SLING-5409 - Enhance the SightlyJavaCompilerService to not enforce a package name for Use objects stored in the repository
* package names are now automatically added or replaced (depending on the case) for Use objects
Added:
sling/trunk/bundles/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/UtilsTest.java
- copied, changed from r1723054, sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/RepoPojoNoPkg.java
- copied, changed from r1723054, sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java
Modified:
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/utils/JavaEscapeUtils.java
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html
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=1723074&r1=1723073&r2=1723074&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 Jan 5 14:10:27 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.Pattern;
import org.apache.commons.io.IOUtils;
import org.apache.felix.scr.annotations.Activate;
@@ -66,6 +67,8 @@ 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_$]*\\.?)*;");
+
@Reference
private ClassLoaderWriter classLoaderWriter = null;
@@ -166,6 +169,10 @@ 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;
+
+
CompilationUnit compilationUnit = new SightlyCompilationUnit(sourceCode, fqcn);
long start = System.currentTimeMillis();
Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java?rev=1723074&r1=1723073&r2=1723074&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java (original)
+++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java Tue Jan 5 14:10:27 2016
@@ -16,13 +16,34 @@
******************************************************************************/
package org.apache.sling.scripting.sightly.impl.compiler;
+import org.apache.commons.lang.StringUtils;
+import org.apache.sling.scripting.sightly.impl.utils.JavaEscapeUtils;
+
public class Utils {
public static String getJavaNameFromPath(String path) {
if (path.endsWith(".java")) {
path = path.substring(0, path.length() - 5);
}
- return path.substring(1).replace("/", ".").replace("-", "_");
+ String[] parts = path.split("/");
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0; i < parts.length; i++) {
+ String part = parts[i];
+ if (StringUtils.isNotEmpty(part)) {
+ stringBuilder.append(JavaEscapeUtils.getEscapedToken(parts[i]));
+ if (i != parts.length - 1) {
+ stringBuilder.append(".");
+ }
+ }
+ }
+ return stringBuilder.toString();
+ }
+
+ public static String getPackageNameFromFQCN(String fqcn) {
+ if (StringUtils.isNotEmpty(fqcn)) {
+ return fqcn.substring(0, fqcn.lastIndexOf("."));
+ }
+ return null;
}
}
Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/utils/JavaEscapeUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/utils/JavaEscapeUtils.java?rev=1723074&r1=1723073&r2=1723074&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/utils/JavaEscapeUtils.java (original)
+++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/utils/JavaEscapeUtils.java Tue Jan 5 14:10:27 2016
@@ -85,7 +85,7 @@ public class JavaEscapeUtils {
* @return a valid Java token
*/
public static String getEscapedToken(String token) {
- String result = token.toLowerCase();
+ String result = token;
if (reservedKeywords.contains(result)) {
result = "_" + result;
}
Copied: sling/trunk/bundles/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/UtilsTest.java (from r1723054, sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/UtilsTest.java?p2=sling/trunk/bundles/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/UtilsTest.java&p1=sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java&r1=1723054&r2=1723074&rev=1723074&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java (original)
+++ sling/trunk/bundles/scripting/sightly/engine/src/test/java/org/apache/sling/scripting/sightly/impl/compiler/UtilsTest.java Tue Jan 5 14:10:27 2016
@@ -16,13 +16,23 @@
******************************************************************************/
package org.apache.sling.scripting.sightly.impl.compiler;
-public class Utils {
+import org.junit.Test;
- public static String getJavaNameFromPath(String path) {
- if (path.endsWith(".java")) {
- path = path.substring(0, path.length() - 5);
- }
- return path.substring(1).replace("/", ".").replace("-", "_");
+import static org.junit.Assert.assertEquals;
+
+public class UtilsTest {
+
+ @Test
+ public void testGetJavaNameFromPath() throws Exception {
+ assertEquals("apps.project.components.A", Utils.getJavaNameFromPath("/apps/project/components/A.java"));
+ assertEquals("apps.pro_ject.components.A", Utils.getJavaNameFromPath("/apps/pro-ject/components/A.java"));
+ assertEquals("apps._static.project.components.A", Utils.getJavaNameFromPath("/apps/static/project/components/A.java"));
}
+ @Test
+ public void testGetPackageNameFromFQCN() throws Exception {
+ assertEquals("apps.project.components", Utils.getPackageNameFromFQCN("apps.project.components.A"));
+ assertEquals("apps.pro_ject.components", Utils.getPackageNameFromFQCN("apps.pro_ject.components.A"));
+ assertEquals("apps._static.project.components", Utils.getPackageNameFromFQCN("apps._static.project.components.A"));
+ }
}
Copied: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/RepoPojoNoPkg.java (from r1723054, sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java)
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/RepoPojoNoPkg.java?p2=sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/RepoPojoNoPkg.java&p1=sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java&r1=1723054&r2=1723074&rev=1723074&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/Utils.java (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/RepoPojoNoPkg.java Tue Jan 5 14:10:27 2016
@@ -14,15 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
-package org.apache.sling.scripting.sightly.impl.compiler;
-
-public class Utils {
-
- public static String getJavaNameFromPath(String path) {
- if (path.endsWith(".java")) {
- path = path.substring(0, path.length() - 5);
- }
- return path.substring(1).replace("/", ".").replace("-", "_");
- }
-
+public class RepoPojoNoPkg {
+ public static final String FIELD = "nopkg";
}
Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html?rev=1723074&r1=1723073&r2=1723074&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html Tue Jan 5 14:10:27 2016
@@ -31,5 +31,6 @@
<div id="resadapt"
data-sly-use.resadapt="org.apache.sling.scripting.sightly.testing.adaptable.ResourceAdapterUseObject">${resadapt.title}</div>
<div id="osgi" data-sly-use.osgi="org.apache.sling.scripting.sightly.testing.use.TestService">${osgi.sayHello}</div>
+ <div id="repopojo-nopkg" data-sly-use.repoNoPkg="RepoPojoNoPkg">${repoNoPkg.FIELD}</div>
</body>
-</html>
\ No newline at end of file
+</html>
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=1723074&r1=1723073&r2=1723074&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 Jan 5 14:10:27 2016
@@ -169,6 +169,13 @@ public class SlingSpecificsSightlyIT {
assertEquals("original", HTMLExtractor.innerHTML(url + System.currentTimeMillis(), pageContent, "#repopojo"));
}
+ @Test
+ public void testRepositoryPojoNoPkg() {
+ String url = launchpadURL + SLING_USE;
+ String pageContent = client.getStringContent(url, 200);
+ assertEquals("nopkg", HTMLExtractor.innerHTML(url, pageContent, "#repopojo-nopkg"));
+ }
+
private void uploadFile(String fileName, String serverFileName, String url) throws IOException {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(launchpadURL + url);