@Override
    public void scheduleAll() throws TaskServiceException
    {
        LOGGER.info("Running Task discovery...");

        // Find all task classes
        Set<Class< ? >> taskClasses = null;
        try
        {
            taskClasses =
                AnnotationUtils.findAnnotatedClasses(Task.class, DEFAULT_SCAN_PACKAGE, true);
        }
        catch (Exception ex)
        {
            throw new TaskServiceException("Could not find task classes", ex);
        }

        // Schedule task classes
        if (taskClasses != null && !taskClasses.isEmpty())
        {
            LOGGER.info("Found {} tasks to be scheduled", taskClasses.size());

            for (Class< ? > taskClass : taskClasses)
            {
                schedule(taskClass);
            }
        }
    }