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;
*
* @author Phillip Webb
* @author Andy Wilkinson
* @author Rostyslav Dudka
*/
final class JarURLConnection extends java.net.JarURLConnection {
......@@ -234,6 +235,21 @@ final class JarURLConnection extends java.net.JarURLConnection {
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) {
JarURLConnection.useFastExceptions.set(useFastExceptions);
}
......
......@@ -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 {
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('\\', '/');
}
......
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