You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by je...@apache.org on 2019/08/28 20:24:29 UTC
[sling-whiteboard] 01/02: Implementing multiple transformation steps
This is an automated email from the ASF dual-hosted git repository.
jeb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit ae12a8cea09920478388c8ad69b5a180f63795f6
Author: JE Bailey <je...@apache.org>
AuthorDate: Fri Aug 23 15:45:38 2019 -0400
Implementing multiple transformation steps
---
.../org/apache/sling/transformer/TransformationContext.java | 5 ++++-
.../java/org/apache/sling/transformer/TransformationStep.java | 2 +-
.../org/apache/sling/transformer/impl/LinkTransformer.java | 4 ++--
.../sling/transformer/impl/TransformationContextImpl.java | 7 +++++--
.../apache/sling/transformer/impl/TransformationFilter.java | 11 ++++++++---
.../apache/sling/transformer/impl/TransformationResponse.java | 9 +++++----
.../sling/transformer/impl/TransformationStepWrapper.java | 5 +++--
.../apache/sling/transformer/impl/TransformationWriter.java | 7 ++++---
8 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/transformer/src/main/java/org/apache/sling/transformer/TransformationContext.java b/transformer/src/main/java/org/apache/sling/transformer/TransformationContext.java
index 9aa3110..fb355f4 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/TransformationContext.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/TransformationContext.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Map;
+import java.util.stream.Stream;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
@@ -50,7 +51,9 @@ public interface TransformationContext {
*/
OutputStream getOutputStream() throws IOException;
- Map<String, Object> getContext();
+ Map<String, Object> getStateMap();
void next(HtmlElement... elements);
+
+ Stream<HtmlElement> getElements();
}
diff --git a/transformer/src/main/java/org/apache/sling/transformer/TransformationStep.java b/transformer/src/main/java/org/apache/sling/transformer/TransformationStep.java
index 3a6e2d3..ed1c134 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/TransformationStep.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/TransformationStep.java
@@ -20,6 +20,6 @@ import org.apache.sling.commons.html.HtmlElement;
public interface TransformationStep {
- public void handle(HtmlElement element, TransformationContext process);
+ public void handle(HtmlElement element, TransformationContext context);
}
diff --git a/transformer/src/main/java/org/apache/sling/transformer/impl/LinkTransformer.java b/transformer/src/main/java/org/apache/sling/transformer/impl/LinkTransformer.java
index 6755e99..d193d62 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/impl/LinkTransformer.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/impl/LinkTransformer.java
@@ -37,7 +37,7 @@ public class LinkTransformer implements TransformationStep {
public void handle(HtmlElement element, TransformationContext process) {
- Map<String, Object> context = process.getContext();
+ Map<String, Object> context = process.getStateMap();
State current = (State) context.getOrDefault("currentState", State.OUT);
MessageDigest d = (MessageDigest) context.computeIfAbsent("hash", (value) -> {
@@ -74,7 +74,7 @@ public class LinkTransformer implements TransformationStep {
case END_TAG:
if (element.getValue().equalsIgnoreCase("body")) {
String headerValue = Base64.getEncoder().encodeToString(d.digest());
- process.getResponse().setHeader("X-Sucks", headerValue);
+ process.getResponse().setHeader("Sucks", headerValue);
HtmlElement br = ElementFactory.create(HtmlElementType.START_TAG, "br");
br.setAttribute("data-hash",headerValue );
process.next(br);
diff --git a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationContextImpl.java b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationContextImpl.java
index 116aa43..b62d343 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationContextImpl.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationContextImpl.java
@@ -28,6 +28,7 @@ import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.commons.html.Html;
import org.apache.sling.commons.html.HtmlElement;
import org.apache.sling.transformer.TransformationContext;
+import org.apache.sling.transformer.TransformationStep;
import org.osgi.annotation.versioning.ProviderType;
/**
@@ -47,10 +48,12 @@ public class TransformationContextImpl implements TransformationContext {
private SlingHttpServletRequest request;
private SlingHttpServletResponse response;
private boolean reset;
+ private List<TransformationStep> steps;
- public TransformationContextImpl(SlingHttpServletRequest request, SlingHttpServletResponse response) {
+ public TransformationContextImpl(SlingHttpServletRequest request, SlingHttpServletResponse response, List<TransformationStep> steps) {
this.request = request;
this.response = response;
+ this.steps = steps;
}
/**
@@ -79,7 +82,7 @@ public class TransformationContextImpl implements TransformationContext {
return list.stream();
}
- public Map<String, Object> getContext() {
+ public Map<String, Object> getStateMap() {
return context;
}
diff --git a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationFilter.java b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationFilter.java
index 15c31b8..1787500 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationFilter.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationFilter.java
@@ -17,6 +17,7 @@
package org.apache.sling.transformer.impl;
import java.io.IOException;
+import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -27,6 +28,8 @@ import javax.servlet.ServletResponse;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.transformer.TransformationContext;
+import org.apache.sling.transformer.TransformationManager;
import org.apache.sling.transformer.TransformationStep;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
@@ -41,7 +44,7 @@ import org.osgi.service.component.annotations.Reference;
public class TransformationFilter implements Filter {
@Reference
- private TransformationStep pipelineManager;
+ private TransformationManager manager;
/**
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
@@ -73,9 +76,11 @@ public class TransformationFilter implements Filter {
final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) request;
final SlingHttpServletResponse slingResponse = (SlingHttpServletResponse) response;
+ List<TransformationStep> steps = manager.getSteps(slingRequest);
+
if (slingRequest.getRequestURI().endsWith(".html")){
- TransformationContextImpl stepProcess = new TransformationContextImpl(slingRequest, slingResponse);
- response = new TransformationResponse(stepProcess);
+ TransformationContext context = new TransformationContextImpl(slingRequest, slingResponse, steps);
+ response = new TransformationResponse(context);
}
chain.doFilter(request, response);
diff --git a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationResponse.java b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationResponse.java
index 6e779ef..62b70d5 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationResponse.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationResponse.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import org.apache.sling.api.wrappers.SlingHttpServletResponseWrapper;
+import org.apache.sling.transformer.TransformationContext;
class TransformationResponse
extends SlingHttpServletResponseWrapper {
@@ -28,12 +29,12 @@ class TransformationResponse
private PrintWriter writer;
- private TransformationContextImpl process;
+ private TransformationContext process;
- public TransformationResponse(TransformationContextImpl process) {
- super(process.getResponse());
- this.process = process;
+ public TransformationResponse(TransformationContext context) {
+ super(context.getResponse());
+ this.process = context;
}
/**
diff --git a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationStepWrapper.java b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationStepWrapper.java
index 3fe406d..c22bb93 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationStepWrapper.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationStepWrapper.java
@@ -20,6 +20,7 @@ import java.util.function.Function;
import java.util.stream.Stream;
import org.apache.sling.commons.html.HtmlElement;
+import org.apache.sling.transformer.TransformationContext;
import org.apache.sling.transformer.TransformationStep;
/**
@@ -30,9 +31,9 @@ import org.apache.sling.transformer.TransformationStep;
public class TransformationStepWrapper implements Function<HtmlElement, Stream<HtmlElement>> {
private TransformationStep tStep;
- private TransformationContextImpl transformationContext;
+ private TransformationContext transformationContext;
- public TransformationStepWrapper(TransformationStep step,TransformationContextImpl context) {
+ public TransformationStepWrapper(TransformationStep step,TransformationContext context) {
this.tStep = step;
this.transformationContext = context;
}
diff --git a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationWriter.java b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationWriter.java
index e84b8a4..5510b64 100644
--- a/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationWriter.java
+++ b/transformer/src/main/java/org/apache/sling/transformer/impl/TransformationWriter.java
@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
import org.apache.sling.commons.html.Html;
import org.apache.sling.commons.html.util.HtmlElements;
+import org.apache.sling.transformer.TransformationContext;
public class TransformationWriter extends Writer {
@@ -29,9 +30,9 @@ public class TransformationWriter extends Writer {
private TransformationStepWrapper wrapper;
- public TransformationWriter(TransformationContextImpl process) throws IOException {
- this.originalWriter = process.getWriter();
- this.wrapper = new TransformationStepWrapper(new LinkTransformer(), process);
+ public TransformationWriter(TransformationContext context) throws IOException {
+ this.originalWriter = context.getWriter();
+ this.wrapper = new TransformationStepWrapper(new LinkTransformer(), context);
}
@Override