You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2022/09/08 11:27:03 UTC

[sling-org-apache-sling-launchpad-test-services] branch feature/SLING-11569-requestdispatcher-include-responsebuilder created (now a06a3b6)

This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a change to branch feature/SLING-11569-requestdispatcher-include-responsebuilder
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-launchpad-test-services.git


      at a06a3b6  SLING-11569 test servlets to use RequestDispatcher to include content from other servlets

This branch includes the following new commits:

     new a06a3b6  SLING-11569 test servlets to use RequestDispatcher to include content from other servlets

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[sling-org-apache-sling-launchpad-test-services] 01/01: SLING-11569 test servlets to use RequestDispatcher to include content from other servlets

Posted by ss...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a commit to branch feature/SLING-11569-requestdispatcher-include-responsebuilder
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-launchpad-test-services.git

commit a06a3b67f6a959ec39051c66ef71fd0376a64e1b
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Thu Sep 8 13:11:35 2022 +0200

    SLING-11569 test servlets to use RequestDispatcher to include content from other servlets
---
 .../requestdispatcher/OriginalResponseServlet.java | 54 ++++++++++++++++
 .../RequestDispatcherIncludeBufferedServlet.java   | 72 ++++++++++++++++++++++
 .../RequestDispatcherIncludeDirectServlet.java     | 61 ++++++++++++++++++
 3 files changed, 187 insertions(+)

diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/OriginalResponseServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/OriginalResponseServlet.java
new file mode 100644
index 0000000..96e0de0
--- /dev/null
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/OriginalResponseServlet.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.sling.launchpad.testservices.servlets.requestdispatcher;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.jetbrains.annotations.NotNull;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * Simple servlet delivering a static string - used for testing request dispatcher include.
+ */
+@Component(
+        immediate=true,
+        service = javax.servlet.Servlet.class,
+        property = {
+                "service.description:String=Paths Test Servlet",
+                "service.vendor:String=The Apache Software Foundation",
+                "sling.servlet.paths:String=" + OriginalResponseServlet.PATH
+        })
+@SuppressWarnings("serial")
+public class OriginalResponseServlet extends SlingSafeMethodsServlet {
+
+    static final String PATH = "/testing/requestDispatcher/originalResponse";
+
+    @Override
+    protected void doGet(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response)
+            throws ServletException, IOException {
+        response.setContentType("text/plain;charset=UTF-8");
+        response.getWriter().write("OriginalResponse");
+    }
+
+}
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/RequestDispatcherIncludeBufferedServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/RequestDispatcherIncludeBufferedServlet.java
new file mode 100644
index 0000000..72912e7
--- /dev/null
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/RequestDispatcherIncludeBufferedServlet.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+package org.apache.sling.launchpad.testservices.servlets.requestdispatcher;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.request.builder.Builders;
+import org.apache.sling.api.request.builder.SlingHttpServletResponseResult;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.jetbrains.annotations.NotNull;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * Servlet using RequestDispatcher.include to include output of another servlet in it's response.
+ * This time the inclusion is not done directly on the response, but the include is
+ * done into a "synthetic response" created via Sling Builders and the output than written to the real response.
+ */
+@Component(
+        immediate=true,
+        service = javax.servlet.Servlet.class,
+        property = {
+                "service.description:String=Paths Test Servlet",
+                "service.vendor:String=The Apache Software Foundation",
+                "sling.servlet.paths:String=" + RequestDispatcherIncludeBufferedServlet.PATH
+        })
+@SuppressWarnings("serial")
+public class RequestDispatcherIncludeBufferedServlet extends SlingSafeMethodsServlet {
+
+    static final String PATH = "/testing/requestDispatcher/includeBuffered";
+
+    @Override
+    protected void doGet(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response)
+            throws ServletException, IOException {
+        response.setContentType("text/plain;charset=UTF-8");
+
+        response.getWriter().write("includeBuffered(");
+
+        // build "synthetic response"
+        SlingHttpServletResponseResult syntheticResponse = Builders.newResponseBuilder().build();
+
+        // write output of other servlet to this response to allow to post-process or validate it
+        RequestDispatcher requestDispatcher = request.getRequestDispatcher(OriginalResponseServlet.PATH);
+        requestDispatcher.include(request, syntheticResponse);
+
+        // write generated output to response
+        response.getWriter().write(syntheticResponse.getOutputAsString());
+
+        response.getWriter().write(")");
+    }
+
+}
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/RequestDispatcherIncludeDirectServlet.java b/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/RequestDispatcherIncludeDirectServlet.java
new file mode 100644
index 0000000..8261d63
--- /dev/null
+++ b/src/main/java/org/apache/sling/launchpad/testservices/servlets/requestdispatcher/RequestDispatcherIncludeDirectServlet.java
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+package org.apache.sling.launchpad.testservices.servlets.requestdispatcher;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.jetbrains.annotations.NotNull;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * Servlet using RequestDispatcher.include to include output of another servlet in it's response.
+ */
+@Component(
+        immediate=true,
+        service = javax.servlet.Servlet.class,
+        property = {
+                "service.description:String=Paths Test Servlet",
+                "service.vendor:String=The Apache Software Foundation",
+                "sling.servlet.paths:String=" + RequestDispatcherIncludeDirectServlet.PATH
+        })
+@SuppressWarnings("serial")
+public class RequestDispatcherIncludeDirectServlet extends SlingSafeMethodsServlet {
+
+    static final String PATH = "/testing/requestDispatcher/includeDirect";
+
+    @Override
+    protected void doGet(@NotNull SlingHttpServletRequest request, @NotNull SlingHttpServletResponse response)
+            throws ServletException, IOException {
+        response.setContentType("text/plain;charset=UTF-8");
+
+        response.getWriter().write("includeDirect(");
+
+        RequestDispatcher requestDispatcher = request.getRequestDispatcher(OriginalResponseServlet.PATH);
+        requestDispatcher.include(request, response);
+
+        response.getWriter().write(")");
+    }
+
+}