class TypeRequestProcessor implements SQSRequestProcessor {

    @Override
    public SQSQueueResult processRequest(SQSRequestContext sqsRequestContext)
    {
        SQSQueueResult requestResult;
        QueueRequest queueRequest = sqsRequestContext.getQueueRequest();

        logger.info("Attempting to process requestType: {}", queueRequest.getRequestType());

        SQSRequestProcessor processor = requestProcessorMap.get(queueRequest.getRequestType());
        if(processor == null)
        {
            // todo: log an error and exit
            requestResult = new SQSQueueResult()
                .setSuccessful(false)
                .setMessage(String.format("No processor found for request type: %1$s", queueRequest.getRequestType()));
        }
        else
        {
            try
            {
                requestResult = processor.processRequest(sqsRequestContext);
            }
            catch (Exception e)
            {
                // TODO: expand this to be more detailed
                logger.error(String.format("Failed to process SQS Action: %1$s", queueRequest.getRequestType()), e);
                requestResult = new SQSQueueResult();
                requestResult.setSuccessful(false);
            }
        }
        return requestResult;
    }

    public  TypeRequestProcessor();

}