Skip to content

Commit 515fca8

Browse files
author
emmanue1
committed
Update tree node selectors for multi-release JAR (MRJAR)
1 parent b71cc56 commit 515fca8

File tree

9 files changed

+65
-15
lines changed

9 files changed

+65
-15
lines changed

api/src/main/java/org/jd/gui/spi/TreeNodeFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
import java.util.regex.Pattern;
1717

1818
public interface TreeNodeFactory {
19-
String[] getSelectors();
19+
String[] getSelectors();
2020

2121
Pattern getPathPattern();
2222

23-
<T extends DefaultMutableTreeNode & ContainerEntryGettable & UriGettable> T make(API api, Container.Entry entry);
23+
<T extends DefaultMutableTreeNode & ContainerEntryGettable & UriGettable> T make(API api, Container.Entry entry);
2424
}

services/src/main/java/org/jd/gui/service/treenode/ClassesDirectoryTreeNodeFactoryProvider.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,23 @@
1212
public class ClassesDirectoryTreeNodeFactoryProvider extends DirectoryTreeNodeFactoryProvider {
1313
protected static final ImageIcon ICON = new ImageIcon(ClassesDirectoryTreeNodeFactoryProvider.class.getClassLoader().getResource("org/jd/gui/images/packagefolder_obj.png"));
1414

15-
@Override public String[] getSelectors() { return appendSelectors("war:dir:WEB-INF/classes", "jmod:dir:classes"); }
15+
@Override public String[] getSelectors() {
16+
return appendSelectors(
17+
"jar:dir:META-INF/versions",
18+
"jar:dir:META-INF/versions/5",
19+
"jar:dir:META-INF/versions/6",
20+
"jar:dir:META-INF/versions/7",
21+
"jar:dir:META-INF/versions/8",
22+
"jar:dir:META-INF/versions/9",
23+
"jar:dir:META-INF/versions/10",
24+
"jar:dir:META-INF/versions/11",
25+
"jar:dir:META-INF/versions/12",
26+
"jar:dir:META-INF/versions/13",
27+
"jar:dir:META-INF/versions/14",
28+
"war:dir:WEB-INF/classes",
29+
"jmod:dir:classes");
30+
}
31+
1632
@Override public ImageIcon getIcon() { return ICON; }
1733
@Override public ImageIcon getOpenIcon() { return null; }
1834
}

services/src/main/java/org/jd/gui/service/treenode/DirectoryTreeNodeFactoryProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import java.util.Collection;
2424

