@Provides
@WebClasses
public Class[] providesWebClasses() {
if (applicationPackageBase != null) {
ClassesInPackageScanner classScanner = new ClassesInPackageScanner();
classScanner.setResourceFilter(new ExtendsClassResourceFilter(Object.class, true) {
@Override
public boolean acceptScannedResource(Class cls) {
for (Method method : cls.getDeclaredMethods()) {
if (method.getAnnotation(WebActionHandler.class) != null || method.getAnnotation(WebResourceHandler.class) != null
|| method.getAnnotation(WebModelHandler.class) != null
|| method.getAnnotation(WebParamResolver.class) != null
|| method.getAnnotation(WebExceptionCatcher.class) != null
|| method.getAnnotation(WebApplicationHook.class) != null
|| method.getAnnotation(WebRequestHook.class) != null
|| method.getAnnotation(FreemarkerDirectiveHandler.class) != null
|| method.getAnnotation(FreemarkerMethodHandler.class) != null
|| method.getAnnotation(WebGet.class) != null
|| method.getAnnotation(WebPost.class) != null
|| method.getAnnotation(WebPut.class) != null
|| method.getAnnotation(WebDelete.class) != null
|| method.getAnnotation(WebSerializer.class) != null){
return true;
}
}
return false;
}
});
try {
Set classSet = classScanner.findSubclasses(applicationPackageBase, Object.class);
Class[] webHandlerClasses = new Class[classSet.size()];
classSet.toArray(webHandlerClasses);
return webHandlerClasses;
} catch (IOException e) {
// TODO Auto-generated catch block