Browse Source

Merge pull request #9893 from Rostyslav Dudka

* gh-9893:
  Polish "Make JarURLConnection return entry's last modified time"
  Make JarURLConnection return entry's last modified time
pull/9926/head
Andy Wilkinson 9 years ago
parent
commit
362a8ea9bc
  1. 15
      spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarURLConnection.java
  2. 9
      spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/jar/JarURLConnectionTests.java

15
spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/JarURLConnection.java

@ -36,6 +36,7 @@ import org.springframework.boot.loader.data.RandomAccessData.ResourceAccess; @@ -36,6 +36,7 @@ import org.springframework.boot.loader.data.RandomAccessData.ResourceAccess;
*
* @author Phillip Webb
* @author Andy Wilkinson
* @author Rostyslav Dudka
*/
final class JarURLConnection extends java.net.JarURLConnection {
@ -234,6 +235,20 @@ final class JarURLConnection extends java.net.JarURLConnection { @@ -234,6 +235,20 @@ final class JarURLConnection extends java.net.JarURLConnection {
return this.permission;
}
@Override
public long getLastModified() {
if (this.jarFile == null || this.jarEntryName.isEmpty()) {
return 0;
}
try {
JarEntry entry = getJarEntry();
return (entry == null ? 0 : entry.getTime());
}
catch (IOException ex) {
return 0;
}
}
static void setUseFastExceptions(boolean useFastExceptions) {
JarURLConnection.useFastExceptions.set(useFastExceptions);
}

9
spring-boot-tools/spring-boot-loader/src/test/java/org/springframework/boot/loader/jar/JarURLConnectionTests.java

@ -35,6 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; @@ -35,6 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
* @author Phillip Webb
* @author Rostyslav Dudka
*/
public class JarURLConnectionTests {
@ -150,6 +151,14 @@ public class JarURLConnectionTests { @@ -150,6 +151,14 @@ public class JarURLConnectionTests {
assertThat(url.openConnection().getContentLengthLong()).isEqualTo(1);
}
@Test
public void getLastModifiedReturnsLastModifiedTimeOfJarEntry() throws Exception {
URL url = new URL("jar:file:" + getAbsolutePath() + "!/1.dat");
JarURLConnection connection = JarURLConnection.get(url, this.jarFile);
assertThat(connection.getLastModified())
.isEqualTo(connection.getJarEntry().getTime());
}
private String getAbsolutePath() {
return this.rootJarFile.getAbsolutePath().replace('\\', '/');
}

Loading…
Cancel
Save