/** * Initialize feature with currenct mocked environment * * @param feature the feature */ private void initializeFeature(Environment.Feature feature) { switch (feature) { case FACTORIES: environment.withFactories(); break; case APPLICATION: environment.withApplication(); break; case EL_CONTEXT: environment.withELContext(); break; case EXTERNAL_CONTEXT: environment.withExternalContext(); break; case RENDER_KIT: environment.withRenderKit(); break; case RESPONSE_WRITER: environment.withResponseWriter(); break; case SERVLET_REQUEST: environment.withServletRequest(); break; default: break; } }
/** * Tries to get mock for given type. * * <p>Before injecting, it initializes all dependencies needed by given mock type by initializing * given feature. * * @param type the JSF class type to initialized and inject * @return the injection or null if given type ais unknown */ private Object getInjection(Class<?> type) { if (type == MockFacesEnvironment.class) { return environment; } if (type == FacesContext.class) { initializeFeature(FACES_CONTEXT); return environment.getFacesContext(); } if (type == Application.class) { initializeFeature(APPLICATION); return environment.getApplication(); } if (type == ELContext.class) { initializeFeature(EL_CONTEXT); return environment.getElContext(); } if (type == ApplicationFactory.class) { initializeFeature(FACTORIES); return environment.getApplicationFactory(); } if (type == ServletContext.class) { initializeFeature(SERVLET_REQUEST); return environment.getServletContext(); } if (type == ExceptionHandlerFactory.class) { initializeFeature(FACTORIES); return environment.getExceptionHandlerFactory(); } if (type == ExternalContext.class) { initializeFeature(EXTERNAL_CONTEXT); return environment.getExternalContext(); } if (type == ExternalContextFactory.class) { initializeFeature(FACTORIES); return environment.getExternalContextFactory(); } if (type == FacesContextFactory.class) { initializeFeature(FACTORIES); return environment.getFacesContextFactory(); } if (type == LifecycleFactory.class) { initializeFeature(FACTORIES); return environment.getLifecycleFactory(); } if (type == PartialViewContextFactory.class) { initializeFeature(FACTORIES); return environment.getPartialViewContextFactory(); } if (type == RenderKit.class) { initializeFeature(RENDER_KIT); return environment.getRenderKit(); } if (type == RenderKitFactory.class) { initializeFeature(FACTORIES); return environment.getRenderKitFactory(); } if (type == HttpServletRequest.class) { initializeFeature(SERVLET_REQUEST); return environment.getRequest(); } if (type == HttpServletResponse.class) { initializeFeature(SERVLET_REQUEST); return environment.getResponse(); } if (type == ResponseStateManager.class) { initializeFeature(RENDER_KIT); return environment.getResponseStateManager(); } if (RecordingResponseWriter.class.isAssignableFrom(type)) { initializeFeature(RESPONSE_WRITER); return environment.getResponseWriter(); } if (type == TagHandlerDelegateFactory.class) { initializeFeature(FACTORIES); return environment.getTagHandlerDelegateFactory(); } if (type == ViewHandler.class) { initializeFeature(APPLICATION); return environment.getViewHandler(); } return null; }
/** * Run after each test * * @param target the target test instance */ protected void runAfter(Object target) { environment.release(); environment = null; }