package net.ayld.facade.dependency.matcher.condition.impl; import java.io.File; import java.util.List; import com.google.common.base.Joiner; import net.ayld.facade.dependency.matcher.condition.MatchingCondition; import net.ayld.facade.model.ClassFile; import net.ayld.facade.model.ClassName; import net.ayld.facade.util.Tokenizer; public class ClassnamePackagesVsClassfilePath implements MatchingCondition{ @Override public boolean satisfied(ClassName className, ClassFile classFile) { final List<String> classPackagesAndName = Tokenizer.delimiter(".").tokenize(className.toString()).tokens(); final List<String> classPackagesNoName = classPackagesAndName.subList(0, classPackagesAndName.size() - 1); final String classPackages = Joiner.on("").join(classPackagesNoName); final String classfileFullPath = classFile.toString(); // FIXME this is incorrect as it would match // // com.something.Bad // to // /home/user/extracted.jar/org/wrong/com/something/Bad.class // return classfileFullPath.replaceAll("\\" + File.separator, "").contains(classPackages); } }