2525
public class DirectoryTreeNodeFactoryProvider extends AbstractTreeNodeFactoryProvider {
26-
protected static final ImageIcon ICON = new ImageIcon(DirectoryTreeNodeFactoryProvider.class.getClassLoader().getResource("org/jd/gui/images/folder.gif"));
26+
protected static final ImageIcon ICON = new ImageIcon(DirectoryTreeNodeFactoryProvider.class.getClassLoader().getResource("org/jd/gui/images/folder.gif"));
2727
protected static final ImageIcon OPEN_ICON = new ImageIcon(DirectoryTreeNodeFactoryProvider.class.getClassLoader().getResource("org/jd/gui/images/folder_open.png"));
2828

2929
@Override public String[] getSelectors() { return appendSelectors("*:dir:*"); }

services/src/main/java/org/jd/gui/service/treenode/JavaModulePackageTreeNodeFactoryProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class JavaModulePackageTreeNodeFactoryProvider extends PackageTreeNodeFac
1616
@Override
1717
public Pattern getPathPattern() {
1818
if (externalPathPattern == null) {
19-
return Pattern.compile("classes\\/.*");
19+
return Pattern.compile("classes\\/(?!META-INF)..*");
2020
} else {
2121
return externalPathPattern;
2222
}

services/src/main/java/org/jd/gui/service/treenode/MetainfDirectoryTreeNodeFactoryProvider.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,13 @@
1313
public class MetainfDirectoryTreeNodeFactoryProvider extends DirectoryTreeNodeFactoryProvider {
1414
protected static final ImageIcon ICON = new ImageIcon(MetainfDirectoryTreeNodeFactoryProvider.class.getClassLoader().getResource("org/jd/gui/images/inf_obj.png"));
1515

16-
@Override public String[] getSelectors() { return appendSelectors("jar:dir:*", "war:dir:*", "ear:dir:*"); }
17-
18-
@Override
19-
public Pattern getPathPattern() {
20-
if (externalPathPattern == null) {
21-
return Pattern.compile("(WEB-INF|(WEB-INF\\/classes\\/)?META-IN(F|F\\/.*))");
22-
} else {
23-
return externalPathPattern;
24-
}
16+
@Override public String[] getSelectors() {
17+
return appendSelectors(
18+
"jar:dir:META-INF",
19+
"war:dir:WEB-INF",
20+
"war:dir:WEB-INF/classes/META-INF",
21+
"ear:dir:META-INF",
22+
"jmod:dir:classes/META-INF");
2523
}
2624

2725
@Override public ImageIcon getIcon() { return ICON; }

services/src/main/java/org/jd/gui/service/treenode/PackageTreeNodeFactoryProvider.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,22 @@
1818
import javax.swing.tree.DefaultMutableTreeNode;
1919
import java.io.File;
2020
import java.util.Collection;
21+
import java.util.regex.Pattern;
2122

2223
public class PackageTreeNodeFactoryProvider extends DirectoryTreeNodeFactoryProvider {
2324
protected static final ImageIcon ICON = new ImageIcon(PackageTreeNodeFactoryProvider.class.getClassLoader().getResource("org/jd/gui/images/package_obj.png"));
2425

2526
@Override public String[] getSelectors() { return appendSelectors("jar:dir:*"); }
2627

28+
@Override
29+
public Pattern getPathPattern() {
30+
if (externalPathPattern == null) {
31+
return Pattern.compile("(META-INF\\/versions\\/.*)|(?!META-INF)..*");
32+
} else {
33+
return externalPathPattern;
34+
}
35+
}
36+
2737
@Override
2838
@SuppressWarnings("unchecked")
2939
public <T extends DefaultMutableTreeNode & ContainerEntryGettable & UriGettable> T make(API api, Container.Entry entry) {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright (c) 2008-2019 Emmanuel Dupuy.
3+
* This project is distributed under the GPLv3 license.
4+
* This is a Copyleft license that gives the user the right to use,
5+
* copy and modify the code freely for non-commercial purposes.
6+
*/
7+
8+
package org.jd.gui.service.treenode;
9+
10+
import java.util.regex.Pattern;
11+
12+
public class SpiFileTreeNodeFactoryProvider extends TextFileTreeNodeFactoryProvider {
13+
@Override public String[] getSelectors() {
14+
return appendSelectors("*:file:*");
15+
}
16+
17+
@Override
18+
public Pattern getPathPattern() {
19+
if (externalPathPattern == null) {
20+
return Pattern.compile("(.*\\/)?META-INF\\/services\\/.*");
21+
} else {
22+
return externalPathPattern;
23+
}
24+
}
25+
}

services/src/main/java/org/jd/gui/service/treenode/WarPackageTreeNodeFactoryProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class WarPackageTreeNodeFactoryProvider extends PackageTreeNodeFactoryPro
1616
@Override
1717
public Pattern getPathPattern() {
1818
if (externalPathPattern == null) {
19-
return Pattern.compile("WEB-INF\\/classes\\/.*");
19+
return Pattern.compile("WEB-INF\\/classes\\/(?!META-INF)..*");
2020
} else {
2121
return externalPathPattern;
2222
}

services/src/main/resources/META-INF/services/org.jd.gui.spi.TreeNodeFactory

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ org.jd.gui.service.treenode.ModuleInfoFileTreeNodeFactoryProvider
2121
org.jd.gui.service.treenode.PackageTreeNodeFactoryProvider
2222
org.jd.gui.service.treenode.PropertiesFileTreeNodeFactoryProvider
2323
org.jd.gui.service.treenode.SqlFileTreeNodeFactoryProvider
24+
org.jd.gui.service.treenode.SpiFileTreeNodeFactoryProvider
2425
org.jd.gui.service.treenode.TextFileTreeNodeFactoryProvider
2526
org.jd.gui.service.treenode.WarFileTreeNodeFactoryProvider
2627
org.jd.gui.service.treenode.WarPackageTreeNodeFactoryProvider

0 commit comments

Comments
 (0)