Skip to content

Commit 0b49fcb

Browse files
committed
Remove the needed splitting on the URI level using a seperator.
1 parent 6e190b2 commit 0b49fcb

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

src/main/java/cpw/mods/niofs/layzip/LayeredZipFileSystemProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public class LayeredZipFileSystemProvider extends PathFileSystemProvider
1919
public static final String INDICATOR = "!";
2020
public static final String SEPARATOR = INDICATOR + "/";
2121

22+
public static final String URI_SPLIT_REGEX = "((?<=(\\.zip)(?!(\\!))\\/)|\\!\\/)";
23+
2224

2325
@Override
2426
public String getScheme() {
@@ -28,7 +30,7 @@ public String getScheme() {
2830
@Override
2931
public FileSystem newFileSystem(final URI uri, final Map<String, ?> env) throws IOException
3032
{
31-
final String[] sections = uri.getRawSchemeSpecificPart().split(SEPARATOR);
33+
final String[] sections = uri.getRawSchemeSpecificPart().split(URI_SPLIT_REGEX);
3234
FileSystem workingSystem = FileSystems.getDefault(); //Grab the normal disk FS.
3335

3436
String keyPrefix = "";

src/test/java/cpw/mods/niofs/layfs/TestLayeredZipFS.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,22 @@ public void testUriParsingAndAccess() throws URISyntaxException, IOException
3131
assertIterableEquals(sourceLines, lines);
3232
}
3333

34+
@Test
35+
public void testWithSplitterUriParsingAndAccess() throws URISyntaxException, IOException
36+
{
37+
38+
final URI filePathUri = new URI(
39+
"jij:src/test/resources/dir_in_dir_in_dir.zip/dir_in_dir.zip/dir1.zip/"
40+
);
41+
final FileSystem zipFS = FileSystems.newFileSystem(filePathUri, new HashMap<>());
42+
43+
final Path pathInText = zipFS.getPath("masktest.txt");
44+
final List<String> lines = Files.readAllLines(pathInText);
45+
final List<String> sourceLines = List.of("dir1");
46+
47+
assertIterableEquals(sourceLines, lines);
48+
}
49+
3450
@Test
3551
public void testUriConversion() throws URISyntaxException, IOException {
3652
final URI filePathUri = new URI(

0 commit comments

Comments
 (0)