package org.jboss.windup.decompiler.util; import java.util.zip.ZipEntry; /** * ZipEntry Filter which accepts only one class and its inner classes. * * @author <a href="mailto:ozizka@redhat.com">Ondrej Zizka</a> */ public class ClassNameFilter implements Filter<ZipEntry> { private final String cls; public ClassNameFilter(String cls) { this.cls = cls.replace('.', '/'); } @Override public Result decide(ZipEntry what) { if (what.isDirectory()) return Result.REJECT; if (!what.getName().startsWith(cls)) return Result.REJECT; final String end = what.getName().substring(cls.length()); if (end.equals(".class")) return Result.ACCEPT; if (end.charAt(0) == '$' && end.endsWith(".class")) return Result.ACCEPT; return Filter.Result.REJECT; } }