On Mon, Mar 16, 2020 at 1:08 AM <[email protected]> wrote:
> This is an automated email from the ASF dual-hosted git repository.
>
> svenmeier pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/wicket.git
>
>
> The following commit(s) were added to refs/heads/master by this push:
> new bedd18a WICKET-6755 properly decode real path from uri
> bedd18a is described below
>
> commit bedd18a4bdfaf88f15d015a3c1afaf1ad2e4fa47
> Author: =?UTF-8?q?Thorsten=20Sch=C3=B6ning?= <[email protected]>
> AuthorDate: Sun Mar 15 23:49:52 2020 +0100
>
> WICKET-6755 properly decode real path from uri
> ---
> .../protocol/http/mock/MockServletContext.java | 7 ++--
> .../MockServletContextTest with spaces.txt | 1 +
> .../protocol/http/mock/MockServletContextTest.java | 40
> ++++++++++++++++++++++
> 3 files changed, 46 insertions(+), 2 deletions(-)
>
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
> b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
> index 6a0f8e6..8fc4522 100755
> ---
> a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockServletContext.java
> @@ -24,6 +24,7 @@ import java.lang.reflect.InvocationTargetException;
> import java.lang.reflect.Method;
> import java.lang.reflect.Proxy;
> import java.net.MalformedURLException;
> +import java.net.URISyntaxException;
> import java.net.URL;
> import java.util.Arrays;
> import java.util.Collection;
> @@ -408,9 +409,11 @@ public class MockServletContext implements
> ServletContext
> try {
> URL url = getResource(name);
> if (url != null) {
> - return url.getFile();
> + url.getFile();
>
Is this needed to stay ? I don't see a reason
> + // WICKET-6755 do not use url.getFile() as
> it does not properly decode the path
> + return new
> File(url.toURI()).getAbsolutePath();
> }
> - } catch (IOException e) {
> + } catch (IOException | URISyntaxException e) {
> log.error(e.getMessage(), e);
> }
> return null;
> diff --git
> a/wicket-core/src/test/java/META-INF/resources/MockServletContextTest with
> spaces.txt
> b/wicket-core/src/test/java/META-INF/resources/MockServletContextTest with
> spaces.txt
> new file mode 100644
> index 0000000..5702bf2
> --- /dev/null
> +++ b/wicket-core/src/test/java/META-INF/resources/MockServletContextTest
> with spaces.txt
> @@ -0,0 +1 @@
> +This file's name contains spaces to ensure proper decoding of
> MockServletContext#getRealPath()
> \ No newline at end of file
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockServletContextTest.java
> b/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockServletContextTest.java
> new file mode 100644
> index 0000000..aa0251f
> --- /dev/null
> +++
> b/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockServletContextTest.java
> @@ -0,0 +1,40 @@
> +/*
> + * 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.wicket.protocol.http.mock;
> +
> +import static org.junit.jupiter.api.Assertions.assertTrue;
> +
> +import org.junit.jupiter.api.Test;
> +
> +/**
> + * Test {@link MockServletContext}.
> + *
> + * @author svenmeier
> + */
> +public class MockServletContextTest {
> +
> + /**
> + * WICKET-6755
> + */
> + @Test
> + void spaces() {
> + MockServletContext context = new MockServletContext(null,
> null);
> +
> + String name = "MockServletContextTest with spaces.txt";
> + assertTrue(context.getRealPath(name).endsWith(name));
> + }
> +}
>
>