package com.brightgenerous.resolver.delegate; import java.util.Set; import org.apache.ibatis.io.ResolverUtil; import org.apache.ibatis.io.ResolverUtil.Test; import com.brightgenerous.resolver.Matcher; class ResolverDelegaterMybatis implements ResolverDelegater { { check(); } private static void check() { try { Class.forName(ResolverUtil.class.getName()); Class.forName(Test.class.getName()); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @Override public <T> Set<Class<? extends T>> find(Matcher matcher, String packageName) { ResolverUtil<T> util = new ResolverUtil<>(); return util.find(new AdaptTest(matcher), packageName).getClasses(); } @Override public <T> Set<Class<? extends T>> find(Matcher matcher, String packageName, ClassLoader classloader) { ResolverUtil<T> util = new ResolverUtil<>(); util.setClassLoader(classloader); return util.find(new AdaptTest(matcher), packageName).getClasses(); } private static class AdaptTest implements Test { private final Matcher matcher; public AdaptTest(Matcher matcher) { this.matcher = matcher; } @Override public boolean matches(Class<?> type) { return matcher.matches(type); } } }