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 2015/04/02 10:59:24 UTC
svn commit: r1670852 - in /sling/trunk/contrib/scripting/sightly:
engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/
testing-content/src/main/resources/SLING-INF/
testing-content/src/main/resources/SLING-INF/apps/sightly/scr...
Author: radu
Date: Thu Apr 2 08:59:23 2015
New Revision: 1670852
URL: http://svn.apache.org/r1670852
Log:
SLING-4546 - Sightly: Improper handling of extension and selectors by data-sly-resource
* Improved selector extraction for resource path (taking extensions into consideration)
* Added selectors from path or parent to dispatcher options so they will no longer be ignored
* Updated testing content and integration tests
(applied patch from Vlad Băilescu; closes #77)
Added:
sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/text/
sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/text/text.html
Modified:
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java
sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/resource/resource.html
sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json
sling/trunk/contrib/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java
Modified: sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java?rev=1670852&r1=1670851&r2=1670852&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java (original)
+++ sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java Thu Apr 2 08:59:23 2015
@@ -101,6 +101,8 @@ public class ResourceRuntimeExtension im
selectors.addAll(Arrays.asList(request.getRequestPathInfo().getSelectors()));
}
Map<String, String> dispatcherOptionsMap = new HashMap<String, String>();
+ dispatcherOptionsMap.put(OPTION_ADD_SELECTORS, getSelectorString(selectors));
+ dispatcherOptionsMap.put(OPTION_REPLACE_SELECTORS, " ");
if (options.containsKey(OPTION_SELECTORS)) {
Object selectorsObject = getAndRemoveOption(options, OPTION_SELECTORS);
selectors.clear();
@@ -283,11 +285,11 @@ public class ResourceRuntimeExtension im
PathInfo(String path) {
selectors = getSelectorsFromPath(path);
- String selectorString = getSelectorString(selectors);
- if (StringUtils.isNotEmpty(selectorString)) {
- this.path = path.substring(0, path.length() - selectorString.length() - 1);
- } else {
+ if (selectors.isEmpty()) {
this.path = path;
+ } else {
+ String selectorString = getSelectorString(selectors);
+ this.path = path.replace("." + selectorString, "");
}
}
}
@@ -302,9 +304,14 @@ public class ResourceRuntimeExtension im
}
int dotPos = processingPath.indexOf('.');
if (dotPos > -1) {
- String selectorString = processingPath.substring(dotPos + 1, processingPath.length());
- String[] selectorParts = selectorString.split("\\.");
- selectors.addAll(Arrays.asList(selectorParts));
+ int lastDotPos = processingPath.lastIndexOf('.');
+ // We're expecting selectors only when an extension is also present. If there's
+ // one dot it means we only have the extension
+ if (lastDotPos > dotPos) {
+ String selectorString = processingPath.substring(dotPos + 1, lastDotPos);
+ String[] selectorParts = selectorString.split("\\.");
+ selectors.addAll(Arrays.asList(selectorParts));
+ }
}
}
return selectors;
Modified: sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/resource/resource.html
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/resource/resource.html?rev=1670852&r1=1670851&r2=1670852&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/resource/resource.html (original)
+++ sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/resource/resource.html Thu Apr 2 08:59:23 2015
@@ -23,9 +23,11 @@
</head>
<body>
<div id="selectors" data-sly-resource="${'/sightly/includedresource' @ selectors=['a', 'b']}"></div>
-<div id="selectors-remove-c" data-sly-resource="${'/sightly/includedresource.a.b.c' @ selectors=['a', 'b']}"></div>
-<div id="removeselectors-remove-b" data-sly-resource="${'/sightly/includedresource.a.b.c' @ removeSelectors=['b']}"></div>
+<div id="selectors-remove-c" data-sly-resource="${'/sightly/includedresource.a.b.c.html' @ selectors=['a', 'b']}"></div>
+<div id="removeselectors-remove-b" data-sly-resource="${'/sightly/includedresource.a.b.c.html' @ removeSelectors=['b']}"></div>
<div id="addselectors" data-sly-resource="${'/sightly/includedresource' @ addSelectors=['a', 'b', 'c']}"></div>
<div id="dot-include" data-sly-resource="${ '.' @ selectors='dot'}"></div>
+<div id="extension-selectors" data-sly-resource="${'/sightly/text.a.b.txt'}"></div>
+<div id="extension-replaceselectors" data-sly-resource="${'/sightly/text.a.b.txt' @ selectors=['c']}"></div>
</body>
</html>
\ No newline at end of file
Added: sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/text/text.html
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/text/text.html?rev=1670852&view=auto
==============================================================================
--- sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/text/text.html (added)
+++ sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/text/text.html Thu Apr 2 08:59:23 2015
@@ -0,0 +1,20 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+<span class="path">path: ${resource.path}</span><br>
+<span class="selectors">selectors: ${request.requestPathInfo.selectorString}</span>
\ No newline at end of file
Modified: sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json?rev=1670852&r1=1670851&r2=1670852&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json (original)
+++ sling/trunk/contrib/scripting/sightly/testing-content/src/main/resources/SLING-INF/sightly.json Thu Apr 2 08:59:23 2015
@@ -16,5 +16,9 @@
"template": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType": "/apps/sightly/scripts/template"
+ },
+ "text.txt": {
+ "jcr:primaryType": "nt:unstructured",
+ "sling:resourceType": "/apps/sightly/scripts/text"
}
}
Modified: sling/trunk/contrib/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java?rev=1670852&r1=1670851&r2=1670852&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java (original)
+++ sling/trunk/contrib/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java Thu Apr 2 08:59:23 2015
@@ -77,6 +77,10 @@ public class SlingSpecificsSightlyIT {
assertEquals("selectors: a.c", HTMLExtractor.innerHTML(url, pageContent, "#removeselectors-remove-b span.selectors"));
assertEquals("selectors: a.b.c", HTMLExtractor.innerHTML(url, pageContent, "#addselectors span.selectors"));
assertEquals("It works", HTMLExtractor.innerHTML(url, pageContent, "#dot"));
+ assertEquals("path: /sightly/text.txt", HTMLExtractor.innerHTML(url, pageContent, "#extension-selectors span.path"));
+ assertEquals("selectors: a.b", HTMLExtractor.innerHTML(url, pageContent, "#extension-selectors span.selectors"));
+ assertEquals("path: /sightly/text.txt", HTMLExtractor.innerHTML(url, pageContent, "#extension-replaceselectors span.path"));
+ assertEquals("selectors: c", HTMLExtractor.innerHTML(url, pageContent, "#extension-replaceselectors span.selectors"));
}
@Test