class RetryExecutor {

    public void retry(Runnable action) throws Exception
    {
        try
        {
            retryAttempts--;
            action.run();
        }
        catch (Exception e)
        {
            if (retryOnException(e) && retryAttempts > 0)
            {
                sleep(timeout);
                retry(action);
            }
            throw e;
        }
    }

    public  RetryExecutor();
    public  RetryExecutor(int retryAttempts, long timeout, List<Class> exceptions);

}