feat(plugins): add API for search/use other plugins

This commit is contained in:
Skylot
2024-01-15 18:37:40 +00:00
parent fdc3fe1a8d
commit 8ed48183c7
14 changed files with 248 additions and 61 deletions
@@ -0,0 +1,53 @@
package jadx.api.plugins.input.data.impl;
import java.io.Closeable;
import java.io.IOException;
import java.util.List;
import java.util.function.Consumer;
import org.jetbrains.annotations.Nullable;
import jadx.api.plugins.input.ICodeLoader;
import jadx.api.plugins.input.data.IClassData;
public class MergeCodeLoader implements ICodeLoader {
private final List<ICodeLoader> codeLoaders;
private final @Nullable Closeable closeable;
public MergeCodeLoader(List<ICodeLoader> codeLoaders) {
this(codeLoaders, null);
}
public MergeCodeLoader(List<ICodeLoader> codeLoaders, @Nullable Closeable closeable) {
this.codeLoaders = codeLoaders;
this.closeable = closeable;
}
@Override
public void visitClasses(Consumer<IClassData> consumer) {
for (ICodeLoader codeLoader : codeLoaders) {
codeLoader.visitClasses(consumer);
}
}
@Override
public boolean isEmpty() {
for (ICodeLoader codeLoader : codeLoaders) {
if (!codeLoader.isEmpty()) {
return false;
}
}
return true;
}
@Override
public void close() throws IOException {
for (ICodeLoader codeLoader : codeLoaders) {
codeLoader.close();
}
if (closeable != null) {
closeable.close();
}
}
}