public static <T extends Renderer> T getUnwrappedRenderer(FacesContext context, String family, String rendererType, Class<T> rendererClass) { Renderer renderer = context.getRenderKit().getRenderer(family, rendererType); while (renderer instanceof FacesWrapper) { renderer = (Renderer) ((FacesWrapper) renderer).getWrapped(); } return (T) renderer; }
if (!view.isRendered()) ExternalContext externalContext = context.getExternalContext(); String viewId = context.getViewRoot().getViewId(); if(null != externalContext.getSession(false)) externalContext.getSessionMap().put(ViewHandler.CHARACTER_ENCODING_KEY, externalContext.getResponseCharacterEncoding()); RenderKitFactory renderFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); RenderKit renderKit = renderFactory.getRenderKit(context, view.getRenderKitId()); ResponseWriter responseWriter = context.getResponseWriter(); if (responseWriter == null) responseWriter = renderKit.createResponseWriter(externalContext.getResponseOutputWriter(), null, externalContext.getRequestCharacterEncoding()); context.setResponseWriter(responseWriter); StringWriter stateAwareWriter = null; StateManager stateManager = context.getApplication().getStateManager(); boolean viewStateAlreadyEncoded = isViewStateAlreadyEncoded(context); stateAwareWriter = new StringWriter(); flushBufferToWriter(stateAwareWriter.getBuffer(), externalContext.getResponseOutputWriter());
throws IOException { int index = indexOfClayTemplateSuffix(context, view.getViewId()); log.debug("Clay template renderView for " + view.getViewId()); UIComponent component = view.findComponent(CLAY_VIEW_ID); if (component == null) { HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); response.setLocale(context.getViewRoot().getLocale()); StringWriter writer = new StringWriter(); ResponseWriter buffResponsewriter = context.getRenderKit() .createResponseWriter(writer, null, response.getCharacterEncoding()); context.setResponseWriter(buffResponsewriter); StateManager stateManager = context.getApplication().getStateManager(); StateManager.SerializedView serializedview = stateManager.saveSerializedView(context); ResponseWriter responsewriter = context.getRenderKit() .createResponseWriter(response.getWriter(), null, response.getCharacterEncoding()); context.setResponseWriter(responsewriter);
private void init() { if (FacesContext.getCurrentInstance() != null) { request = new MockHttpServletRequest(HttpSessionManager.instance(), FacesContext.getCurrentInstance().getExternalContext()); } else { request = new MockHttpServletRequest(HttpSessionManager.instance()); } response = new MockHttpServletResponse(); setContextClassLoader(); // Generate the FacesContext from the JSF FacesContextFactory originalFacesContext = FacesContext.getCurrentInstance(); facesContext = RendererFacesContextFactory.instance().getFacesContext(request, response); DelegatingFacesContext.setCurrentInstance(facesContext); // Create the viewRoot UIViewRoot newRoot = facesContext.getApplication().getViewHandler().createView(facesContext, viewId); facesContext.setViewRoot(newRoot); // Set the responseWriter to write to a buffer writer = new StringWriter(); facesContext.setResponseWriter(facesContext.getRenderKit().createResponseWriter(writer, null, null)); }
private Renderer getRenderer(FacesContext context, UIComponent foreignComponent) { if (context == null) throw new NullPointerException("context"); String rendererType = foreignComponent.getRendererType(); if (rendererType == null) return null; String renderKitId = context.getViewRoot().getRenderKitId(); RenderKitFactory rkf = (RenderKitFactory)FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); RenderKit renderKit = rkf.getRenderKit(context, renderKitId); Renderer renderer = renderKit.getRenderer(foreignComponent.getFamily(), rendererType); if (renderer == null) { getFacesContext().getExternalContext().log("No Renderer found for component " + foreignComponent + " (component-family=" + foreignComponent.getFamily() + ", renderer-type=" + rendererType + ")"); } return renderer; }
@Override public String getViewState(FacesContext facesContext) { UIViewRoot uiViewRoot = facesContext.getViewRoot(); String viewId = uiViewRoot.getViewId(); ViewDeclarationLanguage vdl = facesContext.getApplication().getViewHandler().getViewDeclarationLanguage(facesContext,viewId); if (vdl != null) { StateManagementStrategy sms = vdl.getStateManagementStrategy(facesContext, viewId); if (sms != null) { if (log.isLoggable(Level.FINEST)) log.finest("Calling saveView of StateManagementStrategy from getViewState: "+sms.getClass().getName()); return facesContext.getRenderKit().getResponseStateManager().getViewState(facesContext, saveView(facesContext)); } } Object[] savedState = (Object[]) saveView(facesContext); if (!isSavingStateInClient(facesContext)) { Object[] state = new Object[2]; state[JSF_SEQUENCE_INDEX] = Integer.toString(getNextViewSequence(facesContext), Character.MAX_RADIX); return facesContext.getRenderKit().getResponseStateManager().getViewState(facesContext, state); } else { return facesContext.getRenderKit().getResponseStateManager().getViewState(facesContext, savedState); } }
FacesContext facesContext = FacesContext.getCurrentInstance(); RenderKit renderKit = facesContext.getRenderKit(); if (renderKit == null) String renderKitId = facesContext.getApplication().getViewHandler() .calculateRenderKitId(facesContext); FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); renderKit = factory.getRenderKit(facesContext, renderKitId); this.postRequest = renderKit.getResponseStateManager().isPostback(facesContext);
private PartialResponseWriter createPartialResponseWriter() { ExternalContext extContext = ctx.getExternalContext(); String encoding = extContext.getRequestCharacterEncoding(); extContext.setResponseCharacterEncoding(encoding); ResponseWriter responseWriter = null; Writer out = null; try { out = extContext.getResponseOutputWriter(); } catch (IOException ioe) { if (LOGGER.isLoggable(Level.SEVERE)) { UIViewRoot viewRoot = ctx.getViewRoot(); if (viewRoot != null) { responseWriter = ctx.getRenderKit().createResponseWriter(out, "text/xml", encoding); } else { RenderKitFactory factory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); RenderKit renderKit = factory.getRenderKit(ctx, RenderKitFactory.HTML_BASIC_RENDER_KIT); responseWriter = renderKit.createResponseWriter(out, "text/xml", encoding);
public static Renderer getRenderer(final FacesContext fc, final UIComponent component) { final String rendererType = component.getRendererType(); if (rendererType != null) { return fc.getRenderKit().getRenderer(component.getFamily(), rendererType); } return null; } }
protected Renderer getRenderer(FacesContext context) { if (context == null) throw new NullPointerException("context"); String rendererType = getRendererType(); if (rendererType == null) return null; String renderKitId = context.getViewRoot().getRenderKitId(); RenderKitFactory rkf = (RenderKitFactory)FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); RenderKit renderKit = rkf.getRenderKit(context, renderKitId); Renderer renderer = renderKit.getRenderer(getFamily(), rendererType); if (renderer == null) { getFacesContext().getExternalContext().log("No Renderer found for component " + getPathToComponent(this) + " (component-family=" + getFamily() + ", renderer-type=" + rendererType + ")"); log.warn("No Renderer found for component " + getPathToComponent(this) + " (component-family=" + getFamily() + ", renderer-type=" + rendererType + ")"); } return renderer; }
public boolean isPostback(FacesContext facesContext) { ViewHandler viewHandler = facesContext.getApplication().getViewHandler(); String renderkitId = viewHandler.calculateRenderKitId(facesContext); ResponseStateManager rsm = getRenderKitFactory().getRenderKit(facesContext, renderkitId).getResponseStateManager(); return rsm.isPostback(facesContext); }
private PartialResponseWriter createPartialResponseWriter(FacesContext context) throws IOException { ExternalContext externalContext = context.getExternalContext(); String encoding = externalContext.getRequestCharacterEncoding(); externalContext.setResponseContentType("application/xml"); externalContext.setResponseCharacterEncoding(encoding); ResponseWriter responseWriter = null; Writer out = externalContext.getResponseOutputWriter(); if (out != null) { RenderKitFactory factory = JsfUtils.findFactory(RenderKitFactory.class); RenderKit renderKit = factory.getRenderKit(context, RenderKitFactory.HTML_BASIC_RENDER_KIT); responseWriter = renderKit.createResponseWriter(out, "text/xml", encoding); } if (responseWriter instanceof PartialResponseWriter) { return (PartialResponseWriter) responseWriter; } else { return new PartialResponseWriter(responseWriter); } }
public static ResponseWriter buildResponseWriter(FacesContext facesContext, PageContext pageContext) { RenderKitFactory factory = (RenderKitFactory) FactoryFinder .getFactory(FactoryFinder.RENDER_KIT_FACTORY); RenderKit renderKit = factory.getRenderKit(facesContext, facesContext .getViewRoot().getRenderKitId()); PageContextOutWriter writer = new PageContextOutWriter(pageContext); String encoding = pageContext.getRequest().getCharacterEncoding(); FacesContext context = FacesContext.getCurrentInstance(); String acceptContentTypes = getAcceptHeader(context); return renderKit.createResponseWriter(writer, acceptContentTypes, encoding); }
/** * Gets the ResponseStateManager for the renderKit Id provided */ public static ResponseStateManager getResponseStateManager(FacesContext facesContext, String renderKitId) throws FacesException { RenderKit renderKit = facesContext.getRenderKit(); if (renderKit == null) { // look for the renderkit in the request Map requestMap = facesContext.getExternalContext().getRequestMap(); RenderKitFactory factory = (RenderKitFactory) requestMap.get(RENDER_KIT_IMPL); if (factory != null) { renderKit = factory.getRenderKit(facesContext, renderKitId); } else { factory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); if (factory == null) { throw new IllegalStateException("Factory is null"); } requestMap.put(RENDER_KIT_IMPL, factory); renderKit = factory.getRenderKit(facesContext, renderKitId); } } return renderKit.getResponseStateManager(); }
public TaskFormLayoutBaseLibrary(final String namespace) { super(namespace); final FacesContext facesContext = FacesContext.getCurrentInstance(); final Application application = facesContext.getApplication(); final RenderKit renderKit = facesContext.getRenderKit(); application.addComponent(UIDataForm.COMPONENT_TYPE, UIDataForm.class.getName()); addComponent("dataform", UIDataForm.COMPONENT_TYPE, UIDataForm.RENDERER_TYPE); renderKit.addRenderer(UIDataForm.COMPONENT_FAMILY, UIDataForm.RENDERER_TYPE, new DataFormRenderer()); application.addComponent(UIDataArea.COMPONENT_TYPE, UIDataArea.class.getName()); addComponent("dataarea", UIDataArea.COMPONENT_TYPE, UIDataArea.RENDERER_TYPE); application.addComponent(UIDataSection.COMPONENT_TYPE, UIDataSection.class.getName()); addComponent("datasection", UIDataSection.COMPONENT_TYPE, UIDataSection.RENDERER_TYPE); application.addComponent(UIDataCell.COMPONENT_TYPE, UIDataCell.class.getName()); addComponent("datacell", UIDataCell.COMPONENT_TYPE, UIDataCell.RENDERER_TYPE); } }
ViewDeclarationLanguage vdl = facesContext.getApplication(). getViewHandler().getViewDeclarationLanguage(facesContext,viewId); StateManagementStrategy sms = null; if (vdl != null) RenderKit renderKit = getRenderKitFactory().getRenderKit(facesContext, renderKitId); ResponseStateManager responseStateManager = renderKit.getResponseStateManager(); facesContext.setViewRoot (uiViewRoot); uiViewRoot.processRestoreState(facesContext, stateArray[1]);
@Override public void writeState(FacesContext facesContext, Object state) throws IOException { if (log.isLoggable(Level.FINEST)) log.finest("Entering writeState"); UIViewRoot uiViewRoot = facesContext.getViewRoot(); //save state in response (client) RenderKit renderKit = getRenderKitFactory().getRenderKit(facesContext, uiViewRoot.getRenderKitId()); ResponseStateManager responseStateManager = renderKit.getResponseStateManager(); responseStateManager.writeState(facesContext, state); if (log.isLoggable(Level.FINEST)) log.finest("Exiting writeState"); }
/** * Create a dummy view, restore only the view root state and then immediately explicitly destroy the view. Or, if there is no view root * state (which implies that session is expired), then explicitly send a permanent redirect to request URI. This way any authentication * framework which remember "last requested restricted URL" will redirect back to correct (non-unload) URL after login on a new session. */ private UIViewRoot unloadView(FacesContext context, String viewId) { UIViewRoot createdView = createView(context, viewId); ResponseStateManager manager = getRenderKit(context).getResponseStateManager(); if (restoreViewRootState(context, manager, createdView)) { context.setProcessingEvents(true); context.getApplication().publishEvent(context, PreDestroyViewMapEvent.class, UIViewRoot.class, createdView); Hacks.removeViewState(context, manager, viewId); responseComplete(); } else { redirectPermanent(context, getRequestURIWithQueryString(context)); } return createdView; }
private static Renderer getRendererInternal( final FacesContext facesContext, final String family, final String rendererType) { final RenderKitFactory rkFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY); final RenderKit renderKit = rkFactory.getRenderKit(facesContext, facesContext.getViewRoot().getRenderKitId()); final Renderer myRenderer = renderKit.getRenderer(family, rendererType); return myRenderer; }
public ResponseWriter createResponseWriter(Writer writer, String contentTypeList, String encoding) { FacesContext facesContext = FacesContext.getCurrentInstance(); if (facesContext.getPartialViewContext().isPartialRequest()) { return delegate.createResponseWriter(writer, "text/xml", encoding); } ResponseWriter parentWriter = delegate.createResponseWriter(writer, contentTypeList, encoding); if (EnvUtils.isICEfacesView(facesContext)) { return new DOMResponseWriter(parentWriter, parentWriter.getCharacterEncoding(), parentWriter.getContentType()); } else { return parentWriter; } }