Browse Source

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

Closes gh-10706
pull/11196/merge
Andy Wilkinson 8 years ago
parent
commit
c14f5fb6ad
  1. 18
      spring-boot/src/main/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactory.java
  2. 10
      spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java

18
spring-boot/src/main/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactory.java

@ -19,7 +19,6 @@ package org.springframework.boot.context.embedded; @@ -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 @@ -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 @@ -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 @@ -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 @@ -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() {

10
spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java

@ -678,16 +678,18 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests { @@ -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/"));
}

Loading…
Cancel
Save