You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2021/04/13 11:53:41 UTC
[sling-org-apache-sling-dynamic-include] branch master updated:
SLING-10096 - Allow the SlingHttpServletRequest in the IncludeGenerator or
Sling dynamic includes
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-dynamic-include.git
The following commit(s) were added to refs/heads/master by this push:
new e2c70ea SLING-10096 - Allow the SlingHttpServletRequest in the IncludeGenerator or Sling dynamic includes
e2c70ea is described below
commit e2c70ea7f5303e1952d5fd415c3d0939f6a00ced
Author: Santiago GarcĂa Pimentel <sa...@gmail.com>
AuthorDate: Tue Apr 13 13:53:33 2021 +0200
SLING-10096 - Allow the SlingHttpServletRequest in the IncludeGenerator or Sling dynamic includes
Extend the IncludeGenerator interface with the Sling Request object to give more flexibility to custom implementators of the interface
Co-authored-by: Santiago Garcia Pimentel <sa...@netcentric.biz>
---
pom.xml | 6 +++++-
.../apache/sling/dynamicinclude/Configuration.java | 9 ++-------
.../sling/dynamicinclude/IncludeTagFilter.java | 5 ++---
.../{generator => api}/IncludeGenerator.java | 22 ++++++++++++++++++++--
.../package-info.java} | 12 +++---------
.../generator/IncludeGeneratorWhiteboard.java | 1 +
.../generator/types/EsiGenerator.java | 5 +++--
.../generator/types/JsiGenerator.java | 5 +++--
.../generator/types/SsiGenerator.java | 5 +++--
9 files changed, 42 insertions(+), 28 deletions(-)
diff --git a/pom.xml b/pom.xml
index 092484f..808e75a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
</parent>
<artifactId>org.apache.sling.dynamic-include</artifactId>
- <version>3.2.1-SNAPSHOT</version>
+ <version>3.3.0-SNAPSHOT</version>
<name>Apache Sling Dynamic Include</name>
<description>Dynamic Include filter for Apache Sling</description>
@@ -71,6 +71,10 @@
<artifactId>org.osgi.service.component.annotations</artifactId>
</dependency>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.annotation.versioning</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.servlets.annotations</artifactId>
<scope>provided</scope>
diff --git a/src/main/java/org/apache/sling/dynamicinclude/Configuration.java b/src/main/java/org/apache/sling/dynamicinclude/Configuration.java
index 0fa523a..30cbce6 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/Configuration.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/Configuration.java
@@ -38,7 +38,6 @@ import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.Designate;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
-import org.osgi.service.metatype.annotations.Option;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,17 +65,13 @@ public class Configuration {
@AttributeDefinition(name="Resource types", description="Filter will replace components with selected resource types", cardinality = Integer.MAX_VALUE)
String include$_$filter_config_resource$_$types() default "";
- @AttributeDefinition(name = "Include type", description = "Type of generated include tags", options = {
- @Option(label = "Apache SSI", value = "SSI"),
- @Option(label = "ESI", value = "ESI"),
- @Option(label = "Javascript", value = "JSI")
- })
+ @AttributeDefinition(name = "Include type", description = "Type of generated include tags")
String include$_$filter_config_include$_$type() default "SSI";
@AttributeDefinition(name="Add comment", description = "Add comment to included components")
boolean include$_$filter_config_add__comment() default false;
- @AttributeDefinition(name = "Filter selector", description = "Selector used to mark included resources")
+ @AttributeDefinition(name = "Filter selector", description = "Selector used to mark included resources. The Built in option are 'SSI','ESI' and 'JSI'")
String include$_$filter_config_selector() default "nocache";
@AttributeDefinition(name = "Extension", description = "Extension to append to virtual resources to make caching possible")
diff --git a/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java b/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java
index b43568a..7bdddd3 100644
--- a/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/IncludeTagFilter.java
@@ -25,7 +25,6 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collection;
import java.util.Enumeration;
-import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -39,7 +38,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
import org.apache.sling.dynamicinclude.generator.IncludeGeneratorWhiteboard;
import org.apache.sling.dynamicinclude.impl.UrlBuilder;
import org.apache.sling.servlets.annotations.SlingServletFilter;
@@ -97,7 +96,7 @@ public class IncludeTagFilter implements Filter {
// Only write the includes markup if the required, configurable request
// header is present
if (shouldWriteIncludes(config, slingRequest)) {
- String include = generator.getInclude(url);
+ String include = generator.getInclude(slingRequest,url);
LOG.debug(include);
writer.append(include);
} else {
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/api/IncludeGenerator.java
similarity index 50%
copy from src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java
copy to src/main/java/org/apache/sling/dynamicinclude/api/IncludeGenerator.java
index 91998aa..e950ddc 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/api/IncludeGenerator.java
@@ -17,7 +17,9 @@
* under the License.
*/
-package org.apache.sling.dynamicinclude.generator;
+package org.apache.sling.dynamicinclude.api;
+
+import org.apache.sling.api.SlingHttpServletRequest;
/**
* Include generator interface
@@ -25,5 +27,21 @@ package org.apache.sling.dynamicinclude.generator;
public interface IncludeGenerator {
String getType();
- String getInclude(String url);
+ /**
+ * Returns the string used to include the resource.
+ * For example, this might be a Javascript code that retrieves a snippet of html,
+ * an Apache SSI Tag, or an Edge Side Include Tag.
+ * <p>
+ * This method receives the sling request and an Url that has already be normalized as followed:
+ * <ul>
+ * <li>The query string has been removed</li>
+ * <li>The Url has been mapped using the ResourceResolver</li>
+ * <li>The jcr:content paths have been encoded to _jcr_content.</li>
+ * </ul>
+ *
+ * @param request the Sling request object
+ * @param normalizedUrl the requested url, normalized
+ * @return a String used to include the resource
+ **/
+ String getInclude(SlingHttpServletRequest request, String normalizedUrl);
}
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/api/package-info.java
old mode 100755
new mode 100644
similarity index 81%
rename from src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java
rename to src/main/java/org/apache/sling/dynamicinclude/api/package-info.java
index 91998aa..07f09e3
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/api/package-info.java
@@ -17,13 +17,7 @@
* under the License.
*/
-package org.apache.sling.dynamicinclude.generator;
+@Version("1.0.0")
+package org.apache.sling.dynamicinclude.api;
-/**
- * Include generator interface
- */
-public interface IncludeGenerator {
- String getType();
-
- String getInclude(String url);
-}
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java b/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java
index 8294744..5f742c7 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/IncludeGeneratorWhiteboard.java
@@ -26,6 +26,7 @@ import static org.osgi.service.component.annotations.ReferencePolicy.DYNAMIC;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java
index 0d47fcd..b648800 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/types/EsiGenerator.java
@@ -20,7 +20,8 @@
package org.apache.sling.dynamicinclude.generator.types;
import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
import org.osgi.service.component.annotations.Component;
/**
@@ -36,7 +37,7 @@ public class EsiGenerator implements IncludeGenerator {
}
@Override
- public String getInclude(String url) {
+ public String getInclude(SlingHttpServletRequest request, String url) {
StringBuffer buf = new StringBuffer();
buf.append("<esi:include src=\"");
buf.append(StringEscapeUtils.escapeHtml4(url));
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java
index a777f42..f3d36a8 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/types/JsiGenerator.java
@@ -27,7 +27,8 @@ import java.io.UnsupportedEncodingException;
import java.net.URL;
import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
@@ -69,7 +70,7 @@ public class JsiGenerator implements IncludeGenerator {
}
@Override
- public String getInclude(String url) {
+ public String getInclude(SlingHttpServletRequest request, String url) {
if (template == null) {
throw new IllegalStateException("JSI generator hasn't be initialized");
}
diff --git a/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java b/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java
index 718d506..1cbee83 100755
--- a/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java
+++ b/src/main/java/org/apache/sling/dynamicinclude/generator/types/SsiGenerator.java
@@ -19,7 +19,8 @@
package org.apache.sling.dynamicinclude.generator.types;
-import org.apache.sling.dynamicinclude.generator.IncludeGenerator;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.dynamicinclude.api.IncludeGenerator;
import org.osgi.service.component.annotations.Component;
/**
@@ -35,7 +36,7 @@ public class SsiGenerator implements IncludeGenerator {
}
@Override
- public String getInclude(String url) {
+ public String getInclude(SlingHttpServletRequest request, String url) {
StringBuffer buf = new StringBuffer();
buf.append("<!--#include virtual=\"");
buf.append(escapeForApache(url));