diff options
author | Liam Miller-Cushon <cushon@google.com> | 2018-02-09 12:02:17 -0800 |
---|---|---|
committer | Liam Miller-Cushon <cushon@google.com> | 2018-02-09 13:10:48 -0800 |
commit | 38ff702d10baec78f30d5f57485ae452f0fe33b5 (patch) | |
tree | 2c0fcd3091901da9a5eb819065ef0b5f4344f048 | |
parent | f271ac33748b682d312678d2f1c5c302edea5816 (diff) | |
download | jarjar-38ff702d10baec78f30d5f57485ae452f0fe33b5.tar.gz |
Work around lack of support for multi-version archives
4 files changed, 15 insertions, 3 deletions
diff --git a/src/main/com/tonicsystems/jarjar/ResourceProcessor.java b/src/main/com/tonicsystems/jarjar/ResourceProcessor.java index 40eb520..76f9189 100644 --- a/src/main/com/tonicsystems/jarjar/ResourceProcessor.java +++ b/src/main/com/tonicsystems/jarjar/ResourceProcessor.java @@ -28,7 +28,7 @@ class ResourceProcessor implements JarProcessor { } public boolean process(EntryStruct struct) throws IOException { - if (!struct.name.endsWith(".class")) { + if (!struct.isClass()) { struct.name = pr.mapPath(struct.name); } return true; diff --git a/src/main/com/tonicsystems/jarjar/ZapProcessor.java b/src/main/com/tonicsystems/jarjar/ZapProcessor.java index 76f8298..7431ec3 100644 --- a/src/main/com/tonicsystems/jarjar/ZapProcessor.java +++ b/src/main/com/tonicsystems/jarjar/ZapProcessor.java @@ -29,7 +29,7 @@ class ZapProcessor implements JarProcessor { public boolean process(EntryStruct struct) throws IOException { String name = struct.name; - if (name.endsWith(".class")) { + if (struct.isClass()) { return !zap(name.substring(0, name.length() - 6)); } return true; diff --git a/src/main/com/tonicsystems/jarjar/util/EntryStruct.java b/src/main/com/tonicsystems/jarjar/util/EntryStruct.java index 2ebf512..bf72ab5 100644 --- a/src/main/com/tonicsystems/jarjar/util/EntryStruct.java +++ b/src/main/com/tonicsystems/jarjar/util/EntryStruct.java @@ -20,4 +20,16 @@ public class EntryStruct { public byte[] data; public String name; public long time; + + /** Returns true if the entry is a class file. */ + public boolean isClass() { + if (!name.endsWith(".class")) { + return false; + } + if (name.startsWith("META-INF/version")) { + // TODO(b/69678527): handle multi-release jar files + return false; + } + return true; + } } diff --git a/src/main/com/tonicsystems/jarjar/util/JarTransformer.java b/src/main/com/tonicsystems/jarjar/util/JarTransformer.java index a88bcf7..2b07a88 100644 --- a/src/main/com/tonicsystems/jarjar/util/JarTransformer.java +++ b/src/main/com/tonicsystems/jarjar/util/JarTransformer.java @@ -23,7 +23,7 @@ import org.objectweb.asm.ClassWriter; public abstract class JarTransformer implements JarProcessor { public boolean process(EntryStruct struct) throws IOException { - if (struct.name.endsWith(".class")) { + if (struct.isClass()) { ClassReader reader; try { reader = new ClassReader(struct.data); |