Skip to content

Commit 041ac88

Browse files
authored
Merge pull request #42 from comoyo/emjar-dir-resource-lookup
[emjar] Ensure that directory resources are resolvable without termiating slash
2 parents 5a9ec6b + 4781ce7 commit 041ac88

25 files changed

+15
-3
lines changed

emjar/src/main/java/com/comoyo/emjar/OndemandEmbeddedJar.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ public InputStream getInputStream(ZipEntry ze)
196196
@Override
197197
public JarEntry getJarEntry(String name)
198198
{
199-
return entries.get(name);
199+
final JarEntry entry = entries.get(name);
200+
return entry != null ? entry : entries.get(name + "/");
200201
}
201202

202203
public Manifest getManifest() {

emjar/src/main/java/com/comoyo/emjar/PreloadedEmbeddedJar.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ public InputStream getInputStream(ZipEntry ze)
178178

179179
@Override
180180
public JarEntry getJarEntry(String name) {
181-
return entries.get(name);
181+
final JarEntry entry = entries.get(name);
182+
return entry != null ? entry : entries.get(name + "/");
182183
}
183184

184185
@Override

emjar/src/main/java/com/comoyo/emjar/ZipScanner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ private void parseDirectory(
167167
final int startDiskNum = dir.getShort(pos + ZipFile.CENDSK);
168168
final int headerOffs = dir.getInt(pos + ZipFile.CENOFF);
169169
if (nameLen > buf.length) {
170-
buf = new byte[buf.length * 2];
170+
buf = new byte[nameLen];
171171
}
172172
dir.position(pos + ZipFile.CENHDR);
173173
dir.get(buf, 0, nameLen);

emjar/src/test/java/com/comoyo/emjar/JarTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ protected JarFile testJarBundle(String name)
4646
= new BufferedReader(new InputStreamReader(
4747
jar.getInputStream(new JarEntry("entry-" + name + ".txt"))));
4848
assertEquals("Contents mismatch for " + name, name, entry.readLine());
49+
final JarEntry dirEntry = jar.getJarEntry("dir-entry");
50+
assertNotNull("Entry for directory was not found", dirEntry);
4951
return jar;
5052
}
5153

116 Bytes
Binary file not shown.
116 Bytes
Binary file not shown.
96 Bytes
Binary file not shown.
96 Bytes
Binary file not shown.
116 Bytes
Binary file not shown.
116 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)