class PolicyRequestFactory {

    public PolicyRequest buildRequest(final PolicyAction action, final Context context,
                                      final ActionRequest request) throws EntitlementException {
        Reject.ifNull(action);

        if (!builders.containsKey(action)) {
            throw new EntitlementException(EntitlementException.UNSUPPORTED_OPERATION);
        }

        return builders.get(action).buildRequest(context, request);
    }

    @Inject public  PolicyRequestFactory(final SSOTokenManager tokenManager);

}