Commit c14f5fb6 authored by Andy Wilkinson's avatar Andy Wilkinson

Polish "Fix handling of spaces in container's document root"

Closes gh-10706
parent 8031a1bd
......@@ -19,7 +19,6 @@ package org.springframework.boot.context.embedded;
import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
......@@ -88,7 +87,7 @@ public abstract class AbstractEmbeddedServletContainerFactory
}
private File getExplodedWarFileDocumentRoot() {
return getExplodedWarFileDocumentRoot(getCodeSourceArchive(getCodeSource()));
return getExplodedWarFileDocumentRoot(getCodeSourceArchive());
}
protected List<URL> getUrlsOfJarsWithMetaInfResources() {
......@@ -173,7 +172,7 @@ public abstract class AbstractEmbeddedServletContainerFactory
}
private File getArchiveFileDocumentRoot(String extension) {
File file = getCodeSourceArchive(getCodeSource());
File file = getCodeSourceArchive();
if (this.logger.isDebugEnabled()) {
this.logger.debug("Code archive: " + file);
}
......@@ -194,6 +193,10 @@ public abstract class AbstractEmbeddedServletContainerFactory
return null;
}
private File getCodeSourceArchive() {
return getCodeSourceArchive(getClass().getProtectionDomain().getCodeSource());
}
File getCodeSourceArchive(CodeSource codeSource) {
try {
URL location = (codeSource == null ? null : codeSource.getLocation());
......@@ -213,16 +216,9 @@ public abstract class AbstractEmbeddedServletContainerFactory
}
return new File(path);
}
catch (IOException ex) {
catch (Exception ex) {
return null;
}
catch (URISyntaxException e) {
return null;
}
}
private CodeSource getCodeSource() {
return getClass().getProtectionDomain().getCodeSource();
}
protected final File getValidSessionStoreDir() {
......
......@@ -678,16 +678,18 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@Test
public void codeSourceArchivePath() throws Exception {
AbstractEmbeddedServletContainerFactory factory = getFactory();
final CodeSource codeSource = new CodeSource(new URL("file", "", "/some/test/path/"), (Certificate[]) null);
final File codeSourceArchive = factory.getCodeSourceArchive(codeSource);
CodeSource codeSource = new CodeSource(new URL("file", "", "/some/test/path/"),
(Certificate[]) null);
File codeSourceArchive = factory.getCodeSourceArchive(codeSource);
assertThat(codeSourceArchive).isEqualTo(new File("/some/test/path/"));
}
@Test
public void codeSourceArchivePathContainingSpaces() throws Exception {
AbstractEmbeddedServletContainerFactory factory = getFactory();
final CodeSource codeSource = new CodeSource(new URL("file", "", "/test/path/with%20space/"), (Certificate[]) null);
final File codeSourceArchive = factory.getCodeSourceArchive(codeSource);
CodeSource codeSource = new CodeSource(
new URL("file", "", "/test/path/with%20space/"), (Certificate[]) null);
File codeSourceArchive = factory.getCodeSourceArchive(codeSource);
assertThat(codeSourceArchive).isEqualTo(new File("/test/path/with space/"));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment