Commit 7c7259be authored by rostislav.dudka's avatar rostislav.dudka Committed by Andy Wilkinson

Make JarURLConnection return entry's last modified time

See gh-9893
parent 5c13b8bf
...@@ -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 Phillip Webb
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Rostyslav Dudka
*/ */
final class JarURLConnection extends java.net.JarURLConnection { final class JarURLConnection extends java.net.JarURLConnection {
...@@ -234,6 +235,21 @@ final class JarURLConnection extends java.net.JarURLConnection { ...@@ -234,6 +235,21 @@ final class JarURLConnection extends java.net.JarURLConnection {
return this.permission; return this.permission;
} }
@Override
public long getLastModified() {
int defaultTime = 0;
if (this.jarFile == null || this.jarEntryName.isEmpty()) {
return defaultTime;
}
try {
JarEntry entry = getJarEntry();
return (entry == null ? defaultTime : entry.getTime());
}
catch (IOException ex) {
return defaultTime;
}
}
static void setUseFastExceptions(boolean useFastExceptions) { static void setUseFastExceptions(boolean useFastExceptions) {
JarURLConnection.useFastExceptions.set(useFastExceptions); JarURLConnection.useFastExceptions.set(useFastExceptions);
} }
......
...@@ -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 Andy Wilkinson
* @author Phillip Webb * @author Phillip Webb
* @author Rostyslav Dudka
*/ */
public class JarURLConnectionTests { public class JarURLConnectionTests {
...@@ -150,6 +151,14 @@ public class JarURLConnectionTests { ...@@ -150,6 +151,14 @@ public class JarURLConnectionTests {
assertThat(url.openConnection().getContentLengthLong()).isEqualTo(1); 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() { private String getAbsolutePath() {
return this.rootJarFile.getAbsolutePath().replace('\\', '/'); return this.rootJarFile.getAbsolutePath().replace('\\', '/');
} }
......
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