QueryExecutor { public <T extends ActionRequest> Action resolve(T request) { Action action; action = analyticsLoader.getAction(request); if(null == action) { throw FoxtrotExceptions.createUnresolvableActionException(request); } return action; } @Inject  QueryExecutor(
            AnalyticsLoader analyticsLoader,
            ExecutorService executorService,
            List<ActionExecutionObserver> executionObservers); ActionValidationResponse validate(T request); ActionResponse execute(T request); AsyncDataToken executeAsync(T request); Action resolve(T request);  }
@Test public void testResolve() throws Exception { assertEquals(NonCacheableAction.class, queryExecutor.resolve(new NonCacheableActionRequest()) .getClass()); }
@Test public void testResolveNonExistentAction() throws Exception { try { queryExecutor.resolve(new RequestWithNoAction()); fail(); } catch (FoxtrotException e) { assertEquals(ErrorCode.UNRESOLVABLE_OPERATION, e.getCode()); } }