Codebase list jd-gui / b3ef034
Add kar file support (Karaf Archive) https://karaf.apache.org/manual/latest/kar roswalt 4 years ago
9 changed file(s) with 126 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
0 /*
1 * Copyright (c) 2008-2019 Emmanuel Dupuy.
2 * This project is distributed under the GPLv3 license.
3 * This is a Copyleft license that gives the user the right to use,
4 * copy and modify the code freely for non-commercial purposes.
5 */
6
7 package org.jd.gui.model.container;
8
9 import org.jd.gui.api.API;
10 import org.jd.gui.api.model.Container;
11
12 import java.nio.file.Path;
13
14 public class KarContainer extends GenericContainer {
15 public KarContainer(API api, Container.Entry parentEntry, Path rootPath) {
16 super(api, parentEntry, rootPath);
17 }
18
19 public String getType() { return "kar"; }
20 }
0 /*
1 * Copyright (c) 2008-2019 Emmanuel Dupuy.
2 * This project is distributed under the GPLv3 license.
3 * This is a Copyleft license that gives the user the right to use,
4 * copy and modify the code freely for non-commercial purposes.
5 */
6
7 package org.jd.gui.service.container;
8
9 import org.jd.gui.api.API;
10 import org.jd.gui.api.model.Container;
11 import org.jd.gui.model.container.KarContainer;
12 import org.jd.gui.spi.ContainerFactory;
13 import org.jd.gui.util.exception.ExceptionUtil;
14
15 import java.nio.file.Files;
16 import java.nio.file.InvalidPathException;
17 import java.nio.file.Path;
18
19 public class KarContainerFactoryProvider implements ContainerFactory {
20 @Override
21 public String getType() { return "kar"; }
22
23 @Override
24 public boolean accept(API api, Path rootPath) {
25 if (rootPath.toUri().toString().toLowerCase().endsWith(".kar!/")) {
26 return true;
27 } else {
28 // Extension: accept uncompressed KAR file containing a folder 'repository'
29 try {
30 return rootPath.getFileSystem().provider().getScheme().equals("file") && Files.exists(rootPath.resolve("repository"));
31 } catch (InvalidPathException e) {
32 assert ExceptionUtil.printStackTrace(e);
33 return false;
34 }
35 }
36 }
37
38 @Override
39 public Container make(API api, Container.Entry parentEntry, Path rootPath) {
40 return new KarContainer(api, parentEntry, rootPath);
41 }
42 }
0 /*
1 * Copyright (c) 2008-2019 Emmanuel Dupuy.
2 * This project is distributed under the GPLv3 license.
3 * This is a Copyleft license that gives the user the right to use,
4 * copy and modify the code freely for non-commercial purposes.
5 */
6
7 package org.jd.gui.service.fileloader;
8
9 import org.jd.gui.api.API;
10
11 import java.io.File;
12
13 public class KarFileLoaderProvider extends ZipFileLoaderProvider {
14 protected static final String[] EXTENSIONS = { "kar" };
15
16 @Override public String[] getExtensions() { return EXTENSIONS; }
17 @Override public String getDescription() { return "Karaf archive files (*.kar)"; }
18
19 @Override
20 public boolean accept(API api, File file) {
21 return file.exists() && file.isFile() && file.canRead() && file.getName().toLowerCase().endsWith(".kar");
22 }
23 }
1313
1414 public class ZipFileIndexerProvider extends AbstractIndexerProvider {
1515
16 @Override public String[] getSelectors() { return appendSelectors("*:file:*.zip", "*:file:*.jar", "*:file:*.war", "*:file:*.ear", "*:file:*.aar", "*:file:*.jmod"); }
16 @Override public String[] getSelectors() { return appendSelectors("*:file:*.zip", "*:file:*.jar", "*:file:*.war", "*:file:*.ear", "*:file:*.aar", "*:file:*.jmod", "*:file:*.kar"); }
1717
1818 @Override
1919 public void index(API api, Container.Entry entry, Indexes indexes) {
2121
2222 public class ZipFileSourceSaverProvider extends DirectorySourceSaverProvider {
2323
24 @Override public String[] getSelectors() { return appendSelectors("*:file:*.zip", "*:file:*.jar", "*:file:*.war", "*:file:*.ear", "*:file:*.aar", "*:file:*.jmod"); }
24 @Override public String[] getSelectors() { return appendSelectors("*:file:*.zip", "*:file:*.jar", "*:file:*.war", "*:file:*.ear", "*:file:*.aar", "*:file:*.jmod", "*:file:*.kar"); }
2525
2626 @Override
2727 public void save(API api, SourceSaver.Controller controller, SourceSaver.Listener listener, Path rootPath, Container.Entry entry) {
0 /*
1 * Copyright (c) 2008-2019 Emmanuel Dupuy.
2 * This project is distributed under the GPLv3 license.
3 * This is a Copyleft license that gives the user the right to use,
4 * copy and modify the code freely for non-commercial purposes.
5 */
6
7 package org.jd.gui.service.treenode;
8
9 import org.jd.gui.api.API;
10 import org.jd.gui.api.feature.ContainerEntryGettable;
11 import org.jd.gui.api.feature.UriGettable;
12 import org.jd.gui.api.model.Container;
13 import org.jd.gui.view.data.TreeNodeBean;
14
15 import javax.swing.tree.DefaultMutableTreeNode;
16 import java.io.File;
17
18 public class KarFileTreeNodeFactoryProvider extends ZipFileTreeNodeFactoryProvider {
19 @Override public String[] getSelectors() { return appendSelectors("*:file:*.kar"); }
20
21 @Override
22 @SuppressWarnings("unchecked")
23 public <T extends DefaultMutableTreeNode & ContainerEntryGettable & UriGettable> T make(API api, Container.Entry entry) {
24 int lastSlashIndex = entry.getPath().lastIndexOf("/");
25 String label = entry.getPath().substring(lastSlashIndex+1);
26 String location = new File(entry.getUri()).getPath();
27 T node = (T)new TreeNode(entry, new TreeNodeBean(label, "Location: " + location, ICON));
28 // Add dummy node
29 node.add(new DefaultMutableTreeNode());
30 return node;
31 }
32 }
00 # Order is important : 'GenericContainerFactoryProvider' must be the last
1 org.jd.gui.service.container.KarContainerFactoryProvider
12 org.jd.gui.service.container.JmodContainerFactoryProvider
23 org.jd.gui.service.container.EarContainerFactoryProvider
34 org.jd.gui.service.container.WarContainerFactoryProvider
33 org.jd.gui.service.fileloader.JarFileLoaderProvider
44 org.jd.gui.service.fileloader.JavaFileLoaderProvider
55 org.jd.gui.service.fileloader.JmodFileLoaderProvider
6 org.jd.gui.service.fileloader.KarFileLoaderProvider
67 org.jd.gui.service.fileloader.LogFileLoaderProvider
78 org.jd.gui.service.fileloader.WarFileLoaderProvider
89 org.jd.gui.service.fileloader.ZipFileLoaderProvider
1313 org.jd.gui.service.treenode.JmodPackageTreeNodeFactoryProvider
1414 org.jd.gui.service.treenode.JsonFileTreeNodeFactoryProvider
1515 org.jd.gui.service.treenode.JspFileTreeNodeFactoryProvider
16 org.jd.gui.service.treenode.KarFileTreeNodeFactoryProvider
1617 org.jd.gui.service.treenode.ManifestFileTreeNodeFactoryProvider
1718 org.jd.gui.service.treenode.MetainfDirectoryTreeNodeFactoryProvider
1819 org.jd.gui.service.treenode.MetainfServiceFileTreeNodeFactoryProvider