You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by jw...@apache.org on 2017/08/25 01:30:17 UTC
[1/2] groovy git commit: GROOVY-8294: Return 404 for non-existing
paths in TemplateServlet when running from .war (closes #588)
Repository: groovy
Updated Branches:
refs/heads/master 4d75ac66d -> 47a47a4ac
GROOVY-8294: Return 404 for non-existing paths in TemplateServlet when running from .war (closes #588)
- When TemplateServlet was used in application servers that don't unpack
a war (i.e. when the real path of resources could not be retrieved),
an internal server error was returned upon trying to retrieve a
non-existing template file. Now, a 404 is returned.
- When running from a unpacked war, this had already worked before.
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/82922e32
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/82922e32
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/82922e32
Branch: refs/heads/master
Commit: 82922e32f20d4b1a73e4ad0ec4ba031a29b19f1b
Parents: 4d75ac6
Author: Thomas Reifenberger <to...@users.noreply.github.com>
Authored: Thu Aug 17 23:11:30 2017 +0200
Committer: John Wagenleitner <jw...@apache.org>
Committed: Thu Aug 24 17:51:47 2017 -0700
----------------------------------------------------------------------
.../java/groovy/servlet/TemplateServlet.java | 4 +
.../groovy/servlet/TemplateServletTest.groovy | 97 ++++++++++++++++++++
2 files changed, 101 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/82922e32/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.java
----------------------------------------------------------------------
diff --git a/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.java b/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.java
index 4c3e8be..553ed3c 100644
--- a/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.java
+++ b/subprojects/groovy-servlet/src/main/java/groovy/servlet/TemplateServlet.java
@@ -441,6 +441,10 @@ public class TemplateServlet extends AbstractHttpServlet {
} else {
name = getScriptUri(request);
URL url = servletContext.getResource(name);
+ if (url == null) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
getMillis = System.currentTimeMillis();
template = getTemplate(url);
getMillis = System.currentTimeMillis() - getMillis;
http://git-wip-us.apache.org/repos/asf/groovy/blob/82922e32/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy b/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
new file mode 100644
index 0000000..ae05e6d
--- /dev/null
+++ b/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
@@ -0,0 +1,97 @@
+package groovy.servlet
+
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TemporaryFolder
+
+import javax.servlet.ServletConfig
+import javax.servlet.ServletContext
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
+
+class TemplateServletTest {
+
+ TemplateServlet servlet
+
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder()
+
+ @Before
+ void setUp() {
+ servlet = new TemplateServlet()
+ }
+
+ @Test
+ void test_service_for_existing_resource() {
+ def templateFile = temporaryFolder.newFile('template.gsp')
+ def url = templateFile.toURI().toURL()
+ def servletConfig = mockServletConfigForUrlResource(url)
+ HttpServletRequest request = mockRequest()
+ def (HttpServletResponse response, responseData) = mockResponse()
+ servlet.init(servletConfig)
+
+ servlet.service(request, response)
+
+ assert responseData.error == null
+ assert responseData.writer.toString() != ''
+ assert responseData.status == HttpServletResponse.SC_OK
+ }
+
+ @Test
+ void test_service_for_missing_resource() {
+ def url = null
+ def servletConfig = mockServletConfigForUrlResource(url)
+ HttpServletRequest request = mockRequest()
+ def (HttpServletResponse response, responseData) = mockResponse()
+ servlet.init(servletConfig)
+
+ servlet.service(request, response)
+
+ assert responseData.error == HttpServletResponse.SC_NOT_FOUND
+ assert responseData.writer.toString() == ''
+ assert responseData.status == null
+ }
+
+ private mockRequest() {
+ return [
+ getAttribute : { null },
+ getPathInfo : { 'pathInfo' },
+ getScriptUri : 'scriptUri',
+ getServletPath : { 'servletPath' },
+ getSession : { null },
+ getParameterNames: { new Vector().elements() },
+ getHeaderNames : { new Vector().elements() },
+ ] as HttpServletRequest
+ }
+
+ private mockResponse() {
+ def data = [
+ writer: new StringWriter(),
+ status: null,
+ error : null,
+ ]
+ def mock = [
+ getWriter : { new PrintWriter(data.writer) },
+ sendError : { error -> data.error = error },
+ setContentType: { contentType -> },
+ setStatus : { status -> data.status = status },
+ flushBuffer : { -> },
+ ] as HttpServletResponse
+ return [mock, data]
+ }
+
+ private mockServletConfigForUrlResource(URL mockedResourceUrl) {
+ def servletContext = [
+ getRealPath: { arg -> null },
+ getResource: { arg -> mockedResourceUrl },
+ log : { msg -> },
+ ] as ServletContext
+ [
+ getServletName : { 'name' },
+ getServletContext: { servletContext },
+ getInitParameter : { null },
+ ] as ServletConfig
+ }
+
+}
[2/2] groovy git commit: Add missing license header to new test class
Posted by jw...@apache.org.
Add missing license header to new test class
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/47a47a4a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/47a47a4a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/47a47a4a
Branch: refs/heads/master
Commit: 47a47a4aca286e85faa1e23c38aedbc6b73d107a
Parents: 82922e3
Author: Thomas Reifenberger <to...@users.noreply.github.com>
Authored: Sat Aug 19 11:59:15 2017 +0200
Committer: John Wagenleitner <jw...@apache.org>
Committed: Thu Aug 24 17:52:16 2017 -0700
----------------------------------------------------------------------
.../groovy/servlet/TemplateServletTest.groovy | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/47a47a4a/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy b/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
index ae05e6d..a7b8322 100644
--- a/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
+++ b/subprojects/groovy-servlet/src/test/groovy/groovy/servlet/TemplateServletTest.groovy
@@ -1,3 +1,21 @@
+/*
+ * 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 groovy.servlet
import org.junit.Before