code/app/be/objectify/deadbolt/java/actions/AbstractDeadboltAction.java
protected <C extends DeadboltHandler> DeadboltHandler getDeadboltHandler(final String handlerKey)
    {
        LOGGER.debug("Getting Deadbolt handler with key [{}]",
                     handlerKey);
        return handlerKey == null || Constants.DEFAULT_HANDLER_KEY.equals(handlerKey) ? handlerCache.get()
                                                                                       : handlerCache.apply(handlerKey);
    }
protected <C extends DeadboltHandler> DeadboltHandler getDeadboltHandler(final String handlerKey)
    {
        LOGGER.debug("Getting Deadbolt handler with key [{}]",
                     handlerKey);
        return handlerKey == null || Constants.DEFAULT_HANDLER_KEY.equals(handlerKey) ? handlerCache.get()
                                                                                       : handlerCache.apply(handlerKey);
    }
Gets the current {@link DeadboltHandler}.  This can come from one of two places:
- a handler key is provided in the annotation.  A cached instance of that class will be used. This has the highest priority.
- the global handler defined in the application.conf by deadbolt.handler.  This has the lowest priority.

@param handlerKey the DeadboltHandler key, if any, coming from the annotation.
@param <C>        the actual class of the DeadboltHandler
@return an option for the DeadboltHandler.