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 <[email protected]> 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
